Développement avancé STM32 (16) - Projet de débogage CMSIS DAP

Stm32 Advanced Development Cmsis Dap Debugging Project



Récemment, le projet de l'entreprise attend que l'équipement du fournisseur soit un peu gratuit, j'ai donc jeté la solution du débogueur officiel open source CMSIS DAP d'ARM, en utilisant la solution X893 Great God, attachée sous sa page d'accueil personnelle et sur le lien du projet GitHub (I j'utilise la solution logicielle et matérielle stlinkv2.1):

[http://akb77.com/g/stm32/cmsis-dap-adapter/](http://akb77.com/g/stm32/cmsis-dap-adapter/) [https://github.com/x893/CMSIS-DAP](https://github.com/x893/CMSIS-DAP)

Cette solution de débogage peut être considérée comme très rentable. La vitesse de l'interface SWD peut atteindre une vitesse maximale de 10M, et il est également livré avec un port série qui prend en charge jusqu'à 115200bps, et il peut être identifié comme deux périphériques en connectant une ligne, qui peut être utilisée comme un débogueur unique.Il peut également être intégré dans le PCB d'autres projets en tant que débogueur embarqué et circuit de fonction USART vers port série.




Problèmes lors de l'utilisation

En tant qu'article de cette série, qui est naturellement dans Ubuntu, c'est l'objectif dont nous voulons parler. Au début, lorsque j'ai connecté le matériel et utilisé la nouvelle configuration OpenOCD, j'ai eu le problème de ne pas pouvoir me connecter à CMSIS DAP.



openocd -f interface/cmsis-dap.cfg -f target/stm32f1x.cfg

Après avoir étudié attentivement les mots clés de plusieurs questions pendant une nuit, j'ai finalement trouvé les problèmes précédents en essayant d'installer un nouvel OpenOCD. Il s'est avéré qu'il y avait deux problèmes lors de l'installation d'OpenOCD à ce moment-là:



  1. Paramètres de compilation et d'installation d'OpenOCD

    Nous allons l'utiliser avant de télécharger le code source d'OpenOCD et de compiler ./configure La commande configure les paramètres de compilation et sa configuration de compilation par défaut n'active que plusieurs débogueurs courants tels que stlink jlink, et n'ajoute pas la prise en charge de CMSIS DAP.

  2. problème usb rule.d



    Sous Ubuntu ou Linux, nous utilisons /etc/udev/rules.d/ Le fichier de règles dans le répertoire est utilisé pour identifier le périphérique USB et fournir son interface pour que libusb l'utilise, puis libusb fournit l'interface pour openocd à connecter et à utiliser. Par conséquent, nous devons ajouter une nouvelle bibliothèque DAP CMSIS dans ce fichier pour l'utiliser normalement.


Réinstaller OpenOCD

Après avoir parlé du problème, nous allons maintenant présenter la solution.

Tout d'abord, nous devons évidemment reconfigurer, compiler et installer OpenOCD pour démarrer le code de support CMSIS DAP, mais avant cela, nous devons installer une bibliothèque cachée, car il n'y a pas de pilote de périphérique HID par défaut sous Linux.

$ sudo apt-get install libhidapi-dev

Une fois l'installation terminée, entrez le chemin du code source d'OpenOCD et utilisez les instructions pour configurer ses paramètres de compilation

$ ./configure --enable-cmsis-dap

Après avoir attendu la fin du script de configuration, les éléments suivants seront affichés:

OpenOCD configuration summary -------------------------------------------------- MPSSE mode of FTDI based devices yes (auto) ST-Link JTAG Programmer yes (auto) TI ICDI JTAG Programmer yes (auto) Keil ULINK JTAG Programmer yes (auto) Altera USB-Blaster II Compatible yes (auto) Versaloon-Link JTAG Programmer yes (auto) OSBDM (JTAG only) Programmer yes (auto) eStick/opendous JTAG Programmer yes (auto) Andes JTAG Programmer yes (auto) USBProg JTAG Programmer yes (auto) Raisonance RLink JTAG Programmer yes (auto) Olimex ARM-JTAG-EW Programmer yes (auto) CMSIS-DAP Compliant Debugger yes Cypress KitProg Programmer yes (auto) Altera USB-Blaster Compatible no ASIX Presto Adapter no OpenJTAG Adapter no SEGGER J-Link Programmer yes (auto)

Vous pouvez voir que CMSIS-DAP a été activé, puis nous utilisons des commandes pour compiler et installer le nouvel OpenOCD (pas besoin de supprimer l'ancienne version)

$ sudo make $ sudo make install

Une fois l'installation terminée, nous entrons dans le répertoire contrib et utilisons la commande pour 60-openocd.rules Copie de fichier dans /etc/udev/rules.d/ Sous le contenu

$ sudo cp 60-openocd.rules /etc/udev/rules.d/

Comme ce fichier contient toutes les descriptions d'interface USB prenant en charge le débogueur, nous devons également supprimer les fichiers de règles copiés dans ce fichier auparavant, tels que 49-stlinkv1.rules 49-stlinkv2.rules 49-stlinkv2-1.rules 99-jlink .règles etc.

$ rm 49-stlinkv1.rules 49-stlinkv2.rules 49-stlinkv2-1.rules 99-jlink.rules

Redémarrez le système pour recharger les règles. Ensuite, utilisez la commande OpenOCD pour vous connecter, et vous avez terminé ~.


Utiliser le débogueur

Après avoir redémarré le système, nous utilisons à nouveau la commande pour nous connecter à la carte cible

$ openocd -f interface/cmsis-dap.cfg -f target/stm32f1x.cfg Open On-Chip Debugger 0.10.0+dev-00197-g2168c47 (2017-10-14-08:41) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html Info : auto-selecting first available session transport 'swd'. To override use 'transport select '. adapter speed: 1000 kHz adapter_nsrst_delay: 100 none separate cortex_m reset_config sysresetreq Info : CMSIS-DAP: SWD Supported Info : CMSIS-DAP: Interface Initialised (SWD) Info : CMSIS-DAP: FW Version = 1.0 Info : SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 0 TDO = 0 nTRST = 0 nRESET = 1 Info : CMSIS-DAP: Interface ready Info : clock speed 1000 kHz Info : SWD DPIDR 0x1ba01477 Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints

Connexion réussie ~

PS: s'il montre que la connexion échoue, essayez de rebrancher et de débrancher l'interface USB de CMSIS DAP. J'ai déjà rencontré ce problème.

Configurer le port série

Puisque nous utilisons le pilote CDC ACM, notre nom de port série n'est pas ttyUSB0 Mais ttyACM0 , Utilisez les commandes pour modifier la configuration de Minicom

$ sudo minicom -s

Ctrl + a, o. Définissez les paramètres du port série. Dans la configuration du port série, nous définissons le numéro de périphérique du port série, la vitesse de transmission et le bit de parité impair et d'autres paramètres, puis sélectionnez Enregistrer la configuration en tant que dfl et redémarrez minicom pour terminer les paramètres du port série.

image