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 [Fri. 26.07.2019 17:55] go4itartikel:nav_common:jtag_readout_mainboard_flash [Fri. 10.01.2020 19:05] go4it
Zeile 5: Zeile 5:
 Der Flash-Speicher auf den Navigations-Mainboards (Spansion S29GL...) ist direkt am Hauptprozessor, einem Texas Instruments "OMAP5948ZXF" angeschlossen. Der OMAP verfügt über eine JTAG-Schnittstelle und darüber kann man auch den Inhalt des Flash auslesen bzw. programmieren. Der Flash-Speicher auf den Navigations-Mainboards (Spansion S29GL...) ist direkt am Hauptprozessor, einem Texas Instruments "OMAP5948ZXF" angeschlossen. Der OMAP verfügt über eine JTAG-Schnittstelle und darüber kann man auch den Inhalt des Flash auslesen bzw. programmieren.
  
-===== Benötigte Teile und Hilfsmittel =====+Alle in dieser Anleitung gezeigten Schritte werden mit einem **Segger J-Link** JTAG-Adapter durchgeführt:
  
-Alle hier gezeigten Schritte werden mit einem **Segger J-Link** JTAG-Adapter durchgeführt:+{{artikel:nav_fx:segger_j-link_edu.jpg?direct&200|}}
  
-{{artikel:nav_fx:segger_j-link_edu.jpg?direct&160|}}+Zum auslesen des Flash reicht dabei die "EDU"-Variante, welche für ca. 60,- € im Handel zu haben ist. Um den Flash auch löschen und programmieren zu können benötigt man jedoch spezielle Software-Lizenzen. Diese sind z.B. in der "PLUS"-Version des J-Link für um die 800,- € enthalten. Die Hardware ist bei allen Editionen exakt die gleiche, es sind nur zusätzliche Lizenzschlüssel in die Software einzutragen.
  
-Zum auslesen reicht dabei die "EDU"-Variante, welche für ca. 60,- € zu haben ist. Um auch löschen und programmieren zu können benötigt man spezielle Lizenzen, welche z.B. in der "PLUS"-Version für um die 800,- € enthalten sind. Die Hardware ist exakt die gleiche, es sind nur zusätzliche Lizenzschlüssel.+In der recht umfangreichen Liste der unterstützten CPUs von J-Flash ist der OMAP5948 leider nicht enthaltenDieser Chip wurde speziell für Bosch hergestellt und es existieren keine öffentlich verfügbaren Datenblätter darüberEr basiert jedoch auf dem OMAP5912 und dieser enthält eine ARM926EJ-S CPUwelche wiederum von J-Flash unterstützt wird.
  
-:i: **TIPP**: Vom Segger J-Link werden zahlreiche, billige "China-Clones" angeboten. Keine Ahnung ob welche davon genauso gut funktionieren wie das Original. Bei dem relativ günstigen Preis des "EDU" würde ich jedoch immer ein Original vorziehen, da dies sicher qualitativ hochwertiger ist und man keine Probleme bekommt.+:!: **ACHTUNG**: Vom Segger J-Link werden zahlreiche, billige "China-Clones" angeboten. Keine Ahnung ob welche davon genauso gut funktionieren wie das Original. Bei dem relativ günstigen Preis des "EDU" würde ich jedoch immer ein Original vorziehen, da dies sicher qualitativ hochwertiger ist und man keine Probleme bekommt!
  
