Это компиляция простых инструментов вспышки программирования внутри системы (ISP) для различных микроконтроллеров, которые написаны как отдельные сценарии Python. Их одноразовый формат делает их невероятно простыми для интеграции в любой инструмент. Кроме того, эти инструменты также могут быть установлены через PIP, а затем выполнены в качестве команд командной строки.
Чтобы эти инструменты работали, Python3 должен быть установлен в вашей системе. Для этого следуйте этим инструкциям. Кроме того, Pyusb, Pyserial и Pyhidapi должны быть установлены. На Linux (Debian) все это можно сделать со следующими командами:
sudo apt install python3 python3-pip
pip install pyusb pyserial hid
Пользователям Windows, в частности, также может потребоваться установить Libusb.
С помощью этого инструмента почти все микроконтроллеры WCH (CH5XX, CH6XX, CH32FXXX, CH32VXXX, CH32XXX и CH32LXXX), которые имеют загрузчик на заводе (v2.xx), могут быть пропущены через 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. Для этого плата должна быть подключена, а микроконтроллер должен находиться в режиме загрузчика.
Bootloader должен быть запущен вручную для новых загрузок. Для этого плата должна быть сначала отключена от порта USB и всех источников напряжения. Теперь нажмите кнопку загрузки и держите ее нажать, воспроизводя плату с USB -портом вашего ПК. Чип теперь начинается в режиме загрузчика, кнопка загрузки может быть выпущена, а новая прошивка может быть загружена через USB. В качестве альтернативы, вы можете оставить плату подключенной к USB -порту, нажмите и удерживайте кнопку загрузки, нажмите и отпустите кнопку сброса, а затем отпустите кнопку загрузки, чтобы ввести режим загрузчика. Если на плате нет кнопки загрузки, посмотрите на таблицу данных, чтобы выяснить, какой вывод необходимо подтянуть, на какой уровень напряжения для микроконтроллера перейти в режим загрузки.
Теперь запустите следующую команду (пример):
python3 chprog.py firmware.bin
Посмотрите здесь.
С помощью этого инструмента WCH RISC-V Microcontrollers CH32LXXX, CH32VXXX и CH32XXXX могут быть запрограммированы с помощью WCH-Linke или WCH-LinkW (обратите внимание на «E» или «W» в названии) с помощью своего серийного интерфейса отладки.
Чтобы использовать WCH-Link на Linux, вам необходимо заранее предоставить разрешения на доступ, выполнив следующие команды:
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, если вам нужно установить драйвер WinusB через интерфейс WCH 1 с помощью инструмента Zadig.
Для загрузки прошивки вы должны сделать следующие подключения к WCH-Link (SWCLK не присутствует на CH32V003 и, следовательно, не нужно подключаться):
WCH-Link RISC-V MCU
+------+ +--------+
| SWCLK| ---> |SWCLK |
| SWDIO| <--> |SWDIO |
| GND| ---> |GND |
| 3V3| ---> |VDD |
+------+ +--------+
Если синий светодиод на WCH-Link остается освещенным после того, как он подключен к USB-порту, это означает, что устройство в настоящее время находится в режиме 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
Посмотрите здесь.
С помощью этого инструмента Microcontrollers Puya серии Py32f0xx (и, возможно, другого PY32) можно пробрать через простой конвертер USB-сериал, используя заводской встроенный встроенный загрузчик UART.
При необходимости должен быть установлен драйвер для использования конвертера USB в серий.
Подключите свой USB-серийный преобразователь к своему PY32F0XX MCU следующим образом:
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
Посмотрите здесь.
С помощью этого инструмента микроконтроллеры STC8G/8H можно пробрать через простой USB-серийный преобразователь, используя заводский встроенный встроенный загрузчик UART.
При необходимости должен быть установлен драйвер для использования конвертера 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
Посмотрите здесь.
Этот инструмент позволяет пропускать микроконтроллеры STC8H8KXXU через их интерфейс USB, используя предварительно установленную встроенный USB-загрузчик.
Поскольку 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 -порта и отключите все источники питания. Затем нажмите и удерживайте кнопку загрузки, воспроизводя плату с USB -портом вашего ПК. Это действие запускает чип, чтобы ввести режим загрузчика. Оказавшись в этом режиме, вы можете выпустить кнопку загрузки и приступить к загрузке новой прошивки через USB.
Если у вашей платы нет кнопки загрузки, вам нужно будет короткий вывод 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
Посмотрите здесь.
С помощью этого инструмента некоторые микроконтроллеры STM32 начального уровня могут быть пропущены с помощью простого USB-серийного преобразователя, используя заводской встроенный загрузчик UART. В настоящее время он поддерживает следующие устройства:
При необходимости должен быть установлен драйвер для использования конвертера USB в серий.
Подключите свой USB-серийный преобразователь к своему STM32 MCU следующим образом:
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 контакт Boot0 изначально отключен. Когда чип является совершенно новой или основной флэш -памяти стерла, это не проблема, так как встроенный загрузчик автоматически начинается. Используя инструмент STM32SP, для последующего использования будет активирован контакт Boot0. Однако, если чип ранее был запрограммирован с использованием другого программного инструмента, загрузчик может больше не доступен через PIN -код Boot0. В таких случаях бит NBOOT_SEL в байтах опции пользователя должен быть очищен (установлен в 0) с использованием программиста SWD, такого как ST-Link и соответствующее программное обеспечение.
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
Посмотрите здесь.
Этот инструмент позволяет запрограммировать USB-серии 0, 1 и 2 микроконтроллеров с использованием конвертера USB-серии, подключенного особым образом к PIN-кондиционеру (также называемому Serialupdi). Больше информации можно найти здесь.
При необходимости должен быть установлен драйвер для использования конвертера USB в серий.
Подключите USB-серийный преобразователь через USB к ПК и через цепь, описанную ниже, к кондиционеру микроконтроллера.
USB2SERIAL tinyAVR
+--------+ +-----------+
| RXD| <------------+---> |UPDI (PA0) |
| | | | |
| TXD| ---|1kOhm|---+ | |
| | | |
| VDD| -----------------> |VDD |
| GND| -----------------> |GND |
+--------+ +-----------+
В качестве альтернативы можно использовать предварительно собранную программист Serialupdi.
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
Посмотрите здесь.