Ungenutzte Bits in einem Programmzähler sollten eigentlich Null sein. In der Praxis sind sie das jedoch manchmal nicht. Da diese Bits ungenutzt sind, spielt ihr Wert eigentlich keine Rolle – solange niemand von außen, etwa ein Debugger, sie ausliest. Kann das bei AVR Mikrocontrollern zu Problemen führen?
Weiter lesen
AVR TQFP-100/64 Test- und Programmier-Sockel
Wenn du mit ATmegas in TQFP-Gehäusen arbeitest, sind Boards mit Test-Sockeln, wie sie auf dem Bild oben zu sehen sind, ein wirklich unersetzliches Werkzeug.
Weiter lesen
Die umfassende Liste von AVR-Debuggern
Hast du dich schon mal gefragt, ob du den AVR-Debugger, den du in Opas Ersatzteilkiste gefunden hast, für dein neuestes Hardware-Projekt nutzen kannst? Hier kommt die umfassende Liste der AVR-Debugger, die genau solche Fragen beantwortet.
Weiter lesenAs soon as we started programming, we found to our surprise that it wasn’t as easy to get programs right as we had thought. Debugging had to be discovered. I can remember the exact instant when I realized that a large part of my life from then on was going to be spent in finding mistakes in my own programs.
(Maurice Wilkes, 1949, Konstrukteur einer der ersten speicherprogrammierbaren Computer)
Wie man mysteriöse, stille Fehler im Arduino Sketch vermeidet: Schiebe PROGMEM ans andere Ende
Hast du schon mal einen Arduino Mega 2560 (oder ein ähnliches Board) benutzt und irgendwann im Entwicklungsprozess festgestellt, dass die LED auf mysteriöse Weise aufhört zu blinken, dass der Text verstümmelt gedruckt wird oder dass komische Artefakte auf den Bildern erscheinen? Und das alles ohne ersichtlichen Grund oder eine Fehler- oder Warnmeldung? Wenn du wissen willst, was dahinter steckt und wie du dieses Problem lösen kannst, lies weiter.
Weiter lesen
System View Descriptions von AVR MCUs
Was ist eine System View Description (SVD)? Wofür kann sie verwendet werden? Und gibt es eine Verbindung zu AVR-Mikrocontrollern?
Weiter lesen
Stop-and-Go
Eine typische Debugging-Aktivität ist das Setzen von Haltepunkten (engl. Breakpoints) und das anschließende Durchlaufen des Programms von Haltepunkt zu Haltepunkt, wobei der interne Zustand des Programms an jedem Haltepunkt überprüft wird. Das hört sich zwar einfach an, ist in der Umsetzung dann aber doch komplizierter als man glaubt. In diesem Blogbeitrag werden wir einen Blick in den Maschinenraum eines Debuggers werfen.
Weiter lesen
Ein Schnäppchen für alle: SNAP
Microchip hat den Preis für ihren Hardware-Debugger SNAP von über 50 € auf unter 20 10 € gesenkt. Ich habe kürzlich das Python-Skript dw-gdbserver für diesen und andere Hardware-Debugger erstellt, so dass du SNAP jetzt in der Arduino IDE 2 zum Debuggen klassischer ATtinys und kleiner ATmegas verwenden kannst. Alles in allem ist dies eine erschwingliche und komfortable Debugging-Lösung für klassische AVRs.
Per Einzelschritt die Orientierung verlieren
Beim Embedded Debugging passiert es oft, dass man beim zeilenweisen Single-Stepping plötzlich in der Interrupt-Vektor-Tabelle landet. Ein weiteres Problem ist, dass einzelne Schritte manchmal Ewigkeiten dauern können. In diesem Blogbeitrag gehe ich auf beide Probleme ein, und zeige, welche Maßnahmen in einem Gdbserver diese Probleme verhindern können. Alles natürlich im Kontext von AVR MCUs.
Weiter lesen
Volatilität, Race-Conditions und Heisenbugs
Was ist der Zweck des C++-Qualifizierers volatile, was hat er mit Race-Conditions zu tun und was sind Heisenbugs?