Indego am Schreibtisch auslesen

Diskutiere Indego am Schreibtisch auslesen im Indego 800 /1000 / 1200 / 1300 / Connect Forum im Bereich 1. Generation; Ich wünsche mir dass wir hier zusammen herausfinden wie wir die Indego-Firmware auslesen und ihn ggf. über seine Schnittstellen steuern können...
  • Indego am Schreibtisch auslesen Beitrag #1
A

AlexanderG

Gewerblich
Dabei seit
07.08.2016
Beiträge
126
Likes
3
Ich wünsche mir dass wir hier zusammen herausfinden wie wir die Indego-Firmware auslesen und ihn ggf. über seine Schnittstellen steuern können (JTAG, BDM, Serial). Bitte nur nachmachen/mitmachen wenn ihr schon mal SMD gelötet habt :) (und einen Oszi solltet ihr auch haben)...
indego_desk1.jpg
Ich mache mal einen Anfang und beschreibe wie man das Board am Schreibtisch betreibt. Es reicht ein 30V Netzteil. Angeschlossen wird an der linken, etwas längeren Buchse (auf dem Bild) an den beiden länglichen Kontakten:
indego_desk2.jpg
Wenn ihr wie ich direkt anlöten wollt, stellt bitte vorher mit 100 KOhm Widerstand zwischen den beiden Kontakten sicher, dass alle Elkos entladen sind! (Sonst Kurzschlussgefahr beim Anlöten).
An die rechte Buchse (ebenfalls die länglichen Kontakte) kommt über einen Schalter ebenfalls das Netzteil. Das ist für die Ladeschaltung bzw. eine einsekündige Verbindung mit 30V löst bereits das Einschalten des gesamten Boards aus.

Unten rechts sitzt ein MAX232 (Pin 1 schaut nach unten). Dort könnte man sich die serielle Schnittstelle (T1in, R1in) abgreifen, z.B. an TP266 und R853.

Oben rechts sitzt der Steckverbinder zum GSM-Modul. Dort sitzt scheinbar ebenfalls eine serielle Schnittstelle (Pin 3 und Pin 4 von unten links) abzugreifen an C740 und C741).

Hat jemand schon Kontakte für JTAG gefunden? :) An der MCU (MPC5604P) müssten das die Pins 86 bis 89 sein.
mpc5604p.jpg
 
  • Indego am Schreibtisch auslesen Beitrag #2
A

AlexanderG

Gewerblich
Dabei seit
07.08.2016
Beiträge
126
Likes
3
JTAG gefunden :) - Sitzt am 14 poligen Steckpfosten (neben SD-Leser) und Pin1 liegt weiter zur Board-Mitte hin

Code:
[FONT=courier new]TDI--7 8
TDO--6 9
TCK--5 10
     4 11
     3 12
VDD--2 13--TMS
GND--1 14[/FONT]
 
  • Indego am Schreibtisch auslesen Beitrag #3
A

AlexanderG

Gewerblich
Dabei seit
07.08.2016
Beiträge
126
Likes
3
  • Indego am Schreibtisch auslesen Beitrag #4
F

FireBird

Dabei seit
06.08.2015
Beiträge
50
Likes
15
JTAG definiert die Pins und die State Machine. Man kann also ohne Wissen ein paar simple Dinge machen (z.B. die Chip ID auslesen), aber die interessanten Sachen, nämlich wie die JTAG-Register im Chip verdrahtet sind und man somit an Pins, Flash usw. kommt, muss der Hersteller verraten.
 
  • Indego am Schreibtisch auslesen Beitrag #5
A

AlexanderG

Gewerblich
Dabei seit
07.08.2016
Beiträge
126
Likes
3
Danke Dir - dann kommt man ohne die richtigen Werkzeuge jetzt nicht weiter. Gibt es wohl JTAG-Programmer (open/closed Source) die den Freescale Chip SPC5604PEVLQ6/MPC5604P "kennen"? Wenn ich das richtig verstanden habe braucht man ein .BSDL-Datei für den Chip falls der JTAG-Programmer den Chip nicht unterstützt: BSDL Library (8000+ JTAG Models)

