這是針對不同微控制器的直接系統內編程(ISP)閃存工具的彙編,所有這些都是作為單個Python腳本編寫的。他們的單腳本格式使它們非常容易集成到任何工具鏈中。此外,這些工具也可以通過PIP安裝,然後作為命令行命令執行。
為了使這些工具起作用,必須在系統上安裝Python3。為此,請按照以下說明進行操作。此外,必須安裝pyusb,正序和pyhidapi。在Linux(基於Debian)上,所有這些都可以使用以下命令來完成:
sudo apt install python3 python3-pip
pip install pyusb pyserial hid
Windows用戶特別需要安裝Libusb。
使用此工具,幾乎所有WCH微控制器(CH5XX,CH6XX,CH32FXXX,CH32VXXX,CH32XXXX和CH32LXXX)都可以通過USB閃爍。
在Linux上,您無需為USB引導加載程序安裝驅動程序。但是,默認情況下,Linux不會揭示足夠的權限來上傳您的代碼。為了解決此問題,打開一個終端並運行以下命令:
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
對於Windows,您需要CH372驅動程序。另外,您也可以使用Zadig工具安裝正確的驅動程序。在這裡,單擊“選項” - >“列出所有設備”,然後選擇USB模塊。然後安裝libusb-win32驅動程序。為此,必須連接板,並且微控制器必須處於引導加載模式。
必須手動啟動啟動加載程序以進行新上傳。為此,必須首先將板與USB端口和所有電壓來源斷開連接。現在按下啟動按鈕,並在將板重新連接到PC的USB端口時按下按鈕。芯片現在以引導程序模式開始,可以釋放啟動按鈕,並且可以通過USB上傳新的固件。另外,您可以將板連接到USB端口,按並按住啟動按鈕,按下並釋放重置按鈕,然後釋放啟動按鈕以輸入引導加載器模式。如果板上沒有引導按鈕,請查看數據表,以找出需要將哪個引腳拉到MicroController進入啟動模式的哪個電壓級別。
現在運行以下命令(示例):
python3 chprog.py firmware.bin
在這裡看看。
使用此工具,可以使用WCH-LINKE或WCH-LINKW對WCH RISC-V微控制器CH32LXXX,CH32VXXX和CH32XXXX進行編程(通過其串行調試界面,請注意“ E”或“ W”)。
要在Linux上使用WCH-Link,您需要通過執行以下命令事先授予訪問權限:
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
在Windows上,如果您需要,則可以使用Zadig工具在WCH接口1上安裝Winusb驅動程序。
要上傳固件,您應該將以下連接到WCH-Link(CH32V003上不存在SWCLK,因此不需要連接):
WCH-Link RISC-V MCU
+------+ +--------+
| SWCLK| ---> |SWCLK |
| SWDIO| <--> |SWDIO |
| GND| ---> |GND |
| 3V3| ---> |VDD |
+------+ +--------+
如果將藍色LED連接到USB端口後,WCH-Link上的LED保持照明,則意味著該設備當前處於ARM模式,並且必須最初切換到RISC-V模式。有幾種方法可以實現這一目標:
可以在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
在這裡看看。
使用此工具,可以通過使用Factory內置嵌入式UART UART BOITLOADER來通過簡單的USB到Ser-Ser-Serial轉換器來刷新系列PY32F0XX(也許還有其他PY32)的Puya微控制器。
如有必要,必須安裝使用USB到串行轉換器的驅動程序。
如下:
USB2SERIAL PY32F0xx
+--------+ +-------------------+
| RXD| <--- |PA2 or PA9 or PA14|
| TXD| ---> |PA3 or PA10 or PA15|
| VDD| ---> |VDD |
| GND| ---> |GND |
+--------+ +-------------------+
通過使用以下方法之一將MCU設置為引導加載程序模式:
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
在這裡看看。
使用此工具,可以通過使用出廠內置的嵌入式UART UART引導加載程序來通過簡單的USB到串行轉換器來閃爍STC8G/8H微控制器。
如有必要,必須安裝使用USB到串行轉換器的驅動程序。
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
在這裡看看。
該工具允許您使用預安裝的嵌入式USB啟動程序通過其USB界面通過其USB界面閃爍STC8H8KXXU微控制器。
由於USB引導程序可作為人類接口設備(HID)功能,因此無需安裝驅動程序。但是,Linux最初沒有授予訪問引導程序的足夠權限。要解決此問題,請打開終端並執行以下命令:
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
要啟動新上傳,需要手動啟動引導程序。首先從USB端口拔下電源板並斷開所有電源。然後,在將板重新連接到PC的USB端口時,按並按住啟動按鈕。此操作觸發芯片進入引導加載器模式。進入此模式後,您可以釋放啟動按鈕,然後通過USB上傳新固件。
如果您的木板沒有引導按鈕,則需要在連接時將PIN PIN p3.2短在地面上,以達到相同的效果。
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
在這裡看看。
使用此工具,可以通過使用工廠內置的UART啟動加載程序來通過簡單的USB到串行轉換器來閃爍一些入門級STM32微控制器。它目前支持以下設備:
如有必要,必須安裝使用USB到串行轉換器的驅動程序。
如下:
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 |
+--------+ +------------+
通過使用以下方法之一將MCU設置為引導模式:
在STM32G03X/04X微控制器上,啟動0引腳最初被禁用。當芯片是全新的或刪除了主閃存時,這不是問題,因為嵌入式引導加載程序會自動啟動。通過使用STM32ISP工具,將激活Boot0 PIN,以供後續使用。但是,如果以前已經使用其他軟件工具對芯片進行了編程,則可能不再可以通過boot0 pin訪問引導程序。在這種情況下,必須使用SWD程序員(例如ST-Link和適當的軟件)清除用戶選項字節中的NBoot_Sel位(設置為0)。
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
在這裡看看。
該工具允許使用以特殊方式連接到UPDI PIN(也稱為SerialUpdi)的USB到串行轉換器對Tinyavr系列0、1和2個微控制器進行編程。更多信息可以在此處找到。
如有必要,必須安裝使用USB到串行轉換器的驅動程序。
通過USB以及以下所述的電路將USB到Serial轉換器連接到微控制器的Updi Pin。
USB2SERIAL tinyAVR
+--------+ +-----------+
| RXD| <------------+---> |UPDI (PA0) |
| | | | |
| TXD| ---|1kOhm|---+ | |
| | | |
| VDD| -----------------> |VDD |
| GND| -----------------> |GND |
+--------+ +-----------+
另外,可以使用預組裝的序列化程序員。
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
在這裡看看。