Hallo Forum!
Ich habe aktuell ein seltsames Problem, mir ist nicht klar wie es dazu
kommt und wie ich es abstellen kann.
Ausgangspunkt: LPC2194/01 wird über Eclipse mit GNU-ARM (Yargato) und
openOCD geflasht & debuggt. Soweit alles gut, hat tagelang wunderbar
funktioniert.
Seit gestern ist geht das nun nicht mehr (mit diesem einen Controller,
andere Typgleiche funktionieren). OpenOCD meldet Fehler beim flashen,
bzw. beim Aufruf des IAP Kommandos Prepare_Sector (50dec) - Es werden
beliebige Fehlercodes zurückgegeben. Da dieses Verhalten doch etwas
seltsam ist, habe ich manuell über openOCD dasselbe versucht. Dabei ist
mir folgendes aufgefallen:
Die Adresse an der die IAP Routine gemappt ist (0x7FFFFFF1) scheint noch
normalen Code zu enthalten:
1 | > arm disassemble 0x7ffffff1 5 thumb
|
2 | 0x7ffffff0 0xb580 PUSH {r7, r14}
|
3 | 0x7ffffff2 0xf7fffa77 BL 0x7ffff4e4
|
4 | 0x7ffffff6 0xbc80 POP {r7}
|
5 | 0x7ffffff8 0xbc08 POP {r3}
|
6 | 0x7ffffffa 0x4718 BX r3
|
Weiter an der Adresse 0x7ffff4e4 sieht es ganz andes aus:
Defekt ?
1 | > arm disassemble 0x7ffff4e4 10 thumb
|
2 | 0x7ffff4e4 0xbf8c ITT HI
|
3 | 0x7ffff4e6 0x3fff SUBS r7, #0xff
|
4 | 0x7ffff4e8 0x0000 LSLS r0, r0, #00
|
5 | 0x7ffff4ea 0x0000 LSLS r0, r0, #00
|
6 | 0x7ffff4ec 0x83bc STRH r4, [r7, #0x1c]
|
7 | 0x7ffff4ee 0x0000 LSLS r0, r0, #00
|
8 | 0x7ffff4f0 0xa301 ADD r3, PC, #0x4
|
9 | 0x7ffff4f2 0x5d1b LDRB r3, [r3, r4]
|
10 | 0x7ffff4f4 0x005b LSLS r3, r3, #0x01
|
11 | 0x7ffff4f6 0x449f ADD r15, r3
|
Hier der Block bei einem funktionierenden Controller:
1 | 0x7ffff4e4 0xb510 PUSH {r4, r14}
|
2 | 0x7ffff4e6 0x6804 LDR r4, [r0, #0]
|
3 | 0x7ffff4e8 0x2200 MOVS r2, #00
|
4 | 0x7ffff4ea 0x3c32 SUBS r4, #0x32
|
5 | 0x7ffff4ec 0x2c07 CMP r4, #0x07
|
6 | 0x7ffff4ee 0xd220 BCS 0x7ffff532
|
7 | 0x7ffff4f0 0xa301 ADD r3, PC, #0x4
|
8 | 0x7ffff4f2 0x5d1b LDRB r3, [r3, r4]
|
9 | 0x7ffff4f4 0x005b LSLS r3, r3, #0x01
|
10 | 0x7ffff4f6 0x449f ADD r15, r3
|
Was ist da passiert? Hat jemand eine Idee? Ich möchte vermeiden dass
sich das bei den restlichen Controllern wiederholt...
Danke!