linux-2.4.27 触摸屏驱动程序
硬件连接如下:触摸屏芯片7843 的中断输出引脚/PENIRQ <-----> PA16/EMDIO/IRQ6
也就是要使用PIOA 的第16线的IRQ功能接受 触摸屏产生的中断信号。
我对这个中断线的配置如下:
AT91C_SYS->PMC_PCER = 1<< AT91C_ID_IRQ6 ; //打开PIOA外围时钟A
T91C_SYS->PIOA_PDR = AT91C_PA16_IRQ6; // 禁止PIOA功能
AT91C_SYS->PIOA_BSR = AT91C_PA16_IRQ6; // 选择功能B,
内核中的触摸屏驱动已经成功编译,中断分配也成功了,分配的中断号为31(AT91C_ID_IRQ6),
但是当执行读取触摸屏文件/dev/touchscreen/0raw,即cat 此文件时,显然打开成功,但用手按下屏幕,此时好像LINUX内核不能接受到产生的中断,因为没有进入中断服务函数ads7843_ts_interrupt,这个函数是在request_irq中指定的,我已经跟踪了这个信息,但此时电平是有正常的,即按下屏时,电平拉低,并且 cat /proc/interrupts 显示的关于这个中断次数也不会变化,总之一句话,内核没有很“正常”的采集到中断信号,而中断信号的产生是正常的,即/PenIrq引脚的电平变化正常,触摸时,电平为低;松开为高;
如果想使用PIOA的16引脚 的IRQ功能的话,应该如何配置 ?我上面的三项可以了吗?已经配置为使用外设功能B了吧?其它地方还要注意吗?就拿使用中断线来说
另外问一下:怎么样才算触摸屏的驱动成功了呢?如果编写一个用户测试程序,利用read读取触摸屏文件/dev/touchscreen/0raw,并打印出读取的值信息,因为read默认要阻塞,如果不按下触摸屏闺将会阻塞,如果按下触摸屏此时应该立即打印出读取的值信息,这样算不算驱动程序已经“好”了呢
我发现根本不能设置PMC_PCER寄存器,内核中其它驱动程序可以成功设置的,就是我设置第31位不成功,没效果
我看手册好像是说配置中断线时,时钟是不起作用的,也就是不用打开时钟,那关于AT91RM9200的中断如何使用呢?
我发现手册上根本没有举例说明,它只有数据手册,没有用户手册,像LPC的芯片都有示例说明的