主题 : 关于mini2440_adc.c 驱动不解之处 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 74915
精华: 0
发帖: 34
金钱: 170 两
威望: 34 点
综合积分: 68 分
注册时间: 2012-07-31
最后登录: 2014-01-22
楼主  发表于: 2012-12-24 09:16

 关于mini2440_adc.c 驱动不解之处

mini2440_adc.c这个驱动程序里边的中断处理函数是在什么时候进入的?也就是中断由什么触发,我怎么分析不出来…………也就是这个函数:irqreturn_t adcdone_int_handler(int irq, void *dev_id)
级别: 新手上路
UID: 74915
精华: 0
发帖: 34
金钱: 170 两
威望: 34 点
综合积分: 68 分
注册时间: 2012-07-31
最后登录: 2014-01-22
1楼  发表于: 2012-12-24 09:51

 回 楼主(杨超锋) 的帖子

是不是ADC转换完成后自动进入中断,怎么不清除中断标志?
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
2楼  发表于: 2012-12-24 13:32

 回 1楼(杨超锋) 的帖子

adcdone_int_handler通过相应的request_irq注册到系统的中断处理函数列表里。当ADC转换完成后,ADC触发CPU中断,内核会通过中断号找到adcdone_int_handle并调用。清除中断标志由内核的中断处理部分来统一完成,不需要设备驱动参与。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 74915
精华: 0
发帖: 34
金钱: 170 两
威望: 34 点
综合积分: 68 分
注册时间: 2012-07-31
最后登录: 2014-01-22
3楼  发表于: 2012-12-24 14:34

 回 2楼(kasim) 的帖子

哦,多谢多谢。这个问题我都想几天了,总觉得怪怪的。是不是2440的所有中断都是这样的工作模式,不需要清中断标志?
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
4楼  发表于: 2012-12-24 16:17

 回 3楼(杨超锋) 的帖子

是的,只要是Linux系统,都是这样的方式。不是不需要清除,只是不需要设备驱动去清除。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."