当前位置: 技术问答>linux和unix
请教关于arm-linux中断的问题~~~~~~~~~
来源: 互联网 发布时间:2016-04-13
本文导语: arm的中断搞得我头昏了,有几个概念一直没弄明白: 1,arm中异常向量表和中断向量表是一回事吗? 我的理解是异常向量表的地址(0x00000000-0x0000001c)和内容(分别对应arm的7种中断模式的解析程序的地址)是固定死...
arm的中断搞得我头昏了,有几个概念一直没弄明白:
1,arm中异常向量表和中断向量表是一回事吗?
我的理解是异常向量表的地址(0x00000000-0x0000001c)和内容(分别对应arm的7种中断模式的解析程序的地址)是固定死的,中断向量表的地址和内容是用户自定义的。
2,在中断申请函数int request_irq(int irq,void(*handler)(...),...)中,irq是中断号,handler是中断处理函数的地址。
那么这里的中断号到底是怎么得来的?我知道可以在内核的头文件里查到,但是还是不知道到底是怎么算出来的。
3,irq和handler与中断向量表的地址和内容是对应的吗?它们之间有公式换算吗?
1,arm中异常向量表和中断向量表是一回事吗?
我的理解是异常向量表的地址(0x00000000-0x0000001c)和内容(分别对应arm的7种中断模式的解析程序的地址)是固定死的,中断向量表的地址和内容是用户自定义的。
2,在中断申请函数int request_irq(int irq,void(*handler)(...),...)中,irq是中断号,handler是中断处理函数的地址。
那么这里的中断号到底是怎么得来的?我知道可以在内核的头文件里查到,但是还是不知道到底是怎么算出来的。
3,irq和handler与中断向量表的地址和内容是对应的吗?它们之间有公式换算吗?
|
1,应该就是如你所说吧
2,中断号就是本来就硬件规定好了的吧。
3,是对应的,我的理解有定义了有多少个中断号中断向量表就有多大。至于关系就是由你的中断申请函数来改变。
没搞过底层,不知对否
2,中断号就是本来就硬件规定好了的吧。
3,是对应的,我的理解有定义了有多少个中断号中断向量表就有多大。至于关系就是由你的中断申请函数来改变。
没搞过底层,不知对否
|
arm中,如果出现异常了,cpu会中断并进行异常处理,异常处理也是属于中断的一种,为内部中断。
所以异常向量表是包含在中断向量表里面的。
中断号一般都是分配好的了,一般对应于中断控制器的各个引脚。
一般irq中断号对应于中断向量表的地址,handler的地址对应于中断向量表对应地址的内容。
所以异常向量表是包含在中断向量表里面的。
中断号一般都是分配好的了,一般对应于中断控制器的各个引脚。
一般irq中断号对应于中断向量表的地址,handler的地址对应于中断向量表对应地址的内容。