Home Artikel Professioneller Leitfaden zu Debugging-Tools und -Techniken für IoT-Geräte

Professioneller Leitfaden zu Debugging-Tools und -Techniken für IoT-Geräte

Die Entwicklung eines eingebetteten Systems, bei dem Software und Hardware gut zusammenspielen müssen, ist selbst für die scheinbar einfachsten IoT-Geräte (Internet of Things) äußerst komplex und herausfordernd geworden. So sehr, dass, wenn etwas schief geht – was unvermeidlich passieren wird – die Debugging-Zeiten normalerweise nicht ein paar Stunden betragen, sondern Wochen oder sogar Monate dauern können. Diese Verzögerungen erhöhen die Entwicklungskosten, verhindern, dass ein Produkt rechtzeitig auf den Markt kommt, verzögern Fertigungspläne und ruinieren Lieferketten und Geschäftspläne.

Der beste Weg, die Debugging-Zeit zu verkürzen und ein Projekt am Laufen zu halten, ist die Verwendung einer Kombination aus kostenlosen Hardware- und kostenlosen Software-Debugging-Tools, um einen Einblick in die Leistung eines Systems und wo Probleme auftreten. . Aus diesem Grund hilft es sowohl für Profis als auch für Enthusiasten, die richtigen Werkzeuge für die Arbeit zu haben, um sie schnell und richtig zu erledigen.

Dieser Artikel untersucht Entwicklungstools und Software, die zum Debuggen und Testen der Leistung eines IoT-Geräts verwendet werden können. Sie verwenden ein Entwicklungsboard von STMicroelectronics als Beispiel für ein IoT-Gerät und verwenden Tools und Software von SEGGER Microcontroller Systems, um das System zu verstehen und zu debuggen. Es werden auch mehrere Tipps und Tricks besprochen, wie Sie die Debugging-Zeit minimieren und ein IoT-Projekt pünktlich liefern können.

Das übliche IoT-Gerät zum Debuggen

Die IoT-Geräte Sie sind in praktisch allen Bereichen alltäglich geworden, vom Smart Home bis zur industriellen Überwachungssteuerung. Trotz der Vielzahl von Anwendungen gibt es mehrere gemeinsame Komponenten, die ein IoT-Gerät haben wird. Diese beinhalten:

ein Mikroprozessor
Ein Radio für Konnektivität
Sensoren
Ein Entwickler wird sein Board nicht drehen wollen, um Debugging-Techniken zu erkunden oder Teile seines Anwendungscodes zu testen. Es ist zu viel Zeit. An Ihrem Standort ist es klüger, mit einem kostengünstigen Entwicklungsboard wie dem B-L4S5I-IOT01A Discovery Kit for IoT Node von STMicroelectronics zu arbeiten. Es hat praktisch alles, was in einem richtigen IoT-Gerät zu finden ist (Abbildung 1).

Werkzeuge für Studenten
Abbildung 1: Das STMicroelectronics B-L4S5I-IOT01A Discovery Kit for IoT Node enthält alle Komponenten, die normalerweise in einem IoT-Gerät benötigt werden. (Bildquelle: STMicroelectronics)

Das Board enthält den STM32L4S5VIT6, einen Arm® Cortex®-M4-Mikrocontroller, der mit einhundertzwanzig Megahertz (MHz) läuft. Dafür stehen ihm bis zu zwei Megabyte (MByte) Flash und sechshundertvierzig Kilobyte (KByte) RAM zur Verfügung. Für die Zwecke dieser Übung ist es wichtig, dass das Board Wi-Fi und eine Vielzahl von Sensoren enthält, die zum schnellen Aufbau eines IoT-Testgeräts verwendet werden können.

Professionelle Debugging-Hardware-Tools

Nahezu alle Entwicklungsboards verfügen über eine integrierte JTAG/SWD-Schnittstelle, sodass Entwickler nicht nach ihrem Programmierer suchen müssen. Stattdessen können sie sofort mit dem Entwicklungsboard arbeiten. Während dies für das Marketing großartig ist, ist es für das eigentliche Engineering nicht großartig: Embedded Debugger sind normalerweise sehr abgespeckte Versionen, die Einschränkungen haben, wie z. B. die Anzahl freier Breakpoints und die Baudrate der Schnittstelle. Für den Uneingeweihten mögen diese Einschränkungen nicht wie eine große Unannehmlichkeit erscheinen, aber unbegrenzte Breakpoints verhindern, dass Breakpoints ständig ein- und ausgeschaltet werden müssen, und schnelle Baudraten sind für die Ablaufverfolgung von Anwendungen erforderlich (mehr zur Ablaufverfolgung im Abschnitt Software-Tools).

