ARM-Linux驱动--ADC驱动(中断方式)

时间:2022-04-01 23:37:52

硬件平台:FL2440

内核版本:2.6.28

主机平台:Ubuntu 11.04

内核版本:2.6.39

原创作品,转载请标明出处:http://blog.csdn.net/yming0221/archive/2011/06/26/6568937.aspx

 

这个驱动写了好久,因为原来的Linux内核编译的时候将触摸屏驱动编译进内核了,而触摸屏驱动里的ADC中断在注册的时候类型选择的是

 

IRQF_SAMPLE_RANDOM,不是共享类型,所以,自己写的ADC驱动在每次open的时候,总提示ADC中断注册失败。

 

解决方案:

重新配置内核,选择触摸屏驱动以模块的形式编译,而不是直接编译进内核,这样Linux在启动的时候不会自动加载触摸屏驱动,当然,IRQ_ADC中断号不会被占用。这样可以测试自己写的ADC驱动了。

以下是驱动源代码:

 

Makefile文件:

 

以下是测试代码:

 

首先新建设备:

mknod /dev/my_adc c 102 32

然后插入驱动 insmod adc.ko

运行测试程序./read

结果如下:

ARM-Linux驱动--ADC驱动(中断方式)

可以看出,调节ad转换器上的旋钮,看到AD转换值的变化,说明驱动工作正常。