Lorsque nous avons écrit pour la première fois sur le MCU CH32V003 RISC-V à 10 cents, il était proposé dans une carte de développement à 7 $ et l’IDE MounRiver Studio à source fermée devait être utilisé pour la programmation. Mais les choses se sont améliorées depuis octobre 2022, et maintenant, vous pouvez acheter une carte CH32V003 pour aussi peu que 1,5 $ plus les frais d’expédition, et une chaîne d’outils GCC open source et un flasher/téléchargeur sont désormais disponibles.
Voyons d’abord le matériel avec la carte de développement nanoCH32V003 à faible coût comprenant un microcontrôleur CH32V003 RISC-V à 48 MHz avec 2 Ko de SRAM et 16 Ko de mémoire flash, un port USB Type-C pour l’alimentation, un bouton de réinitialisation et deux rangées d’en-têtes pour les GPIO.
Spécifications MuseLab nanoCH32V003 :
- MCU – WCH CH32V003F4U6 Microcontrôleur RISC-V2A 32 bits jusqu’à 48 MHz avec 2 Ko de SRAM, 16 Ko de mémoire flash (package QFN20)
- Extension – 2x en-têtes à 11 broches avec jusqu’à 18x GPIO, 1x USART, 1x I2C, 1x SPI, CAN 10 bits à 8 canaux, 5V, 3,3V, GND
- Débogage – Interface de débogage série à 1 fil à 3 broches pour connecter le débogueur WCHLink-E
- Divers – Oscillateur à cristal 24 MHz, bouton de réinitialisation et LED
- Alimentation – 5V via le port USB-C
- Dimensions – à déterminer
La carte nécessite le débogueur WCHLink-E illustré à droite ci-dessus pour la programmation et le débogage. MuseLab fournit des schémas PDF, des binaires de démonstration, des outils et de la documentation sur GitHub. Deux méthodes de développement sont disponibles : l’IDE MounRiver Studio habituel et WCH-LinkUtility pour le téléchargeur/débogueur WCH-LinkE, et une chaîne d’outils open source basée sur GCC nommée xPack RISC-V Embedded GCC ainsi que des exemples qui peuvent être compilés avec make :
git clone https://github.com/wuxx/CH32V003-makefile-example cd CH32V003-makefile-example make
|
git clone https://github.com/wuxx/CH32V003-makefile-example cd CH32V003-makefile-exemple faire |
Mais vous devrez toujours utiliser les programmes WCH-LinkUtility pour flasher le binaire résultant sur la carte via le débogueur WCHLink-E.
À moins que vous ne comptiez sur le travail de CNLohr, car il a joué avec le MCU CH32V003 pour créer les échantillons Makefile compilés avec la chaîne d’outils gcc-riscv64 et l’utilitaire open source minichlink pour flasher le programme sur la carte. Il peut être essayé avec l’échantillon de clignotement comme suit :
sudo apt-get install build-essential libnewlib-dev gcc-riscv64-unknown-elf libusb-1.0-0-dev cd blink make
|
sudo apt-get install build-essential libnewlib-dev gcc-riscv64-unknown-elf libusb-1.0-0-dev cd clignote faire |
Cela échoue pour moi car la commande make va non seulement compiler l’échantillon, mais aussi flasher le fichier hexadécimal sur la carte, et je n’ai pas la carte ni le débogueur WCHLink-E attachés à mon ordinateur :
jaufranc@cnx-laptop-4:~/edev/sandbox/ch32v003fun/blink$ make riscv64-unknown-elf-gcc -o blink.elf blink.c ../ch32v003evt/startup_ch32v00x.S ../ch32v003evt/embedlibc.c -g -Os -flto -ffunction-sections -static-libgcc -lgcc -march=rv32ec -mabi=ilp32e -I/usr/include/newlib -I../ch32v003evt -nostdlib -I. -T ../ch32v003evt/ch32v003.ld -Wl,–gc-sections riscv64-unknown-elf-size blink.elf text data bss dec hex filename 596 0 256 852 354 blink.elf riscv64-unknown-elf-objdump – S blink.elf > blink.lst riscv64-unknown-elf-objdump -t blink.elf > blink.map riscv64-unknown-elf-objcopy -O binaire blink.elf blink.bin riscv64-unknown-elf-objcopy -O ihex blink.elf blink.hex make -C ../minichlink tous font[1]: Entrer dans le répertoire ‘/home/jaufranc/edev/sandbox/ch32v003fun/minichlink’ make[1]: Rien à faire pour ‘tous’. faire[1]: Départ du répertoire ‘/home/jaufranc/edev/sandbox/ch32v003fun/minichlink’ ../minichlink/minichlink -w blink.bin -r Erreur : impossible de trouver le périphérique de liaison de la marque : *** [Makefile:37: flash] Erreur 247
|
jaufranc@cnx-laptop-4:~/edev/sandbox/ch32v003fun/blink$ make riscv64-unknown-elf-gcc -o blink.elf blink.c ../ch32v003evt/startup_ch32v00x.S ../ch32v003evt/embedlibc.c -g -Os -flto -ffunction-sections -static-libgcc -lgcc -march= rv32ec -mabi=ilp32e -I/usr/include/newlib -I../ch32v003evt -nostdlib -I. -T ../ch32v003evt/ch32v003.ld -Wl,–gc-sections riscv64-taille-elfe-inconnue blink.elf données texte bss dec nom de fichier hexadécimal 596 0 256 852 354 clignote.elf riscv64-unknown-elf-objdump -S blink.elf > blink.lst riscv64-unknown-elf-objdump -t blink.elf > blink.map riscv64-unknown-elf-objcopy -O binaire blink.elf blink.bin riscv64-unknown-elf-objcopy -O ihex cligne.elf cligne.hex faire -C ../minichlink tout faire[1]: Entrer dans le répertoire ‘/home/jaufranc/edev/sandbox/ch32v003fun/minichlink’ faire[1]: Rien à faire pour ‘tous’. faire[1]: Sortie du répertoire ‘/home/jaufranc/edev/sandbox/ch32v003fun/minichlink’ ../minichlink/minichlink -w blink.bin -r Erreur : impossible de trouver quel périphérique de liaison faire: *** [Makefile:37: flash] Erreur 247 |
La chaîne d’outils et l’utilitaire peuvent être utilisés sous Windows, Linux et/ou WSL, mais le programme minichlink nécessite encore du travail car il ignore actuellement tous les codes de réponse, sauf lors de l’interrogation de la puce.
Vous pouvez acheter le nanoCH32V003 pour 1,5 $ sur Aliexpress. Mais ce prix n’inclut pas l’expédition (3,78 $ ici), et vous pouvez acheter un pack de dix pour 15 $ à la place puisque les frais d’expédition sont les mêmes. Vous pouvez également obtenir un WCHLinkE fourni dans un lot de 6,5 $ avec le nanoCH32V003 car il est nécessaire pour programmer la carte.
Via LinuxGizmos et merci à Zoobab et Jon pour les conseils.
Retrouvez l’histoire de Raspberry Pi dans cette vidéo :

-
Fpreeza WCH LinkE CH32V003 EVT MCU Débogueur de téléchargement RISC-V Architecture MCU/SWD Interface ARM Chip 1 port série vers canal USB
-
Carte de développement CH32V003, carte système minimale, carte de base RISC-V, module microcontrôleur CH32V003F4P6
