Go Down

Topic: STM32 DUINO (Read 3587 times) previous topic - next topic

68tjs

Tu as raison, pour ma part j'ai effacé tout ce qui n'est pas strictement technique.

_pepe_


hbachetti

Excellent.
Merci pour cette réaction. Je n'en attendais pas moins de vous.

@+
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

hbachetti

#18
Mar 23, 2019, 01:15 pm Last Edit: Mar 23, 2019, 01:16 pm by hbachetti
Salut à tous

Constatant les progrès énormes réalisés par l'équipe STM32DUINO j'ai ajouté par mal de renseignements dans mon tuto à propos du support des cartes ST Microelectronics, NUCLEO, DISCOVERY, que je connais bien :

https://riton-duino.blogspot.com/2018/03/stm32f103c8t6-et-arduino.html#boards


Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

hbachetti

#19
Mar 27, 2019, 02:34 pm Last Edit: Mar 27, 2019, 02:48 pm by hbachetti
Un STM32 c'est bien mais que peut-on bien faire avec ?


TFT ST7735 1.8"


TFT ILI9341 2.8"

Sur une F401RE, sans aucune difficulté, avec les librairies ARDUINO bien sûr :

https://github.com/adafruit/Adafruit-ST7735-Library
https://github.com/adafruit/Adafruit_ILI9341

Remarque : la librairie UTFT refuse ce genre de processeur.
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

hbachetti

#20
Mar 27, 2019, 11:17 pm Last Edit: Mar 27, 2019, 11:19 pm by hbachetti
STM32DUINO : il y a des options d'optimisation dans le menu Outils / Optimize, dont une attire mon attention, je dirais même "me titille" :

Debug (-g)

Pourquoi ne pas essayer ?

Compilation puis chargement : OK

Lancement du serveur gdb :

Code: [Select]

riton@alpha:/mnt/sdc1/riton$ st-util
2019-03-27T22:48:51 INFO src/stlink-common.c: Loading device parameters....
2019-03-27T22:48:51 INFO src/stlink-common.c: Device connected is: F4 device (Dynamic Efficency), id 0x10006433
2019-03-27T22:48:51 INFO src/stlink-common.c: SRAM size: 0x18000 bytes (96 KiB), Flash: 0x80000 bytes (512 KiB) in pages of 16384 bytes
2019-03-27T22:48:51 INFO gdbserver/gdb-server.c: Chip ID is 00000433, Core ID is  2ba01477.
2019-03-27T22:48:51 INFO gdbserver/gdb-server.c: Target voltage is 3270 mV.
2019-03-27T22:48:51 INFO gdbserver/gdb-server.c: Listening at *:4242...


Lancement du debugger :

Quote
riton@alpha:~/arduino-1.8.5/examples/02.Digital/BlinkWithoutDelay$ ~/.arduino15/packages/STM32/tools/arm-none-eabi-gcc/6-2017-q2-update/bin/arm-none-eabi-gdb /tmp/arduino_build_30137/BlinkWithoutDelay.ino.elf
...
Reading symbols from /tmp/arduino_build_30137/BlinkWithoutDelay.ino.elf...done.
(gdb) target extended-remote :4242       // connexion au serveur gdb
Remote debugging using :4242
0x08000620 in Reset_Handler ()
(gdb) c                              // on continue
Continuing.
^C                                    // on arrête
Program received signal SIGTRAP, Trace/breakpoint trap.
0x08000534 in loop () at /mnt/sdc1/riton/arduino-1.8.5/examples/02.Digital/BlinkWithoutDelay/BlinkWithoutDelay.ino:57
57     if (currentMillis - previousMillis >= interval) {
(gdb) p currentMillis           // affiche la variable currentMillis
$1 = 10288
(gdb) n                          // un petit pas en avant
main () at /home/riton/.arduino15/packages/STM32/hardware/stm32/1.5.0/cores/arduino/main.cpp:65
65       if (serialEventRun) serialEventRun();       // on est sorti de la loop()
(gdb) b BlinkWithoutDelay.ino:55         // on place un petit point d'arrêt ?
Breakpoint 1 at 0x800052e: file /mnt/sdc1/riton/arduino-1.8.5/examples/02.Digital/BlinkWithoutDelay/BlinkWithoutDelay.ino, line 55.
(gdb) c                                      // on continue
Continuing.

Breakpoint 1, loop () at /mnt/sdc1/riton/arduino-1.8.5/examples/02.Digital/BlinkWithoutDelay/BlinkWithoutDelay.ino:55
55     unsigned long currentMillis = millis();      // point d'arrêt atteint
(gdb)

Ça marche. Top cool  8)

