Kategorie: Einsichten

Irgendwas interessantes Neues

Make it Fail!

(David J. Agans)

Das Zitat stammt aus David Agans Buch Debugging: the 9 indispensable rules for finding even the most elusive software and hardware problems, das ich jedem empfehlen kann, der ein technisches Artefakt debuggen muss.

Dies ist ein kleiner Schritt für einen Menschen, aber ein riesiger Sprung für einen Debugger: Single-Stepping und Interrupts

Das Titelbild dieses Beitrags ist von WikiImages auf Pixabay

Man will nur einen einzelnen Schritt in einem Programm ausführen, aber der Debugger springt zu einem völlig unbekannten Bereich des Programms. Dies war in der Tat meine erste Erfahrung, als ich den MPLAB-X-Debugger von Microchip auf dem Blink-Programm ausprobierte habe. Fehler oder Feature?

Weiter lesen

Überraschung, Überraschung!

Das Titelbild dieses Beitrags ist von Albert Guillaume – Gils Blas, 24 décembre 1895, Public Domain, Link

Wenn man ein Werkzeug für ein Protokoll entwickelt, das undokumentiert ist, ist es nicht verwunderlich, dass man auf überraschende Situationen stößt. Und genau das habe ich bei der Entwicklung des Hardware-Debuggers dw-link erlebt, der debugWIRE-MCUs mit dem GDB-Debugger verbindet. Obwohl ein wesentlicher Teil des debugWIRE-Protokolls rekonstruiert wurde, habe ich einige überraschende Phänomene beobachtet: MCUs mit gespaltener Persönlichkeit, Stuck-at-One-Bits in Programmzählern, halblegale Opcodes und mehr.

Weiter lesen

Debuggen eines Debuggers mit sich selbst

Das vorgestellte Bild dieses Beitrags ist ein Comic aus xkcd.com.

Der obige xkcd-Comic mit dem Titel Debugger spielt auf das Problem an, dass man bei der Anwendung einer bestimmten Methode auf sich selbst möglicherweise nicht das bekommt, wonach man gefragt hat. Turings Halteproblem ist ein bekanntes Beispiel dafür: Man kann algorithmisch nicht entscheiden, ob ein Algorithmus auf einer gegebenen Eingabe terminiert. Haben wir dieses Problem auch bei Debuggern? Insbesondere habe ich mich gefragt, ob es sinnvoll ist, den Hardware-Debugger, den ich entwickle, mit sich selbst zu debuggen.

Weiter lesen

Link-Zeit-Optimierung und das Debuggen von Objekt-orientierten Programmen auf AVR MCUs

Das Titelbild dieses Beitrags basiert auf einem Bild von TheDigitalArtist auf Pixabay.

Link-Zeit-Optimierung (LTO) ist eine sehr leistungsfähige Compiler-Optimierungstechnik. Wie ich feststellen musste, ist LTO nicht verträglich mit dem Debuggen objektorientierter Programme unter GCC, zumindest für AVR-MCUs. Ich bemerkte das im Zusammenhang mit dem Debuggen eines Arduino-Programms und es dauerte eine ganze Weile, bis feststellte, dass LTO hier der Schuldige ist.

Weiter lesen

Eine einzige Verbindung

Das Titelbild dieses Beitrags ist von Vladimir163rus auf Pixabay.

Eine neue Arduino-Bibliothek hat das Licht der Welt erblickt: SingleWireSerial. Sie unterstützt einadrige asynchrone serielle Halbduplex-Kommunikation. Durch die Verwendung der Eingangserfassungsfunktion der AVR-MCUs ist sie extrem genau und unterstützt Bitraten von bis zu 250 kbps. Und konträr zum Titel kann man sie auch für Zweidraht-Verbindungen verwenden.

Weiter lesen

Sind Eingaben verfügbar?

Das Titelbild dieses Beitrags ist von rawpixel.com – de.freepik.com

Die SoftwareSerial-Klasse verfügt genauso wie die Serial-Klasse über die available()-Methode, die die Anzahl der Zeichen zurückgibt, die bereits empfangen, aber noch nicht gelesen wurden. Es gibt jedoch einen interessanten Unterschied. Ein Aufruf von SoftwareSerial.available() ist deutlich langsamer als ein Aufruf von Serial.available(). Wir werden nach dem tieferen Grund für dieses seltsame Verhalten suchen und ich werde drei Möglichkeiten aufzeigen, um das Problem zu beheben.

EDIT: In der Arduino Version 1.8.17 wurde das Problem beseitigt.

Weiter lesen

Copyright © 2025 Arduino-Bastelecke

Thema von Anders NorenHoch ↑