Forum: Mikrocontroller und Digitale Elektronik Hardware Debugger


von Toffifee (Gast)


Lesenswert?

moin,

Nur zum Verständnis: Die modernen Mikrokontroller haben ja alle einen 
ICE (In-Circuit-Emulator). Das ist doch ein extra-Chip, der mit dem 
Mikrokontroller verbunden ist. Das ganze Debuggen, Flashen u.s.w. geht 
ja über diesen ICE. Man greift also nicht direkt auf den Mikrokontroller 
zu.

Könnt ihr mir da weiterhelfen?

von Toffifee (Gast)


Lesenswert?

2. Frage: Wenn ich irgendetwas über den Emulator mache, geht es direkt 
auf den Original-Mikrokontroller über. z. B. wenn ich über den Emulator 
Flashe, Debugge etc.. --> wirkt sich das dann auf den eigentlichen 
Mikrokontroller aus. Was ist denn der Sinn vom Emulator?

von Purzel H. (hacky)


Lesenswert?

Kommt auf die Familie an.

von Xavier Lander (Gast)


Lesenswert?

Der Sinn eines Emulators ist wie der Name schon vermuten lässt den 
jeweiligen Mikrocontroller zu emulieren. Also sein gesamtes Spektrum der 
Fähigkeiten (in einer Software) nachzubilden. Das gibt einem die 
Möglichkeit unbeschränkt Eingriffe für das Debugging, etc. vorzunehmen. 
Den meisten Entwicklern reichen z.B. Breakpoints um zu diesen 
beispielsweise Timer auszulesen, etc. Das alles aber ein viel größeres 
Spektrum kann man mit einem ICE erreichen. Unverzichtbar bei 
Sicherheitskritischen Entwicklungen um Fallbackmodes, etc zu testen. Für 
den Hobbyanwender so gut wie unbezahlbar.

von Reinhard Kern (Gast)


Lesenswert?

Toffifee schrieb:
> Das ist doch ein extra-Chip, der mit dem
> Mikrokontroller verbunden ist.

Damit kommt man nicht weit, da an einem µC-Chip fast nichts 
entscheidendes von aussen gelesen werden kann, wie z.B. der Inhalt eines 
Registers oder der Stand eines Timers.

Dazu gab es früher "Bond-Out-Chips", Spezialanfertigungen des 
Prozessors, bei dem entsprechende interne Busse nach aussen geführt 
waren. Zu Zeiten eines Z80 war zum Ersetzen der CPU noch ein 40 poliges 
Kabel mit DIL-Stecker ausreichend, heute geht das praktisch nicht mehr, 
da es keinen Stecker gibt, um etwa ein TQFP-100-Package zu emulieren, es 
gibt ja kaum noch Chips, für die überhaupt Fassungen verfügbar sind. 
Deshalb wird heute eher eine Debugschnittstelle im Chip selbst 
vorgesehen, z.B. JTAG, so dass man die Informationen über 4 Leitungen 
und ein Debug-Interface abfragen kann.

D.h. aber auch, wenn man diese Leitungen auf der Leiterplatte nicht auf 
einen Debugstecker führt, sondern als I/O verwendet, kann man auch nicht 
debuggen.

Gruss Reinhard

von Na Sowas (Gast)


Lesenswert?

Bevor's vergessen geht. Ein Emulator ist in der realen Hardware. Und 
laesst den Benutzer das Programm zb Singlesteppen. Wenn nur simuliert 
wird, nennt sich das Simulator.

von Toffifee (Gast)


Lesenswert?

Die wichtigste Frage ist aber: Wirken sich alle Sachen, die ich mit dem 
Emulator mache z. B. das Flashen des Programms oder das Steppen des 
Programms auf den eigentlichen Mikrokontroller aus?

grus

von Toffifee (Gast)


Lesenswert?

Was ich einfach wissen will ist: Es gibt einen JTAG-Adapter, den man ans 
Board anschließen kann. Dabei gibt es die Modi's "Debugging" und 
"Flashing". Wirkt sich beides auf den eigentlichen / originellen 
Mikrokontroller aus?

von Reinhard Kern (Gast)


Lesenswert?

