Stlink: STM32L476 DISCOVERY: st-flash ne parvient pas à écrire

Créé le 13 juin 2020  ·  5Commentaires  ·  Source: stlink-org/stlink

Merci pour vos commentaires sur le projet stlink.

Afin de permettre aux développeurs et aux autres contributeurs d'isoler et de cibler votre problème respectif, veuillez prendre le temps de remplir chacun des éléments suivants correspondant à votre problème spécifique:

  • Programmeur / type de carte: Stlink / v2-1
  • Version du firmware du programmeur: version intégrée avec STM32L476 DISCOVERY
  • Système d'exploitation et version: Linux 5.5.0-1-amd64
  • Version des outils Stlink et / ou hachage git commit: v1.6.1 (à partir de la version .tar.gz)
  • Nom de l'outil de ligne de commande Stlink: st-flash
  • Puce cible (et carte le cas échéant): STM32L476 DISCOVERY

De plus, nous vous demandons de bien vouloir décrire le problème détecté de manière aussi détaillée que possible et d'ajouter une sortie de débogage si disponible, en utilisant le modèle suivant:

Sortie de ligne de commande:

tabemann<strong i="18">@sirius</strong>:~/projects/zeptoforth$ st-flash write zeptoforth.bin 0x08000000
st-flash 1.6.1
2020-06-12T22:42:05 INFO common.c: L4xx: 96 KiB SRAM, 1024 KiB flash in at least 2 KiB pages.
file zeptoforth.bin md5 checksum: d1e51663b9f8971cf1167145c9e76850, stlink checksum: 0x001cfa29
2020-06-12T22:42:05 INFO common.c: Attempting to write 23324 (0x5b1c) bytes to stm32 address: 134217728 (0x8000000)
EraseFlash - Page:0x0 Size:0x800 2020-06-12T22:42:05 INFO common.c: Flash page at addr: 0x08000000 erased
EraseFlash - Page:0x1 Size:0x800 2020-06-12T22:42:05 INFO common.c: Flash page at addr: 0x08000800 erased
EraseFlash - Page:0x2 Size:0x800 2020-06-12T22:42:05 INFO common.c: Flash page at addr: 0x08001000 erased
EraseFlash - Page:0x3 Size:0x800 2020-06-12T22:42:05 INFO common.c: Flash page at addr: 0x08001800 erased
EraseFlash - Page:0x4 Size:0x800 2020-06-12T22:42:05 INFO common.c: Flash page at addr: 0x08002000 erased
EraseFlash - Page:0x5 Size:0x800 2020-06-12T22:42:05 INFO common.c: Flash page at addr: 0x08002800 erased
EraseFlash - Page:0x6 Size:0x800 2020-06-12T22:42:06 INFO common.c: Flash page at addr: 0x08003000 erased
EraseFlash - Page:0x7 Size:0x800 2020-06-12T22:42:06 INFO common.c: Flash page at addr: 0x08003800 erased
EraseFlash - Page:0x8 Size:0x800 2020-06-12T22:42:06 INFO common.c: Flash page at addr: 0x08004000 erased
EraseFlash - Page:0x9 Size:0x800 2020-06-12T22:42:06 INFO common.c: Flash page at addr: 0x08004800 erased
EraseFlash - Page:0xa Size:0x800 2020-06-12T22:42:06 INFO common.c: Flash page at addr: 0x08005000 erased
EraseFlash - Page:0xb Size:0x800 2020-06-12T22:42:06 INFO common.c: Flash page at addr: 0x08005800 erased
2020-06-12T22:42:06 INFO common.c: Finished erasing 12 pages of 2048 (0x800) bytes
2020-06-12T22:42:06 INFO common.c: Starting Flash write for F2/F4/L4
2020-06-12T22:42:06 INFO flash_loader.c: Successfully loaded flash loader in sram
size: 23324
2020-06-12T22:42:06 ERROR flash_loader.c: flash loader run error
2020-06-12T22:42:06 ERROR common.c: stlink_flash_loader_run(0x8000000) failed! == -1
stlink_fwrite_flash() == -1

Attendu / description:

Ce st-flash écrirait avec succès zeptoforth.bin sur la mémoire flash du MCU STM32L476, à 0x08000000.

AVIS: Ce rapport de bogue peut être fermé sans préavis, si les informations ne sont pas suffisantes!

Merci pour votre soutien.

Les responsables du projet stlink

bufixed buregression componenst-flash componenstlink-lib erroflash-loader programmestlinkv2-1 staturesolved targestm32l4

