Nel cell c'è una partizione chiamata PMT che contiene un (diciamo) file da 4Kb, che è in pratica la versione binaria dello scatter.txt ... in duplice copia!
Dal cell possiamo estrarre il PMT tramite shell in questo modo
dd if=/dev/pmt of=/sdcard/PMT bs=512 count=8
... adesso nella sdcard avremo un bel file PMT da 4Kb ...
Guardiamolo con un editor esadecimale
- {L_CODE}: {L_SELECT_ALL_CODE}
00000000 31 76 54 50 50 52 45 4c 4f 41 44 45 52 00 00 00 |1vTPPRELOADER...|
00000010 c8 0c 00 00 09 00 00 00 0f 00 00 00 94 b0 66 00 |..............f.|
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000030 eb a2 01 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000040 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 |................|
00000050 44 53 50 5f 42 4c 00 00 05 00 00 00 c8 0c 00 00 |DSP_BL..........|
00000060 06 00 00 00 0f 00 00 00 94 b0 66 00 00 00 04 00 |..........f.....|
00000070 00 00 00 00 00 00 04 00 00 00 00 00 23 60 04 00 |............#`..|
00000080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000090 00 00 5c 00 00 00 04 00 00 00 00 00 4d 42 52 00 |..\.........MBR.|
etc.etc.
000007f0 00 00 00 00 00 00 00 00 01 03 01 01 31 76 54 50 |............1vTP|
00000800 31 54 50 4d 50 52 45 4c 4f 41 44 45 52 00 00 00 |1TPMPRELOADER...|
00000810 c8 0c 00 00 09 00 00 00 0f 00 00 00 94 b0 66 00 |..............f.|
00000820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000830 eb a2 01 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000840 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 |................|
00000850 44 53 50 5f 42 4c 00 00 05 00 00 00 c8 0c 00 00 |DSP_BL..........|
00000860 06 00 00 00 0f 00 00 00 94 b0 66 00 00 00 04 00 |..........f.....|
00000870 00 00 00 00 00 00 04 00 00 00 00 00 23 60 04 00 |............#`..|
00000880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000890 00 00 5c 00 00 00 04 00 00 00 00 00 4d 42 52 00 |..\.........MBR.|
etc.etc.
00000ff0 00 00 00 00 00 00 00 00 01 03 00 01 31 54 50 4d |............1TPM|
In pratica è ripetuto due volte il medesimo blocco, a parte i marker iniziali
e finali (nella prima copia leggiamo 1VTP e nella seconda 1TPM).
Il blocco è costituito da record di 76byte (12 CHAR + 16 INT, e ricordiamoci che
siamo sempre in notazione little-endian), quindi al massimo nella PMT possono
essere definite 26 partizioni.
Prendiamo il record riguardante il recovery:
- {L_CODE}: {L_SELECT_ALL_CODE}
000002b0 52 45 43 4f 56 45 52 59 00 00 00 00 c8 0c 00 00 |RECOVERY........|
000002c0 08 00 00 00 0f 00 00 00 94 b0 66 00 00 80 58 01 |..........f...X.|
000002d0 00 00 00 00 00 80 58 01 00 00 00 00 68 ad b2 01 |......X.....h...|
000002e0 00 00 00 00 00 00 00 00 00 00 00 00 68 ad b2 01 |............h...|
000002f0 00 00 60 00 00 80 58 01 00 00 00 00 53 45 43 5f |..`...X.....SEC_|
che nello scatter è scritto in questo modo:
- {L_CODE}: {L_SELECT_ALL_CODE}
RECOVERY 0x1588000 { }
la struttura del record come ho già anticipato è questa
- {L_CODE}: {L_SELECT_ALL_CODE}
char nome[12]
int field[16]
quindi ricaviamo
- {L_CODE}: {L_SELECT_ALL_CODE}
name=[b]RECOVERY[/b]
field[]=0xcc8, 0x8, 0xf, 0x66b094, 0x1588000, 0x0, 0x1588000, 0x0, 0x1b2ad68, 0x0, 0x0, 0x0, 0x1b2ad68, 0x600000, [b]0x1588000[/b], 0x0
Ci sono molti valori ripetuti, ma non mi vorrei soffermare sul significato dei singoli campi, guardate invece il penultimo valore ...
Quindi se per ogni record mettiamo insieme la stringa iniziale (di 12 byte) e il penultimo valore (preso come intero 32bit) otteniamo esattamente lo scatter.txt!
Per es. dal mio PMT esce fuori questo
- {L_CODE}: {L_SELECT_ALL_CODE}
PRELOADER 00000000 {
}
DSP_BL 00040000 {
}
MBR 00600000 {
}
EBR1 00604000 {
}
__NODL_PMT 00608000 {
}
__NODL_NVRAM 00a08000 {
}
__NODL_SECCFG 00f08000 {
}
UBOOT 00f28000 {
}
BOOTIMG 00f88000 {
}
RECOVERY 01588000 {
}
SEC_RO 01b88000 {
}
__NODL_MISC 02188000 {
}
LOGO 021e8000 {
}
__NODL_EXPDB 024e8000 {
}
ANDROID 026e8000 {
}
CACHE 1b6e8000 {
}
USRDATA 346e8000 {
}
FAT e09e8000 {
}
Quindi ... adesso non voglio più leggere "mi manca lo scatter.txt" ...
ps:
Gli altri valori interi corrispondono ad inizio/fine/max di ogni partizione, quindi sarebbe possibile scrivere un piccolo tool da eseguire nel cell che esca fuori l'intera struttura per il reflash, ovvero lo scatter.txt e tutti i files img/bin ... compreso quelli __NODL_???? (tipo NVRAM) ;D ... appena ho 2min ...


