Ini adalah kompilasi alat flash in-sistem pemrograman (ISP) langsung untuk mikrokontroler yang berbeda, semuanya ditulis sebagai skrip python individual. Format skrip tunggal mereka membuat mereka sangat mudah diintegrasikan ke dalam alat berat apa pun. Selain itu, alat-alat ini juga dapat diinstal melalui PIP dan kemudian dieksekusi sebagai perintah baris perintah.
Agar alat ini berfungsi, Python3 harus diinstal pada sistem Anda. Untuk melakukan ini, ikuti instruksi ini. Selain itu, PyUSB, Pyserial dan Pyhidapi harus dipasang. Di Linux (berbasis Debian), semua ini dapat dilakukan dengan perintah berikut:
sudo apt install python3 python3-pip
pip install pyusb pyserial hid
Pengguna Windows khususnya mungkin juga perlu menginstal libusb.
Dengan alat ini, hampir semua mikrokontroler WCH (CH5XX, CH6XX, CH32FXXX, CH32VXXX, CH32XXXX, dan CH32LXXX) yang memiliki bootloader pabrik-builtin (V2.XX) dapat dilontarkan melalui USB.
Di Linux Anda tidak perlu menginstal driver untuk USB Bootloader. Namun, secara default Linux tidak akan mengekspos izin yang cukup untuk mengunggah kode Anda. Untuk memperbaikinya, buka terminal dan jalankan perintah berikut:
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
Untuk Windows, Anda memerlukan driver CH372. Atau, Anda juga dapat menggunakan alat Zadig untuk menginstal driver yang benar. Di sini, klik "Opsi" -> "Daftar Semua Perangkat" dan pilih Modul USB. Kemudian instal driver Libusb-Win32. Untuk melakukan ini, papan harus terhubung dan mikrokontroler harus dalam mode bootloader.
Bootloader harus dimulai secara manual untuk unggahan baru. Untuk melakukan ini, dewan harus terlebih dahulu terputus dari port USB dan semua sumber tegangan. Sekarang tekan tombol boot dan terus ditekan sambil menghubungkan kembali papan ke port USB PC Anda. Chip sekarang dimulai dalam mode bootloader, tombol boot dapat dirilis dan firmware baru dapat diunggah melalui USB. Atau, Anda dapat membiarkan papan terhubung ke port USB, tekan dan tahan tombol boot, tekan dan lepaskan tombol reset dan kemudian lepaskan tombol boot untuk memasukkan mode bootloader. Jika tidak ada tombol boot di papan tulis, lihat lembar data untuk mengetahui pin mana yang perlu ditarik ke tingkat tegangan mana yang agar mikrokontroler masuk ke mode boot.
Sekarang jalankan perintah berikut (contoh):
python3 chprog.py firmware.bin
Lihatlah di sini.
Dengan alat ini, mikrokontroler RISC-V WCH CH32LXXX, CH32VXXX, dan CH32XXXX dapat diprogram dengan WCH-LINKE atau WCH-LINKW (perhatikan "E" atau "W" dalam nama) melalui antarmuka debug serial.
Untuk menggunakan WCH-Link di Linux, Anda perlu memberikan izin akses sebelumnya dengan melaksanakan perintah berikut:
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
Di Windows, jika Anda perlu, Anda dapat menginstal driver WinUsb di atas antarmuka WCH 1 menggunakan alat Zadig.
Untuk mengunggah firmware, Anda harus membuat koneksi berikut ke WCH-Link (SWCLK tidak ada di CH32V003 dan karenanya tidak perlu dihubungkan):
WCH-Link RISC-V MCU
+------+ +--------+
| SWCLK| ---> |SWCLK |
| SWDIO| <--> |SWDIO |
| GND| ---> |GND |
| 3V3| ---> |VDD |
+------+ +--------+
Jika LED biru pada WCH-Link tetap diterangi setelah terhubung ke port USB, itu berarti bahwa perangkat saat ini dalam mode ARM dan harus dialihkan ke mode RISC-V pada awalnya. Ada beberapa cara untuk mencapai ini:
Informasi lebih lanjut dapat ditemukan di manual pengguna 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
Lihatlah di sini.
Dengan alat ini, mikrokontroler PUYA dari seri PY32F0XX (dan mungkin PY32 lainnya) dapat dilontarkan melalui konverter USB-ke-serial sederhana dengan memanfaatkan bootloader UART embedded built-in pabrik.
Jika perlu, pengemudi untuk konverter USB-ke-serial yang digunakan harus dipasang.
Hubungkan konverter USB-ke-serial Anda ke MCU PY32F0XX Anda sebagai berikut:
USB2SERIAL PY32F0xx
+--------+ +-------------------+
| RXD| <--- |PA2 or PA9 or PA14|
| TXD| ---> |PA3 or PA10 or PA15|
| VDD| ---> |VDD |
| GND| ---> |GND |
+--------+ +-------------------+
Atur MCU Anda ke Mode Bootloader dengan menggunakan salah satu metode berikut:
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
Lihatlah di sini.
Dengan alat ini, mikrokontroler STC8G/8H dapat dilontarkan melalui konverter USB-ke-serial sederhana dengan memanfaatkan bootloader UART tertanam built-in pabrik.
Jika perlu, pengemudi untuk konverter USB-ke-serial yang digunakan harus dipasang.
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
Lihatlah di sini.
Alat ini memungkinkan Anda untuk mem-flash mikrokontroler STC8H8KXXU melalui antarmuka USB mereka, menggunakan bootloader USB tertanam pra-install.
Karena USB Bootloader berfungsi sebagai perangkat antarmuka manusia (HID), tidak perlu menginstal driver. Namun, Linux pada awalnya tidak memberikan izin yang cukup untuk mengakses bootloader. Untuk menyelesaikan masalah ini, buka terminal dan jalankan perintah berikut:
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
Untuk memulai unggahan baru, bootloader perlu dimulai secara manual. Mulailah dengan mencabut papan dari port USB dan memutuskan semua sumber daya. Kemudian, tekan dan tahan tombol boot sambil menghubungkan kembali papan ke port USB PC Anda. Tindakan ini memicu chip untuk memasuki mode bootloader. Setelah dalam mode ini, Anda dapat melepaskan tombol boot dan melanjutkan untuk mengunggah firmware baru melalui USB.
Jika papan Anda tidak memiliki tombol boot, Anda harus pin pendek P3.2 ke ground saat menghubungkan untuk mencapai efek yang sama.
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
Lihatlah di sini.
Dengan alat ini, beberapa mikrokontroler STM32 entry-level dapat dilontarkan melalui konverter USB-ke-serial sederhana dengan memanfaatkan bootloader UART built-in pabrik. Saat ini mendukung perangkat berikut:
Jika perlu, pengemudi untuk konverter USB-ke-serial yang digunakan harus dipasang.
Hubungkan konverter USB-to-Serial Anda ke MCU STM32 Anda sebagai berikut:
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 |
+--------+ +------------+
Setel MCU Anda ke mode boot dengan menggunakan salah satu metode berikut:
Pada mikrokontroler STM32G03X/04X, pin boot0 awalnya dinonaktifkan. Ketika chip baru atau memori flash utama dihapus, ini bukan masalah karena bootloader tertanam secara otomatis menendang. Dengan menggunakan alat STM32ISP, pin boot0 akan diaktifkan untuk penggunaan selanjutnya. Namun, jika chip sebelumnya telah diprogram menggunakan alat perangkat lunak yang berbeda, bootloader mungkin tidak dapat diakses melalui pin boot0 lagi. Dalam kasus seperti itu, bit nboot_sel dalam byte opsi pengguna harus dibersihkan (diatur ke 0) menggunakan programmer SWD seperti ST-Link dan perangkat lunak yang sesuai.
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
Lihatlah di sini.
Alat ini memungkinkan mikrokontroler TinyaVR Series 0, 1, dan 2 untuk diprogram menggunakan konverter USB-ke-serial yang terhubung dengan cara khusus ke pin Updi (juga disebut SerialUpdi). Informasi lebih lanjut dapat ditemukan di sini.
Jika perlu, pengemudi untuk konverter USB-ke-serial yang digunakan harus dipasang.
Hubungkan konverter USB-ke-serial melalui USB ke PC dan melalui sirkuit yang dijelaskan di bawah ini ke pin Updi dari mikrokontroler.
USB2SERIAL tinyAVR
+--------+ +-----------+
| RXD| <------------+---> |UPDI (PA0) |
| | | | |
| TXD| ---|1kOhm|---+ | |
| | | |
| VDD| -----------------> |VDD |
| GND| -----------------> |GND |
+--------+ +-----------+
Atau, programmer serialUPDI yang telah dirakit sebelumnya dapat digunakan.
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
Lihatlah di sini.