-Darüber hinaus benötigt man noch die Software "Segger J-Flash", welche im J-Link Commander Programmpaket enthalten ist und man direkt und kostenlos von der [[https://www.segger.com/downloads/jlink/|Segger Homepage]] herunterladen kann.+===== Benötigte Teile und Hilfsmittel =====
  
-Weiterhin benötigt man zum verbinden von Mainboard und J-Link Adapter noch ein paar, möglichst kurze Dupont-Wires (Anschlußvariante Male-Male). Kurz, damit man sich keine Störungen einfängt.+  - Segger J-Link Adapter 
 +  - Segger J-Flashwelches im Programmpaket "Segger J-Link Commander" enthalten ist und direkt und kostenlos von der [[https://www.segger.com/downloads/jlink/|Segger Homepage]] heruntergeladen werden kann 
 +  - Ein paar möglichst kurze (wg. Störeinstrahlungen) Dupont-Wires (Anschlußvariante Male-Male) um die Pins vom J-Link Adapter mit denen der orangenen Micromatch-Buchse am Mainboard zu verbinden
  
 +===== "Warnung vor dem Hunde" - Das Watchdog-Problem =====
  
 +{{:artikel:nav_common:watchdog-error.png?direct&200|}}
  
-===== Mittels Segger J-Link Interface =====+Es gibt zwei Überwachungsmechanismen im Gerät, die Softwareabstürze erkennen und dann einen Prozessorneustart auslösen sollen.  Beide stören aufgrund ihrer kurzen Timeout-Zeiten das auslesen/beschreiben des Flash-Speichers, zumindest wenn man mehr als einen Sektor bearbeiten will und müssen deaktiviert werden.
  
-Um den Inhalt des Flash nur auszulesengenügt die günstige, nicht-kommerzielle "EDU"-Version des Segger J-Link Interfaces:+Auf dem Mainboard steuert und überwacht ein NEC V850 Mikrocontroller (der sog. "Radioprozessor") sämtliche Komponentenauch den OMAP-Hauptprozessor. Hierzu erwartet der V850 vom OMAP sog. "Heartbeats". Bleiben diese für einen Zeitraum von mehr als 20 Sekunden aus, führt der V850 einen Reset beim OMAP durch. Die kann verhindert werden indem man über eine Drahtbrücke am Mainboard das laden der Firmware im Flash des V850 verhindert und somit die Watchdog-Funktion deaktiviert ist (Bosch nennt dies den "Tuareg-Mode").
  
 +Zusätzlich gibt es auf dem OMAP auch noch einen Watchdog-Timer. Dieser löst ebenfalls einen Reset aus, wenn er nicht binnen 12 Sekunden immer wieder zurückgestellt wird. Dies geschieht normalerweise per Software. Stoppt man jedoch die CPU um den Flash lesen/beschreiben zu können, bleiben die Rückstellbefehle aus und der Watchdog schlägt zu. Um dies zu verhinden muss man gleich nach dem anhalten der CPU die Watchdog-Timer umprogrammieren, sodass diese keine Funktion mehr haben.
  
 +//Zum Thema gibt es noch [[https://microhacker.denkdose.de/viewtopic.php?f=3&t=2&start=50#p134|Hintergrundinformationen im Forum]]//
  
 +===== Grundsätzliches Setup zum lesen und schreiben des Flash =====
  
-==== Schritt 1) JTAG-Interface mit dem Mainboard verbinden ====+==== Schritt 1.) JTAG-Interface mit dem Mainboard verbinden ====
  
-[[artikel:nav_common:jtag_connect_mainboard]]+Pins des JTAG-Interface mit dem Mainboard verbinden: [[artikel:nav_common:jtag_connect_mainboard]]
  
-==== Schritt 2) Den Watchdog vom Radioprozessor deaktivieren ====+==== Schritt 2.) Den "Tuareg"-Modus aktivieren ====
  
