Forum: Mikrocontroller und Digitale Elektronik Internes Flash defekt? (LPC2194)


von busman (Gast)


Lesenswert?

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!

von busman (Gast)


Lesenswert?

Ergänzend die Abschnitte noch als 32-Bit werte (sieht auch lustig aus)
1
Bad:
2
0x7ffff4e0: 00000000 3fffbf8c 00000000 000090a3 5d1ba301 449f005b 0e0b0803 00111714
3
0x7ffff500: 00000000 3fffbf8c 00000000 000090a3 fef1f7ff f7ffe7f6 e7f3fe64 fe1ef7ff
4
0x7ffff520: 00000000 3fffbf8c 00000000 000090a3 2001e7e8 e7e56008 7fffe050 7fffe0b0
5
0x7ffff540: 00000000 3fffbf8c 00000000 000090a3 7fffe054 3fff8000 7fffe064 7fffe060
6
0x7ffff560: 00000000 3fffbf8c 00000000 000090a3 68e0b580 28002100 60e1d003 bc08bc80
7
0x7ffff580: 00000000 3fffbf8c 00000000 000090a3 2029e7f4 20005501 49bbe7f0 47706061
8
0x7ffff5a0: 00000000 3fffbf8c 00000000 000090a3 f891f000 bc08bc80 7da04718 d20e280e
9
...
10
11
Good:
12
0x7ffff4e0: 4718bc08 6804b510 3c322200 d2202c07 5d1ba301 449f005b 0e0b0803 00111714
13
0x7ffff500: ffddf7ff bc08bc10 f7ff4718 e7f9ff52 fef1f7ff f7ffe7f6 e7f3fe64 fe1ef7ff
14
0x7ffff520: 4810e7f0 e001600a 600a480f 60486800 2001e7e8 e7e56008 7fffe050 7fffe0b0
15
0x7ffff540: 7fffe130 7fffe04c 7ffffec0 7fffe058 7fffe054 3fff8000 7fffe064 7fffe060
16
0x7ffff560: 7fffe05c 7fffe040 7fffe044 477060a0 68e0b580 28002100 60e1d003 bc08bc80
17
0x7ffff580: 68a04718 d0042800 60a16060 f9aef000 2029e7f4 20005501 49bbe7f0 47706061
18
0x7ffff5a0: 60a048ba b5804770 7de06160 d0042800 f891f000 bc08bc80 7da04718 d20e280e
19
...

Dabei fällt mir gerade auf dass immer 128 Bit defekt sind, was exakt der 
Anzahl Bits entspricht über die der ECC gerechnet wird...

von busman (Gast)


Lesenswert?

Hallo Forum,

Scheinbar ist das ein Problem mit [openOCD, Altera Bus Blaster, Eclipse, 
...] nicht mit dem Board. Fehler ist weg nachdem der Chip komplett über 
den Seriellen Bootloader geflasht wurde.

Thema erledigt!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.