[Tiptoi-hw] Frage bez. SPI/NAND Flash
Sven A. Huerlimann
sh at sighup.ch
So Dez 20 21:21:00 CET 2020
Hier noch die Knacknuss:
Nach dem Laden des Flash-Images (erste 256 bytes)
- 0x00a68 -> nand_boot
- 0x020c4 -> nand_load
- 0x02758 -> magic offset calulation -> Result: 0x38
- 0x01b74 -> nand_copy_buffer (kopieren vom buffer an die
Zieladdresse (0x08000000))
- Copy 8 bytes von Zieladdresse to stack
- Compare mit fixem String "ANYKANB2" (oder 1 oder 0, je nach BIOS
version)
sieht das Memory wie folgt aus:
// Zieladdresse:
(gdb) x/20w 0x08000000
0x8000000: 0xea000023 0xea000043 0xe1a0f00e 0xea00005a
0x8000010: 0xea000066 0xe1a00000 0xea00003f 0xea00003e
0x8000020: 0x4b594e41 0x32424e41 0x02021004 0x00300003
0x8000030: 0x000f5ad1 0x000f5c5c 0x00050005 0x9510dcad
0x8000040: 0x00400800 0x10001000 0x02400800 0x020b030f
// Der Stack (Teile davon)
(gdb) x/20w 0x0802eed0
0x802eed0: 0x00000000 0xea000043 0xe1a0f00e 0x00000000
0x802eee0: 0x08000004 0x00000000 0x00000002 0x00003200
0x802eef0: 0x00000000 0x0802ef00 0x0000008c 0x00000a74
0x802ef00: 0x00000000 0x00000000 0x00000000 0x00000000
0x802ef10: 0x00000000 0x00000000 0x00000000 0x00000000
// Der NAND Buffer
(gdb) x/20w 0x0802f800
0x802f800: 0xea000023 0xea000043 0xe1a0f00e 0xea00005a
0x802f810: 0xea000066 0xe1a00000 0xea00003f 0xea00003e
0x802f820: 0x4b594e41 0x32424e41 0x02021004 0x00300003
0x802f830: 0x000f5ad1 0x000f5c5c 0x00050005 0x9510dcad
0x802f840: 0x00400800 0x10001000 0x02400800 0x020b030f
-------------
Der magische String ANYKANB2 ist im Flash-Dump am Offset 0x20.
Die Überprufung auf diesen String geht über ein strcmp an der
Stack-Addresse 0x0802eed4 (wo offensichtlich eine Kopie des zweiten und
dritten Words aus dem Image liegen, null terminiert siehe 0x0802eedC ->
im code: 0x00b64)
Die einzige Mathe die mich bisher von Offset: 0x38 zu 0x20 bringt ist:
- 0x38 ist ein 16bit Word offset. -> ergibt 0x1C als 32bit Offset
- 0x1C ist 4 bytes Unterhalb von 0x20 -> Die Kopie auf dem Stack ist um
4 bytes vom Bufferanfang verschoben.
Aber damit macht wiedermal alles keinen Sinn und ich geh jetzt in die
Küche um mich da auf den Boden zu werfen und zu heulen :)
Vielleicht hat ja noch jemand eine Idee..
Gruss Sven
On 20.12.20 20:36, Sven A. Huerlimann via tiptoi-hw wrote:
> Salü allerseits
>
> Ich hab den aktuellen Stand der Flash-Emulation auf Github gepushed:
> https://github.com/rhesus-ltd/qemu-chomptech
>
> - Der Code ist ein Massaker und funktioniert nicht
> - Der emulierte Controller liefert immer die ersten 256 bytes des
> Flash-Images
> - EDC/ECC ist komplett taub (sagt eifach immer "Yes")
>
> Die positiven Punkte:
>
> - Grundgerüst für die Flash-Emulation steht
> - Ich komme bis zum "ANYKANB2" test (der fehlschlägt, weil String am
> falschen Ort)
> - Das Ding kommt durch die Github CI und müsste also auf einem standard
> Ubuntu bauen. (Bei mir bauts unter OSX)
>
> Sobald ich die Flash-Knacknuss gelöst habe, werde ich mal rigoros
> aufräumen und wohl die ganze History wegpushen. Im Moment ist es halt
> Hacky-Mode.
>
> Grüsse Sven
>
> P.S: Falls jemand mutig genug ist das ganze mal auszuprobieren:
> ./arm-softmmu/qemu-system-arm -device
> loader,file=roms/chomptech/BIOS.bin -drive
> if=none,format=raw,file=<nandflash.img> -machine chomptech -d unimp -S
> -gdb tcp::1234 --serial stdio
>
> On 13.12.20 18:32, Sven A. Huerlimann via tiptoi-hw wrote:
>> Hallo zusammen
>>
>> Ich arbeite an der Flash Emulation. Da sind ein paar Fragen aufgetaucht
>> wo ihr mir vielleicht weiterhelfen könnt.
>>
>> - Wenn die CPU nicht mittels GPIO-Pins in einen bestimmten Bootmode
>> (USB-Massstorage, UART, USB-Boot) geschickt wird kippt sie in folgenden
>> Pfad:
>> - Zuerst SPI Flash!! Boot (0x006c) unconditional
>> - Dann NAND Boot (0x0088) unconditional
>>
>> Meines Wissens hat das Produkt kein SPI-Flash? Überseh ich da wiedermal
>> was?
>>
>> @matthias: du hast doch das NAND mal ausgelesen. Gibt es da einen Dump
>> den ich als für Tests nutzen kann?
>>
>> Grüsse Sven
>>
>>
>>
>>
>> _______________________________________________
>> tiptoi-hw mailing list
>> tiptoi-hw at lists.nomeata.de
>> https://lists.nomeata.de/mailman/listinfo/tiptoi-hw
>
>
> _______________________________________________
> tiptoi-hw mailing list
> tiptoi-hw at lists.nomeata.de
> https://lists.nomeata.de/mailman/listinfo/tiptoi-hw
Mehr Informationen über die Mailingliste tiptoi-hw