Hat hier vielleicht jemand Erfahrung wie man einen gelockten MAC7116 (MAC7100er Familie) entsperrt? Laut Datenblatt gibt es eine "JTAG lockout recovery sequence" mit der interne der Program- und Daten-Flash des MAC gelöscht wird und man ihn danach neu programmieren kann. Die Prozedur ist in Kapitel "15.4.2.3 JTAG Lockout Recovery" folgendermaßen beschrieben: " In a manner similar to ARM CPU instruction execution flows described in Section 15.4.1.5 "Program, Erase, and Verify Operations" a sequence of JTAG commands can be used to: 1. Execute a mass erase command, 2. execute a blank check, 3. program the Flash Security Word (offset 0x0414) bits corresponding to the CFMSEC[SEC] field to 0b10 (see Section 15.3.1.3), and 4. RESET the device into expanded mode to execute boot code from external memory. Refer to Section B.4.4.3 "Memory Mapped Register Access via JTAG" on page B-612 for more Dort steht z.B. das das CFM-Kommando "Mass Erase" 0x41 ist. Dieses soll das gesamte Flash löschen (also auf 0xFF setzen). Nun ist schon die Frage wie ich dieses Kommando übermittele? Ich muss ja eine bestimmte JTAG-Instruction verwenden (IR-Register) und dann vermutlich über geeignete DR-Register Bytes erstmal den MAC so einstellen das er weiss das nun CFM-Kommandos folgen und irgendwann dann auch das 0x41 dort absetzen. Aber selbst das allein reicht nicht, wie man aus dem Ablaufplan in der Grafik erkennen kann. Es müssen irgendwelche Bits entsprechend gesetzt sein (werden?) damit das ganze klappt. Ich habe einen Segger J-Link zur Verfügung und könnte mir vorstellen das man die entsprechenden Sequenzen mittels eines J-Link Scriptfiles (https://wiki.segger.com/J-Link_script_files) programmieren kann, nur habe ich damit noch keine Erfahrung und könnte etwas Unterstützung gebrauchen :-) Dankeschön!
Auch wenn das Interesse, naja zumindest das Echo auf meine Anfrage eher dürftig war will ich doch auch der Community was zurückgeben und die von mir gefundene Lösung zum Problem präsentieren. Evtl. hat mal jemand das gleiche Problem und findet dann auch eine Antwort dazu :-) Die Kernproblematik war, das ich durch einen unbedachten Ausleseversuch mittels JTAG einen Selbstschutzmechanismus des MAC7116 ausgelöst habe. In der Folge hat dieser ein LOCK-Bit im Flash des Security-Words (ab 0x414) geändert. Diese Daten liest der Chip nach dem RESET ein und geht, sobald das Flag erkannt wurde in einen gesperrten Zustand. In diesem Zustand ("Chip Secured Mode") wird kein Programmcode ausgeführt und auch sonst keine weitere Initianisierung der MCU durchgeführt. Es wird wohl auch nur noch ein limitierter Satz von JTAG-Befehlen ausgeführt. In diesem Zustand habe ich den MODA-Pin auf Vcc (1) gelegt. Das sorgt dafür das die Programmausführungsbasis von 0x0000 0000 auf 0xFE00 0000 verlagert wird. Hier befindet sich das DATA-Flash. Dieses ist 32kb groß. Über J-Flash konnte die CPU-ID ermittelt werden. Um aber dann irgendwas machen zu können muss die CPU angehalten werden. Hierzu habe ich den obligatorischen "HALT" der INIT-Sequenz hinzugefügt. Normalerweise habe ich hier auch immer noch einen RESET davor, aber genau der verhindert dann den Halt des Prozessors. Anschließend konnte der Connect die CPU anhalten, aber nichts weiter tun weil der beim versuch Code ins RAM zu laden Probleme hatte. Die Lösung war die CPU-Taktfrequenz über die Memory-Mapped-IO Register richtig einzustellen (50 MHz, basierend auf dem externen 8 MHz Quarz) und schon konnte ich vollständig connecten! Anschließend list sich das DATA-Flash problemlos löschen und nach ziehen des MODA Pins (0) auch das PROGRAM-Flash. Hier habe ich anschließend darauf geachtet das an 0x414 ein gültiges Security-Word stand welches den Chip "offen" zurücklässt. Das entsprechende J-Flash Projekt habe ich mal beigefügt.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.