LPC21xx: ARM state: FIQ

Gast #1197541
Lesenswert?
• ▲
▼
Hallo *,

weiß jemand von euch vllt, wie man "von außen" den ARM-state 
beeinflussen kann?

Ich hab folgendes Problem:
Ich hab ein kleines Testprogramm da, was einfach ein paar LEDs zum 
blinken bringt, ist nicht weiter wichtig.

Wichtig ist jedoch, dass ich eben im startup code eine Zeile verändert 
habe und nun lässt sich der Controllern icht mehr flashen o_O...


Vorher:
1
/* The vector table */
2
Vectors:        LDR     PC, Reset_Addr         
3
                LDR     PC, Undef_Addr
4
                LDR     PC, SWI_Addr
5
                LDR     PC, PAbt_Addr
6
                LDR     PC, DAbt_Addr
7
                NOP               /* Reserved vector */ 
8
;                LDR     PC, IRQ_Addr
9
        LDR    PC, [PC, #-0x0FF0]                
10
                LDR     PC, FIQ_Addr


Da mein Editor nur C Syntax anzeigt, habe ich den Code SO ändern wollen:
1
/* The vector table */
2
Vectors:        LDR     PC, Reset_Addr         
3
                LDR     PC, Undef_Addr
4
                LDR     PC, SWI_Addr
5
                LDR     PC, PAbt_Addr
6
                LDR     PC, DAbt_Addr
7
                NOP               /* Reserved vector */ 
8
/*                LDR     PC, IRQ_Addr*/
9
        LDR    PC, [PC, #-0x0FF0]                
10
                LDR     PC, FIQ_Addr

...da ich dachte, das die Art des Kommentars egal sein wird.

Danach ließ sich der Controller noch genau einmal brennen und seit dem 
nicht mehr.


Beim download erhalte ich folgende Meldungen:

target state: halted
target halted in ARM state due to debug request, current mode: FIQ
cpsr: 0x600000d1 pc: 0x00009f88
usage: flash probe <num>
/cygdrive/c/DOCUME~1/magnus/LOCALS~1/Temp/arm-gdb-commands91435866734502 
84387.tmp:5:  Error in sourced command file:
Reply contains invalid hex digit 116


Bei einem anderen Board, das noch hinsichtlich des Flashens funktioniert 
erscheint:

target state: halted
target halted in ARM state due to debug request, current mode: User
.
.
.


Wie kann ich nun bewirken, dass das andere Board sich nicht mehr im FIQ 
state befindet?


Ich verwende die GNU ARM Toolchain, allerdings in Verbindung mir der 
RapidiTTy 1.5 IDE, die von Olimex auch verlinkt wird.
Hardware: Olimex Baord LPC-P212x-B, Olimex ARM-USB-OCD
#1197611
Lesenswert?
• ▲
▼
Der Bootloader greift bevor das Programm im Flash loslegt. JTAG (OCD) 
erst danach. Wenn der Bootloader das Flash erst einmal gelöscht hat, 
wird auch der Weg über JTAG wieder funktionieren.

Empfehlung: Den Startup-Code ganz vorne um eine Schleife bereichern, die 
ein paarhundert Millisekunden leer rumeiert. JTAG kann auf den LPC2000 
nicht verhindern, dass der Controller nach Reset direkt loslegt, sondern 
versucht, ihn danach unter Kontrolle zu bekommen. Ohne die Wartezeit ist 
das manchmal schon zu spät.
Gast #1197729
Lesenswert?
• ▲
▼
Vielen Dank A. K. !!!

Ich hab irgendwie das lpc21isp Tool zum laufen gebracht (wobei ich 
zunächst vergaß auch eine Baudrate zu nehmen, die mit dem 10 MHz Quarz 
erzeugt werden kann, einzustellen).
Damit konnte ich dann den Chip brennen und nun tut auch wieder JTAG 
;)...

Aber wie lang in etwa soll die Schleife im Startup-Script sein?
Welche hast du eingebaut?

Auf jeden Fall vielen Dank für die Hilfe!!!!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren