Hallo, Programmierkollegen, Hardware und alle, die mit ihnen sympathisieren. Ich möchte einen kurzen Überblick über die Funktionen der Qt Creator IDE in Verbindung mit dem QBS-Build-System in Bezug auf die Mikrocontroller-Programmierung geben. Für wen dieses Thema interessant ist, willkommen bei cat.
Erst neulich wurde leise und unmerklich die Version
Qt Creator 4.10 veröffentlicht, die einige Verbesserungen für die Arbeit mit Mikrocontrollern hinzufügte (bei gewöhnlichen Menschen - „Baremetal“ -Geräte). Diese Version von Qt Creator integriert das
Build- System
QBS 1.14 , das auch neue Verbesserungen aufweist. Einige dieser Verbesserungen werden unten diskutiert.
Verbesserungen in Qt Creator
Alle diese Verbesserungen sind nur verfügbar, wenn das BareMetal-Plugin aktiviert ist, das über das Menü "Hilfe -> Über Plugins -> Geräteunterstützung -> BareMetal" aktiviert wird.
- Es werden jetzt drei neue Compiler unterstützt, deren grundlegende Informationen in der folgenden Tabelle aufgeführt sind:
Hinweis: Es ist zu beachten, dass die Produkte von IAR EW und KEIL für verschiedene Architekturen von separaten Paketen bereitgestellt werden, die unabhängig voneinander installiert werden müssen. Im Unterschied zum SDCC-Compiler, der mehrere Architekturen gleichzeitig unterstützt.
- Jetzt werden diese neuen Compiler automatisch auf der Registerkarte "Extras -> Optionen -> Kits -> Compiler -> Automatisch erkannt" erkannt.
Zum Beispiel sieht es für mich so aus:

Hinweis: Wie Sie sehen können, gibt es für C ++ keinen KEIL-Compiler für MCS51, was richtig ist, weil Dieser Compiler unterstützt nur C. Aus dem gleichen Grund fehlt hier auch der SDCC-Compiler.
- Es ist auch möglich, diese neuen Compiler manuell über das Menü "Extras -> Optionen -> Kits -> Compiler -> Hinzufügen" hinzuzufügen:

- Für den Compiler wird sein ABI (Architektur, Format und Wortbreite) automatisch bestimmt. Informationen dazu können einfach durch Klicken auf den Compiler eingesehen werden.
Für meine IAR EW und Architektur 8051 (MCS51) sieht es beispielsweise so aus:

Hinweis: In diesem Fall wurde ein Compiler ausgewählt, der automatisch erkannt wurde, sodass die ABI-Felder hier inaktiv sind. Beim manuellen Hinzufügen des Compilers kann der Benutzer jedoch den richtigen ABI auswählen, wenn dieser aus irgendeinem Grund falsch ermittelt wurde.
- Für den Compiler werden alle seine Makros automatisch erkannt. Daher werden sie im Code-Editor korrekt hervorgehoben.
Hinweis: Eine Ausnahme bilden nur die Schlüsselwörter einiger Compiler (z. B. für die 8051-Architektur), die mit einer Warnung hervorgehoben werden. Aber das ist eine andere Geschichte.
- Für den Compiler werden Verzeichnisse mit ihren Header-Dateien automatisch erkannt. Daher werden sie im Code-Editor korrekt hervorgehoben.
- Die Parser für Fehler und Warnungen dieser neuen Compiler sind implementiert, die im Bereich Probleme angezeigt werden.
Verbesserungen in QBS
QBS wird ein wesentlicher Bestandteil dieser Überprüfung sein, daher ist es sinnvoll, über seine Verbesserungen zu sprechen:
- Unterstützung für diese neuen Compiler hinzugefügt (einige davon seit Version 1.13).
- Implementierung der Fähigkeit, installierte Compiler automatisch zu erkennen und Profile zu erstellen. Wofür wird das Dienstprogramm qbs-setup-toolchains verwendet ?
In meinem Fall sieht es so aus:
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. ...
Um zu sehen, was dort entdeckt wurde, können Sie das GUI-Dienstprogramm qbs-config-ui verwenden .
In meinem Fall sieht es so aus:

Funktionen zum Erstellen eines Projekts
Es ist wichtig, eine Idee zu haben und die Projekteigenschaften für die
Module cpp und
qbs korrekt ausfüllen zu können.
Lassen Sie uns auf die wichtigsten von ihnen eingehen und sie genauer betrachten:
Um Skriptdateien für den Linker anzugeben, gibt es ein spezielles Tag "Linkerscript", das Sie verwenden müssen, zum Beispiel:
Group { name: "Linker Scripts" fileTags: ["linkerscript"] files: ["cfg3soim.xcl", "cfgcan128.xcl"] }
Hinweis: Der Grund dafür ist, dass es für verschiedene Compiler unterschiedliche Optionen zum Benennen dieser Dateien gibt. Für dasselbe GCC können dies Dateien mit den Erweiterungen * .ld, * .x, * .xn, * .xbn usw. sein (was können wir über andere Compiler sagen ...). Daher wurde beschlossen, nicht alle möglichen Dateierweiterungen für bestimmte Compiler zu kennzeichnen, sondern lediglich das Linkerscript-Tag für den beabsichtigten Zweck und die beabsichtigte Situation zu verwenden.Um zu sehen, wie alles funktioniert, bietet QBS eine Reihe einfacher
Beispiele , die nur ein Bein „ruckeln“ und eine LED blinken lassen.
Was ist mit dem Debuggen?
Leider ist die Debugging-Situation bedauerlich. Produkte (IDEs) IAR EW und KEIL verwenden ihre Debugger, aber seitdem Da diese Produkte proprietär sind, ist es nicht möglich, irgendwo eine Beschreibung der Funktionsweise der Protokolle dieser Debugger zu erhalten. Die einzige Möglichkeit besteht darin, die Plugins für Eclipse rückzuentwickeln (z. B. stellt IAR EW diese Plugins zur Verfügung). Dies erfordert jedoch ernsthafte Motivation.
Aber ich kann ein wenig glücklich sein, wenn ich sage, dass Sie für die ARM-Architektur den GDB-Debugger verwenden können. Zumindest hat es bei IAR EW funktioniert (aber hier hat etwas mit KEIL nicht geklappt, vielleicht sollten dem Linker dort einige zusätzliche Flags angezeigt werden).
Was weiter
Hier bin ich ein kleiner Spoiler. Ich möchte sagen, dass in den nächsten Versionen (ich weiß nicht, welche) die STM8- und MSP430-Architekturen sowie Generatoren in nativen IAR EW- und KEIL-Projekten (die beispielsweise das Debuggen von Projekten ermöglichen) in QBS hinzugefügt werden sollten
In diesem Sinne beende ich meine Geschichte, danke an alle, die dieser Rezension Aufmerksamkeit schenken werden.