Es gibt mehrere kostenlose Tools, mit denen Sie ein professionelles Debugging-Erlebnis verwalten können, aber die Tools selbst sind nur die halbe Lösung. Die Tools müssen von guter Software unterstützt werden. Ein Tool-Set, das sowohl aus Hardware- als auch aus Softwaresicht herausragt, ist die J-Link-Serie von SEGGER. Diese Serie bietet eine Debugger-Version für praktisch jede Art von Entwickler, von Studenten und Enthusiasten bis hin zu eingefleischten Profis.

Es gibt 2 Modelle, die sich erfahrungsgemäß als die nützlichsten für allgemeine Entwickler erwiesen haben: J-Link Base und J-Link Ultra+ (Abbildung 2). In Bezug auf den Formfaktor sind die beiden Laufwerke identisch, aber das J-Link Ultra+ bietet dem Entwickler eine schnellere Download-Geschwindigkeit in den Arbeitsspeicher (drei Mbyte/s gegenüber null Mbyte/s) und eine höhere Geschwindigkeit der SWD-Schnittstelle (einhundert MHz statt dreißig MHz). Höhere Geschwindigkeiten machen den Unterschied, wenn ein Entwickler seine Anwendung verfolgen möchte, um Informationen über Leistung und RTOS-Verhalten zu erhalten und sein System zu debuggen.

Schülerwerkzeuge
Abbildung 2: Der SEGGER J-Link Ultra+ bietet Entwicklern ein verbessertes Debugging-Erlebnis über eine 50-MHz-Target-Schnittstelle (Bildquelle: SEGGER Microcontroller Systems)

Das Schöne am J-Link und dem Entwicklungsboard B-L4S5I-IOT01A ist, dass die beiden mit einem Tag-Connect-Kabel TC2050-IC-NL und dem Halteclip TC2050-CLIP-3PACK verbunden werden können. Sie erlauben es, einen Debugger über das „Nagelpad“ (Abbildung XNUMX) mit dem Entwicklungsboard zu verbinden. Es kann erforderlich sein, den XNUMX-poligen Stecker des J-Link mit dem XNUMX-poligen Stecker des TC-XNUMX-Kabels zu verbinden. Eine Alternative, die hierfür verwendet werden kann, ist der J-Link XNUMX Nadeladapter mit zehn Stiften.

Wenn der Entwickler diesen Weg hardwareseitig geschlossen hat, kann er mit den Softwarewerkzeugen seine Anwendung untersuchen und debuggen.

Werkzeugkasten
Abbildung 3: Auf dem Entwicklungsboard B-L4S5I-IOT01A kann die Tag-Connect-Kabelkonfektion über einen Footprint auf der PC-Platine (rechts) angeschlossen werden. (Bildquelle: STMicroelectronics)

Professionelle Debugging-Software-Tools

Es gibt einige Software-Tools, die recht gut mit den SEGGER J-Link-Tools zusammenarbeiten, die überraschenderweise nicht von SEGGER bereitgestellt werden. Jetzt werden wir uns einige dieser kostenlosen Tools ansehen und sehen, wie Entwickler jedes von ihnen verwenden können, um ihre Software zu debuggen.

Das erste ist J-Scope. J-Scope ist ein Oszilloskop-ähnliches Werkzeug, das zeitveränderliche Werte anzeigt. Entwickler können eine einzelne Variable oder mehrere Dutzend davon überwachen. Beachten Sie jedoch, dass je mehr Variablen gesteuert werden, desto weniger Abtastwerte genommen werden können, bevor der Abtastpuffer überläuft und Daten verloren gehen.

Die Variablen werden ausgewählt, indem man J-Scope die elf-Datei gibt, die vom Compiler ausgegeben wird. Dadurch erhält man die auszulesenden Speicherplätze, und der Entwickler kann dann deren Abtastraten einstellen und überwachen, wie sich die Variable(n) im Laufe der Zeit ändern. In Abbildung 3 sehen Sie einen einfachen Fall einer Spur von XNUMX Variablen.

Qualitätswerkzeuge
Abbildung 4: J-Scope kann verwendet werden, um Variablen über den J-Link zu überwachen, während eine Anwendung in Echtzeit läuft. (Bildquelle: SEGGER Microcontroller Systems)

Das nächste ist Ozon. Ozone ist eine Debugging-Schnittstelle und ein Leistungsanalysator. Entwickler können ihre Elf-Datei in das Tool laden und auf Quellebene debuggen. Sie können Breakpoints setzen und ihren Code aktualisieren. Ein besonders nützliches Feature für Entwickler ist, dass sie auch Anweisungen verfolgen können (sofern von ihrer Hardware unterstützt) und auch erkennen können, welche C- und Assembler-Code-Anweisungen ausgeführt wurden. Dies ist besonders nützlich, um die Codeabdeckung von Hardware-Loop-Tests (HiL) zu überprüfen.

