artikel:nav_common:jtag_readout_mainboard_flash

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
artikel:nav_common:jtag_readout_mainboard_flash [Thu. 07.02.2019 07:17] – ↷ Links angepasst weil Seiten im Wiki verschoben wurden go4itartikel:nav_common:jtag_readout_mainboard_flash [Fri. 08.02.2019 13:54] go4it
Zeile 1: Zeile 1:
 ====== Den Flash-Speicher vom Mainboard über JTAG auslesen ====== ====== Den Flash-Speicher vom Mainboard über JTAG auslesen ======
  
-===== Die Aufgabe =====+Der Flash-Speicher selbst hat kein JTAG-Interface. Er ist mit dem Hauptprozessor, einem Texas Instruments "OMAP5948ZXF" verbunden. Der OMAP hat eine JTAG-Schnittstelle und somit ergibt sich die Möglichkeit darüber auch an den Inhalt des Flashs heranzukommen.
  
-Diese Anleitung beschreibt wie man den **kompletten Inhalt** des 32 MB großen Flash-Speichers vom Mainboard des FX auf den PC überträgt.+===== Mittels Segger J-Link Interface =====
  
-===== Das Problem =====+Um den Inhalt des Flash nur auszulesen, genügt die günstige, nicht-kommerzielle "EDU"-Version des Segger J-Link Interfaces:
  
-Der Flash-Speicher selbst hat keinen JTAG-TAP (Interface). Er ist mit dem Hauptprozessor, einem Texas Instruments "OMAP5948ZXF" verbunden. Der OMAP hat eine JTAG-Schnittstelle und somit ergibt sich die Möglichkeit darüber auch an den Inhalt des Flashs heranzukommen.+{{artikel:nav_fx:segger_j-link_edu.jpg?direct&320|}}
  
-Da der OMAP5948 eine Sonderproduktion für die Firma BOSCH ist, gibt es keinerlei öffentlich verfügbare Dokumentation darüber im InternetMeine Recherchen haben aber ergeben das dieser mit hoher Wahrscheinlichkeit dem OMAP5912 entspricht. Mehr darüber im [[artikel:nav_mca-plus:teardown:omap5948:start|Grundlagenartikel über den OMAP5948]].+:!: **Keine Ahnung ob die China-Clones davon genauso gut funktionieren wie das OriginalBei dem relativ günstigen Preis des EDU würde ich jedoch ein Original vorziehen da dies sicher qualitativ hochwertiger ist!**
  