Bien sûr avec une interface graphique se serait plus sympa, et ça existe : Eclipse ou PlatformIO.

Un debugger, c'est ce qui me manque le plus sur ARDUINO

Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

68tjs

#21
Mar 28, 2019, 01:20 pm Last Edit: Mar 28, 2019, 01:34 pm by 68tjs
Là clairement tu a touché dans le mile sauf que je n'ai toujours rien compris à l'utilisation de gdb, openocd, etc..... ni ce qu'on peut faire avec.

Un tuto simple pour "ignares" en débogage serait fortement apprécié.

Edit :
ce bus est aussi présent sur les cartes Due, Zero et Mkr même s'il est confidentiel : sur les photos on voit que le circuit imprimé n'est pas équipé de connecteur.
Le débogage des micro ARM Atmel devrait aussi être possible.

hbachetti


Dans le cas du STM32 c'est très simple. OpenOCD est inutile.
Il suffit de lancer Le serveur gdb st-util. Il tourne en arrière plan et attend sur une socket (port tcp 4242).

Ensuite sous gdb il y a une petite commande pour se connecter dessus :

target extended-remote :4242

Quote
Un tuto simple pour "ignares" en débogage serait fortement apprécié.
Pourquoi pas mais il faudrait que je le fasse avec une interface graphique.

merci pour le commentaire
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

hbachetti

#23
Mar 28, 2019, 11:59 pm Last Edit: Mar 29, 2019, 01:18 am by hbachetti
Quote
Un tuto simple pour "ignares" en débogage serait fortement apprécié.
BON. A la demande générale (surtout 68tjs) je m'y suis collé.

Un tuto simple ?

Pas vraiment ... mais c'est fait.

https://riton-duino.blogspot.com/2019/03/stm32-duino-deboguer.html

Des restes de mon ancien métier, simplement pour que vous sachiez qu'il n'y a pas qu'ARDUINO dans la vie.

Mais cela reste de l'ARDUINO quand même puisqu'il s'agit de STM32DUINO.

Un debugger peut aider pas mal à déverminer une application et surtout extraire certaines bestioles indésirables : les bugs !



Et une photo de la belle qui m'a aidé dans cette tâche :



Elle a des connecteurs ARDUINO UNO vous avez remarqué ?

100% compatible, mais une fréquence d'horloge différente d'un ARDUINO : 84MHz !
Ça décoiffe  :smiley-evil:

J'ai fait avec la même carte des essais d'ADC, PCF8574, MAX7219, TFT, DS3231, et ce n'est pas fini.

https://riton-duino.blogspot.com/2018/03/stm32f103c8t6-et-arduino.html#boards

@+ et bonne bidouilles.

Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

68tjs

#24
Mar 29, 2019, 01:46 pm Last Edit: Mar 29, 2019, 01:54 pm by 68tjs
Chapeau bas.

Maintenant que Buster (Debian testing) est passée à l'état "Frozen" je vais l'installer et ensuite promis j'essaye.

Encore une question : le boîtier "STmicro" permet-il de faire plus que ce que tu appelle le clone chinois.
Si je pose la question ce n'est pas parce que je veux en faire plus, il faut déjà digérer ton tuto, mais c'est par curiosité personnelle car il me semble avoir compris que JTAG utilise davantage de pins.

hbachetti

Non je ne pense pas que le ST en fasse plus.

Tu veux essayer sur quelle carte ?

Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

68tjs

La blue pill, mais j'ai aussi un Nucléo L15xmachin dans un tiroir.

