snifer

【原创】嵌入式ADC驱动编写及测试

0
阅读(2216)

每一次做项目都会遇到ADC驱动编写,今天我写个小程序来讲讲这个问题。

内容:

编写一个字符驱动程序获取ADC通道0的电压值。

掌握ADC设备驱动的编写及平台设备驱动的编写

平台:

    主机:Ubuntu 10.10

       目标机:FS_S5PC100

       目标机内核版本:2.6.35

       交叉编译器版本:arm-none-linux-gnueabi-gcc-4.5.1

步骤

注意:在实验过程中"$"后的操作在主机上,"#"后的操作在开发板上

1、  修改内核重新编译内核

修改arch/arm/mach-s5pc100/mach-smdkc100.c

添加如下内容:

struct platform_device s3c_device_adc_convert = {

       .name                    = "adc_convert",

       .id                        = -1,

       .dev.parent             = &s3c_device_adc.dev,

};

 

smdkc100_devices结构体数组中添加如下内容

&s3c_device_adc,

&s3c_device_adc_convert,

$ make zImage

2、  拷贝模块到linux

将实验代码中的s5pc100_adc拷贝到/home/linux目录下并进入s5pc100_adc目录。

3、  编译模块

$ make

4、  编译应用程序

$ arm-none-linux-gnueabi-gcc test.c –o test

5、  拷贝驱动及应用程序到目标板上

$ cp s5pc100_adc.ko test /source/rootfs

6、  启动开发板后加载模块

# insmod s5pc100_adc.ko

7、  创建设备节点

# mknod /dev/adc c 250 0

8、  测试

# ./test

调节变阻器,终端会打印如下信息:

希望能够举一反三,遇到这种问题都能够很好的解决。