-Der OMAP enthält neben einer ARM9-CPU und einem DSP auch einen Coprozessor und zahlreiche andere Komponenten, ähnlich einem Mikrocontroller. RAM und Flash können per Design extern angeschlossen werden. Dieser Umstand ermöglicht eine gewisse Vorhersage wie und an welchen Pins der OMAP ein Flash bedientMit Hilfe eines JTAG-Flash-Readers und den richtigen Einstellungen ist es grundsätzlich kein Problem das Flash auszulesen.+Die benötigte Software (J-Flash) kann direkt und kostenlos von der Segger Homepage heruntergeladen werden: [[https://www.segger.com/downloads/jlink/]]
  
-Es gibt jedoch ein Problem! Einzelne Sektoren lassen sich problemlos übertragen. Will man aber mehr als 5 oder 10 Sektoren übermitteln (das Flash enthält 256 Sektoren), kommt es zum Übertragungsabbruch:+==== Schritt 1JTAG-Interface mit dem Mainboard verbinden ====
  
-{{artikel:nav_fx:flash-download_failed.jpg?direct&200|}}+[[artikel:nav_common:jtag_connect_mainboard]]
  
-Gleichzeitig kann beobachtet werden das der Stromverbrauch des Geräts gegen Null sinkt. An diesem Problem sind bislang alle die im Internet darüber berichten gescheitert. Niemand hat es bislang geschafft den Flash vollständig in einem Rutsch zu lesen.+==== Schritt 2) Den Watchdog vom Radioprozessor deaktivieren ====
  
-Der Grund für diese Abbrüche ist schnell erklärt: Um via JTAG auf den Flash-Speicher zugreifen zu können wird als erstes die CPU angehalten und die Speicherverwaltungseinheit deaktiviertNur so können Zugriffskonflikte vermieden werdenGleichzeit wird damit auch die auf dem OMAP laufende Anwendung gestoppt. Die Programmausführung auf dem OMAP wird jedoch von einem Watchdog im Radioprozessor (µPD70F3283) überwachtErhält dieser innerhalb von 10 Sekunden kein "Lebenszeichen" des laufenden Programms, löst er eine vollständige Abschaltung ausDiese Keep-Alive Pakete werden mittels SPI-Schnittstelle vom OMAP zum Radioprozessor gesendet.+Auf dem Mainboard steuert ein NEC V850 Mikrocontroller (der sog. "Radioprozessor") sämtliche Funktionen für den Radioempfang aber auch die Stromversorgung der KomponentenZur Überwachung empfängt er vom HMI-Prozessor heartbeatsBleiben diese für eine längere Zeit aus (ca20 Sekunden) führt er einen Reset auf den OMAP durchDie Zeit ist zu kurz um den gesamten Flash-Speicher auszulesen, daher muss man diesen Mechanismus still legen.
  
-Um das Flash also vollständig (unterbrechungsfreiherunterladen zu können, muss dieser Watchdog entweder deaktiviert werden, oder weiterhin Keep-Alive-Pakete für den Watchdog auf den SPI erzeugt werden. Letzteres wäre per Software sicher möglichViele Flash-Reader, wie auch der Segger, laden via JTAG nach anhalten der CPU eigenen Programmcode in den Arbeitsspeicher des OMAP und lassen ihn ausführen. Dieser Programmcode liest dann den Flash byteweise aus und sendet die Daten direkt über JTAG zum Programm auf dem PCDas geht deutlich schneller als die Leseoperationen auf Signalebene über JTAG-Boundaryscan-Register zu emulieren. In diese Software könnte ein findiger Programmierer auch eine Routine für das senden der Keep-Alive-Pakete implementieren.+Hierzu muss eine **Drahtbrücke zwischen Pin 3 und Pin 13** des [[artikel:nav_common:jtag_connect_mainboard|rechten Serviceports (X3806)]] hergestellt werden. Ich habe mir hierfür aus dem Elektronikversand einen 14-poligen Micro-Match Header bestellt und aufgelötetDann kann ich mit einfachen Dupon-Kabeln die Brücke herstellenMan kann hier natürlich auch einen Schalter oder einfach ein Stück Kuperleitung anlöten.
  
-Es gibt aber noch eine Alternative! Die Entwickler des Radios waren so freundlich einen IO-Port des Radioprozessors an den rechten, nicht bestückten, Serviceport zu legen mit dem es möglich ist den Radioprozessor und damit den Watchdog zu deaktivieren. Diese Methode beschreibe ich nachfolgend im Detail. Damit ist es problemlos möglich, **den Flash-Inhalt ohne weitere Hilfsmittel, Spezialsoftware oder sonstigem Hokuspokus komplett auszulesen!**+==== Schritt 3) Einstellungen im J-Flash vornehmen ====
  
-===== Die Lösung =====+In der recht umfangreichen Liste der unterstützten CPUs ist der OMAP5948 leider nicht enthalten. Dieser Chip wurde speziell für Bosch hergestellt und es existieren keine öffentlich verfügbaren Datenblätter darüber. Er basiert jedoch auf dem OMAP5912 und dieser enthält eine ARM926EJ-S CPU, welche wiederum von J-Flash unterstützt wird :-)
  
-Für die Umsetzung verwende ich einen relativ preiswerten "Segger J-Link EDU":+Hierzu unter "Optionsden Menüpunkt "Project options..." auswählen und folgende Einstellungen vornehmen:
  
-{{artikel:nav_fx:segger_j-link_edu.jpg?direct&200|}}+{{artikel:nav_fx:projectopts_general.jpg?direct|}}
  
-in Verbindung mit der zugehörigen Software (J-Flash).+=== JTAG-Einstellungen ===
  
-==== Schritt 1) JTAG-Interface anschließen ====+{{artikel:nav_fx:projectopts_target-interface_maxspeed.jpg?direct|}}
  
-[[artikel:nav_common:jtag_connect_mainboard|Den Segger J-Link am mit dem Serviceport des Mainboards verbinden]]+=== CPU-Typ wählen ===
  
-==== Schritt 2) Den Radioprozessor deaktivieren ====+Einfach "ARM9" aus der CPU-Liste wählen:
  
