Ich arbeite seit einiger Zeit mit ARM -Mikrocontrollern der STM32 -Serie auf der IAR Embedded Workbench. Aus irgendwelchen Gründen muss ich jetzt meine Werke nach Qt-Creator verschieben (sowohl unter Windows als auch unter Linux). In IAR EWARM sind die Dinge einfacher: Ich musste mich nie mit Linker-Skripten oder Startdateien befassen, öffne einfach eine IAR EWARM-Projektvorlage aus der Peripheral Library-Version von ST und mit einigen einfachen Anpassungen ist es fertig. Wie auch immer, ich habe versucht, ein neues Projekt für STM32F4 auf Qt zu erstellen, aber ich hatte verschiedene Probleme.
Gibt es jemanden, der diesen Vorgang Schritt für Schritt verständlich erklären kann ? Mit dem zugehörigen Makefile, Linker-Skript, Start- und Systemdateien, wenn möglich.
Hinweis: Eigentlich habe ich ein paar spezifische Fragen zu diesem Thema, aber da ich denke, dass eine Erklärung des gesamten Prozesses für mich und andere Embedded-Neulinge hilfreich sein könnte, habe ich mich entschieden, die Frage auf diese Weise zu stellen.
Ich arbeite tatsächlich mit diesem Setup, es funktioniert wunderbar.
Stellen Sie zunächst sicher, dass Sie eine aktuelle Qt Creator-Version verwenden. Ich habe meine von der Website heruntergeladen. In einigen Linux-Repositories ist es veraltet und unterstützt das BareMetal-Plugin und/oder QBS (was sehr nützlich ist) nicht.
Voraussetzungen:
Verwendete Versionen: Qt Creator 3.6.0, ARM GCC 4.8.2-14ubuntu1+6, ARM GDB 7.6/7.10 mit Python-Unterstützung und OpenOCD 0.7.0.
1) Qt Creator installieren. Öffnen Sie Hilfe -> Über Plugins. Suchen Sie die Kategorie Geräteunterstützung und aktivieren Sie BareMetal.
2) Gehen Sie zu Extras -> Optionen. Es gibt ein paar Einstellungen, die wir erstellen und anpassen müssen, um für einen ARM-Cortex-Controller zu kompilieren.
a) Gehen Sie zu "Bare Metal" (letzte Kategorie) - fügen Sie einen Debugger Ihrer Wahl hinzu. Ich persönlich benutze OpenOCD. An dieser Stelle können Sie die Verbindung zu gdb und seinem Port sowie Init-Befehle festlegen. Die Standardbefehle sind für STM32F4xx-Chips festgelegt - aber ich denke, Sie können sie so ändern, dass sie mit jedem ARM Cortex-Controller funktionieren.
b) Gehen Sie zu „Geräte“. Fügen Sie ein neues Gerät hinzu, wählen Sie Bare Metal und den gerade erstellten GDB-Anbieter. Hier muss nichts weiter eingestellt werden.
c) Gehen Sie zu "Build & Run" - Registerkarte Debugger. Dies war das Schwierigste, was zu tun war.
Sie benötigen eine Arm-GDB-Version mit Unterstützung für Python-Skripte . Zu der Zeit (ungefähr 9 Monate zurück, als ich diesen Beitrag schreibe) haben die Binärdateien im Ubuntu-Repo diese Option nicht. Sie können viel Zeit/Ärger sparen, indem Sie überprüfen, ob sich dies geändert hat.
Wenn Sie GDB dennoch mit Python-Unterstützung kompilieren müssen, gehen Sie wie folgt vor. Laden Sie GDB aus den Download-Archiven herunter . Ich verwende immer noch GDB-7.6, was gut zu funktionieren scheint, aber für dieses Tutorial habe ich es für GDB-7.10 neu kompiliert.
Extrahieren Sie das Quellarchiv. Öffnen Sie im Terminal und führen Sie "./configure --with-python --target=arm-elf" aus. Dadurch wird die Make-Umgebung für ARM-Ziele mit aktiviertem Python-Scripting eingerichtet. Führen Sie dann make aus. Dies dauert je nach Systemgeschwindigkeit eine Weile. Leider sind Sie möglicherweise etwas allein, wenn die Kompilierung aufgrund von Abhängigkeitsproblemen stoppt. Keine Angst - das ist mir auch bei meinem ersten Versuch passiert und ich habe es mit einer Reihe von Google-Suchen herausgefunden! Wenn Python fehlschlägt, stellen Sie sicher, dass Sie das Paket python2.x-dev installieren (überprüfen Sie Ihre Versionsnummer - wahrscheinlich 2.7). Vorausgesetzt, die Kompilierung ist gut verlaufen, finden Sie die ausführbare gdb-Datei im Hauptverzeichnis.
Wenn Sie einen Mac verwenden, ist der Vorgang wahrscheinlich ähnlich. Aber mit OSX kenne ich mich nicht aus. Wenn Sie unter Windows arbeiten, müssen Sie leider ein wenig googeln, wie Sie dies mit Mingw oder was auch immer tun (ehrlich gesagt, ich weiß es nicht). Oder finden Sie vielleicht Binärdateien, die diese Unterstützung aktiviert haben.
Sobald Sie eine ausführbare gdb-Datei erworben haben, nennen Sie sie zB "ARM GDB" und legen Sie den Pfad dazu fest. Ich persönlich mache mir nicht die Mühe, es in /usr/bin/ zu platzieren, aber ich denke, Sie könnten es.
Dieses Fenster gibt einen Fehler aus, wenn Sie eine ausführbare gdb-Datei verwenden, die nicht mit Python-Skripten kompiliert wurde.
d) Reiter „Build & Run“ – „Compiler“
Erstellen Sie einen neuen "GCC-Compiler" und nennen Sie ihn "ARM GCC". Verwenden Sie als Pfad "/usr/bin/arm-none-eabi-gcc". Das "ABI" ist nicht wirklich wichtig, ich habe es nur auf arm-unknown-unknown-unknown-32bit gesetzt.
e) Reiter „Build & Run“ – „Kits“. Fügen Sie ein neues Kit hinzu, ich nannte meins "ARM Bare Metal". Gerätetyp: "Bare Metal" Gerät: Zeigen Sie auf das Gerät, das Sie mit seinem OpenOCD/St-Link erstellt haben GDB-Server Sysroot: Lassen Sie es leer Compiler: ARM GCC Debugger: ARM GDB Qt Version: None - Sie können die QT-Laufzeit offensichtlich nicht ausführen ein Cortex m4! Cmake-Tool: unbenutzt
Stellen Sie sicher, dass auf keiner der Registerkarten „Build & Run“ Warnungen angezeigt werden
3) Erstellen Sie Ihr make/qmake/QBS-Projekt. Gehen Sie auf der linken Seite zum Tab "Projekte" und fügen Sie oben links das "ARM Bare Metal"-Kit hinzu. Dies sollte ohne Fehler funktionieren. Ihr Projekt kann mit einem Desktop-Kit beginnen. Austauschen geht meistens nicht. Fügen Sie in diesem Fall ein ARM-Kit hinzu und entfernen Sie dann das Desktop-Kit.
4) Starten Sie Ihren OpenOcd-Server. Ich verwende eine STM32F4-Erkennung für die Entwicklung und auch für die Off-Board-Programmierung meiner eigenen STM32-Boards. Für alle ausgeführten STM32F40x/STM32F41x-Ziele:
openocd -f board/stm32f4discovery.cfg
Dies startet einen GDB-Server auf Port 3333 und einen Telnet-Server (für OpenOCD-Befehle) auf 4444. Als Abkürzung erstelle ich ein paar .sh-Dateien in meinem Home-Verzeichnis für einen schnellen Start eines GDB-Servers.
5) Starten Sie die Debug-Sitzung. Es sollte programmieren und laufen!
Sie können Breakpoints setzen, Code schrittweise durchlaufen, noch mehr PC zurück, Call Stack, Variablen (locals / watch) und Disassemblierung beobachten. Ich bin wirklich zufrieden damit, aber offensichtlich fehlen ein paar Dinge wie: 1) "Registeransicht". Ja, es hat einen, aber das sind nur die CPU-Register. Ich möchte auch eine Registeransicht meiner Peripheriegeräte. 2) Ladefortschritt oder detailliertere Informationen zum Verbindungsstatus herunter. Dazu müssen Sie auf openocd verweisen.
Bearbeiten: Ich habe ein Beispielprojekt in diesem Github-Repository erstellt . Es enthält diesen Beitrag mit einigen hinzugefügten Dialog-Screenshots sowie ein Blinky-Projekt für das STM32F4 Discovery-Board, das ein QBS-Projekt in Qt Creator verwendet.
Laden Sie GCC-ARM , OpenOCD und ST-Util herunter und installieren Sie es . STM32CubeF4 ist optional, aber obligatorisch.
Fügen Sie einen benutzerdefinierten Compiler und Debugger als Bild unten auf Tools->Options->Build & Run hinzu .
Erfahren Sie, wie Sie OpenOCD, GDB und ST-Flash verwenden.
Vorgeschlagene Seiten:
Behandeln Sie die gesamte Einrichtung von QtCreator
http://www.bartslinger.com/cx-10-quadcopter/debugging-stm32-from-qtcreator/
Einfaches Bare-Metal-Projekt für STM32 (es ist meins)
Ein guter Ausgangspunkt für Sie ist wiki.qt.io/Building_Qt_5_from_Git
Außerdem finden Sie alles, was Sie brauchen, in ihrer Dokumentation, die sich auf doc.qt.io befindet .
Den besten Support erhalten Sie im offiziellen Forum forum.qt.io/category/4/qt-development .
Dies ist eher eine SO-Frage und nicht für SE EE.
Wenn Sie Qt für STM32 erstellen möchten, lautet die kurze Antwort: Vergessen Sie es!
Warum ? Wie Sie bereits erwähnt haben, soll Qt unter Windows oder Linux laufen. Es ist jedoch nicht möglich, diese Betriebssysteme auf einem STM32 auszuführen, da ihm MMU, Speicher, Leistung usw. fehlen.
Wenn Sie Qt auf ein neues Betriebssystem oder Event-Bare-Metal portieren möchten, ist der Weg sehr lang!
Anton
ddyn
Anton
Anton
ddyn