Qualitätswerkzeuge
Abbildung 4: J-Scope kann verwendet werden, um Variablen über den J-Link zu überwachen, während eine Anwendung in Echtzeit läuft. (Bildquelle: SEGGER Microcontroller Systems)

Ozone kann Entwicklern auch dabei helfen, die Leistung ihres Systems zu untersuchen (Abbildung XNUMX) und Variablen im Laufe der Zeit anzuzeigen. Dadurch werden Funktionen wie J-Scope stärker integriert. Es kann sogar verwendet werden, um den Energieverbrauch zu überwachen und all diese Ereignisse an einem Standort zu terminieren.

digitale Werkzeuge
Abbildung 5: Ozone kann verwendet werden, um Variablen über den J-Link zu verfolgen, während eine Anwendung in Echtzeit läuft, zusätzlich zu Codeabdeckung und RTOS-fähigem Debugging. (Bildquelle: SEGGER Microcontroller Systems)

Ein drittes Tool ist SystemView. Mit SystemView können Entwickler das Laufzeitverhalten ihres RTOS-Systems untersuchen. Der Jobwechsel wird in einem Trace-Puffer aufgezeichnet und dann über den Debugger an SystemView gemeldet (Abbildung XNUMX). SystemView zeigt diese Informationen jetzt an, damit der Entwickler seine Kontextwechsel anzeigen und die Leistung seines Systems messen kann. Es ist auch eine großartige Möglichkeit, ein System zu visualisieren und Fehler und andere Probleme zu finden.

Maschinen und Werkzeuge
Abbildung 6 – SystemView bietet einen Link zu einem RTOS, mit dem Entwickler die Aufgabenleistung messen und visualisieren können, was das RTOS tut und wann es es tut. (Bildquelle: SEGGER Microcontroller Systems)

Tipps und Tricks zum Debuggen eines eingebetteten Systems

Das Debuggen eines IoT-Geräts erfordert, dass Entwickler sowohl aus Hardware- als auch aus Softwaresicht über die richtigen Tools verfügen. Beide Teile müssen vorhanden sein, wenn Entwickler die Zeit, die sie mit dem Debuggen verbringen, minimieren sollen. Um erfolgreich zu debuggen, gibt es mehrere „Tipps und Tricks“, die Entwickler berücksichtigen sollten, wie z

Verwenden Sie einen professionellen Debugger, der die Übertragungsgeschwindigkeit der Schnittstelle maximiert. Die Menge an nützlichen Daten, die von einem System erhalten werden können, hängt von der Geschwindigkeit ab, mit der diese Daten wahrgenommen werden können. Niedrigere Geschwindigkeiten führen zu einer längeren Debugging-Sitzung.
Richten Sie Debugging-Software früh im Entwicklungszyklus ein. Entwickler sollten nicht auf ein Problem warten, um ihre Debugging-Tools zu konfigurieren.

Setzen Sie von Beginn der Entwicklung an Tracking-Tools ein. Auf diese Weise können Entwickler die Leistung ihres Systems überprüfen und sofort verstehen, wie sich Softwareänderungen darauf auswirken.
Nutzen Sie die Befehlsverfolgung oder Programmzählerabtastung, um die Systemcodeabdeckung während des gesamten Testens zu verstehen. Fehler werden in bedingten Verzweigungen und in ungetestetem Code vorhanden sein.
Nutzen Sie schnelle Übertragungsprotokolle, um Daten außerhalb des Chips zu erhalten, wie z. B. Real-Time Transfer (RTT)-Bibliotheken.
Entwickler, die diese „Tipps und Tricks“ befolgen, werden feststellen, dass sie sich bei der Entwicklung eines IoT-Geräts viel Zeit und Stress ersparen.

Fazit

IoT-Gerätesoftware ist komplex geworden, aber das bedeutet nicht, dass professionelle oder Hobby-Entwickler ständig damit beschäftigt sein sollten, ihre Systeme zu debuggen. Die Verwendung professioneller Entwicklungssoftware und -tools kann Entwicklern die Informationen liefern, die sie benötigen, um ein System nicht nur zu debuggen, sondern auch seine Leistung zu testen und zu verbessern. Durch die Investition in diese Tools können Benutzer den Zeitaufwand für das Debuggen drastisch reduzieren und ihre Projekte in angemessener Zeit zum Laufen bringen und auf den Markt bringen.