web-dev-qa-db-fra.com

STM32CUBEIDE ne peut que flash une fois, aucun débogage de SWD

Pendant quelques années, j'utilise le compilateur Mbed Online pour créer des fichiers .bin, puis flasez-les à la ligne de commande comme celle-ci, en utilisant un dongle USB St-Link/V2, et tout fonctionne parfaitement:

st-flash write 01_blink.NUCLEO_F103RB.bin 0x8000000

Aujourd'hui, j'ai téléchargé le STM32Cubeide pour Linux (Fedora 30) et a commencé à traverser ce tutoriel, à l'aide d'une Maple Mini (STM32F103CBT6).

https://www.digikey.co.nz/fr/maker/projects/geting-started-with-stm32-Introduction-a-stm32cubeide/6A6C60A670C447ABBB90FD0FD78008697

Après avoir construit le projet et commencer une course de débogage, je reçois la sortie:

STMicroelectronics ST-LINK GDB server. Version 5.3.2
Copyright (c) 2019, STMicroelectronics. All rights reserved.

Starting server with the following options:
        Persistent Mode            : Disabled
        Logging Level              : 1
        Listen Port Number         : 61234
        Status Refresh Delay       : 15s
        Verbose Mode               : Disabled
        SWD Debug                  : Enabled

Waiting for debugger connection...
Debugger connected
      -------------------------------------------------------------------
                        STM32CubeProgrammer v2.2.0                  
      -------------------------------------------------------------------



Log output file:   /tmp/STM32CubeProgrammer_2ZxzGk.log
ST-LINK SN  : 34006B063058373138650943
ST-LINK FW  : V2J34S7
Voltage     : 3.21V
SWD freq    : 4000 KHz
Connect mode: Under Reset
Reset mode  : Hardware reset
Device ID   : 0x410
Device name : STM32F101/F102/F103 Medium-density
Flash size  : 64 KBytes
Device type : MCU
Device CPU  : Cortex-M3



Memory Programming ...
Opening and parsing file: ST-LINK_GDB_server_Q2zZSF.srec
  File          : ST-LINK_GDB_server_Q2zZSF.srec
  Size          : 4648 Bytes
  Address       : 0x08000000 


Erasing memory corresponding to segment 0:
Erasing internal memory sectors [0 4]
Download in Progress:


File download complete
Time elapsed during download operation: 00:00:00.595



Verifying ...




Download verified successfully 


Target is not responding, retrying...
Target is not responding, retrying...
Target is not responding, retrying...
Target is not responding, retrying...
Target is not responding, retrying...
Target is not responding, retrying...
Target is not responding, retrying...
Target is not responding, retrying...
Target is not responding, retrying...
Target is not responding, retrying...
Error! Failed to read target status 
Debugger connection lost.
Shutting down...

Après cela, je ne peux plus commencer une séance de débogage parce que je reçois ceci:

enter image description here

Je peux voir le voyant clignotant comme prévu pour que je sache que le programme a été flashé à la carte OK. Mais je ne peux rien faire de plus en plus avec STM32Cubeide et lorsque j'essaie de clignoter via la ligne de commande comme avant, maintenant cela ne fonctionne pas non plus:

[root@localhost Downloads]# st-flash write 01_blink.NUCLEO_F103RB.bin 0x8000000 
st-flash 1.5.1-38-gc3577b5
2020-03-24T13:51:09 INFO common.c: Loading device parameters....
2020-03-24T13:51:09 WARN common.c: Invalid flash type, please check device declaration
  core status: unknown
Unknown memory region

Heureusement, je peux retourner à mon point de départ à l'aide de l'utilitaire ST-Link (sous Windows) et en maintenant le bouton de réinitialisation avant de vous connecter, puis effectuez une effacement complète, comme mentionné ici:

http://www.kerrywong.com/2012/08/02/Le-Deaded-Cannot-Connect-a-st-Link-Error-Message/

Mais évidemment, ce n'est pas une situation viable pour obtenir un développement productif. Qu'est-ce que je fais mal?

Dans l'onglet 'Debugger' de la boîte de dialogue "Débogueur", j'ai essayé définir "l'interface" comme SWD (c'était déjà réellement) et j'ai également essayé toutes les options pour "réinitialiser le comportement", sans changement de résultat.

3
iforce2d

Pourquoi cela se passe-t-il toujours? Je lutterai avec quelque chose pendant quelques heures, puis passez 20 minutes de 20 minutes en faisant une question concise et claire que possible avec des captures d'écran, etc., puis deux minutes après avoir posté la réponse, généralement dans une autre SO Réponse que je n'ai jamais vu en quelques heures de recherche. Je pense à une la moitié des questions que j'ai posées sur SO a fini par cette voie.

Le problème semble être que si vous ne déclarez que vous souhaitez utiliser SWD et sur les broches, elle ne sera pas activée par défaut. Donc, dès que le nouveau programme clignoté, la connexion SWD est morte. Je suppose que le programme Mbed conserve l'utilisation de SWD sur les broches standard par défaut, ce qui n'était donc jamais un problème là-bas.

Quoi qu'il en soit pour éviter cela, revenez à la broche et à la configuration (double-cliquez sur le fichier .ioc dans l'explorateur de projet). Définissez les broches appropriées pour SWD (PA13, PA14 dans mon cas) et sous "System Core", cliquez sur SYS et définissez l'option de débogage sur "Fil série".

enter image description here

12
iforce2d

Oui, c'est correct iforce2d. Une fois que vous avez activé le fil de série, vous pouvez maintenant clignoter votre nouveau programme à la carte (à l'intérieur de l'IDE) sans qu'il soit nécessaire de tout d'abord effacer tout l'utilisation de l'utilitaire ST-Link.

Suivez ces étapes :

  1. Connectez le code PIN BOOT0 à HIGH (3.3V) - Le tableau de pilules bleue a commodément un cavalier pour cela. (Pas sûr de la Mini Maple)
  2. Appuyez sur le bouton de réinitialisation.
  3. Construisez et gérez votre nouveau programme (dans la STM32Cubeide).
  4. Renvoyer le cavalier à zéro.

Une fois que vous avez un programme dans la STM32, les broches SWD sont activées, vous ne serez plus "verrouillé", de sorte que vous n'avez pas besoin d'utiliser boot0 (ou réinitialiser) à nouveau après cette ...

Remarque: la configuration de débogage (qui fonctionne le mieux pour moi): Probe de débogage = ST-LINK (OPENOCD); Mode de réinitialisation = Réinitialisation du système logiciel.

2
Johan