Frage

Ich habe einige Low Level-Code auf einem ARM-Architektur zu testen. Typischerweise ist das Experiment ganz auf der Real Board kompliziert, so dass ich über QEMU dachte.

Was ich möchte, ist eine Art, um Informationen von dem Debuggen wie printfs oder GDB. Ich weiß, dass dies mit Linux einfach ist, da es sowohl implementiert die Gerätetreiber für den QEMU Integrator und die GDB-Funktion, aber ich arbeite nicht mit Linux. Auch ich vermute, dass diese Art von Funktionalität aus dem Quellcode Linux-Kernel zu extrahieren würde kompliziert sein.

Ich bin auf der Suche von einem einfach Betriebssystem, das bereits implementiert eine dieser Funktionen. Haben Sie einen Rat haben?

War es hilfreich?

Lösung

Sie haben nicht ein Ziel-Betriebssystem zu Debug-Code benötigen, die in QEMU laufen -. QEMU hat bereits das für Sie

Insbesondere QEMU unterstützt entfernt von GDB Debugging - man kann QEMU laufen mit den entsprechenden Befehlszeilenoptionen und es wird eine Schnittstelle exportieren, dass eine Kopie von GDB (auf dem Host-Computer ausgeführt wird), um eine Verbindung herstellen kann. An diesem Punkt können Sie das Programm in GDB debuggen ziemlich genau, als ob Sie es auf dem Hostcomputer ausgeführt wurden.

http://wiki.osdev.org/GDB erscheint ein bisschen mehr Basisinformationen zu haben; möglicherweise nicht genug, um vollständig erhalten Sie begann, aber zumindest gibt Ihnen die Grundidee und einige Begriffe zu suchen in der QEMU und GDB-Dokumentation. Weiter über das wenig über „Die Implementierung von GDB Stubs“, die hier nicht anwendbar, da QEMU man schon hat, und beginnt im Abschnitt „Verwenden von Emulator Stubs“. Die Kurzform ist einfach, dass Sie QEMU mit der -s Option (exportieren Sie eine GDB Verbindung auf localhost: 1234) starten und die -S Option (Wartezeit für ein GDB „continue“ Befehl vor Beginn der Ausführung), und dann in GDB auf dem Host Sie sagen target remote :1234 statt run. Auch natürlich, benötigen Sie eine ARM-Version von GDB zu verwenden, anstatt einer nativen x86 ein.

(Außerdem, wenn Sie für eine kommerzielle Lösung für Pay bereit sind, CodeSourcery ARM Toolchain hat die IDE-Integration all dies automatisch einstellen, einschließlich der Unterstützung für „printf“ in die Debugger-Konsole zu drucken. Das funktioniert auf ein physisches Brett auch, wenn Sie einen Hardware-Debugger haben Übliche Haftungsausschluss über ich CodeSourcery Mitarbeiter gilt sein -.. aber ich finde sehr einfach zu bedienen)

Update 2012:. CodeSourcery der Werkzeugkette wird nun Mentor Graphics Sourcery Codebench genannt, aber alle gilt das oben gesagte noch

Andere Tipps

Ich weiß, dass ich Ihr ursprüngliches Problem hier, anstatt Ihre vorgeschlagene Lösung wandte mich an (vielleicht ist das besser?), Aber GDB zu verwenden (oder Insight / GDB) direkt auf dem Ziel, mit einem Low-Cost-JTAG-Tool und OpenOCD . Ein Beispiel für eine solche Einrichtung und wie man es umsetzen kann hier .

Wenn Sie ein größeres Budget haben, ein voll funktionsfähiger JTAG Debugger nützlich sein kann, wie die Abatron BDI3000 mit bdiGDB Firmware die Fernbedienung ermöglicht das Debuggen und Geräteprogrammierung über Ethernet mit gDB und keine speziellen Treiber oder Ziel Debug-Agent.

Vielleicht ein Mikro-Kernel wie OKL4 würde Ihre Bedürfnisse?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top