LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 810|回复: 1

Linux2.4.19,IRQ的中断处理程序在哪里呢

[复制链接]
发表于 2005-8-17 17:59:58 | 显示全部楼层 |阅读模式
Linux2.4.19,IRQ的中断处理程序在哪里呢

各位高手,
    在INTEL的Sitsang开发板上,处理器PXA255有六个GPIO引脚(GP0,4,5,7,9,10)接收来自经CPLD初步处理的板级中断信号,PXA255收到中断信号后,操作系统应进行中断处理:保留当前运行环境信息,转入中断处理程序,由于是外部中断控制器(CPLD中)提供的中断信号,所以还要读CPLD上中断控制器的内容,以判断具体是谁发出的中断请求(例如GP7收到的中断信号就可能是CF卡或USB主口的),然后转入相应的具体的中断处理程序中.

    在网上看到一些ARM架构处理器中断处理的内容,似乎大体上中断处理的过程如下:  
    收到中断->保持PC等环境变量->跳到固定地址的中断处理程序->跳到用户自定义的固定地址的中断解析程序->初步判断中断类型,读中断向量表,如果是IRQ/FIQ中断则根据中断向量表跳到IRQ/FIQ中断服务程序位置->判断中断源->查中断向量表,跳至相应的具体的(如CF卡的)中断处理程序中.

    但是这个不知正确与否的粗略概念远不能解决我的问题,

    我的问题是,---------在使用Linux2.4.19的前提下,这个收到GP引脚信号后的中断处理过程具体是怎样的,在Linux的哪一个源文件中进行处理(例如那个中断解析程序在哪个源文件里)??

    我对CPLD上进行的处理比较清楚,但对linux怎样响应来自GPIO引脚上的中断一无所知,由于对linux内核不熟悉,现在千头万绪,不知从哪里入手,请斑竹和大家多多指教.
发表于 2005-10-9 09:57:07 | 显示全部楼层
没用过pxa255,GPIO引脚(GP0,4,5,7,9,10)如果能配置为中断信号
那在include/asm/arch/irqs.h中就有你要用的中断信号的宏
include/asm/arch/irqs.h 就是 include/asm-arm/arch-pxa/irqs.h
我看到有
#define        IRQ_GPIO0        PXA_IRQ(8)        /* GPIO0 Edge Detect */
其他没看到。
#include asm/arch/irqs.h
......
request_irq(IRQ_GPIO0, &interrupter_handler, SA_INTERRUPT, "driver name", NULL);
......
void interrupter_handler(int this_irq, void *dev_id, struct pt_regs *regs)
{
     do_something_here();
}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表