ARM Bootloader: Interrupt Vector Table Understanding
Der folgende Code ist der erste Teil von u-boot, um eine Interrupt-Vektortabelle zu definieren, und meine Frage ist, wie jede Zeile verwendet wird. Ich verstehe die ersten 2 Zeilen, die der Ausgangspunkt und die erste Anweisung sind, die zu implementieren sind: Zurücksetzen, und wir definieren Zurücksetzen unten. Aber wann werden wir diese Anweisungen unten verwenden? Laut System.map hat jeder Befehl eine feste Adresse, also ist _fiq bei 0x0000001C. Wenn wir fiq ausführen wollen, werden wir diese Adresse in den PC kopieren und dann ausführen, richtig? Aber auf welche Weise können wir zu dieser Anweisung springen: ldr pc, _fiq? Es ist von Hardware oder Software realisiert? Hoffe ich mache mich richtig verständlich.
>.globl _start
>_start:b reset
> ldr pc, _undefined_instruction
> ldr pc, _software_interrupt
> ldr pc, _prefetch_abort
> ldr pc, _data_abort
> ldr pc, _not_used
> ldr pc, _irq
> ldr pc, _fiq
>_undefined_instruction: .word undefined_instruction
>_software_interrupt: .word software_interrupt
>_prefetch_abort: .word prefetch_abort
>_data_abort: .word data_abort
>_not_used: .word not_used
>_irq: .word irq
>_fiq: .word fiq