Je parle sur le plan de brochage http://reblag.dk/wordpress/wp-content/uploads/2016/07/The-Generic-STM32F103-Pinout-Diagram.pdf   des broches JTDI, JTDO, JTRST et sur le connacteur SWD : JTMS, SWIO et SWCLK/JTCK.
Ou alors je confond JTAG avec le débogage.

D'un autre coté le "boîtier" STMicro possède plus de connecteurs et il existe une carte sur Ebay d'un F103 avec justement un gros connecteur comme celui du boîtier ST.
Ma petite tête me fait penser que plus de broches au connecteur ce n'est peut-être pas pour rien.

Je reprécise : c'est juste de la curiosité.

hbachetti

La NUCLEO fonctionne en USB directement. Le ST-LINK est sur la carte.

Quote
Ma petite tête me fait penser que plus de broches au connecteur ce n'est peut-être pas pour rien.
Je ne crois pas. Sur les 20 pins il y en a très peu qui sont utilisées : https://www.st.com/content/ccc/resource/technical/document/user_manual/49/56/14/ee/98/cc/4d/2c/CD00221563.pdf/files/CD00221563.pdf/jcr:content/translations/en.CD00221563.pdf

Certaines cartes sont équipées de connecteurs SWIM ou 20 pins.

Une carte OLIMEX :

https://www.olimex.com/Products/ARM/ST/STM32-H103/

Et le pinout de son connecteur :



C'est plein de GND.

Par contre il y a peut-être d'autres outils qui utilisent d'autres pins de ce connecteur sur des cartes qui fournissent plus de signaux.

Mais le ST-LINK ne les utilise pas.
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

hbachetti

Les petits ST-LINK chinois marchent bien :



Avec le petit fichier udev qui va bien :

/etc/udev/rules.d/49-stlinkv2.1.rules :

# stm32 nucleo boards, with onboard st/linkv2-1
# ie, STM32F0, STM32F4.
# STM32VL has st/linkv1, which is quite different

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="374b", \
   MODE:="0666", \
   SYMLINK+="stlinkv2-1_%n"

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", \
   MODE:="0666", \
   SYMLINK+="stlinkv2_%n"

# If you share your linux system with other users, or just don't like the
# idea of write permission for everybody, you can replace MODE:="0666" with
# OWNER:="yourusername" to create the device owned by you, or with
# GROUP:="somegroupname" and mange access using standard unix groups.

Ce fichier permet à l'utilisateur non root d'accéder au device, qu'il soit un ST-LINK ST MicroElectronics ou un ST-LINK chinois.
Linux is like a wigwam: no Windows, no Gates, and an Apache inside ...

68tjs

Alors sur ce point : faites gaffe.

Je ne sais pas si c'est toujours le cas mais il y a 2, 3 ans certains modèles de ST-Link chinois avait un circuit imprimé avec brochage différent de celui écrit sur le capot. Si on suit  les indications du boîtier on provoque un court-circuit.

Comment les reconnaître si malheureusement il y en a encore qui traînent à la vente :

Méthode barbare : brancher et regarder si tout s'éteint c'est qu'il y a le court-circuit.

Méthode policée : (pour Linux)
Après connexion du St-Link regarder le résultat de
$dmesg | tail -10

Si vous lisez :
usb 2-4: SerialNumber: 9  c'est bon

Par contre si vous lisez :
usb 2-4: SerialNumber: PÿtQ\xffffffc2\xffffff87VSD3%g
Ce n'est pas bon, il faut ouvrir le capot et lire le brochage réel sur le circuit imprimé et après tout est est ok.

Information :
Les programmes ST-link et autres St-machin sont maintenant disponibles en paquet Debian. Pour Buster pas de problème, pour Stretch il faut activer  les dépôts backport.

Dans l'ancienne méthode où il fallait télécharger les sources chez Texane la doc fournissait deux versions de règles Udev. La version qui fonctionne avec la bluepill à 2€ est la version pour les cartes discovery.
Il faut réserver la version Nucleo aux cartes Nucléo.

Go Up