In "AN4365, Qorivva MPC56xx" steht auch noch einiges zum JTAG/Nexus-Protokoll: http://www.nxp.com/files/32bit/doc/app_note/AN4365.pdf
 
  • Indego am Schreibtisch auslesen Beitrag #6
F

FireBird

Dabei seit
06.08.2015
Beiträge
50
Likes
15
Man müsste einmal die ID auslesen. Eine BSDL für einen MPC5604_B_ gibt es hier.
 
  • Indego am Schreibtisch auslesen Beitrag #7
A

AlexanderG

Gewerblich
Dabei seit
07.08.2016
Beiträge
126
Likes
3
Der MPC5604P meldet sich unter ID: 0x5ae2101d [0101 1010111000100001 00000001110 1], also Produkt-Version 5, Produkt-Code AE21, Hersteller 00000001110 (Freescale) - ID ausgelesen mit einem Arduino Pro Mini 3.3v und jtagbang.ino (KHJK - The Arduino as a simple JTAG adapter)

Jetzt komme ich wohl wieder nicht weiter :)
 
  • Indego am Schreibtisch auslesen Beitrag #8
F

FireBird

Dabei seit
06.08.2015
Beiträge
50
Likes
15
Gut möglich, dass Du weiterkommst, wenn Du einen tausendseitigen NDA unterschreibst. :hand:
 
  • Indego am Schreibtisch auslesen Beitrag #9
A

AlexanderG

Gewerblich
Dabei seit
07.08.2016
Beiträge
126
Likes
3
Ich habe beim Posten des Themas hier nicht gewusst, dass JTAG von Chip-Herstellern so geheim gehalten wird :)

Nachtrag: jetzt habe ich doch noch was gefunden: pictus_top_wrapper (NXP (Freescale/Motorola)) - BSDL Library (8000+ JTAG Models)
Bis auf die 4-Bit Versionsnummer ist alles (16-Bit Part Number, 11-Bit Hersteller) gleich - Allerdings ist das für die LQFP 100 Pins Variante - wir brauchen die 144 LQFP ...
 
  • Indego am Schreibtisch auslesen Beitrag #10
F

FireBird

Dabei seit
06.08.2015
Beiträge
50
Likes
15
Treffer. :) Ca. auf halber Höhe gibt es auch die BSDL für den 144-Pin-QFP.
 
  • Indego am Schreibtisch auslesen Beitrag #11
A

AlexanderG

Gewerblich
Dabei seit
07.08.2016
Beiträge
126
Likes
3
Klasse :) (seltsamerweise ist die ID-Version in dieser Datei falsch) - Allerdings nützt uns das wohl alles nichts. Alles was wir damit machen können ist Pins schalten und ID auslesen. Der (Flash) Speicher-Zugriff findet im "Nexus" Protokoll statt welches über den JTAG ansprechbar ist. Das ist alles haarklein im CPU-Datenblatt beschrieben. Fertiger Code oder Tools wären wohl hilfreich :) . Meine Idee wäre ansonsten Speicherzugriff in den Arduino-Code oben einbauen und dann Daten z.B. direkt auf SD-Karte schreiben mit dem Arduino - etwas fertiges würde die Sache wohl abkürzen :) (bis ich aus dem Datenblatt extrahiert habe was ich für einen Speicherzugriff machen muss)
http://www.nxp.com/files/32bit/doc/ref_manual/e200z0RM.pdf
 
  • Indego am Schreibtisch auslesen Beitrag #12
R

Rezzo

Dabei seit
29.04.2014
Beiträge
118
Likes
1
Ich habe beim Posten des Themas hier nicht gewusst, dass JTAG von Chip-Herstellern so geheim gehalten wird
Die Tool Hersteller wollen auch leben.
Der Lauterbach Debugger unterstützt den MPC5604P. Damit kann man mit ein paar Mausklicks das Flash auslesen/programmieren oder durch den Code steppen ....
Die Software (Trace32) enthält auch einen Simulator, mit dem man am PC (ohne Target HW) ein paar Trockenübungen machen kann, sofern man die Binaries hat.

Trace32.jpg