-Auf dem Mainboard steuert ein NEC V850 Mikrocontroller (der sog. "Radioprozessor"sämtliche Funktionen für den Radioempfang aber auch die Stromversorgung der Komponenten. Zur Überwachung empfängt er vom HMI-Prozessor heartbeats. Bleiben diese für eine längere Zeit aus (ca. 20 Sekundenführt er einen Reset auf den OMAP durch. Die Zeit ist zu kurz um den gesamten Flash-Speicher auszulesen, daher muss man diesen Mechanismus still legen.+Drahtbrücke zwischen **Pin 3 (GND)** und **Pin 13 (/SEL)** des [[:artikel:nav_common:mainboard_service_connectors#pinbelegung_der_service-buchse_x3806|rechten Serviceports (X3806)]] vom Mainboards einlöten (ich habe einen Dupont-Wire Male-Female durchgeschnitten und mit so eine Steckbare Verbindung gebaut).
  
-Hierzu muss eine **Drahtbrücke zwischen Pin 3 und Pin 13** des [[:artikel:nav_common:mainboard_service_connectors#pinbelegung_der_service-buchse_x3806|rechten Serviceports (X3806)]] 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_common:x3806_tuareg_select.jpg?400|}}
  
-==== Schritt 3) Einstellungen im J-Flash vornehmen ====+==== Schritt 3.) J-Flash konfigurieren ====
  
-In der recht umfangreichen Liste der unterstützten CPUs ist der OMAP5948 leider nicht enthaltenDieser 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 CPUwelche wiederum von J-Flash unterstützt wird :-)+Sämtliche Einstellungen habe ich in ein sog. "Project-File" (Datei mit der Endung *.jflash) gepacktwelches hier heruntergeladen werden kann:
  
-Hierzu unter "Options" den Menüpunkt "Project options..." auswählen und folgende Einstellungen vornehmen:+  * {{:artikel:nav_common:fx_omap5948.jflash|FX_OMAP5948.jflash}} 
 +  * {{:artikel:nav_common:nx_omap5948.jflash|NX_OMAP5948.jflash}} 
 +  * {{:artikel:nav_common:mca_omap5948.jflash|MCA_OMAP5948.jflash}}
  
-{{artikel:nav_fx:projectopts_general.jpg?direct|}}+//Im grunde sind das alles diesselben Dateien, einzig das beim FX eine andere Flash-Chip Variante zum Einsatz kommt (256N anstelle 512N, weil das FX nur einen 32 MB Flash-Chip drauf hat und das MCA und NX einen 64 MB).//
  
-=== JTAG-Einstellungen ===+In J-Flash dann einfach über "File" -> "Open project..." die Datei auswählen und einladen.
  
-{{artikel:nav_fx:projectopts_target-interface_maxspeed.jpg?direct|}}+===== Image vom Mainboard-Flash herunterladen =====
  
-=== CPU-Typ wählen ===+==== Schritt 1.) ====
  
-Einfach "ARM9" aus der CPU-Liste wählen:+{{artikel:nav_fx:flash-download_entiry-chip.jpg?direct&640|}}
  
-{{artikel:nav_nx:projectopts_mcu.jpg?direct|}}+{{artikel:nav_fx:flash-download_finished_256.jpg?direct&640|}}
  
-=== Flash Chip einstellen ===+{{artikel:nav_fx:flash-download_done_256.jpg?direct&640|}}
  
-Auf "Select flash device" klicken und aus der Liste den "Spansion S29GL256N(32MB) für das FX bzw. "Spansion S29GL512N(64MB) für das NX oder MCA wählen:+''Strg-S'' drücken, zu speichernden Bereich bestätigen und als Zielformat "*.binauswählenDie Länge wird automatisch anhand der Größe des Flash-Speichers ausgefüllt, hier einfach nur mit "OKbestätigen:
  
-{{artikel:nav_fx:projectopts_flash-256.jpg?direct|}}+{{artikel:nav_fx:flash-download_save2bin_256.jpg?direct&640|}}
  
-=== Weitere Einstellungen... ===+===== Mainboard-Flash mit neuem Image programmieren =====
  
-{{artikel:nav_fx:projectopts_production.jpg?direct|}}+==== Schritt 1.) Image Datei laden ====
  
-{{artikel:nav_fx:projectopts_performance.jpg?direct|}}+"File" -> "Open data file..." -> Datei wählen -> Ladestartadresse "0" belassen.
  
-=== Einstellungen sichern ===+==== Schritt 2.) Stromversorgung herstellen ====
  
-Am Ende erhält man eine Übersicht der Einstellungen im Hauptbildschirm:+Nun 12V am Stromanschluß des Radios einschalten. Die Stromaufnahme liegt aufgrund des Tuareg-Mode bei nur ca. 200 mA.
  
-{{artikel:nav_nx:setup_complete_256.jpg?direct&640|}}+==== Schritt 3.) Mainboard Flash löschen ====
  
-Diese speichert man sich am besten als "Projectfür spätere Versuche ab.+Bevor wir programmieren können, muss der Flash zunächst gelöscht werden (Merke: Beim Flash können Bits nur auf "0programmiert und durch löschen auf "1" gesetzt werden):
  
-==== Schritt 4Download starten ====+"Target" -> "Manual Programming" -> "Erase Chip (F4)"
  
-{{artikel:nav_fx:flash-download_entiry-chip.jpg?direct&640|}}+==== Schritt 4.) Geladenes Image ins Flash programmieren ====
  
-{{artikel:nav_fx:flash-download_finished_256.jpg?direct&640|}}+"Target" -> "Manual Programming" -> "Program (F5)"
  
-{{artikel:nav_fx:flash-download_done_256.jpg?direct&640|}} +==== Schritt 5.Stromversorgung trennen ====
- +
-==== Schritt 5) Flashdump abspeichern ==== +
- +
-''Strg-S'' drücken, zu speichernden Bereich bestätigen und als Zielformat "*.bin" auswählen: +
- +
-{{artikel:nav_fx:flash-download_save2bin_256.jpg?direct&640|}}+
  
-===== Weiterführende Informationen =====+===== Nach erfolgtem auslesen oder programmieren =====
  
-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]]+  Stromversorgung abschlaten 
 +  JTAG-Adapter trennen 
 +  Drahtbrücke für Tuareg-Mode entfernen 
 +  - Gerät testweise wieder an Stromversorgung anklemmen. Gerät muss starten (Stromverbrauch ohne Display ca. 650 mA).
  
  
  • artikel/nav_common/jtag_readout_mainboard_flash.txt
  • Zuletzt geändert: Wed. 19.05.2021 13:28
  • von go4it