Wie funktioniert das On-Chip-Debugging?
Das Folgende ist eine Vereinfachung, um neuen Benutzern mit den Konzepten zu helfen..........
Jeder einzelne Chip einer Familie ( z.B. ARM oder NXP/Freescale ColdFire ) weist einige Pins für die Kommunikation zwischen einem speziellen Steuermodul innerhalb des Mikroprozessor-Chips und einem Anwendungsprogramm, das normalerweise auf einem PC läuft, zu. Um die Anzahl der auf dem Chip verwendeten Pins und Schaltkreise zu minimieren, verwendet diese Kommunikation typischerweise eine nicht standardisierte Kommunikationsverbindung, so dass wir eine spezielle Schnittstelle auf der PC-Seite benötigen.
Wenn der Microcontroller eingeschaltet wird, werden diese Pins geprüft und wenn sie auf eine bestimmte Weise eingestellt sind, übernimmt das Steuermodul die Kontrolle und der Microcontroller wird als im On-Chip-Debug-Modus betrieben (wir werden die Abkürzung BDM für Background Debug Mode synonym verwenden). Wenn nicht für den BDM eingestellt, startet das Steuermodul den Microcontroller einfach an der Einschaltposition und hat nichts weiter zu tun --- den Pins werden ihren Standard-I/O-Funktionen zugewiesen.
Wenn BDM eingestellt ist, entscheidet das Steuermodul und nicht die CPU, was als nächstes passiert. Das Steuermodul hat Zugriff auf alle Speicherbusse und kann im BDM-Modus z. B. alle Speicher und Register lesen und schreiben und deren Inhalte an den PC senden, damit der Ingenieur sie sich ansehen kann. Der Techniker kann entscheiden, neuen Code vom PC zu senden, der in das RAM des Targets geladen werden soll. Das Steuermodul kann den Mikroprozessor auch zwingen, eine einzelne Anweisung auszuführen oder so lange zu laufen, bis der Mikroprozessor eine vordefinierte Stelle erreicht, deren Adresse dem Inhalt der "Haltepunkt-Register" des Steuermoduls entspricht. Mit diesen wenigen Funktionen hat der Ingenieur, der den PC bedient, alle Möglichkeiten, das Zielsystem zu kontrollieren und Code auf dem Mikrocontroller zu debuggen.
Kurz gesagt, BDM bietet 90% der Funktionalität eines In Circuit Emulators (ICE) zu <1% der Kosten.
Hinweis: Wenn JTAG zur Steuerung des On-Chip-Debugging verwendet wird, werden die von der Joint Test Action Group (JTAG ist der allgemeine Name für IEEE 1149.1) spezifizierten Signalstandards für die Kommunikation verwendet, was jedoch nicht automatisch bedeutet, dass der Chip mit Boundary-Scan-Techniken und -Tools getestet werden kann.
BDM zum Programmieren von Flash verwenden ?
Das Geheimnis ist, dass über die BDM-Schnittstelle eine kleine Anwendung in den RAM geladen wird plus so viele der in den Flash zu ladenden Daten, wie in den Rest des RAMs passen. Das BDM startet dann diese Anwendung, die den Flash "brennt" und dann zurück zum PC geht, um weitere Daten zu holen, bis die Aufgabe beendet ist.