在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2839|回复: 2

关于bootload中中断处理的疑问

[复制链接]
发表于 2006-12-11 15:36:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我买的是万龙的板,在阅读实验代码中的44BINIT.S时对其中的中断处理有点不明白:
程序中先定义了这样的一个宏
MACRO
$HandlerLabel HANDLER $HandleLabel
$HandlerLabel
    sub     sp,sp,#4   
    stmfd   sp!,{r0}   
    ldr     r0,=$HandleLabel
    ldr     r0,[r0]   
    str     r0,[sp,#4]   
    ldmfd   sp!,{r0,pc}   
    MEND
再通过
LTORG
HandlerFIQ HANDLER HandleFIQ
HandlerIRQ HANDLER HandleIRQ
HandlerUndef HANDLER HandleUndef
.
.
.
展开宏得到进入中断处理程序的真正地址(ldr r0,=$HandleLabel).到这里中断之前的处理应该就OK了,剩下的就是在Main中各个HandleLabel等处写真正的中断服务函数了.为什么还要定义_ISR_STARTADDRESS起始的数据表,这个表是做什么的?
是不是下面的表格中每个变量都装了个4字节的指向中断服务函数的指针?
ldr     r0,=$HandleLabel中的=$HandleLabel是不是取下面这个表格对应变量装的值?
^ _ISR_STARTADDRESS
HandleReset  # 4
HandleUndef  # 4
HandleSWI  # 4
HandlePabort  # 4
HandleDabort  # 4
HandleReserved  # 4
HandleIRQ  # 4
HandleFIQ  # 4
HandleADC  # 4
HandleRTC  # 4
HandleUTXD1  # 4
HandleUTXD0  # 4
.
.

[ 本帖最后由 wuyiduan 于 2006-12-11 15:38 编辑 ]
发表于 2006-12-15 21:42:42 | 显示全部楼层
这样写就可以跳转到程序空间的任何位置,而如果在跳转指令那直接给地址的话,最多只能跳转4K空间
发表于 2006-12-30 22:22:22 | 显示全部楼层
看不懂啊,看不懂
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-2-2 23:52 , Processed in 0.015881 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表