هذا عبارة عن مجموعة من أدوات فلاش البرمجة المباشرة في النظام (ISP) لمختلف المتحكمين ، وكلها مكتوبة كبرامج نصية للبيثون الفردية. إن تنسيق النصف الخاص بهم يجعلها سهلة الاندماج بشكل لا يصدق في أي مجموعة أدوات. علاوة على ذلك ، يمكن أيضًا تثبيت هذه الأدوات عبر PIP ثم يتم تنفيذها كأوامر سطر الأوامر.
لكي تعمل هذه الأدوات ، يجب تثبيت Python3 على نظامك. للقيام بذلك ، اتبع هذه التعليمات. بالإضافة إلى pyusb ، يجب تثبيت Pyserial و pyhidapi. على Linux (المستند إلى دبيان) ، يمكن القيام بكل هذا بالأوامر التالية:
sudo apt install python3 python3-pip
pip install pyusb pyserial hid
قد يحتاج مستخدمو Windows على وجه الخصوص أيضًا إلى تثبيت libusb.
مع هذه الأداة ، يمكن أن يتم وميض جميع موكان WCH تقريبًا (CH5XX و CH6XX و CH32FXXX و CH32VXXX و CH32XXXX و 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. للقيام بذلك ، يجب توصيل اللوحة ويجب أن يكون متحكم في وضع تحميل التمهيد.
يجب أن يتم تشغيل جهاز تحميل التشغيل يدويًا للتحميلات الجديدة. للقيام بذلك ، يجب أولاً فصل اللوحة عن منفذ USB وجميع مصادر الجهد. اضغط الآن على زر التمهيد واتركه الضغط عليه أثناء إعادة توصيل اللوحة إلى منفذ USB لجهاز الكمبيوتر الخاص بك. تبدأ Chip الآن في وضع تشغيل Bootloader ، ويمكن إصدار زر التمهيد ويمكن تحميل البرامج الثابتة الجديدة عبر 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 |
+------+ +--------+
إذا ظل LED الأزرق على الوصلات WCH مضاءة بمجرد توصيله بمنفذ USB ، فهذا يعني أن الجهاز موجود حاليًا في وضع الذراع ويجب تحويله إلى وضع 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
نلقي نظرة هنا.
مع هذه الأداة ، يمكن وميض Puya Microcontrollers من سلسلة PY32F0XX (وربما الأخرى PY32) عبر محول بسيط من USB إلى SERIAL من خلال استخدام محمل التمهيد المدمج في المصنع.
إذا لزم الأمر ، يجب تثبيت برنامج تشغيل لمحول USB إلى Serial المستخدم.
قم بتوصيل محول USB-to-Serial الخاص بك بمحول 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
نلقي نظرة هنا.
باستخدام هذه الأداة ، يمكن وميض Microcontrollers STC8G/8H عبر محول بسيط من USB إلى SERIAL من خلال الاستفادة من محمل التمهيد المدمج في المصنع.
إذا لزم الأمر ، يجب تثبيت برنامج تشغيل لمحول USB إلى Serial المستخدم.
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
نلقي نظرة هنا.
تتيح لك هذه الأداة فلاش Microcontrollers 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.
إذا لم يكن لدى اللوحة زر التمهيد ، فستحتاج إلى قصر 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
نلقي نظرة هنا.
باستخدام هذه الأداة ، يمكن وميض بعض متحكم STM32 للمبتدئين عبر محول بسيط من USB إلى Serial من خلال استخدام محمل التمهيد UART المدمج في المصنع. يدعم حاليًا الأجهزة التالية:
إذا لزم الأمر ، يجب تثبيت برنامج تشغيل لمحول USB إلى Serial المستخدم.
قم بتوصيل محول USB إلى Serial بمحول 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 Microcontrollers ، يتم تعطيل دبوس BOOT0 في البداية. عندما تكون الشريحة جديدة تمامًا أو تمحى ذاكرة الفلاش الرئيسية ، فإن هذه ليست مشكلة حيث يتم تشغيل جهاز تحميل التشغيل المدمج تلقائيًا. باستخدام أداة STM32ISP ، سيتم تنشيط دبوس BOOT0 للاستخدام اللاحق. ومع ذلك ، إذا تم برمجة الشريحة مسبقًا باستخدام أداة برمجية مختلفة ، فقد لا يمكن الوصول إلى جهاز تحميل التشغيل من خلال POOT0 PIN بعد الآن. في مثل هذه الحالات ، يجب مسح بت 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
نلقي نظرة هنا.
تتيح هذه الأداة برمجة Tinyavr Series 0 و 1 و 2 MicroControllers باستخدام محول USB إلى Serial متصل بطريقة خاصة إلى دبوس UPDI (يسمى أيضًا SerialUpdi). يمكن العثور على مزيد من المعلومات هنا.
إذا لزم الأمر ، يجب تثبيت برنامج تشغيل لمحول USB إلى Serial المستخدم.
قم بتوصيل محول USB-to-Serial عبر USB بالكمبيوتر وعبر الدائرة الموضحة أدناه إلى دبوس UPDI من Microcontroller.
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
نلقي نظرة هنا.