Bonjour, chers programmeurs, matériel et tous ceux qui sympathisent avec eux. Je voudrais présenter un bref aperçu des capacités de l'IDE Qt Creator en conjonction avec le système de construction QBS concernant la programmation des microcontrôleurs. Pour qui ce sujet est intéressant, bienvenue au chat.
L'autre jour, silencieusement et imperceptiblement, la version
Qt Creator 4.10 a été publiée, qui a ajouté quelques améliorations pour travailler avec les microcontrôleurs (chez les gens ordinaires - les appareils «baremetal»). Cette version de Qt Creator intègre le système de
construction QBS 1.14 , qui présente également de nouvelles améliorations. Certaines de ces améliorations seront discutées ci-dessous.
Améliorations de Qt Creator
Toutes ces améliorations ne sont disponibles que lorsque le plugin BareMetal est activé, ce qui est activé via le menu "Aide -> À propos des plugins -> Support des périphériques -> BareMetal".
- Trois nouveaux compilateurs sont désormais pris en charge, dont les informations de base sont données dans le tableau ci-dessous:
Remarque: Il convient de noter que les produits de IAR EW et KEIL pour différentes architectures sont fournis par des packages distincts qui doivent être installés indépendamment. À la différence, par exemple, du compilateur SDCC qui prend en charge plusieurs architectures à la fois.
- Désormais, ces nouveaux compilateurs sont automatiquement détectés dans l'onglet "Outils -> Options -> Kits -> Compilateurs -> Auto-détectés".
Par exemple, pour moi, cela ressemble à ceci:

Remarque: Comme vous pouvez le voir, pour C ++, il n'y a pas de compilateur KEIL pour MCS51, ce qui est correct, car ce compilateur ne prend en charge que C. De plus, le compilateur SDCC sera manquant ici pour la même raison.
- Il est également possible d'ajouter manuellement ces nouveaux compilateurs via le menu "Outils -> Options -> Kits -> Compilateurs -> Ajouter":

- Pour le compilateur, son ABI (architecture, format et largeur de mot) sera automatiquement déterminé. Les informations à ce sujet peuvent être consultées simplement en cliquant sur le compilateur.
Par exemple, pour mon IAR EW et l'architecture 8051 (MCS51), cela ressemble à ceci:

Remarque: Dans ce cas, un compilateur a été sélectionné qui a été automatiquement détecté, donc les champs ABI sont inactifs ici. Mais lors de l'ajout manuel du compilateur, l'utilisateur peut sélectionner l'ABI correct, si pour une raison quelconque, il a été déterminé de manière incorrecte.
- Pour le compilateur, toutes ses macros seront automatiquement détectées. Ainsi, ils seront correctement mis en évidence dans l'éditeur de code.
Remarque: Une exception concerne uniquement les mots clés de certains compilateurs (par exemple, pour l'architecture 8051), qui seront mis en surbrillance avec un avertissement. Mais c'est une autre histoire.
- Pour le compilateur, les répertoires avec ses fichiers d'en-tête seront automatiquement détectés. Ainsi, ils seront correctement mis en évidence dans l'éditeur de code.
- Les analyseurs pour les erreurs et les avertissements de ces nouveaux compilateurs sont implémentés, qui sont affichés dans le panneau Problèmes.
Améliorations dans QBS
QBS fera partie intégrante de cette revue, il est donc logique de parler de ses améliorations:
- Ajout de la prise en charge de ces nouveaux compilateurs (certains d'entre eux depuis la version 1.13).
- Implémentation de la capacité de détecter automatiquement les compilateurs installés et de créer des profils. À quoi sert l' utilitaire qbs-setup-toolchains .
Dans mon cas, cela ressemble à ceci:
c:\Qt-meta\Tools\QtCreator\bin>qbs-setup-toolchains.exe --detect ... Trying to detect IAR toolchains... Profile 'iar-arm' created for 'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.3/arm/bin/iccarm.exe'. Profile 'iar-mcs51' created for 'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.0/8051/bin/icc8051.exe'. Profile 'iar-avr' created for 'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.0/avr/bin/iccavr.exe'. Trying to detect KEIL toolchains... Profile 'keil-mcs51' created for 'C:/Keil_v5/C51/BIN/c51.exe'. Profile 'keil-arm' created for 'C:/Keil_v5/ARM/ARMCC/bin/armcc.exe'. Trying to detect SDCC toolchains... No SDCC toolchains found. ...
Pour voir ce qui y a été découvert, vous pouvez utiliser l'utilitaire GUI qbs-config-ui .
Dans mon cas, cela ressemble à ceci:

Caractéristiques de la création d'un projet
Il est important d'avoir une idée et de pouvoir remplir correctement les propriétés du projet pour les
modules cpp et
qbs .
Arrêtons-nous sur les plus importants d'entre eux et considérons-les plus en détail:
Pour spécifier des fichiers de script pour l'éditeur de liens, il existe une balise spéciale «linkerscript», que vous devez utiliser, par exemple:
Group { name: "Linker Scripts" fileTags: ["linkerscript"] files: ["cfg3soim.xcl", "cfgcan128.xcl"] }
Remarque: La raison en est que pour différents compilateurs, il existe différentes options pour nommer ces fichiers. Pour le même GCC, il peut s'agir de fichiers avec les extensions * .ld, * .x, * .xn, * .xbn, etc. (que dire des autres compilateurs ...). Par conséquent, il a été décidé de ne pas prendre la peine de baliser toutes les extensions de fichier possibles pour des compilateurs spécifiques, mais simplement d'utiliser la balise linkerscript pour son objectif et sa situation.Pour voir comment tout cela fonctionne, QBS fournit un ensemble d'
exemples simples qui ne font que secouer une jambe et faire clignoter une LED.
Quel est le débogage
Malheureusement, la situation de débogage est déplorable. Produits (IDE) IAR EW et KEIL utilisent leurs débogueurs, mais depuis Étant donné que ces produits sont propriétaires, il n'est pas possible d'obtenir quelque part une description du fonctionnement des protocoles de ces débogueurs. La seule option est d'essayer la rétro-ingénierie des plugins pour Eclipse (par exemple, IAR EW fournit ces plugins), mais cela nécessite une motivation sérieuse.
Mais je peux être un peu heureux si je dis que pour l'architecture ARM, vous pouvez utiliser le débogueur GDB. Au moins, cela a fonctionné pour moi pour IAR EW (mais, quelque chose n'a pas fonctionné avec KEIL, peut-être que certains indicateurs supplémentaires devraient être indiqués à l'éditeur de liens).
Et ensuite
Ici, je suis un petit spoiler, je dirai que dans les prochaines versions (je ne sais pas lesquelles), les architectures STM8 et MSP430 devraient être ajoutées, ainsi que dans les générateurs QBS seront implémentés dans les projets natifs IAR EW et KEIL (ce qui permettra, par exemple, de déboguer des projets).
Sur cette note, je termine mon histoire, merci à tous ceux qui feront attention à cette critique.