4617|11

59

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于用ADS1.2调试中断程序的问题,想不明白! [复制链接]

在用ADS调试的时候,把程序下载到0x3000 0000处,如果此时0x00处有中断向量的话,程序调试就会成功,进入到中断处理程序中。
   现在的问题是,程序怎么知道中断处理函数在哪?此时我明明是烧写到0x3000 0000处,但中断向量怎么会跳转到这个地方呢?

最新回复

学习……  详情 回复 发表于 2009-11-19 15:19
点赞 关注

回复
举报

88

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
没用过ads,顶了
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
这个不是一两句就能讲清楚的,建议看看ARM手册,以及汇编代码.
IsrIRQ  
        sub        sp, sp, #4       ;reserved for PC
        stmfd        sp!, {r8-r9}
       
        ldr        r9, =INTOFFSET
        ldr        r9, [r9]
        ldr        r8, =HandleEINT0
        add        r8, r8,r9,lsl #2
        ldr        r8, [r8]
        str        r8, [sp,#8]
        ldmfd        sp!,{r8-r9,pc}
这是对应非向量中断的查找中断入口的ISR,每个中断服务程序的入口地址都被保存到一个固定内存区域,然后通过上面代码查找。
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用 2 楼 arm9linuxpp 的回复:
这个不是一两句就能讲清楚的,建议看看ARM手册,以及汇编代码.
IsrIRQ?
sub sp, sp, #4? ? ? ;reserved for PC
stmfd sp!, {r8-r9}

ldr r9, =INTOFFSET
ldr r9, [r9]
ldr r8, =HandleEINT0
add r8, r8,r9,lsl #2
ldr r8, [r8]
str r8, [sp,#8]
ldmfd sp!,{r8-r9,pc}
这是对应非向量中断的查找中断入口的ISR,每个中断服务程序的入口地址都被保存到一个固定内存区域,然后通过上面代码查找。


This is it
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

5
 
mark
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

6
 
0地址的异常处理:
b ResetHandler
b .        ;handler for Undefined mode
b .        ;HandlerSWI
b .        ;HandlerPabort
b .        ;HandlerDabort
b .
b IsrIRQ        ;HandlerIRQ;
b .        ;HandlerFIQ

IsrIRQ的处的代码再去查找相应的中断处理函数,就如2楼所写的代码
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

7
 
程序怎么知道中断处理函数在哪? 中断服务程序的地址设定好了么?
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 1 楼 guopeixin 的回复:
没用过ads,顶了


驱动可以用ADS写吧?
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

9
 
引用 6 楼 cfanlwn 的回复:
程序怎么知道中断处理函数在哪? 中断服务程序的地址设定好了么?

你小子和我当年学习一样,非要插根问底,呵呵,搞研发应该这样!
中断发生后,系统工作模式变成中断异常,pc就会跑到b IsrIRQ ;HandlerIRQ; 这一过程是CPU实现的,然后跑到2楼代码去查找中断源对应中断处理函数的入口地址,pc就会跳转到那里。这个地址我们编程时怎么赋值的呢?
在我们的程序中有类似pISR_IIC = (unsigned)IicInt;一句代码,IicInt就是我们编写的中断处理代码,这句代码的意思就是将中断处理程序的入口地址放在PC要跳转的地方。这样PC就会再跳转到IicInt得入口地址,这个地址我们不需要知道!
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

10
 
更正,俺不是男生,不要叫俺小子  pISR_IIC = (unsigned)IicInt;  我说的中断地址就是IicInt  这如果都没设置好,还跑啥中断啊
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

11
 
ls刚刚只是说了 非向量中断,另外还有向量中断。
在44b0里面,向量中断,在产生中断,读取0x18存放的指令的时候,会由中断控制器产生一条跳转语句,自动跳转到你对应的中断入口函数。
在lpc里面,则是由vicvect来搞的。。也是类似的东西。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

12
 
学习……
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表