Hallo! Ich versuche gerade an die Firmware einen PAM-Moduls zu kommen um
diese zu disassemblieren.
Über die Modul-Updateseite von Ford konnte ich das beigefügte ZIP
herunterladen in welchem die Firmware für das Modul enthalten sein
könnte. Es könnte aber eben auch nur ein Update enthalten sein.
Interessant ist das dieses Update (VBF-Format) einen Header enthält in
dem folgendest zu lesen ist:
1 | erase = { { 0x00388000, 0x0000343a },
|
2 | { 0x00398000, 0x00000c81 },
|
3 | { 0x003a8000, 0x00000e4c },
|
4 | { 0x003b8000, 0x00004000 },
|
5 | { 0x003c8000, 0x00003658 },
|
6 | { 0x003d8000, 0x00002d6b },
|
7 | { 0x003e8000, 0x00000140 },
|
8 | { 0x003e8a00, 0x000005f6 },
|
9 | { 0x003e9200, 0x0000080e },
|
10 | { 0x003ea000, 0x00000efa },
|
11 | { 0x003f8000, 0x00001f92 }
|
12 | };
|
Dabei wird der Zielbereich ab der angegebenen Startadresse für die
gegebene Länge jeweils gelöscht und mit dem Inhalt bespielt der dem
Header im Binärteil des VBF-Files folgt.
Jetzt ist in dem Modul aber nur ein MC9S12DG128 verbaut, kein externes
EEPROM oder Flash. Der MC hat nur 128 kb Flash und 2 kb EEPROM. Zudem
ist die CPU 16 Bit, also machen die Adressen eigentlich nur Sinn wenn da
mit Paging gearbeitet wird.
Wie kann man eine gepagete Firmware denn debuggen? Was verursacht das
umladen? Man hat da ja dann immer wieder die gleichen Adressräume, nur
eben mit anderem Code.
Der MC9S12 hat kein JTAG sondern BDM, aber ich wette der Hersteller hat
den Chip gegen auslesen dadurch gesichert und ich will jetzt erstmal
nicht riskieren den Chip durch einen Leseversuch zu bricken, so wie es
mir mal mit dem MAC7116 ergangen ist... zum Glück konnte ich den
wiederherstellen, auch wenns ein Jahr gedauert hat.