关于用ADS1.2调试中断程序的问题,想不明白!

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

回复评论 (11)

没用过ads,顶了
点赞  2009-11-12 22:14
这个不是一两句就能讲清楚的,建议看看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,每个中断服务程序的入口地址都被保存到一个固定内存区域,然后通过上面代码查找。
点赞  2009-11-12 23:26
引用: 引用 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
点赞  2009-11-12 23:43
mark
点赞  2009-11-13 08:36
0地址的异常处理:
b ResetHandler
b .        ;handler for Undefined mode
b .        ;HandlerSWI
b .        ;HandlerPabort
b .        ;HandlerDabort
b .
b IsrIRQ        ;HandlerIRQ;
b .        ;HandlerFIQ

IsrIRQ的处的代码再去查找相应的中断处理函数,就如2楼所写的代码
点赞  2009-11-13 08:36
程序怎么知道中断处理函数在哪? 中断服务程序的地址设定好了么?
点赞  2009-11-13 08:52
引用: 引用 1 楼 guopeixin 的回复:
没用过ads,顶了


驱动可以用ADS写吧?
点赞  2009-11-13 08:58
引用: 引用 6 楼 cfanlwn 的回复:
程序怎么知道中断处理函数在哪? 中断服务程序的地址设定好了么?

你小子和我当年学习一样,非要插根问底,呵呵,搞研发应该这样!
中断发生后,系统工作模式变成中断异常,pc就会跑到b IsrIRQ ;HandlerIRQ; 这一过程是CPU实现的,然后跑到2楼代码去查找中断源对应中断处理函数的入口地址,pc就会跳转到那里。这个地址我们编程时怎么赋值的呢?
在我们的程序中有类似pISR_IIC = (unsigned)IicInt;一句代码,IicInt就是我们编写的中断处理代码,这句代码的意思就是将中断处理程序的入口地址放在PC要跳转的地方。这样PC就会再跳转到IicInt得入口地址,这个地址我们不需要知道!
点赞  2009-11-14 09:54
更正,俺不是男生,不要叫俺小子  pISR_IIC = (unsigned)IicInt;  我说的中断地址就是IicInt  这如果都没设置好,还跑啥中断啊
点赞  2009-11-14 12:24
ls刚刚只是说了 非向量中断,另外还有向量中断。
在44b0里面,向量中断,在产生中断,读取0x18存放的指令的时候,会由中断控制器产生一条跳转语句,自动跳转到你对应的中断入口函数。
在lpc里面,则是由vicvect来搞的。。也是类似的东西。
点赞  2009-11-18 10:43
学习……
点赞  2009-11-19 15:19
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复