-Hierzu muss eine **Drahtbrücke zwischen Pin 3 und Pin 13** des [[artikel:nav_common:jtag_connect_mainboard|rechten Serviceports]] hergestellt werden. Ich habe mir hierfür aus dem Elektronikversand einen 14-poligen Micro-Match Header bestellt und aufgelötet. Dann kann ich mit einfachen Dupon-Kabeln die Brücke herstellen. Man kann hier natürlich auch einen Schalter oder einfach ein Stück Kuperleitung anlöten.+{{artikel:nav_nx:projectopts_mcu.jpg?direct|}}
  
-==== Schritt 3) Einstellungen im J-Flash vornehmen ====+=== Flash Chip einstellen ===
  
-In der recht umfangreichen Liste der unterstützten CPUs ist der OMAP5948 (ebenso wie der OMAP5912leider nicht enthaltenDas ist aber kein Problem, den mit den richtigen Einstellungen kann man sich diese selbst herstellen. Hierzu unter "Optionsden Menüpunkt "Project options..." auswählen und folgende Einstellungen vornehmen:+Auf "Select flash device" klicken und aus der Liste den "Spansion S29GL256N" (32MBfür das FX bzw. "Spansion S29GL512N(64MB) für das NX oder MCA wählen:
  
-{{artikel:nav_fx:projectopts_general.jpg?direct&200|}} {{artikel:nav_fx:projectopts_target-interface_maxspeed.jpg?direct&200|}} {{artikel:nav_nx:projectopts_mcu.jpg?direct&200|}} {{artikel:nav_fx:projectopts_flash-256.jpg?direct&200|}} {{artikel:nav_fx:projectopts_production.jpg?direct&200|}} {{artikel:nav_fx:projectopts_performance.jpg?direct&200|}}+{{artikel:nav_fx:projectopts_flash-256.jpg?direct|}}
  
-{{artikel:nav_nx:setup_complete_256.jpg?direct&200|}}+=== Weitere Einstellungen... ===
  
-**Diese Einstellungen als Projektdatei Downloaden: {{artikel:nav_fx:omap5948zxf_flash_fx.jflash|OMAP5948ZXF_FLASH_FX.jflash}}**+{{artikel:nav_fx:projectopts_production.jpg?direct|}} 
 + 
 +{{artikel:nav_fx:projectopts_performance.jpg?direct|}} 
 + 
 +=== Einstellungen sichern === 
 + 
 +Am Ende erhält man eine Übersicht der Einstellungen im Hauptbildschirm: 
 + 
 +{{artikel:nav_nx:setup_complete_256.jpg?direct&640|}} 
 + 
 +Diese speichert man sich am besten als "Project" für spätere Versuche ab.
  
 ==== Schritt 4) Download starten ==== ==== Schritt 4) Download starten ====
  
-{{artikel:nav_fx:flash-download_entiry-chip.jpg?direct&200|}}+{{artikel:nav_fx:flash-download_entiry-chip.jpg?direct&640|}}
  
-{{artikel:nav_fx:flash-download_finished_256.jpg?direct&200|}}+{{artikel:nav_fx:flash-download_finished_256.jpg?direct&640|}}
  
-{{artikel:nav_fx:flash-download_done_256.jpg?direct&200|}}+{{artikel:nav_fx:flash-download_done_256.jpg?direct&640|}}
  
 ==== Schritt 5) Flashdump abspeichern ==== ==== Schritt 5) Flashdump abspeichern ====
Zeile 63: Zeile 73:
 ''Strg-S'' drücken, zu speichernden Bereich bestätigen und als Zielformat "*.bin" auswählen: ''Strg-S'' drücken, zu speichernden Bereich bestätigen und als Zielformat "*.bin" auswählen:
  
-{{artikel:nav_fx:flash-download_save2bin_256.jpg?direct&200|}}+{{artikel:nav_fx:flash-download_save2bin_256.jpg?direct&640|}}
  
 ===== Weiterführende Informationen ===== ===== Weiterführende Informationen =====
  
-  * Zu diesem Thema gibt es auch einen Blog von mir im mondeo-mk4.de Benutzerforum: [[https://mondeo-mk4.de/index.php/Thread/21164-Hacking-into-NavFX/?postID=302879#post302879]]+Zu diesem Thema gibt es auch einen Blog von mir im mondeo-mk4.de Benutzerforum: [[https://mondeo-mk4.de/index.php/Thread/21164-Hacking-into-NavFX/?postID=302879#post302879]] 
  
  • artikel/nav_common/jtag_readout_mainboard_flash.txt
  • Zuletzt geändert: Wed. 19.05.2021 13:28
  • von go4it