Vor nicht allzu langer Zeit half er bei der Entwicklung von Mikrocontrollern eines wenig bekannten Unternehmens - Milander. Die offizielle Keil-Entwicklungsumgebung. Es hat mir nicht gefallen, aber der Prozessor basiert auf der Architektur eines anderen wenig bekannten ARM-Unternehmens, was bedeutet, dass es einen gcc-Compiler dafür gibt. Und wo es gcc gibt, kann QtCreator auch als IDE verwendet werden.

Einführung
Anfangs war die Aufgabe recht einfach. Suchen Sie die Dateien, die Sie zum Erstellen des Projekts benötigen. Nehmen Sie ein Projekt, das bereits unter stm32f407 erstellt wurde, und verarbeiten Sie es mit einer Datei. Bei der Umsetzung eines so einfachen Plans bestand jedoch der Wunsch, ein etwas interessanteres Projekt zu realisieren, als ursprünglich angenommen.
Vorbereitung
Zuerst müssen Sie den Compiler und den Debugger für Mikrocontroller herunterladen, die auf den Kernen der Cortex-M-Serie basieren. Die neueste Version ist hier
[1] . Sie benötigen auch QtCreator, nicht faule können aus dem Quellcode kompilieren, faule können hierher kommen
[2] . Wir brauchen auch openocd zum Flashen und Debuggen des Mikrocontrollers.
[3] GCC-Compiler für Cortex-M auf der ARM-Site
[9]Installieren Sie die angegebene Software sowie alle erforderlichen Abhängigkeiten. Dann fahren wir mit der Einrichtung der Umgebung fort.
QtCreator'a in Bildern einstellenWenn nicht aktiviert, aktivieren Sie die Bare-Metal-Unterstützung unter Hilfe -> Informationen zu Modulen
Fügen Sie Compiler hinzu
g ++

gcc

Fügen Sie den GDB-Debugger hinzu

Wir erstellen ein Openocd-Debugging-Profil, dies ist
keine große Krücke. Der Pfad zur Konfigurationsdatei muss absolut angegeben werden. Die Datei für jeden Mikrocontroller ist unterschiedlich, was zu gewissen Unannehmlichkeiten führt.

Bare Metal einstellen

Und alles in einem Satz

Mikrocontroller-Bibliotheken
Eine flüchtige Suche auf der Milander-Website ergab keine offizielle Sammlung von Bibliotheken für die Arbeit mit Peripheriegeräten und dem Kern des Mikrocontrollers. Die Baugruppe unterstützt gcc und befindet sich am Github
[4] . Die Baugruppe ging recht einfach zum fertigen Projekt für stm32f407, und nachdem sie an einigen Stellen repariert worden war, war sie bereits sehr gespannt darauf, den Mikrocontroller zu flashen. Bearbeiten Sie die openocd-Konfigurationsdatei und jetzt blinkt alles. Ein bisschen mehr Schlosserarbeit und Debugging funktionieren bereits. Und es scheint, dass das alles ist - ein einfacher Sieg. Bibliotheken unterstützen jedoch mehrere Mikrocontroller. Und Mikrocontroller auf verschiedenen Kernen verwenden auch verschiedene periphere Bibliotheken. Sofort kam die Idee auf, ein Projekt zu erstellen, damit Sie den gewünschten Mikrocontroller einfach auswählen können und die Umgebung selbst die erforderlichen Kernbibliotheken und Peripheriegeräte auswählt. Diese Idee kam mir zu der Zeit, als ich stm32f407 beherrschte. Die Gelegenheit, eine so interessante Idee zu verwirklichen, durfte nicht fehlen.
Ein paar Nächte in Bibliotheken und qbs
[5] ergaben ein positives Ergebnis. Es war möglich, die Kompilierung für die folgenden Mikrocontroller zu konfigurieren: MDR1901VC1T (1901-1), MDR1986VE1T (1986 BE1T), MDR1986VE3 (1986 BE3), MDR1986BE4 (1986 BE4x), MDR1986VE8T (1986 BE8x), MDR1986VE9x (1986 BE8x), MDR1986VE9x (1986 BE). Obwohl die Beschreibung der Quellbibliotheken MDR1986VE8T nicht unterstützte, gab es einen Teil der Kernbibliothek und der Peripheriebibliotheksdateien. Einige der Header-Dateien, die im ARM-Repository gefunden wurden, fehlten
[6] .
Abschlussprojekt
Das Ergebnis war eine eher bescheidene Vorlage, mit der Sie Projekte für mehrere Mikrocontroller schreiben können. Liegt Vorlage auf Github
[7] . Die Quellbibliothek hat eine Reihe von kosmetischen Änderungen erfahren. Obwohl ich die Kompatibilität mit dem ursprünglichen Projekt beibehalten wollte, musste ich
[8] die Kompatibilität verlieren, aber dies ist eine Gebühr für die Vielseitigkeit. Sie können das Projekt wie folgt herunterladen.
git clone https://github.com/WicRus/emdr1986x-std-per-lib-qbs.git --recursive
Sie können ein Projekt auch direkt aus QtCreator klonen, indem Sie die Repository-Adresse angeben und Rekursiv aktivieren.
Zucht
Das Hauptergebnis ist eine universelle Vorlage mit Unterstützung für mehrere Mikrocontroller mit verschiedenen Kern- und Peripheriebibliotheken. Es gab jedoch eine Reihe von Punkten, die beachtet werden sollten:
- Firmware und Debugging konnten nur auf MDR1986VE1T überprüft werden.
- Openocd-Zielkonfigurationsdateien wurden nur für MDR1986VE1T und MDR1986VE9x gefunden. Für den Rest der Controller müssen Sie selbst etwas mitnehmen oder schreiben.
- Bibliotheken für den MDR1986VE8T wurden ohne viel Verständnis des Problems zusammengestellt. Es ist notwendig, den korrekten Betrieb zu überprüfen.
- Quellbibliotheken wurden erheblich geändert. Mögliche Zusammenführungsprobleme.
- Beim Erstellen für MDR1901VC1T, MDR1986BE4, MDR1986VE9x wird eine Warnung über veraltete Kernelbibliotheken ausgegeben. Es ist notwendig, die Kernel-Bibliotheken analog zu MDR1986VE8T zu aktualisieren und dann den korrekten Betrieb zu überprüfen.
- Funktion zum Erstellen einer Openocd-Konfiguration. Für jeden einzelnen Mikrocontrollertyp benötigen Sie möglicherweise ein separates Build-Kit in QtCreator.
ReferenzenAchtung, in diesem Fenster öffnen sich Links.
0. Die Basis für den KDPV-Standort Milander1. https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads2. https://www.qt.io/download-qt-installer3. http://openocd.org4. https://github.com/eldarkg/emdr1986x-std-per-lib5. https://doc.qt.io/qbs/6. https://github.com/ARM-software/CMSIS_57. https://github.com/WicRus/emdr1986x-std-per-lib-qbs8. https://github.com/WicRus/emdr1986x-std-per-lib9. https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloadsBearbeitungsverlauf.17.09.19 Link zur GNU Arm Embedded Toolchain hinzugefügt.