当前位置: 技术问答>linux和unix
中断不能响应
来源: 互联网 发布时间:2016-07-28
本文导语: 对于s3c2410,触摸屏和ADC之间的冲突,一开始认为就是他们都用IRQ_ADC_DONE(62)中断而产生的。在网上高手的指导下,我将该中断设置成了共享中断,再次编译触摸屏驱动和ADC驱动到内核。在移植好的系统中,我在proc目录...
对于s3c2410,触摸屏和ADC之间的冲突,一开始认为就是他们都用IRQ_ADC_DONE(62)中断而产生的。在网上高手的指导下,我将该中断设置成了共享中断,再次编译触摸屏驱动和ADC驱动到内核。在移植好的系统中,我在proc目录下cat interrupts可以看到:
[root@Real /proc]# cat interrupts
13: 0 DMA timer
14: 5696 timer
18: 0 I2SSDI
19: 0 I2SSDO
21: 0 SDI
26: 4 usb-ohci
30: 0 RTC Alarm
37: 0 cs89x0
46: 0 SD CD
52: 136 serial_s3c2410_rx
53: 640 serial_s3c2410_tx
54: 0 serial_s3c2410_err
61: 0 s3c2410-ts
62: 0 s3c2410-ts, s3c2410-adc
Err: 0
然后我在到dev目录下查看该目录下的文件:
[root@Real /dev]# ls
adc fb0 misc pts sound urandom
console full mixer pty touchscreen usb
cua0 h3600_tsraw mtd random tty vc
cua1 input mtdblock root tty1 vcc
cua2 kmem null scsi ttyS0 zero
dsp leds port sda1 ttyS1
fb mem ptmx shm ttyS2
但是触摸屏还是不可以用,点击了没有任何的反应,我继续在proc目录中cat interrupts可以发现61号中断没有响应过,它后面的数字始终为0。冲突的问题并没有解决。我粗略的看了驱动程序的原代码,这两个驱动的主从设备号都是一样的,这个会不会是冲突的原因呢?哪位高手以前碰到过这种情况,可否给出个解决的方案,小弟先在这里谢谢了。
[root@Real /proc]# cat interrupts
13: 0 DMA timer
14: 5696 timer
18: 0 I2SSDI
19: 0 I2SSDO
21: 0 SDI
26: 4 usb-ohci
30: 0 RTC Alarm
37: 0 cs89x0
46: 0 SD CD
52: 136 serial_s3c2410_rx
53: 640 serial_s3c2410_tx
54: 0 serial_s3c2410_err
61: 0 s3c2410-ts
62: 0 s3c2410-ts, s3c2410-adc
Err: 0
然后我在到dev目录下查看该目录下的文件:
[root@Real /dev]# ls
adc fb0 misc pts sound urandom
console full mixer pty touchscreen usb
cua0 h3600_tsraw mtd random tty vc
cua1 input mtdblock root tty1 vcc
cua2 kmem null scsi ttyS0 zero
dsp leds port sda1 ttyS1
fb mem ptmx shm ttyS2
但是触摸屏还是不可以用,点击了没有任何的反应,我继续在proc目录中cat interrupts可以发现61号中断没有响应过,它后面的数字始终为0。冲突的问题并没有解决。我粗略的看了驱动程序的原代码,这两个驱动的主从设备号都是一样的,这个会不会是冲突的原因呢?哪位高手以前碰到过这种情况,可否给出个解决的方案,小弟先在这里谢谢了。
|
建议你把 ADC 驱动中操作硬件寄存器的部分都去掉。
比如你标出来的 :
ADCTSC = 0; //XP_PST(NOP_MODE);
ADCTSC 的地址是什么? 这个寄存器是做什么用的。 你都需要查下硬件手册。
比如你标出来的 :
ADCTSC = 0; //XP_PST(NOP_MODE);
ADCTSC 的地址是什么? 这个寄存器是做什么用的。 你都需要查下硬件手册。