Salut.
Dans la vie professionnelle je suis développeur embarqué surtout ARM7, CORTEX et STM32 en tous genres.
ChPr tu as vraiment un bol monstre. J'ai une carte STM32F103C8T6 !!!
Donc je me suis mis à l'ouvrage tôt ce matin et voici le résultat.
J'ai essayé de programmer le bootloader generic_boot20_pc13.bin avec stm32flash
Wrote address 0x08008b00 (99.47%) Error: WRITE address and length must be 4 byte aligned
Failed to write memory at address 0x08008b00
Mal barré
Deuxième méthode : uploader avec le convertisseur série
Le convertisseur est branché comme indiqué sur la page de ton lien.
3V3 : 3,3
GND : GND (noté G sur la carte)
RX : A10
TX : A9
#### EDIT : il faut inverser RX et TX ####
Le cavalier BOOT0 sur 1, comme sur la photo.
Un petit sketch :
#define LED PA0
void setup() {
pinMode(LED, OUTPUT);
Serial.begin(115200);
}
void loop() {
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
delay(1000);
Serial.println("OK");
}
Dans l'IDE ARDUINO je choisi Outils/Upload method : Serial
J'appuie sur le bouton RESET.
Je clique sur téléverser.
stm32flash Arduino_STM32_0.9
http://github.com/rogerclarkmelbourne/arduino_stm32
Using Parser : Raw BINARY
Interface serial_posix: 230400 8E1
Version : 0x22
Option 1 : 0x00
Option 2 : 0x00
Device ID : 0x0410 (Medium-density)
- RAM : 20KiB (512b reserved by bootloader)
- Flash : 128KiB (sector size: 4x1024)
- Option RAM : 16b
- System RAM : 2KiB
Write to memory
Erasing memory
Wrote address 0x08000100 (3.30%)
Wrote address 0x08000200 (6.61%)
Wrote address 0x08000300 (9.91%)
Wrote address 0x08000400 (13.22%)
Wrote address 0x08000500 (16.52%)
Wrote address 0x08000600 (19.82%)
Wrote address 0x08000700 (23.13%)
Wrote address 0x08000800 (26.43%)
Wrote address 0x08000900 (29.74%)
Wrote address 0x08000a00 (33.04%)
Wrote address 0x08000b00 (36.34%)
Wrote address 0x08000c00 (39.65%)
Wrote address 0x08000d00 (42.95%)
Wrote address 0x08000e00 (46.26%)
Wrote address 0x08000f00 (49.56%)
Wrote address 0x08001000 (52.87%)
Wrote address 0x08001100 (56.17%)
Wrote address 0x08001200 (59.47%)
Wrote address 0x08001300 (62.78%)
Wrote address 0x08001400 (66.08%)
Wrote address 0x08001500 (69.39%)
Wrote address 0x08001600 (72.69%)
Wrote address 0x08001700 (75.99%)
Wrote address 0x08001800 (79.30%)
Wrote address 0x08001900 (82.60%)
Wrote address 0x08001a00 (85.91%)
Wrote address 0x08001b00 (89.21%)
Wrote address 0x08001c00 (92.51%)
Wrote address 0x08001d00 (95.82%)
Wrote address 0x08001e00 (99.12%)
Wrote address 0x08001e44 (100.00%) Done.
Starting execution at address 0x08000000... done.
LA LED CLIGNOTE
Bon ça marche. J'aurais tout de même préféré faire l'upload par l'USB.
Le terminal fonctionne aussi.
Pendant le développement de l'application il est possible de laisser le cavalier BOOT0 sur 1 et téléverser / exécuter dans la foulée.
Avec BOOT0 sur 1, le STM32 démarre son propre booloader. Il attend les caractères sur sa ligne série, écrit ce qui arrive en FLASH et lance l'application.
Par contre pour la version finale, il faudra remettre le cavalier sur 0. Dans ce cas, le STM32 démarre directement l'application.
Conclusion : sans le bootloader ARDUINO, ça roule. L'application est écrite en FLASH à l'adresse où devrait se situer celui-ci.
Certains développeurs se passent fort bien du bootloader sur leurs cartes ARDUINO. Ils chargent leur application avec un boîtier AVRISP ou USBasp, etc. Cela permet d'économiser l'espace occupé par le bootloader.
Ce qu'il faut bien comprendre, c'est que sur un STM32, il y a déjà un bootloader, celui de ST MICROELECTRONICS. Celui-ci est même capable de charger une application par I2C et SPI !!!
Le bootloader ARDUINO, on peut parfaitement s'en passer.
ChPr si tu as réussi à charger un bootloader ARDUINO dans le STM32, il n'y a aucune raison que tu ne puisses pas charger ton sketch à la place par le même moyen. Tu utilises le même convertisseur série, l'IDE ARDUINO en choisissant Outils/Upload method : Serial et ça va rouler.
Concernant le développement STM32 en général, on peut objecter que l'on peut développer avec les librairies ST. Franchement pas terrible. Il y a aussi MBED, bien mieux.
Dans ce cas, on utilise un compilateur GCC ou ARM et l'utilisation d'un ST-LINK ou JLINK permet en plus du chargement en FLASH ... de profiter du DEBUGGER, gdb ou autre. Les IDE KEIL ou à base d'ECLIPSE permettent de travailler bien plus confortablement qu'avec l'IDE ARDUINO.
Mais dans ce cas, on ne bénéficie pas de toutes les bibliothèques ARDUINO et c'est franchement dommage.
L'intérêt de cette manip est de bénéficier de la puissance de feu extraordinaire des STM32 en développant des applications comme sur un ARDUINO, avec le capital fantastique des librairies ARDUINO.
Prochaine manip : essayer cette petite carte STM32F407VET6
Support NRF24L01 embarqué, pile pour le RTC et plein de bonnes choses.
J'espère vous avoir aidé. J'ai commencé à 4H du mat. Bonne nuit, je vais me recoucher.
@+