Stránka 3 z 5

Napsal: 15 bře 2013, 09:08
od rnbw
Skusim - velmi som tomu neveril, ked su to len odpory bez budica, bol som rad, ze to funguje.

Napsal: 15 bře 2013, 17:41
od rnbw
Takze skutocne je ten jeden byte zmeneny, idem skumat zapis do flash.

Wiggler chodi bez problemov plnou rychlostou paralelneho portu - priblizne 500kHz (ked dam viac, tak sa to uz nezrychli), teraz to precita ten 512KB dump za 50 sekund :)

[edit]
Takze zapis nejde. Flash som nadefinoval takto:

Kód: Vybrat vše

set _FLASHNAME $_CHIPNAME.flash
flash bank $_FLASHNAME cfi 0 524288 4 4 arm
Jedine, co o nej viem, je tento text zo servisneho manualu: "mfl130_128Kx32". Skusal som nastavit aj sirku 2 B alebo 1 B, aj parameter jedec_probe, ale nejde to. Prikaz flash_probe 0 nedetekuje mfg. a device ID - namiesto toho nacitava prve byte z flash.

Neviem najst ziadnu dokumentaciu k nejakej podobnej flash, asi bude nutne skumat disassemblovany flashovaci kod...

Napsal: 15 bře 2013, 19:03
od Andrea
Umíš tam dát breakpoint? Jestli jo, dej ho na adresu 0xC3AC a spusť to od začátku a načti ten image z PC, až se to zastaví na tom breakpointu, budeš před instrukcema, co provádějí test toho čísla v [[[]]] patřícího ke starému kernelu. Pak přeskočíš na 0xC3BC a mělo by to vypsat "Valid image!" a pokračovat dál, jako by to číslo bylo OK. :)

Napsal: 15 bře 2013, 19:45
od rnbw
Break pointy idu nastavovat, ale nefunguju (ani SW ani HW) :( Na 0xc3ac to nezastavi. Skusal som aj na 0x0 a tiez to nezastavilo.

Zaujimave je, ze sa to tvari ako keby som mohol do flash zapisovat (normalne ako do RAM), ale po resete (staci aj "resume 0") to zmizne - ze by cache?

Napsal: 15 bře 2013, 19:56
od Andrea
Jo, to bude cache. To je lumpárna. Tak až se to zacyklí po té hlášce "Reset and Download Again", tak to stopni a dej resume od 0xC8F0.

Napsal: 15 bře 2013, 20:21
od rnbw
No tak som skoncil :( Zamrzlo to. Tak som dal halt a pozrel do flash, su tam same 0xFF. Zatial som to nevypinal, teraz by mal byt povoleny zapis do flash, tak skusim nejake bezne prikazy na zapis.

Kód: Vybrat vše

[[[[[ Internal Flash Writing : BASE : 0x00000000]]]]]
start_addr 0x00000000, end_addr = 0x00080000
stat_sector 0x00000000, end_sector 0x00000200
image_start_addr = 0x0270000C

 IFlashMemChipErase START!!!

Napsal: 15 bře 2013, 20:29
od rnbw
Prave som si uvedomil, co sa stalo. Spustil som flashovaci program z flash - a on sa vymazal... On musi byt niekde v RAM nakopirovany a bezat odtial. Takze teraz dumpujem RAM.

Napsal: 15 bře 2013, 20:35
od Andrea
Nojo sakra, já jsem blbá, vždyť ten kód nemůže běžet z FLASH, když se maže. Musí bejt někde v paměti kopie.
Nevíš, na jaké adrese to bylo zacyklené než jsi dal to resume?
Minimálně tam je na 0x2700000 ten nový bin a v něm je ta flashovací rutina taky.

Napsal: 15 bře 2013, 20:45
od rnbw
Bolo to zastavene na 0x26008EC - su tam skopirovane nejake veci a na 0x26008F0 je ten isty kod ako (bol) na 0xC8F0. Skusim ho odtial spustit.

Napsal: 15 bře 2013, 20:52
od Andrea
Jo, už to tam vidím, kopíruje se 64K z 0xC000 do 0x2600000. Tak to zkus spustit znova ale z 0x26008F0, snad to tentokrát vyjde . :pray:

Napsal: 15 bře 2013, 20:57
od rnbw
Nerobi to nic - dam "resume 0x26008f0" a nevypise to nic na konzolu. Ked dam "halt", tak vidim, ze procesor bludi niekde v tej prazdnej flash (PC=0x994).

Napsal: 15 bře 2013, 21:00
od Andrea
Sakryš, jestli došlo k nějaké výjimce, tak teď tam na ně nejsou obsluhy, když je smazaná FLASH. To jsem ti to zavařila. :(

Edit: To když nefungujou breakpointy, tak to asi nepůjde ani krokovat. :(

Napsal: 15 bře 2013, 21:38
od Andrea
Tak já nevím co s tím. :( Na 0xC4AC je procedura pro zápis do FLASH, takže bude nejspíš na 0x26004AC. Ale ta určitě potřebuje nějaké vstupní prametry, minimálně v R0 se něco předává.

Napsal: 15 bře 2013, 22:02
od rnbw
Neda sa z tej procedury zistit, ci to funguje ako nejaka standardna flash - napr. na adresu 0x555 zapisat 0xAA, potom na 0x2AA zapisat 0x55, potom na 0x555 zapisat 0xA0 (prikaz PROGRAM) a nasledne jeden byte dat?

Ale kedze to ma byt 32-bitova flash, tak to nebude asi take jednoduche. Navyse sa to kvoli tej cache velmi zle testuje.

Napsal: 15 bře 2013, 22:13
od Andrea
Když ono je toho kódu moc a každou chvíli to volá nějakou proceduru. Zatím se mi podařilo identifikovat jen strcpy(), strcmp(), memcpy(), sprintf(). Ta flashovaci procedura taky pořád něco volá a já nevím, co to je. :(

Co zkusit pustit celý ten downloader znovu od 0x2600000? On se zase (možná) zacyklí na 0x26008EC a pak dát resume od 0x26008F0.

Edit: To je blbost, dyť to kontroluje i ten původní obsah a ten tam teď neni. :(