Commentaire le plus utile

J'ai testé le patch dans la branche de développement avec la carte Nucleo STM32L476RG et son ST-LINK / V2-1 intégré. Le patch a corrigé la régression. Merci d'avoir examiné cela.

Tous les 5 commentaires

J'ai rencontré la même régression sur une carte Nucleo L476RG à la fois stlink 1.5.0 et 1.6.0 fonctionnent pour moi, mais la dernière version de git produit cette sortie (après que je l'ai arrêté de spammer les messages de journal USB vers stdout):

st-flash 1.6.0-370-g05f79e1-dirty
2020-06-13T07:03:42 INFO common.c: L4xx: 96 KiB SRAM, 1024 KiB flash in at least 2 KiB pages.
file /home/crest/mecrisp-stellaris-2.5.4/mecrisp-stellaris-source/stm32l476-ra-nucleo/mecrisp-stellaris-stm32l476.bin md5 checksum: 2a291252c8ab59ec649217f666b78d4, stlink checksum: 0x001f2ba2
2020-06-13T07:03:42 INFO common.c: Attempting to write 20304 (0x4f50) bytes to stm32 address: 134217728 (0x8000000)
EraseFlash - Page:0x0 Size:0x800 2020-06-13T07:03:42 INFO common.c: Flash page at addr: 0x08000000 erased
EraseFlash - Page:0x1 Size:0x800 2020-06-13T07:03:42 INFO common.c: Flash page at addr: 0x08000800 erased
EraseFlash - Page:0x2 Size:0x800 2020-06-13T07:03:42 INFO common.c: Flash page at addr: 0x08001000 erased
EraseFlash - Page:0x3 Size:0x800 2020-06-13T07:03:42 INFO common.c: Flash page at addr: 0x08001800 erased
EraseFlash - Page:0x4 Size:0x800 2020-06-13T07:03:42 INFO common.c: Flash page at addr: 0x08002000 erased
EraseFlash - Page:0x5 Size:0x800 2020-06-13T07:03:42 INFO common.c: Flash page at addr: 0x08002800 erased
EraseFlash - Page:0x6 Size:0x800 2020-06-13T07:03:42 INFO common.c: Flash page at addr: 0x08003000 erased
EraseFlash - Page:0x7 Size:0x800 2020-06-13T07:03:42 INFO common.c: Flash page at addr: 0x08003800 erased
EraseFlash - Page:0x8 Size:0x800 2020-06-13T07:03:42 INFO common.c: Flash page at addr: 0x08004000 erased
EraseFlash - Page:0x9 Size:0x800 2020-06-13T07:03:42 INFO common.c: Flash page at addr: 0x08004800 erased
2020-06-13T07:03:42 INFO common.c: Finished erasing 10 pages of 2048 (0x800) bytes
2020-06-13T07:03:42 INFO common.c: Starting Flash write for F2/F4/L4
2020-06-13T07:03:42 INFO flash_loader.c: Successfully loaded flash loader in sram
size: 20304
2020-06-13T07:03:43 ERROR flash_loader.c: flash loader run error
2020-06-13T07:03:43 ERROR common.c: stlink_flash_loader_run(0x8000000) failed! == -1
stlink_fwrite_flash() == -1

Je pense que cela peut être un problème de timing. J'ai eu le même problème avec le stm32l432. J'ai apporté la modification suivante dans flash_loader.c qui semble résoudre le problème. J'hésite à dire que c'est la cause profonde.

@@ -368,7 +368,7 @@ int stlink_flash_loader_run(stlink_t *sl, flash_loader_t* fl
, stm32_addr_t targe
 // by increasing the sleep-per-round to the same order-of-magnitude as
 // the tick-rounding that the OS uses, the wait until the error message is
 // reduced to the same order of magnitude as what was intended. -- REW.
-#define WAIT_ROUNDS 100
+#define WAIT_ROUNDS 200
     /* wait until done (reaches breakpoint) */
     for (i = 0; i < WAIT_ROUNDS; i++) {
         usleep(1000);

@geoffreymbrown : Pourriez-vous soumettre ceci en tant que PR, dès que @tabemann et / ou @Crest ont été vérifiés?

J'ai testé le patch dans la branche de développement avec la carte Nucleo STM32L476RG et son ST-LINK / V2-1 intégré. Le patch a corrigé la régression. Merci d'avoir examiné cela.

@geoffreymbrown : Je vous laisse alors ça ...

Cette page vous a été utile?
0 / 5 - 0 notes