Il s'agit d'une compilation d'outils de flash de programmation (ISP) directs directs (ISP) pour différents microcontrôleurs, tous écrits sous forme de scripts Python individuels. Leur format unique les rend incroyablement faciles à intégrer dans n'importe quelle chaîne d'outils. De plus, ces outils peuvent également être installés via PIP, puis exécutés en tant que commandes de ligne de commande.
Pour que ces outils fonctionnent, Python3 doit être installé sur votre système. Pour ce faire, suivez ces instructions. De plus, Pyusb, Pysérial et Pyhidapi doivent être installés. Sur Linux (basé sur Debian), tout cela peut être fait avec les commandes suivantes:
sudo apt install python3 python3-pip
pip install pyusb pyserial hid
Les utilisateurs de Windows en particulier peuvent également avoir besoin d'installer Libusb.
Avec cet outil, presque tous les microcontrôleurs WCH (CH5XX, CH6XX, CH32FXXX, CH32VXXX, CH32XXXX et CH32LXXX) qui ont un chargeur de démarrage en usine (V2.XX) peuvent être flassés via USB.
Sur Linux, vous n'avez pas besoin d'installer de pilote pour le chargeur de démarrage USB. Cependant, par défaut, Linux n'expose pas suffisamment l'autorisation pour télécharger votre code. Afin de résoudre ce problème, ouvrez un terminal et exécutez les commandes suivantes:
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="4348", ATTR{idProduct}=="55e0", MODE="666"' | sudo tee /etc/udev/rules.d/99-ch55x.rules
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="1a86", ATTR{idProduct}=="55e0", MODE="666"' | sudo tee -a /etc/udev/rules.d/99-ch55x.rules
sudo udevadm control --reload-rules
Pour Windows, vous avez besoin du pilote CH372. Alternativement, vous pouvez également utiliser l'outil Zadig pour installer le pilote correct. Ici, cliquez sur "Options" -> "Réservez tous les appareils" et sélectionnez le module USB. Installez ensuite le pilote LibusB-Win32. Pour ce faire, la carte doit être connectée et le microcontrôleur doit être en mode chargeur de démarrage.
Le chargeur de démarrage doit être démarré manuellement pour de nouveaux téléchargements. Pour ce faire, la carte doit d'abord être déconnectée du port USB et de toutes les sources de tension. Maintenant, appuyez sur le bouton de démarrage et continuez-le en reconnectant la carte au port USB de votre PC. La puce démarre maintenant en mode chargeur de démarrage, le bouton de démarrage peut être publié et le nouveau micrologiciel peut être téléchargé via USB. Alternativement, vous pouvez laisser la carte connectée au port USB, appuyer et maintenir le bouton de démarrage, appuyez sur le bouton de réinitialisation, puis relâchez le bouton de démarrage pour entrer le mode de chargeur de démarrage. S'il n'y a pas de bouton de démarrage sur la carte, regardez la fiche technique pour savoir quelle broche doit être tirée au niveau de tension pour le microcontrôleur pour passer en mode démarrage.
Exécutez maintenant la commande suivante (exemple):
python3 chprog.py firmware.bin
Jetez un œil ici.
Avec cet outil, les microcontrôleurs WCH RISC-V CH32LXXX, CH32VXXX et CH32XXXX peuvent être programmés avec le WCH-Linke ou WCH-Linkw (prêtez attention à "E" ou "W" dans le nom) via son interface de débogage série.
Pour utiliser le lien WCH sur Linux, vous devez accorder au préalable les autorisations d'accès en exécutant les commandes suivantes:
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="1a86", ATTR{idProduct}=="8010", MODE="666"' | sudo tee /etc/udev/rules.d/99-WCH-LinkE.rules
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="1a86", ATTR{idProduct}=="8012", MODE="666"' | sudo tee -a /etc/udev/rules.d/99-WCH-LinkE.rules
sudo udevadm control --reload-rules
Sur Windows, si vous avez besoin, vous pouvez installer le pilote winUSB sur l'interface WCH 1 à l'aide de l'outil Zadig.
Pour télécharger le firmware, vous devez établir les connexions suivantes au WCH-Link (SWCLK n'est pas présent sur le CH32V003 et n'a donc pas besoin d'être connecté):
WCH-Link RISC-V MCU
+------+ +--------+
| SWCLK| ---> |SWCLK |
| SWDIO| <--> |SWDIO |
| GND| ---> |GND |
| 3V3| ---> |VDD |
+------+ +--------+
Si la LED bleue sur le lien WCH reste éclairée une fois qu'elle est connectée au port USB, cela signifie que l'appareil est actuellement en mode ARM et doit être passé au mode RISC-V initialement. Il existe plusieurs façons d'accomplir ceci:
Plus d'informations peuvent être trouvées dans le manuel d'utilisation de WCH-Link.
Usage: rvprog.py [-h] [-a] [-v] [-b] [-u] [-l] [-e] [-G] [-R] [-f FLASH]
Optional arguments:
-h, --help show help message and exit
-a, --armmode switch WCH-Link to ARM mode
-v, --rvmode switch WCH-Link to RISC-V mode
-b, --unbrick unbrick chip (power cycle erase)
-u, --unlock unlock chip (remove read protection)
-l, --lock lock chip (set read protection)
-e, --erase perform a whole chip erase
-G, --pingpio make nRST pin a GPIO pin (CH32V003 only)
-R, --pinreset make nRST pin a reset pin (CH32V003 only)
-f FLASH, --flash FLASH write BIN file to flash
Example:
python3 rvprog.py -f firmware.bin
Jetez un œil ici.
Avec cet outil, les microcontrôleurs PUYA de la série PY32F0XX (et peut-être d'autres PY32) peuvent être flashés via un simple convertisseur USB-TO-SERE en utilisant le chargeur UART intégré en usb intégré.
Si nécessaire, un pilote pour le convertisseur USB-Sérial utilisé doit être installé.
Connectez votre convertisseur USB-TO-SERE à votre MCU PY32F0XX comme suit:
USB2SERIAL PY32F0xx
+--------+ +-------------------+
| RXD| <--- |PA2 or PA9 or PA14|
| TXD| ---> |PA3 or PA10 or PA15|
| VDD| ---> |VDD |
| GND| ---> |GND |
+--------+ +-------------------+
Définissez votre MCU sur le mode Bootloader en utilisant l'une des méthodes suivantes:
Usage: puyaisp.py [-h] [-u] [-l] [-e] [-o] [-G] [-R] [-f FLASH]
Optional arguments:
-h, --help show this help message and exit
-u, --unlock unlock chip (remove read protection)
-l, --lock lock chip (set read protection)
-e, --erase perform chip erase (implied with -f)
-o, --rstoption reset option bytes
-G, --nrstgpio make nRST pin a GPIO pin
-R, --nrstreset make nRST pin a RESET pin
-f FLASH, --flash FLASH write BIN file to flash and verify
Example:
python3 puyaisp.py -f firmware.bin
Jetez un œil ici.
Avec cet outil, les microcontrôleurs STC8G / 8H peuvent être flassés via un simple convertisseur USB-TO-SERIAL en utilisant le chargeur de démarrage UART intégré en usine intégré.
Si nécessaire, un pilote pour le convertisseur USB-Sérial utilisé doit être installé.
USB2SERIAL STC8G/8H
+--------+ +------+
| VCC| --/ --> |VCC | interruptible (for power cycle)
| RXD| --|R|-- |P3.1 | resistor (100R - 1000R)
| TXD| --|<|-- |P3.0 | diode (e.g. 1N5819)
| GND| ------- |GND | common ground
+--------+ +------+
Usage: stc8isp.py [-h] [-p PORT] [-t TRIM] [-e] [-f FLASH]
Optional arguments:
-h, --help show this help message and exit
-p PORT, --port PORT set COM port (default: /dev/ttyUSB0)
-t TRIM, --trim TRIM trim IRC to frequency in Hz (128000 - 36000000)
-e, --erase perform chip erase (implied with -f)
-f FLASH, --flash FLASH write BIN file to flash
Example:
python3 stc8isp.py -p /dev/ttyUSB0 -t 24000000 -f firmware.bin
Jetez un œil ici.
Cet outil vous permet de flasher les microcontrôleurs STC8H8KXXU via leur interface USB, en utilisant le chargeur de démarrage USB intégré préinstallé.
Étant donné que le chargeur de démarrage USB fonctionne comme un périphérique d'interface humaine (HID), il n'est pas nécessaire d'installer des pilotes. Cependant, Linux n'accorde pas initialement suffisamment d'autorisations pour accéder au chargeur de démarrage. Pour résoudre ce problème, ouvrez un terminal et exécutez les commandes suivantes:
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="34bf", ATTR{idProduct}=="1001", MODE="666"' | sudo tee /etc/udev/rules.d/99-STC-ISP.rules
sudo udevadm control --reload-rules
Pour lancer de nouveaux téléchargements, le chargeur de démarrage doit être démarré manuellement. Commencez par débrancher la carte à partir du port USB et déconnectant toutes les sources d'alimentation. Ensuite, appuyez et maintenez le bouton de démarrage tout en reconnectant la carte au port USB de votre PC. Cette action déclenche la puce pour entrer le mode de chargeur de démarrage. Une fois dans ce mode, vous pouvez libérer le bouton de démarrage et procéder à Télécharger un nouveau firmware via USB.
Si votre carte n'a pas de bouton de démarrage, vous devrez court-circuiter la broche P3.2 à la terre lors de la connexion pour obtenir le même effet.
Usage: stc8usb.py [-h] [-t TRIM] [-e] [-f FLASH]
Optional arguments:
-h, --help show this help message and exit
-t TRIM, --trim TRIM set MCU system frequency
-e, --erase perform chip erase (implied with -f)
-f FLASH, --flash FLASH write BIN file to flash
Example:
python3 stc8usb.py -t 24000000 -f firmware.bin
Jetez un œil ici.
Avec cet outil, certains microcontrôleurs STM32 d'entrée de gamme peuvent être flassés via un simple convertisseur USB-Sérial en utilisant le chargeur de démarrage UART intégré d'usine. Il prend actuellement en charge les appareils suivants:
Si nécessaire, un pilote pour le convertisseur USB-Sérial utilisé doit être installé.
Connectez votre convertisseur USB à série à votre MCU STM32 comme suit:
USB2SERIAL STM32C011/031
+--------+ +------------+
| RXD| <--- |PA9 (PA11) |
| TXD| ---> |PA10 (PA12) |
| 3V3| ---> |VDD (3V3) |
| GND| ---> |GND |
+--------+ +------------+
USB2SERIAL STM32F03xx4/6
+--------+ +------------+
| RXD| <--- |PA9 or PA14|
| TXD| ---> |PA10 or PA15|
| 3V3| ---> |VDD (3V3) |
| GND| ---> |GND |
+--------+ +------------+
USB2SERIAL STM32G03x/04x
+--------+ +------------+
| RXD| <--- |PA2 or PA9 |
| TXD| ---> |PA3 or PA10 |
| 3V3| ---> |VDD (3V3) |
| GND| ---> |GND |
+--------+ +------------+
USB2SERIAL STM32L01x/02x
+--------+ +------------+
| RXD| <--- |PA2 or PA9 |
| TXD| ---> |PA3 or PA10 |
| 3V3| ---> |VDD (3V3) |
| GND| ---> |GND |
+--------+ +------------+
Définissez votre MCU sur le mode démarrage en utilisant l'une des méthodes suivantes:
Sur les microcontrôleurs STM32G03X / 04X, la broche BOOT0 est initialement désactivée. Lorsque la puce est neuve ou que la mémoire flash principale est effacée, ce n'est pas un problème car le chargeur de démarrage intégré démarre automatiquement. En utilisant l'outil STM32ISP, la broche Boot0 sera activée pour une utilisation ultérieure. Cependant, si la puce a déjà été programmée à l'aide d'un outil logiciel différent, le chargeur de démarrage pourrait ne plus être accessible via la broche Boot0. Dans de tels cas, le bit nboot_sel dans les octets de l'option utilisateur doit être effacé (réglé sur 0) à l'aide d'un programmeur SWD comme ST-Link et du logiciel approprié.
Usage: stm32isp.py [-h] [-u] [-l] [-e] [-f FLASH]
Optional arguments:
-h, --help show this help message and exit
-u, --unlock unlock chip (remove read protection)
-l, --lock lock chip (set read protection)
-e, --erase perform chip erase (implied with -f)
-f FLASH, --flash FLASH write BIN file to flash and verify
Example:
python3 stm32isp.py -f firmware.bin
Jetez un œil ici.
Cet outil permet de programmer les microcontrôleurs TinyAVR Series Série 0, 1 et 2 Plus d'informations peuvent être trouvées ici.
Si nécessaire, un pilote pour le convertisseur USB-Sérial utilisé doit être installé.
Connectez le convertisseur USB à série via USB au PC et via le circuit décrit ci-dessous à la broche UPDI du microcontrôleur.
USB2SERIAL tinyAVR
+--------+ +-----------+
| RXD| <------------+---> |UPDI (PA0) |
| | | | |
| TXD| ---|1kOhm|---+ | |
| | | |
| VDD| -----------------> |VDD |
| GND| -----------------> |GND |
+--------+ +-----------+
Alternativement, un programmeur SerialUpdi pré-assemblé peut être utilisé.
Usage: tinyupdi.py [-h] [-d DEVICE] [-e] [-f FLASH] [-fs [FUSES [FUSES ...]]]
Optional arguments:
-h, --help show help message and exit
-d, --device set target device (if not set, it will be auto-detected)
-e, --erase perform a chip erase (implied with --flash)
-f FLASH, --flash FLASH BIN file to flash
-fs [FUSES [FUSES ...]], --fuses [FUSES [FUSES ...]]
fuses to set (syntax: fuse_nr:0xvalue)
-t TRIM, --trim TRIM configure oscillator for given frequency (set fuse 2)
Example:
python3 tinyupdi.py -f firmware.bin -fs 6:0x04 7:0x00 8:0x00 -t 8000000
Jetez un œil ici.