Après avoir essayé sous Windows XP de télécharger un sketch sur mon module STM32F103C8T6 et n'y étant arrivé qu'en mode FTDI, mais pas en mode µUSB, j'ai tenté ma chance sous Ubuntu.
J'ai chargé L'IDE Arduino 1.8.5 ainsi que les fichiers relatifs au STM32 : la compilation se passe bien, mais, Oh déception pas moyen de téléverser un sketch dans mon module, que ce soit par FTDI ou µUSB.
En FTDI (strap BOOT en 1 et Reset), lorsque je connecte mon module, apparaît le port /dev/ttyUSB0 que j'utilise et j'ai la réponse suivante :
Failed to read ACK byte
Unexpected reply from device on command 0x01
stm32flash Arduino_STM32_0.9
http://github.com/rogerclarkmelbourne/arduino_stm32
Using Parser : Raw BINARY
Interface serial_posix: 115200 8E1
Une erreur est survenue lors du transfert du croquis
En mode *USB (Strap BOOT en 0), j'ai la port /dev/ttyACM0(Maple Mini) qui s'affiche et j'ai le message :
Failed to init device.
stm32flash Arduino_STM32_0.9
http://github.com/rogerclarkmelbourne/arduino_stm32
Using Parser : Raw BINARY
Interface serial_posix: 115200 8E1
Une erreur est survenue lors du transfert du croquis
Je pense que le meilleur endroit pour tes questions est le forum Stm32duino ouvert par Roger Clarke http://www.stm32duino.com/
Domage qu'il ne soit qu'en anglais et que Roger Clarke répugne à délivrer une documentation écrite.
Les videos Youtube c'est bon pour ceux qui sont "fluent english".
Les jeunes s'en sortent probablement mais moi qui ait appris l'anglais avant 68 (Shakespeare dans le texte ça aide vachement pour "causer" ) je n'y comprend rien.
Vouloir utiliser un STM32 "à la mode Arduino" est quand même quelque peu restrictif.
Les STM32 et les ARM en général (Atmel SamD21 y compris) valent plus cela.
Par ailleurs, sur un site ( que je ne retrouve plus), il est demandé d'exécuter /Arduino/hardware/Arduino-STM32/tools/linux/install.sh. J'envoie ça dans un terminal et voici ce que cela me dit :
chp@ubuntu:~$ '/home/chp/Arduino/hardware/Arduino_STM32/tools/linux/install.sh'
[sudo] password for chp:
Copying Maple-specific udev rules...
cp: impossible d'évaluer «45-maple.rules»: Aucun fichier ou dossier de ce type
cp: impossible d'évaluer «49-stlinkv1.rules»: Aucun fichier ou dossier de ce type
cp: impossible d'évaluer «49-stlinkv2.rules»: Aucun fichier ou dossier de ce type
cp: impossible d'évaluer «49-stlinkv2-1.rules»: Aucun fichier ou dossier de ce type
Reloading udev rules
Adding current user to dialout group
L'utilisateur « chp » appartient déjà au groupe « dialout ».
chp@ubuntu:~$
Pourtant, chacun des fichiers cités existe bien, à la fois dans le même répertoire que install.sh et dans /etc/udev/rules.d. Par ailleurs ces fichiers semblent identiques dans chacun de ces deux répertoires.
Je n'ai jamais exécuté le script install.sh dont tu parles. J'ai simplement décompressé l'archive ARDUINO 1.6.9 - je sais ça date un peu - dans mon répertoire personnel.
Si tes fichiers dans /etc/udev/rules.d sont identiques à ceux présents dans le répertoire hardware/Arduino_STM32/tools/linux/ il n'y a pas lieu de t'inquiéter. Il faut simplement redémarrer le service udev. Si tu as redémarré ton PC depuis, c'est OK.
Tapant cette commande dans un terminal, je n'obtiens rien comme résultat :
Rien d'anormal, c'est que le boulot est fait.
D'ailleurs le script install.sh te le dit :
L'utilisateur « chp » appartient déjà au groupe « dialout ».
J'ai placé un résistance de 1.8 kOhm là où il faut ... ça n'a rien changé. Sous Ubuntu, je suis incapable de téléverser un sketch sur mon module.
Dans quels cas cette résistance apporte-t-elle une modification ?
Autre question : Sous Windows, le fichier "install_drivers.bat" et autres (ou le STM32 Flash loader demonstrator) servent à installer le bootloader dans le module.
Mais quelle est la manip équivalente sous Linux ? J'ai vu tout un tas d'instructions, pas deux pareilles.
Linux
Steps 1-4 and 7 are the same for both Windows and Linux
For steps 5-6, use the command from the Maple Mini Linux procedure, changing the paths and filenames as necessary
cd ~/.arduino15/packages/stm32duino/tools/stm32tools/1.0.9/linux/stm32flash
./stm32flash -w ~/Downloads/generic_boot20_pb12.bin -v -g 0x0 /dev/ttyUSB0
En remplaçant par mes fichiers, cela donne :
chp@ubuntu:~/Arduino/hardware/Arduino_STM32/tools/linux/stm32flash$ ./stm32flash -w /home/chp/Arduino/hardware/Arduino_STM32/tools/linux/generic_boot20_pc13.bin -v -g 0x0 /dev/ttyUSB0
stm32flash Arduino_STM32_0.9
http://github.com/rogerclarkmelbourne/arduino_stm32
Using Parser : Raw BINARY
Interface serial_posix: 57600 8E1
Failed to read ACK byte
Unexpected reply from device on command 0x01
chp@ubuntu:~/Arduino/hardware/Arduino_STM32/tools/linux/stm32flash$
Le même type de réponse que celle que j'obtiens en essayant de téléverser un sketch dans le module :
Failed to read ACK byte
Unexpected reply from device on command 0x01
stm32flash Arduino_STM32_0.9
http://github.com/rogerclarkmelbourne/arduino_stm32
Using Parser : Raw BINARY
Interface serial_posix: 115200 8E1
Une erreur est survenue lors du transfert du croquis
Dans les deux cas, il y a un problème de lecture de ACK, par contre, la vitesse n'est pas la même dans les deux cas. 57600 bauds pour le bootloader et 115200 bauds pour le téléversement d'un sketch ???
Le port est donc accessible en écriture, pas de doute.
Il n'y a aucune raison pour la méthode que j'avais donné dans ton précédent post ne fonctionne pas. Je parle de la méthode FTDI bien sûr.
Est-tu sûr que celle-ci fonctionne encore sous Windows, histoire de vérifier qu'il n'y a pas une erreur de câblage ?
Vérifie bien que tu procèdes de la même manière, avec les mêmes options.
Je me suis aussi posé la question. Je suis retourné sous Windows et j'ai constaté que ça fonctionnait toujours.
De retour sous Ubuntu, toujours en FTDI et avec les mêmes paramètres pour la carte STM32 et sur le port /dev/ttyUSB0, cela refuse toujours de fonctionner. ?? Ça commence à être super énervant.
Dans le post précédent j'avais fait mes essais sous Ubuntu. De toutes façons cela fait douze ans que Windows est banni de chez moi. Je n'ai pas pu faire autrement.
Apparemment ton essai de chargement en mode série a été fait en 115200 baud.
Failed to read ACK byte
Unexpected reply from device on command 0x01
stm32flash Arduino_STM32_0.9
http://github.com/rogerclarkmelbourne/arduino_stm32
Using Parser : Raw BINARY
Interface serial_posix: 115200 8E1
Le mien s'est déroulé à 230400.
stm32flash Arduino_STM32_0.9
http://github.com/rogerclarkmelbourne/arduino_stm32
Using Parser : Raw BINARY
Interface serial_posix: 230400 8E1
J'ai fouillé un peu et apparemment une auto-détection du baudrate est faire par le bootloader du STM32. ICI page 5
stm32flash envoie 0x7f et reçoit en retour 0x79. Apparemment il y a incompréhension (Failed to read ACK byte).
Utilises-tu une vraie Ubuntu sur une partition ou une Ubuntu en VirtualMachine ?
Ce matin, petite pose pour aller skier dans la forêt de Montmorency (20 km N-O de Paris)
Sous Windows, lorsque j'utilise le FTDI, au téléversement j’obtiens :
stm32flash 0.4
http://stm32flash.googlecode.com/
Using Parser : Raw BINARY
Interface serial_w32: 115200 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 (1.24%)
Wrote address 0x08000200 (2.48%)
Wrote address 0x08000300 (3.72%)
...
...
Wrote address 0x08005000 (99.17%)
Wrote address 0x080050ac (100.00%) Done.
Starting execution at address 0x08000000... done.
L'échange se fait bien à 115200 bauds.
NOTA : On voit ci-dessus qu'il est écrit : "- Flash : 128KiB (sector size: 4x1024)", alors que dans mon choix, j'ai sélectionné 64 k. Je viens de faire un essai en sélectionnant 128 k ... le téléversement se passe toujours bien et m'indique toujours 128 k ??
A la base, mon PC est équipé de Windows XP. Puis, j'ai créé une partition sur laquelle j'ai installé Ubuntu. Au démarrage de mon PC, je choisis l'environnement dans lequel je veux travailler (m'amuser).
Bon je vais passer sous Ubuntu voir ce qui s'y passe ...