linux内核nmi中断,LINUX AM335X NMI中断使用方法

首先高清楚你要用什么中断,如果是用普通的GPIO去申请中断,那在网上百度就可以了,这里主要讲一下如何使用NMI中断(不可屏蔽中断),自己在这里走了很多弯路,希望可以帮助大家理解,有其他看法的大家在这里交流交流

首先

NMI中断号我们可以从数据手册上面查到是7,此时不能直接用request_irq(7,xxx,xxx,xxx,xxx)去申请,我目前解决的方法是配合设备数去完成:

首先、在设备数中加入如下设备节点

6fc6e010d58fb56489c095705b35e895.png

设备节点中的名字am335x_nmi是你自己随意取得,下面的

compatible = "自己设置、能够对应你的驱动中的就可以"

如果用的是AM3352、那这里的中断号就是7

加上之后,驱动中一定要与compatible中对应,这样驱动才能匹配到我们的设备节点

接下来就是如何去申请了,首先

(1)用irq=platform_get_irq()去获得中断号(下面解释)

(2)用request_irq( )去申请中断

(3)接下来的步骤就跟平常的中断一样了

这里就有一个疑问了,NMI的中断号已经给出了是7,我们为什么还要申请?,我再程序中将申请到的中断打印出来是194,这就尴尬了,不一样,此时需要大家看一下下面的图:

3a4e727e6a160f7dbc57f38092b4707d.png

你会发现他有两个地方代表着我们的中断,中断号是INTC后面的数,但我们内核认识的是前面的中断号,因此我们前面的irq=platform_get_irq()就是用来获得前面的中断号供内核认识,接下来的就是用request_irq()来申请就可以了,有什么问题,留言交流

问题

我这里是用来检测电量的,当电量低于一定的值时就中断报警,但这里导致,电量较低时,就不停的进入中断,有没有什么办法可以只中断一次,因为这里是NMI(不可屏蔽中断)确实还挺不好处理的,大家可以发表一下自己的看法,讨论讨论

下面贴上自己的代码

有需要的自己下载一下,交流交流

http://download.csdn.net/detail/lixiaojie123123/9874802

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值