Integration von se-scope für ein neues target

Sie möchten se-scope-tartget kennen lernen oder es in eine bereits bestehende Codebasis integrieren? Diese Seite bietet eine Zusammenfassung der Aktionen, die durchgeführt werden müssen, um se-scope-target auf Ihrem Mikrocontroller laufen zu lassen.

Ihr se-scope-target funktioniert bereits? Gehen Sie direkt zu Erste Schritte mit se-scope-gui

1. se-scope-target als Submodul hinzufügen.

Um se-scope-target in Ihrer bestehenden Codebasis zu verwenden, können Sie einfach das se-scope-target Repository als Submodul in Ihren Code integrieren. Verwenden Sie die Git Dokumentation für Submodule um mehr über diese Funktion zu erfahren.

2. UART Treiber

Als Schnittstelle für die Datenübertragung zwischen dem Gui und dem Target-board verwenden wir UART. Damit Ihr Target über UART kommunizieren kann, müssen Sie einen Treiber implementieren.

UART Treiber implementieren

Der UART-Treiber sollte die grundlegenden Funktionen eines solchen Treibers erfüllen, d. h. Daten interruptbasiert in einen Ausgangsbuffer des Mikrocontrollers einspeisen und Daten ohne Datenverlust aus einem Eingangsbuffer zurücklesen.

Beispiel

Untenstehend sehen Sie einen Ausschnitt eines Beispiel-Uart-Treibers für ein STM32 Nucleo-Board. Beispielimplementierungen für andere Boards finden Sie in unserem demo Repository.

3. Den Stack ausführen

Die Methode ScopeFramedStack_run ist das Herzstück von se-scope-target. Sie führt den gesamten Scope-Stack aus, d.h. sie verarbeitet die gesammelten Daten von Variablen und dem Logger, ändert die Parameter entsprechend den empfangenen Daten und füllt die Datenpakete, die gesendet werden sollen in den Ausgangsbuffer.

Den scope-stack erstellen

Um se-scope ausführen zu können, müssen Sie eine Instanz des ScopeFramedStack erstellen. Die Parameter des Konstruktors sind Structs, die Konstanten wie die Anzahl der Kanäle definieren. Weitere Informationen finden Sie im folgenden Codebeispiel.

Die Run-methode aufrufen

Die ScopeFramedStack_run Methode sollte im main Ihres Programms aufgerufen werden.

se-scope in einem RTOS ausführen

Wenn Sie ein RTOS verwenden, sollte die ScopeFramedStack_runThreadScope Methode in einem Thread aufgerufen werden. Se-scope-target ist für die Verwendung mit einem RTOS konzipiert und bietet viele Funktionen für die Thread-Sicherheit wie z.B. eingebaute Mutexe. Werfen Sie einen Blick auf unser demo Repository für Beispiele von se-scope-target mit RTOS.

4. Daten senden und empfangen

Zum Senden von Daten, die von se-scope-target registriert werden, sowie zum Empfangen von Daten, die vom se-scope-gui aus gesendet werden, verwenden Sie den in Schritt 2 implementierten UART-Treiber.

Transceiver setup

se-scope-target definiert einen Transceiver, von dem Sie die verarbeiteten Daten zum Senden erhalten und an den Sie die von der GUI-Anwendung empfangenen Daten weiterleiten können. Um den Transceiver zu verwenden, müssen Sie ihn in Ihrem UART Treiber instanziieren (Schritt 2), indem Sie ein Transceiver-objekt vom Scope-Stack anfordern, wie es im Beispielcode unten gezeigt wird.

Transceiver Verwendung

Sobald der Transceiver korrekt eingerichtet ist, können Sie einfach seine get-Methode verwenden, um Daten aus dem Scope-Stack in den Ausgangspuffer Ihres UART-Treibers zu kopieren, bzw. die put-Methode, um Daten aus dem Input-Buffer in den Scope-Stack zu kopieren.

5. Variablen registrieren

Um Variablen, die in Ihrer Codebasis definiert sind, in se-scope-gui zu plotten, müssen Sie diese in se-scope-target registrieren, damit dieses sie überwachen und regelmässig senden kann.

Wie werden Variablen registriert

In Ihrer Setup-Funktion, gleich nachdem Sie den Scope-Stack konfiguriert haben (Schritt 3), können Sie die Variablen registrieren. Dazu erhalten Sie vom Scope-Stack ein AnnounceStorage Objekt, dem Sie die Variablen sowie deren Namen und Datentyp hinzufügen.

Wie viele Variablen können registriert werden?

Beachten Sie, dass Sie so viele Variablen registrieren können, wie Sie wollen, aber Sie haben nur eine begrenzte Anzahl von Kanälen, um die Variablen zu streamen. se-scope-gui kann nur so viele Variablen zur gleichen Zeit anzeigen, wie es Kanäle gibt.

6. Logger

Der Logger von se-scope ermöglicht es Ihnen, die vom Target gesendeten Log-Meldungen im se-scope-gui anzuzeigen. Sie haben den Logger bereits erstellt (Schritt 3), in diesem Teil zeigen wir Ihnen, wie Sie ihn verwenden können.

Events loggen

Um das se-scope-Target auszuführen, haben Sie bereits eine Logger-Instanz erstellt, die Nachrichtenprioritäten definiert und beides an den Scope-Stack übergeben (Punkt 3). Mit der write-Methode dieser Logger-Instanz können Sie einfach Log-Nachrichten an se-scope-gui übermitteln (siehe Beispiel).

Adresse

Source Engineers GmbH Kapellenstrasse 7
CH-3011 Bern

Kontakt

Email: scope@sourceengineers.com
Telefon: +41 32 511 40 83