每一次做项目都会遇到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
调节变阻器,终端会打印如下信息:
<img id="aimg_how9F" class="zoom" file="http://files.chinaaet.com/images/blog/2014/12/14/1071753852538.png" lazyloadthumb="1" border="0" alt="" />
希望能够举一反三,遇到这种问题都能够很好的解决。
—————————————————————————————————————— |