Den Simulator könntest Du evtl. kostenlos bei LB bekommen. Um Binärcode zu patchen, ein ideales Werkzeug.
Hast Du mal geschaut was an der RS232 rauskommt? Ich bin mir ziemlich sicher, dass über dieses Interface auch die Entwickler auf das Indego OS zugreifen, wobei der Login vermutlich PW geschützt ist.
 
  • Indego am Schreibtisch auslesen Beitrag #13
A

AlexanderG

Gewerblich
Dabei seit
07.08.2016
Beiträge
126
Likes
3
4-stellige Beträge wären mir ehrlich gesagt zu kostspielig - insbs. weil ich (noch) nicht absehen kann wie weit uns das Binary weiterhelfen wird. An den seriellen Ausgängen ist Funkstille, auf Eingaben am Eingang auch keine Reaktion.
 
  • Indego am Schreibtisch auslesen Beitrag #15
A

AlexanderG

Gewerblich
Dabei seit
07.08.2016
Beiträge
126
Likes
3
Hier noch die vollständige/korrigierte Belegung der JTAG/Nexus-Pins:
Code:
TDI--7 8 --GND
  TDO--6 9 --GND
  TCK--5 10--GND
 EVTI--4 11--NC
RESET--3 12--TMS
  VDD--2 13--GND
   NC--1 14--JCOMP
 
  • Indego am Schreibtisch auslesen Beitrag #16
A

AlexanderG

Gewerblich
Dabei seit
07.08.2016
Beiträge
126
Likes
3
Hier noch Code zum Aktivieren des JTAG Debug Bits (DBCR0[EDM]), welches aktiviert werden müsste um Flash-Speicher auslesen zu können. Leider lässt sich dieses Debug-Bit nicht aktivieren. Ein Grund könnte sein dass zuvor der Zugang für JTAG über ein Passwort freigeschaltet werden muss. Falls dem so wäre kommt man hier nicht mehr weiter.

Den Anhang jtagduino.zip betrachten

"Enabling debug of a censored device: When a device is in a censored state, the debug port (JTAG/Nexus) is disabled and only JTAG BSDL commands can be used. Access to the Nexus/JTAG clients on a censored device requires inputting the proper password into the JTAG Censorship Control Register during reset."
 
  • Indego am Schreibtisch auslesen Beitrag #17
R

Rezzo

Dabei seit
29.04.2014
Beiträge
118
Likes
1
Mir erschließt sich noch nicht so ganz, was Du vor hast.
Um das Flash auszulesen, gibt es prinzipiell 2 Möglichkeiten.

1. Boundary Scan (JTAG):
Prinzip: Bei BSC wird der Chip Core abgekoppelt und stattdessen vor jedem I/O Pin eine BSC Zelle aktiviert.
D.h. der Chip (CPU/FPGA/SRAM....) ist nur noch ein riesiges Schieberegister, über das die Peripherie erreicht werden kann.
Tools gibts es z.B. v. Fa. Göpel.
Das Ganze funktioniert natürlich nur für BSC fähige Bausteine.
Für jeden BSC fähigen Chip gibt es ein BSDL File, das beschreibt, für welchen Pin welche BSC Zelle zur Verfügung steht (Da gibt es versch. Varianten).
Der Vollständigkeit wegen müsste noch erwähnt werden, dass es außer der reinen Bitschieberei mittlerweile erweiterte Techniken
wie VarioTap oder ChipVorx gibt, bei denen der CPU/FPGA Core in das Procedere mit eingebunden wird.

2. Debugging
Dazu gibt es versch. Interfaces JTAG/BDM/SWD/Nexus
Prinzip: Die CPU wird in den Debug Mode gesetzt und lässt sich dann über das Debug Interface steuern.
Die CPU wird i.d.R direkt nach dem Reset in den Debug Mode gesetzt. Dazu ist ein striktes Timing einzuhalten.
D.h. Der Debugger benötigt Zugriff auf die CPU Resets und scannt u.U. auch den ResetOut.
Dokus findet man z.B. auf der Lauterbach Seite.
http://www2.lauterbach.com/pdf/debugger_mpc5500.pdf
 
  • Indego am Schreibtisch auslesen Beitrag #18
