首先感谢大家关注我的问题!
对于LINUX驱动编写来说,我是个新手,最近在编写AM3352 ADC驱动。公司产品用的是liunx 3.2内核:linux-3.2.0-psp04.06.00.08.sdk。
没有用到设备树。
通过参考TI Steven Liu 工程师写的驱动实例(www.deyisupport.com/.../75146.aspx
进行改编成最简单的字符驱动模型,能够进行驱动的加载和卸载,驱动的主节点设成101,驱动名为drvADC,生成的驱动文件为drvADC.ko。驱动测试程序名为
drvADC_test.o编译好后,进行如下操作。
1、将drvADC.ko 和测试程序drvADC_test.o上传到核心板工作目录,并更改文件权限;
2、insmod drvADC.ko, 提示驱动安装成功, 检查在devices里面drvADC的主节点号的确为101;
3、mknod /dev/drvADC c 101 0, 检查在/dev目录下有drvADC;
4、在工作目录中运行测试程序./drvADC_test.o,输出信息如下:
[ 810.407348] Going to open ADC
st start...
[ 810.411773] map register memery
[ 810.416229] irq request success, err = 0
[ 810.420379] get clk success
[ 810.423278] get clock_rate success, clock_rate = 24000000
[ 810.428924] get clk_value success, clk_value = 8
[ 810.433715] Choose ADC channel 4
[ 810.437103] adc initialized!
[ 810.440582] ADC channel:4 working, reading adc data
[ 810.445678] Start adc channel 4
之后一直没有打印信息输出,分析对比程序,推断是没有触发中断,一直在等待中断。这会是什么原因呢?希望能得到大家的帮助。
下面是程序(附件也是一样的程序):