Kirjoittaja PetriK » 05 Marras 2007, 08:29
ok,
Katsoin tuota EVO:n koodia ja se näyttää ihan koodilta. Muutamat ensimmäiset .long määrittelyt kertovat mihin hypätään erilaisissa keskeytyksissä (aivan kuten sofware ja hardware manuaaleissa kuvataan).
Sitten kun lähtee katsomaan ko muistiosoitteesta niin sieltä lähtee koodi nätisti liikkeelle...
Nyt täytyisi ymmärtää tuo osoitteen muodostuminen sekä erityisesti IO puoli. Kaikki IO pinnit ovat tässä samat kuin busassa, samoin pitäisi bootloader olla aikalailla samanlainen jossa pitäisi näkyä sarjaprotokollaa...
Tässä mallia miltä koodi näillä mun asetuksilla alkoi näyttämään. Eli resetin jälkeen siirtyy muistialueelle EB9 suorittamaan tällaista koodinpätkää - täytyy tunnustaa että on taas aivan uudennäköistä koodia, tästä ei ainakaan näin alkuun ymmärrä yhtään mitään. Esim jo pelkästään jmp @r0 ?
eB9:000098CC EntryAfterReset: ! CODE XREF: eB9:000098B8j
eB9:000098CC mov.l @(8,pc), r0 ! [000098D8] = unk_F0
eB9:000098CE ldc.l @r0+, sr
eB9:000098D0 mov.l @(8,pc), r0 ! [000098DC] = loc_98A4
eB9:000098D2 jmp @r0 ! loc_98A4
eB9:000098D4 nop
eB9:000098A4 loc_98A4: ! CODE XREF: eB9:000098D2j
eB9:000098A4 ! DATA XREF: eB9:off_98DCo
eB9:000098A4 mov.l @(0x14,pc), r15 ! [000098BC] = (dword_FFFF8800+0x1300)
eB9:000098A6 mov.l @(0x18,pc), r0
eB9:000098A8 mov.l @(0x18,pc), r1 ! [000098C4] = (dword_FFFF8800+0x13A0)
eB9:000098AA mov.l r1, @r0
eB9:000098AC mov #0, r0
eB9:000098AE ldc r0, vbr
eB9:000098B0 ldc r0, gbr
eB9:000098B2 mov.l @(0x14,pc), r0 ! [000098C8] = sub_E8BC
eB9:000098B4 jsr @r0 ! sub_E8BC
eB9:000098B6 nop
eB9:000098B8 bra EntryAfterReset
eB9:000098BA nop
[color=#000000]ok,
Katsoin tuota EVO:n koodia ja se näyttää ihan koodilta. Muutamat ensimmäiset .long määrittelyt kertovat mihin hypätään erilaisissa keskeytyksissä (aivan kuten sofware ja hardware manuaaleissa kuvataan).
Sitten kun lähtee katsomaan ko muistiosoitteesta niin sieltä lähtee koodi nätisti liikkeelle...
Nyt täytyisi ymmärtää tuo osoitteen muodostuminen sekä erityisesti IO puoli. Kaikki IO pinnit ovat tässä samat kuin busassa, samoin pitäisi bootloader olla aikalailla samanlainen jossa pitäisi näkyä sarjaprotokollaa...
Tässä mallia miltä koodi näillä mun asetuksilla alkoi näyttämään. Eli resetin jälkeen siirtyy muistialueelle EB9 suorittamaan tällaista koodinpätkää - täytyy tunnustaa että on taas aivan uudennäköistä koodia, tästä ei ainakaan näin alkuun ymmärrä yhtään mitään. Esim jo pelkästään jmp @r0 ?
eB9:000098CC EntryAfterReset: ! CODE XREF: eB9:000098B8j
eB9:000098CC mov.l @(8,pc), r0 ! [000098D8] = unk_F0
eB9:000098CE ldc.l @r0+, sr
eB9:000098D0 mov.l @(8,pc), r0 ! [000098DC] = loc_98A4
eB9:000098D2 jmp @r0 ! loc_98A4
eB9:000098D4 nop
eB9:000098A4 loc_98A4: ! CODE XREF: eB9:000098D2j
eB9:000098A4 ! DATA XREF: eB9:off_98DCo
eB9:000098A4 mov.l @(0x14,pc), r15 ! [000098BC] = (dword_FFFF8800+0x1300)
eB9:000098A6 mov.l @(0x18,pc), r0
eB9:000098A8 mov.l @(0x18,pc), r1 ! [000098C4] = (dword_FFFF8800+0x13A0)
eB9:000098AA mov.l r1, @r0
eB9:000098AC mov #0, r0
eB9:000098AE ldc r0, vbr
eB9:000098B0 ldc r0, gbr
eB9:000098B2 mov.l @(0x14,pc), r0 ! [000098C8] = sub_E8BC
eB9:000098B4 jsr @r0 ! sub_E8BC
eB9:000098B6 nop
eB9:000098B8 bra EntryAfterReset
eB9:000098BA nop[/color]