This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

eboot添加中断功能

Other Parts Discussed in Thread: OMAP-L138

    近日想模仿三星的eboot程序添加usb下载功能到OMAP-L138平台的eboot程序上。学习了有关eboot中

添加IRQ中断的知识,但所写的代码无法触发中断。于是看到quickStartOMAPL1x_rCSL中

TIMER_interrupt_armL138例子用到了中断功能。

 

ARM9_intvecs.asm片段:

    .sect ".intvecs"

INT_VECS:                   ;  EXCEPTION                          ADDRESS

    LDR PC, __c_int00       ;Reset Interrupt                    (0xFFFF0000)

    .word 0                 ;Undefined Instructions Interrupt   (0xFFFF0004)

    LDR PC, __SWI_handler   ;Software Interrupt                 (0xFFFF0008)

    .word 0                 ;Prefetch Abort Interrupt           (0xFFFF000C)

    .word 0                 ;Data Abort Interrupt               (0xFFFF0010)

    .word 0                 ;Reserved For Future Expansion      (0xFFFF0014)

;   LDR PC, __IRQ_handler   ;IRQ Interrupt                      (0xFFFF0018)

    B IRQ_handler           ;IRQ Interrupt                      (0xFFFF0018)

    LDR PC, __FIQ_handler   ;FIQ Interrupt                      (0xFFFF001C)

 

__c_int00 .long _c_int00

__SWI_handler .long SWI_handler

__IRQ_handler .long IRQ_handler

__FIQ_handler .long FIQ_handler

 ////////////////////////////////////////////////////////////////////

从生成的map文件可以看到IRQ_handler的地址为0x800042d4,FIQ_handler的地址为0x800042f8

从内存中读出来的值为:

    Addr     value

0xffff0000--0xe59ff018

0xffff0004--0x0

0xffff0008--0xe59ff014

0xffff000c--0x0

0xffff0010--0x0

0xffff0014--0x0

0xffff0018--0xea000004

0xffff001c--0xe59ff008

   

    我想知道0xffff0018地址处的内容0xea000004是怎么计算出来的。

0xea000004中的0xea相当于B指令,这个已知。关键是0x000004是怎么计算出来的。

    还有就是与之相似的0xffff001c地址内容0xe59ff008是怎么得出来的。