Toffifee schrieb:
> Wirkt sich beides auf den eigentlichen / originellen
> Mikrokontroller aus?

Es kann nur einen geben - der der eingelötet ist. Im Interface kann zwar 
auch ein Controller sein (fast immer), aber der macht USB und das 
JTAG-Protokoll und ist meistens auch ein anderer als der Debuggee.

Rein prinzipiell könnte man in einem Mehrprozessor-System mehr als einen 
Prozessor an den JTAG-Stecker verbinden, aber ich vermute dass viele 
Debugger die garnicht getrennt ansprechen können, ich würde das daher 
lassen.

Da für viele Chips Fassungen und Adapter nicht erhältlich oder 
unbezahlbar sind, ist das Flashen "In System" die gängige Methode auch 
für die Fertigung. Die nötigen Pins muss man sich halt gönnen.

Gruss Reinhard

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

JTAG ist erstmal nur die gebräuchliche Bezeichnung einer 
Hardwareschnittstelle, die mit einem internen Zustandsautomaten 
verbunden ist, der über diese Schnittstelle angesteuert werden kann. 
Ursprünglich wohl hauptsächlich für Boundary-Scan entwickelt (d.h. Pins 
über die Schnittstelle schalten und abfragen) - der "Modus" wurde noch 
nicht genannt. Es gibt aber noch eine andere Methoden (BDM, SWD, PDI 
...)

Debuggen ist zumindest abhängig von der Schnittstelle (z.B. JTAG, 
BDM...) und dem verwendeten Controllerkern (z.B. Cortex M3, MIPS, AVR 
etc.). Da der aber bisher nicht genannt wurde, auch auf Nachfrage von 
2v3, gibt es keine konkrete Antwort.

"Auswirkungen" auf den Controller können sein: verändertes 
Laufzeitverhalten durch breakpoints/steppen, Temporäre Änderunge des 
Programmcodes durch zeitweise eingefügte Halteanweisungen und anderes. 
Konkrete Antwort ohne mehr Details kaum möglich.

Bei "flashen" muss man zwischen internen und externen Speichern 
unterscheiden. Bei internen Speichern ist es zumindest bei ARM-basierten 
Controllern üblich, dass über die Debug-Schnittstelle ein kleines 
Programm ins RAM des Controllers übertragen wird, dass dann Blockweise 
die vorher über die Schnittstelle in andere Bereiche des RAMs 
übertragene Daten in den Flash-Speicher schreibt. Wie das "kleine 
Programm" aussieht ist abhängig vom Controller (nicht nur von dessen 
Kern). Wäre bitter, wenn sich das nicht auf den "eigentlichen" 
Controller(-speicher) auswirken würde. Externer Speicher kann mit dem 
gleichen Ansatz geschrieben werden allerdings gibt es auch die 
Möglichkeit über die Boundary-Scan-Funktinoalität zu schreiben - meist 
aber mit deutlich geringeren Übertragungsraten.


Nachtrag: Besagtes Verbinden mehrerer Targets an eine JTAG-Schnittstelle 
ist meines wissens Teil der Spezifikation. Wenn alle Teilnehmer diese 
richtig implementieren (wohl nicht immer der Fall), ist eine Scan-Chain 
über JTAG möglich und bei Controller-FPGA-Kombiboards wohl üblich.

von Reinhard Kern (Gast)


Lesenswert?

Martin Thomas schrieb:
> Nachtrag: Besagtes Verbinden mehrerer Targets an eine JTAG-Schnittstelle
> ist meines wissens Teil der Spezifikation.

Ja, aber nicht das Debuggen - daher sind auch die JTAG-Debugger i.A. 
nicht austauschbar, sondern nur für eine bestimmte Prozessorklasse 
geeignet. Als Mod könntest du dafür dankbar sein, Fragen wie "kann ich 
mit einem XYZ-JTAG-Kabel auch einen AVR debuggen und wenn ja warum 
nicht" füllen die Elektronikforen zuverlässig. Prinzipiell kann man 
sagen, jedem Prozessor sein JTAG-"Kabel", wobei das immer mehr ist als 
bloss ein Kabel.

Gruss Reinhard

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.