这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » AT91SAM7S64 请教:AT91SAM7S64启动文件问题

共2条 1/1 1 跳转至

AT91SAM7S64 请教:AT91SAM7S64启动文件问题

院士
2006-09-17 18:14:16     打赏
AT91SAM7S64 请教:AT91SAM7S64启动文件问题



关键词: AT91SAM7S64     请教     启动     文件     问题    

院士
2006-12-22 22:43:00     打赏
2楼
问 在keil环境下,使用WWW.AT91.COM的例程,发现启动文件有下述问题,
需修改两行代码:即加注释的两行代码。

IRQ_Handler_Entry

;- Manage Exception Entry
;- Adjust and save LR_irq in IRQ stack
                sub         lr, lr, #4
                stmfd       sp!, {lr}

;- Save SPSR need to be saved for nested interrupt
                mrs         r14, SPSR
                stmfd       sp!, {r14}

;- Save and r0 in IRQ stack
                stmfd       sp!, {r0}

;- Write in the IVR to support Protect Mode
;- No effect in Normal Mode
;- De-assert the NIRQ and clear the source in Protect Mode
                ldr         r14, =AT91C_BASE_AIC
                ldr         r0 , [r14, #AIC_IVR]
                str         r14, [r14, #AIC_IVR]

;- Enable Interrupt and Switch in Supervisor Mode
                msr         CPSR_c, #Mode_SVC

;- Save scratch/used registers and LR in User Stack
                stmfd       sp!, { r1-r3, r12, r14}

;- Branch to the routine pointed by the AIC_IVR
;               mov         r14, pc
                add         r14, pc, #4                 ;// 修改
                bx          r0

;- Restore scratch/used registers and LR from User Stack
                msr         CPSR_c, #Mode_SVC           ;// 增加
                ldmia       sp!, { r1-r3, r12, r14}

;- Disable Interrupt and switch back in IRQ mode
                msr         CPSR_c, #I_Bit :OR: Mode_IRQ

;- Mark the End of Interrupt on the AIC
                ldr         r14, =AT91C_BASE_AIC
                str         r14, [r14, #AIC_EOICR]

;- Restore SPSR_irq and r0 from IRQ stack
                ldmia       sp!, {r0}

;- Restore SPSR_irq and r0 from IRQ stack
                ldmia       sp!, {r14}
                msr         SPSR_cxsf, r14

;- Restore adjusted  LR_irq from IRQ stack directly in the PC
                ldmia       sp!, {pc}^

做上述修改后,可实现中断嵌套。
请版主指点,上述修改是否必要?

由于没有仿真器,调试不便,还请各位同仁多多帮忙!
谢了 1: 哦哦你的错了,你这就是画蛇添足,多看看书。

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]