{"id":1400,"date":"2020-05-08T17:53:12","date_gmt":"2020-05-08T15:53:12","guid":{"rendered":"http:\/\/pila.fr\/wordpress\/?p=1400"},"modified":"2020-05-08T23:23:05","modified_gmt":"2020-05-08T21:23:05","slug":"developper-sur-stm32-avec-stm32plus-openocd-et-qtcreator","status":"publish","type":"post","link":"https:\/\/pila.fr\/wordpress\/archives\/1400","title":{"rendered":"D\u00e9velopper sur STM32 avec stm32plus, OpenOCD et QtCreator"},"content":{"rendered":"\n<p>Cet article d\u00e9crit tr\u00e8s rapidement la proc\u00e9dure que j&rsquo;ai suivie ( durant de nombreuses heures de tatonnements ) afin de mettre en place sous Linux Mint un environnement de d\u00e9veloppement pour stm32f042 bas\u00e9 sur QtCreator, stm32plus et OpenOCD, permettant de s&rsquo;affranchir des logiciels ST.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Installation de la biblioth\u00e8que stm32plus<\/h2>\n\n\n\n<p>Cloner le d\u00e9pot git situ\u00e9 \u00e0 l&rsquo;URL suivante : <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">https:\/\/github.com\/andysworkshop\/stm32plus<\/pre>\n\n\n\n<p>Installer les d\u00e9pendances n\u00e9cessaires : <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$ apt install libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib scons gdb-multiarch cmake<\/pre>\n\n\n\n<p>Compiler la biblioth\u00e8que stm32plus : Ex\u00e9cuter la commande suivante dans le dossier stm32plus en modifiant si n\u00e9cessaire le type de MCU, le mode ( fast, small ou debug ) ainsi qu&rsquo;en pr\u00e9cisant la fr\u00e9quence en Hz de l&rsquo;oscillateur interne ou externe utilis\u00e9 (param\u00e8tre hsi ou hse)<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$ scons mode=debug mcu=f042 hsi=8000000 -j4<\/pre>\n\n\n\n<p>Installer la biblioth\u00e8que compil\u00e9e : <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$ sudo scons mode=debug mcu=f042 hsi=8000000 -j4 install<\/pre>\n\n\n\n<p>Corriger les probl\u00e8mes de stm32plus avec CMake : <br>Dans le dossier \/usr\/local\/arm-none-eabi\/lib\/stm32plus-040100<br>Pour \u00e9viter un probl\u00e8me de fichier non trouv\u00e9, \u00e9diter le contenu du fichier stm32plus-config.cmake pour ne conserver que les 2 premi\u00e8res lignes ( copi\u00e9es ci dessous )<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">include(${CMAKE_CURRENT_LIST_DIR}\/stm32plus-config-${STM32PLUS_CONFIGURATION}i.cmake<br>\n  OPTIONAL RESULT_VARIABLE STM32PLUS_CONFIG_FILE)<\/pre>\n\n\n\n<p>Modifier le fichier stm32plus-config-debug-f042-8000000i.cmake ( modification \u00e0 r\u00e9p\u00e9ter pour chaque version de stm32plus compil\u00e9e ) : ajouter <code>--specs=nosys.specs<\/code> aux variables CMAKE_C_FLAGS et CMAKE_CXX_FLAGS.<\/p>\n\n\n\n<p>R\u00e9p\u00e9ter \u00e9ventuellement avec les autres modes pour disposer de la biblioth\u00e8que compil\u00e9e pour chaque mode<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configuration g\u00e9n\u00e9rale de QtCreator<\/h2>\n\n\n\n<p>R\u00e9cup\u00e9rer l&rsquo;exemple de compilation avec CMake fourni avec stm32plus dans le dossier stm32plus\/cmake\/example<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Activer le plugin Bare Metal<\/h4>\n\n\n\n<p>Dans QtCreator : Aide -&gt; Plugins, activer \u00ab\u00a0BareMetal\u00a0\u00bb, et red\u00e9marrer QtCreator<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Ajouter OpenOCD<\/h4>\n\n\n\n<p>Dans les options de QtCreator, cat\u00e9gorie \u00ab\u00a0Appareils Mobiles\u00a0\u00bb, onglet \u00ab\u00a0Bare Metal\u00a0\u00bb, cliquer \u00ab\u00a0Add\u00a0\u00bb et s\u00e9lectionner \u00ab\u00a0OpenOCD\u00a0\u00bb, remplir ainsi : <br>Name : OpenOCD for STM32F042<br>Startup mode : Pipe mode<br>Executable file : openocd<br>Root script directory : \/usr\/share\/openocd\/scripts<br>Configuration file : \/usr\/share\/openocd\/scripts\/board\/st_nucleo_f0.cfg<br><br>Puis cliquer sur Appliquer<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Ajouter le p\u00e9riph\u00e9rique STM32F042<\/h4>\n\n\n\n<p>Dans les options de QtCreator, cat\u00e9gorie \u00ab\u00a0Appareils Mobiles\u00a0\u00bb, onglet \u00ab\u00a0P\u00e9riph\u00e9riques\u00a0\u00bb, cliquer \u00ab\u00a0Ajouter\u00a0\u00bb et s\u00e9lectionner \u00ab\u00a0Bare Metal Device\u00a0\u00bb, remplir ainsi : <br><br>Nom : STM32F042<br>GDB Service Provider : OpenOCD for STM32F042<br><br>Cliquer sur appliquer<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Ajouter le debugger GDB-Multiarch<\/h4>\n\n\n\n<p>Dans les options de QtCreator, cat\u00e9gorie \u00ab\u00a0Kits\u00a0\u00bb, Onglet \u00ab\u00a0Debugger\u00a0\u00bb, cliquer sur \u00ab\u00a0Add\u00a0\u00bb et remplir les champs suivants : <br><br>Name : GDB Multiarch<br>Path : \/usr\/bin\/gdb-multiarch<br><br>Cliquer sur Appliquer<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Ajouter un Kit<\/h4>\n\n\n\n<p>Dans les options de QtCreator, cat\u00e9gorie \u00ab\u00a0Kits\u00a0\u00bb, Onglet \u00ab\u00a0Kits\u00a0\u00bb, cliquer sur \u00ab\u00a0Ajouter\u00a0\u00bb et remplir les champs suivants : <br>Nom : STM32F042<br>Device type : Bare Metal Device<br>Device : STM32F042<br>Compiler C : GCC (C, arm 32 bits in \/usr\/bin)<br>Compiler C++ : GCC (C++, arm 32 bits in \/usr\/bin)<br>Debugger : GDB Multiarch<br>Qt Version : None<br>Cmake tool : System CMake at \/usb\/bin\/cmake<br>CMake Configuration : cliquer sur \u00ab\u00a0change\u00a0\u00bb, puis supprimer la ligne commen\u00e7ant par CMAKE_PREFIX_PATH<br><br>Cliquer sur appliquer<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Configuration d&rsquo;un projet QtCreator<\/h2>\n\n\n\n<p>Se rendre dans le dossier o\u00f9 l&rsquo;on a pr\u00e9c\u00e9demment copi\u00e9 l&rsquo;exemple CMake fourni avec stm32plus<\/p>\n\n\n\n<p>Ouvrir le fichier CMakeList.txt avec QtCreator, et s\u00e9lectionner le kit STM32 pr\u00e9c\u00e9demment cr\u00e9\u00e9.<br><br>Editer le fichier CMakeList.txt pour refl\u00e9ter le MCU utilis\u00e9 ainsi que le mode ( fast, small ou debug ) de compilation de stm32plus \u00e0 utiliser.  Sp\u00e9cifier aussi la fr\u00e9quence de l&rsquo;oscillateur, suivi de la lettre i ou e pour un oscillateur interne ou externe.<\/p>\n\n\n\n<p>Dans mon cas, ce dossier \u00e9tait inexistant, j&rsquo;ai copi\u00e9 le dossier system depuis l&rsquo;example Blink ( sans CMake ), dans lequel j&rsquo;ai renomm\u00e9 le dossier f042_48_8  en f042.<\/p>\n\n\n\n<p>Renommer le fichier system\/f042\/startup.asm en system\/f042\/startup.s. Modifier le fichier CMakeList.txt pour refl\u00e9ter ce changement.<\/p>\n\n\n\n<p>Dans la cat\u00e9gorie \u00ab\u00a0Projet\u00a0\u00bb, s\u00e9lectionner la variable CMAKE_PREFIX_PATH, et cliquer sur \u00ab\u00a0unset\u00a0\u00bb, puis \u00ab\u00a0Apply configuration change\u00a0\u00bb. La variable doit se remplir avec le contenu suivant : <\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\/usr\/local\/arm-none-eabi;\/usr\/arm-none-eabi<br><\/pre>\n\n\n\n<p>Dans QtCreator, Menu \u00ab\u00a0Compiler\u00a0\u00bb, cliquer sur \u00ab\u00a0Executer CMake\u00a0\u00bb. <\/p>\n\n\n\n<p>Il est maintenant (enfin) possible de compiler et de d\u00e9bugger le projet \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cet article d\u00e9crit tr\u00e8s rapidement la proc\u00e9dure que j&rsquo;ai suivie ( durant de nombreuses heures de tatonnements ) afin de mettre en place sous Linux Mint un environnement de d\u00e9veloppement pour stm32f042 bas\u00e9 sur QtCreator, stm32plus et OpenOCD, permettant de s&rsquo;affranchir des logiciels ST. Installation de la biblioth\u00e8que stm32plus Cloner le d\u00e9pot git situ\u00e9 \u00e0 &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"https:\/\/pila.fr\/wordpress\/archives\/1400\">Lire la suite<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[69,8],"tags":[166,165],"class_list":["post-1400","post","type-post","status-publish","format-standard","hentry","category-linux-2","category-prog","tag-qtcreator","tag-stm32","item-wrap"],"_links":{"self":[{"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/posts\/1400","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/comments?post=1400"}],"version-history":[{"count":23,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/posts\/1400\/revisions"}],"predecessor-version":[{"id":1423,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/posts\/1400\/revisions\/1423"}],"wp:attachment":[{"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/media?parent=1400"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/categories?post=1400"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pila.fr\/wordpress\/wp-json\/wp\/v2\/tags?post=1400"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}