我使用FreeScale的型号是MPC8548E的CPU,E5.00内核PowerPc,有个按键驱动程序想利用外部中断来实.现(查询方式用过,CPU占用率99%,很恐怖),目的.是在按键产生中断后在内核态通知用户态,仅仅是一通知功能,就是在中断产生后在内核态通知用户态有按键事件..发生.了,然后由用户层程序读取键值并进行处理.不必考虑防抖问题,按键芯片内部已经具备该功能.初步打算采用异步通知的方法,就是在中断服务.程序.中,由按键事件产生的外部中断在内核态使用kill_fasync()通知用户态.中断使用外部中断2:MPC85xx_IRQ_EXT.2,包含该中断定义的头文件在asm/irq.h中,我在程序前面已经include了该文件,可是编译老是提示找不到"MPC85xx_IRQ_EXT2"的声明.后.来我直接在程序中定义了一下,就是把asm/irq.h中定义MPC85xx_IRQ_EXT2的那一段复制出来,现在request_irq已经可以申请到软中断号了.由于该CPU采用了PIC(可编程中断控制器),需要软中断号和.硬中断号的挂接,我在程序里直接用irq_create_mapping()解决了一下,现在可以.申请到IRQ了,运行"cat /proc/interrupt",看到中断号以及对应的中断设备已经存在列表中了,中断号50,电平触发.可是按键没有反应,"cat /proc/interrupt",发现中断次数的值没有发生改变.不知道在enable_irq的时候是否需要清除该中断的标志位.?看了半天datashe.et,N多的寄存器让我找不着头绪(英文不是很好),想问2个问题:1)用异步通知可不可行?网上有人说.不可靠,但是也有很多人用.
2.)使能中断前,到底需要不需要清除该中断的中断标志位?.--------------彩票
盼了解.该处理器的人指点迷津,谢谢! 电子