A

AlexanderG

Gewerblich
Dabei seit
07.08.2016
Beiträge
126
Likes
3
Der Flash-Speicher befindet sich mit im CPU-Chip und wird über CPU-Register angesprochen. Also würde dann Variante 1 zum Auslesen wegfallen, richtig?

Über Variante 2 bekäme man Zugriff auf die CPU-Register. Versucht habe ich daher den Debug-Mode zu setzen und bin dabei nach dem Datenblatt der CPU vorgegangen (ist wirklich einfach wenn man das Grundprinzip der JTAG-States verstanden hat). Der Debug-Mode lässt sich aber nicht aktivieren wenn das JTAG-Debug Interface mit einem 64-Bit Passwort geschützt wird (dies ist wohl bei den neueren CPU's ein Feature um einen unberechtigten Zugriff zu verhindern - Kanntest Du das? War mir nicht bekannt).

http://cache.nxp.com/files/32bit/do...ORMAT=pdf&WT_ASSET=Documentation&fileExt=.pdf

Abschnitt 34.7
Censorship can be enabled to protect the contents of the flash memory from being read or modified. In order to achieve this, the censorship mechanism controls access to the: JTAG / Nexus debug interface

Aber vielleicht gibt es ja noch etwas was ich übersehen haben - Hättest Du Zugriff auf den Lauterbach JTAG-Programmer? Könnte ich Dir die Indego Steuer-Platine zuschicken für einen Binary Auslese-Test?
 
  • Indego am Schreibtisch auslesen Beitrag #19
A

AlexanderG

Gewerblich
Dabei seit
07.08.2016
Beiträge
126
Likes
3
Habe etwas neues gefunden: der Mikrocontroller in der Mitte des Boards (MPC5604P) scheint nicht für das Display und die Menüführung zuständig zu sein - wenn man ihn über seine RESET-Leitung (über den JTAG-Stecker) neu startet, bleibt das Menü weiterhin bestehen und nach ein paar Sekunden kommt "Schwerer Kommunikationsfehler - Mäher wird neu gestartet". Ich schlussfolgere daraus, dass der zweite Mikrocontroller (AT91SAM9G10) für Display und Menüführung zuständig ist und der MCP5604P die Roboter-Ablaufsteuerung durchführt. Leider ist der AT91SAM9G10 ein BGA so dass man da keine Leitungen verfolgen kann.
 
  • Indego am Schreibtisch auslesen Beitrag #20
R

Rezzo

Dabei seit
29.04.2014
Beiträge
118
Likes
1
Vermutlich hängt auch das ser. Interface am Atmel.
Beim 5604 habe ich jedenfalls nichts gefunden, was an einem MAX232 Pegelwandler enden könnte.

Zum Debugging:
Das PPC Debugging scheitert leider an der Lizenz.
Um den 5604 zu debuggen benötigt man die Software Lizenz LA-3736
( Bei Lauterbach kauft man Lizenzen pro Prozessorfamilie)

Für den Atmel würde es besser aussehen. Das müsste mit dem ICE Debugger + dem Atmel Studio funktionieren.
 
Thema:

Indego am Schreibtisch auslesen

Beiträge
37
Erstellt
2016
Aktualisiert

Top Poster

  • A

    AlexanderG

    Beiträge: 15
  • F

    FireBird

    Beiträge: 9
  • R

    Rezzo

    Beiträge: 7
  • U

    Undertaker

    Beiträge: 2

Häufigste Beiträge

Beliebte Beiträge

F
FireBird
Ich habe so viel herausgefunden um das GSM-Modul zu entfernen und den Indy via selbstgebastelter WLAN-Schaltung bzw. Server-App direkt in mein...
F
FireBird
Die Basteleien sind zwar nicht veröffentlicht, aber auch kein Geheimnis. Das Projekt war als Test gedacht und lässt sich daher nicht so einfach...
F
FireBird
Anbei die gewünschten Infos (Schaltplan, Kommunikation zwischen GSM- und Mainboard, ESP-Firmware). Der ESP fragt laufend den Status des...

Team-Mitglieder online

  • T

    TheRealKirby

Oben