wie das Zeug funktioniert

Heute: Toolchain aufstellen

Firmware Toolchain einrichten

Einführung

Die aconno Firmware ist mit Hilfe der aconno Sensorik-App hochgradig konfigurierbar.
Dennoch möchten Sie vielleicht einige Änderungen daran vornehmen. Dazu benötigen Sie die ARM Toolchain (die den Compiler enthält), das Nordic SDK (Software Development Kit), die aconno Codebasis, einen Editor (vorzugsweise eine IDE oder einen spezialisierten Code-Editor) und ein SEGGER J-Link Gerät oder einen aconno Programmer (um den Code auf Ihr Gerät zu übertragen).

Wir empfehlen, dieses Tutorial sorgfältig Schritt für Schritt zu befolgen, um eine Umgebung einzurichten, die es Ihnen ermöglicht, aconno Projekte zu bearbeiten, zu kompilieren und zu flashen.

Das Wichtigste zuerst: Der Compiler

Um den Quellcode in eine Hex-Datei zu übersetzen (Hex-Datei ist ein spezielles Binärformat, das dein Mikroprozessor versteht, Nullen und Einsen), musst du ein spezielles Programm benutzen – den Compiler. Mehr über Compiler finden Sie hier.

Hier bei aconno verwenden wir den GNU GCC arm-none-eabi-gcc Compiler für den Cross-Compiling-Prozess. Da es sich um eine Cross-Kompilierung handelt, können Sie entweder Windows, macOS oder Linux-basierte Betriebssysteme verwenden.

Unter Windows:

Der Installationsprozess unter Windows ist einfach. Laden Sie zunächst das Softwarepaket für Ihre gewünschte Plattform (in diesem Fall win32) hier herunter: Windows source, starten Sie das Installationsprogramm und setzen Sie die PATH-Variablen.

Unter Linux:

Wir wissen, dass Linux-Benutzer gerne ihre Paketmanager für bequeme Installationen von Softwarepaketen und Bibliotheken verwenden, aber das ist hier leider nicht der Fall.
Es ist besser, den Compiler auf die altmodische Art und Weise (manuell) zu installieren, anstatt den bevorzugten Paketmanager zu benutzen, da dieser meistens veraltete und fehlerhafte Versionen enthält.

Sie können eine stabile Version des Compilers hier finden.
Und hier ist eine detaillierte Installationsanleitung.

Die grundlegenden Installationsschritte werden im Folgenden gezeigt:

Windows:

  1. Erstellen Sie einen Ordner namens „opt“ in Ihrem Benutzerverzeichnis
  2. Extrahieren Sie den heruntergeladenen Compiler in diesen Ordner mit Ihrem bevorzugten Archivierungsprogramm (wir lieben 7-Zip)
  3. Nachdem Sie das getan haben, sollten Sie das Toolchain-Verzeichnis zum System-/Benutzerpfad hinzufügen, damit Sie es von der Befehlszeile aus aufrufen können, ohne den vollständigen Pfad zu den ausführbaren Dateien eingeben zu müssen. Gehen Sie dazu einfach zu Ihren Umgebungsvariablen und fügen Sie es zu Ihrer PATH-Variablen hinzu.
  4. Um die Befehle zu verwenden, schließen Sie einfach Ihre Befehlszeile und öffnen Sie sie erneut.

Linux:

  1. Öffnen Sie das Terminal
  2. Erstellen Sie den Ordner „opt“ in Ihrem Home-Verzeichnis, falls er fehlt
    $ mkdir ~/opt
  3. Dort den heruntergeladenen Compiler entpacken
    $ tar xjf ~/Downloads/gcc-arm-none-eabi-version
  4. Fixieren Sie die Dateiberechtigungen
    $ chmod -R -w gcc-arm-none-eabi-version
  5. Nachdem Sie all das getan haben, müssen Sie das Toolchain-Verzeichnis zum System-/Benutzerpfad hinzufügen, damit Sie es von der Befehlszeile aus aufrufen können, ohne den vollständigen Pfad zu den ausführbaren Dateien eingeben zu müssen. Dazu fügen Sie Folgendes zu Ihrer ~/.bashrc Datei hinzu.
    $ export PATH="$PATH:$HOME/opt/gcc-arm-none-eabi-VERSION/bin"
  6. Um die Befehle zu verwenden, schließen Sie einfach Ihr Terminal und öffnen es erneut.


aconno codebase

Die aconno Codebase besteht aus vielen Bibliotheken, die von unseren Programmierern entwickelt wurden, um alle in unseren Produkten verwendeten Sensoren zu unterstützen. Neben diesen Bibliotheken finden Sie auch fertige Firmware-Projekte, die sich auf unsere Hardware-Produkte beziehen. In unserer Codebasis finden Sie zum Beispiel Firmware-Quellcode für acnSENSA, acnRANGE, etc. aconno Produkte basieren auf Nordic Semiconductors nRF528xx Chips, daher verwenden wir deren SDK (Software Development Kit) als Basis für unsere Projekte. Mehr Informationen darüber, seine APIs und Beispiele finden Sie hier.

Die Firmware unserer Produkte basiert ebenfalls auf einem RTOS (Real-Time Operating System) namens freeRTOS, daher sind einige Änderungen am offiziellen Nordic SDK erforderlich, um unsere Anforderungen zu erfüllen (keine Sorge, das haben wir bereits getan). Diese modifizierte SDK-Version ist auch ein Teil unserer Codebasis und der Quellcode dafür kann hier gefunden werden:
Source.

