Ich versuche, den Flash-Speicher eines Mikrocontrollers MPC5606B von Motorola zu lesen. Ich habe seine Pins gesehen und gesehen, dass es jtag verwendet, um das Debuggen durchzuführen, also versuche ich, die JTAG-Schnittstelle zum Lesen des Flash-Inhalts zu verwenden.
Ich habe den Flash-Inhalt des MPC mit einem Tool (UPA) und gelesen Bei einem PC möchte ich dies jedoch selbst tun und meine eigene eingebettete Hardware ohne das PC-Tool verwenden. Ich habe über den JTAG-Standard (JTAG_IEEE-Std-1149.1-2001) und einige Videos und Erklärungen im Internet gelesen. Ich habe das Statusdiagramm des TAP-Controllers und einige Anweisungen gelesen.
Um das Lesen des JTAG besser zu verstehen, habe ich mit dem PC-Tool den Blitz des MCP und ein Oszilloskop gelesen, um zu sehen, wie die Kommunikation durchgeführt wird Die Kommunikation dauert jedoch fast 10 Sekunden. Also füllte ich den gesamten Blitz mit Nullen und las den Speicher. Auf diese Weise konnte ich das Lesen des Speichers mit dem Oszilloskop identifizieren. Obwohl ich das Lesen des Speichers mit dem Oszilloskop identifizieren kann, kann ich die genaue Reihenfolge der Befehle zum Ausführen des Lesens noch nicht bestimmen. Die Lesezeit ist zu groß, fast 10s.
Bevor ich näher darauf eingehen möchte, möchte ich wissen, ob es einen Schutz für den Zugriff auf den Flash-Speicher gibt. Ich habe versucht, den Beginn der Kommunikation zu verstehen. Ich kann den Fortschritt in der Zustandsmaschine des TAP-Controllers identifizieren, konnte jedoch nicht verstehen, was dieser Schritt bedeutet und warum er ausgeführt wird. Ich würde also gerne wissen:
1) Kann ich feststellen, ob die Kommunikation einen Schutz bietet? Ich muss es wirklich wissen, bevor ich weiter in der Aufgabe vorgehen kann, da ich die Komplexität der Aufgabe vorher kennen muss, um tiefer zu gehen.
2) Obwohl ich über den JTAG-Standard und die TAP-Controller-Zustandsmaschine gelesen habe, Ich konnte nicht sagen, welche Befehlsfolge ich zum Lesen des Flahs-Inhalts benötige.
Abaixo está a leitura do flash do MPC5606B realizada pela ferramenta com o auxílio do PC. Das Bild besteht aus einer Folge von Bildern. Das erste ist das vollständige Bild der Kommunikation, das zweite ist der Beginn der Kommunikation. Ein Pfeil zeigt an, wo sie zurückgezogen wurde.
Dies war meine bisherige Interpretation
ABBILDUNG 1:
1.1 - (TMS = 1) Test-Logic-Resset
1.2 - (CLK breiter Puls) Ich weiß nicht warum.
1,3 - (8 Impulse von CLK, TMS = 1)
Da TMS nicht zu 1 kam, verstehe ich, dass es Test-Logic-Reset nicht beendet hat
1.4 - (TMS = 0, 1 Impulstakt) tritt in den Run-Test-Idle ein.
ABBILDUNG 2:
2.1 - (TMS = 1, 2 Taktimpulse ) Geht in den Zustand "IR-Scan auswählen"
2.2 - (TMS = 0, 2 Taktimpulse) Wechselt in den Zustand "Shif-IR"
2.3 - (TMS) = 0, 4 Taktimpulse) Bleibt in "Shift-IR"
TDI: 1000TDO: 10002.4 - (TMS = 1, 1 Taktimpuls) Geht zum "Exit1-IR"
2,5 - (TMS = 1, 1 Taktimpuls) Wechselt in den Status "Update-IR"
2,6 - (TMS = 0, 1 Taktimpuls) Wechselt in den "Run-Test-Idle"
ABBILDUNG 3:
3.1 - (TMS = 1, 1 Taktimpuls) wechselt in den Zustand "DR-Scan auswählen"
3.2 - ( TMS = 0, 2 Taktimpulse) Wechseln Sie in den Status "Shif-DR"
3.3 - (TMS = 0, 31 Taktimpulse) Wechseln Sie in den Status "Shif-DR"
Die 32 Taktzyklen entsprechen 4 Bytes:
TDI: 0x00 0x00 0x00 0x00TDO: 0xB8 0x0C 0x27 0x54 (10111000 00001100 00100111 01010100)
3.4 - (TMS = 1, 1 Taktimpuls) Wechselt zum "Exit1-DR"
3.5 - (TMS = 1, 1 Taktimpuls) Wechselt zum Status "Update-DR"
3.6 - (TMS = 0, 1 Taktimpuls) Geht zum "Run-Test-Idle"