LPC21xx: ARM state: FIQ

Gast #1197541
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
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
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!!!!
Gast #1198717
noch eine letzte Frage:

Kommt die Schleife dann vor oder nach der Vectortabelle?
Soweit ich mich erinnern kann, müssen die Vectorsprungadressen doch 
immer zuerst definiert werden, oder?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.