Das Basisprojekt, mit dem die Entwicklung beginnt, ist acnBEACON. Es bewirbt normalerweise nur ein paar Bakensignale, aber mit ein paar Modifikationen kann es in ein beliebiges Projekt umgewandelt werden.

Das Build-System, es dreht sich alles um make

Um den C/C++-Quellcode in eine Hex-Datei für Ihren Mikroprozessor zu übersetzen, müssen Sie ihn kompilieren. Wenn Sie viel Zeit hätten, könnten Sie das manuell Datei für Datei machen, aber bitte tun Sie das nicht. Lassen Sie die Maschine die langweilige Arbeit für Sie erledigen – verwenden Sie eines der Build-System-Programme. Wir verwenden und empfehlen das Programm ‚make‘. Eine gute Anleitung dazu finden Sie hier. Im Grunde füttert man es mit einer Reihe von Anweisungen, was zu kompilieren ist, wo es zu finden ist und wo es hingehört, wie ein Kochrezept für Nerds.

Um ein aconno-Projekt zu erstellen:

  1. Installieren Sie GNU Make
  2. Installieren Sie nRF Kommandozeilentools (auch J-link Software im Windows Installer enthalten)
  3. Installieren Sie J-Link Software and Documentation Pack
  4. Navigieren Sie im Terminal zu Ihrem Projektverzeichnis
  5. Rufen Sie den folgenden Befehl auf, um ein make-Skript zu starten
    $ make nrf52840_release upload

Wenn ein SEGGER J-Link Gerät mit dem PC und dem Modul verbunden ist und EINE Stromversorgung aktiv ist (Sie können entweder die SEGGER J-Link Stromversorgung ODER die Batterie verwenden, NIEMALS beides gleichzeitig), wird es sich mit dem Gerät verbinden, seinen Speicher löschen und die zusammengeführte Hex-Datei flashen.
Danach können Sie das JLinkRTTClient-Programm starten, um die Log-Ausgabe des Geräts zu sehen.

Alle offenen aconno-Projekte und -Bibliotheken finden Sie hier.


Ändern Sie den Code, verwenden Sie einen Editor

Jetzt, wo du weißt, wie man den Quellcode in ein brauchbares Hex kompiliert, kannst du dir eine Firmware zusammenstellen. Noch cooler wäre es, wenn wir einen Teil des Codes ändern würden, um ihn an unsere Bedürfnisse anzupassen.
Um den Quellcode zu ändern, brauchen wir eine Art Texteditor, also könnte man es auch mit einem VI machen, aber dann müsste man wissen, wie man es beendet (wir glauben, es ist :wq, aber zitieren Sie uns nicht).

Aber heute gibt es Werkzeuge, die viel leistungsfähiger sind als einfache Texteditoren, nämlich IDEs.

Eine IDE bietet Ihnen den Komfort eines Debuggers, eines C++-Checkers, automatisierter Build-Systeme, automatisierten Flashens, schnelleren Durchsuchens von Code, eines Überblicks über die Verwendung von Funktionen und einer Menge anderer nützlicher Funktionen.

Wir empfehlen die Verwendung der folgenden IDEs: Visual Studio Code (kostenlos und leicht), CLion (ein C++-Monster, das Beste, was man bekommen kann), Keil (alter Industriestandard, wir empfehlen ihn nicht wirklich, er ist nur aufgeführt, weil jeder ihn benutzt, ohne zu wissen warum) und Embedded Studio von Segger.

Als nächstes werden wir die Installation und Konfiguration des Visual Studio Code Editors vorstellen. Wenn Sie eine andere IDE verwenden möchten, müssen Sie diese selbst einrichten, und mit der ganzen Dokumentation, die auf Google verfügbar ist, sollte das nicht allzu schwer sein.

Visual Studio Code Editor

Bei aconno verwenden wir den VS Code Editor. Man könnte sich fragen, warum wir nicht den bekannten Keil-Editor verwenden… Nun, VSCode ist mit vielen fortgeschrittenen Funktionen wie Code-Vervollständigung, statischer Code-Analyse, einem dunklen Thema (eines der wichtigsten Features, wenn Sie unsere Entwickler fragen) und einer Menge anderer kostenloser Add-ons ausgestattet.

Hier sind die Schritte, die Sie befolgen müssen, um den Editor zu installieren und ihn bereit zu machen, tollen Code für aconno-Geräte zu schreiben.

  1. Installieren Sie Visual Studio Code
  2. Installieren Sie Visual Studio Code Cortex-Debug von marus25 über Erweiterungen.
  3. Innerhalb des Ordners projects .vscode die Datei tasks.json erstellen und den Code von unten einfügen
  4. Innerhalb des Ordners projects .vscode die Datei launch.json erstellen und den Code von unten einfügen
  5. Innerhalb des Ordners projects .vscode die vorhandene Datei c_cpp_properties.json so ändern, dass sie wie das folgende Beispiel aussieht, und dann die korrekten Pfade für Ihr System einfügen
  6. Starten Sie JLinkRTTClient für die serielle Ausgabe, es wird sich automatisch mit dem Debugger verbinden
  7. Drücken Sie F5 in Visual Studio Code zum Debuggen