基于ARM9的嵌入式ADC驱动设计研讨.ppt

基于ARM9的嵌入式ADC驱动设计研讨

基于ARM9的 嵌入式ADC驱动设计 设计说明 操作系统平台:Linux RedHat 9.0 内核版本:Linux-2.6.31 交叉编译器版本:arm-linux-gcc 4.1.2 开发板平台:TX2440A (开发板主控芯片S3C2440) 原理图 原理图 驱动概述 ADC驱动的构成 驱动相关的结构体 挂载驱动 打开驱动 读取转化结果 关闭驱动 卸载驱动 驱动相关的结构体 static struct file_operations TX2440_adc_fops = //ADC的文件操作 结构体 {  .owner = THIS_MODULE, //模块名  .open = TX2440_adc_open, //打开驱动  .release = TX2440_adc_release, //释放驱动  .ioctl = TX2440_adc_ioctl, //io口设置  .read = TX2440_adc_read, //读取转换数据 }; 挂载驱动 设备号(主设备号+从设备号)和register_chrdev(ADC_Major, DEVICE_NAME, TX2440_adc_fops)函数 设备节点和device_create(adc_class, NULL, MKDEV(ADC_Major, 0), NULL, DEVICE_NAME)函数 硬件设备的初始化:AD时钟设置、工作模式选择、转换周期设置、触发方式设置、是否产生中断(输入通道选择)等。 挂载命令insmod和module_init(TX2440_adc_init)函数 卸载驱动 unregister_chrdev(ADC_Major, DEVICE_NAME)函数 device_destory(adc_class, MKDEV(ADC_Major, 0))函数 rmmod命令和module_exit(TX2440_adc_exit)函数 打开驱动 open(/dev/TX2440-adc, 0)函数,代开所指向的在文件系统中的路径的驱动函数的设备节点,通过设备节点访问驱动函数的TX2440_adc_open(struct inode *inode, struct file *file)函数,此时AD转换功能可用。(应用程序和驱动函数程序的路径可以任意) 关闭驱动 close(fd)函数经内核转化后调用TX2440_adc_release(struct inode *inode, struct file *file)函数,关闭驱动,此时AD转换功能不可用。 读取转化结果 应用程序的read()函数调用驱动函数的TX_2440_adc_read(struct file *filp, char *buf, size_t count, loff_t *f_pos)函数,触发AD转换并读取转换结果。 内核配置和驱动编译 终端操作 终端操作 * CPU上对应的ADC输入管脚 电路模块上对应的ADC输出管脚 实质是一系列的独立的功能函数。能够直接操作底层的硬件,并且供上层应用函数经内核将指令转化后调用。 ADC驱动属于字符驱动。 修改在/drivers/char/下的 Kconfig和Makefile文件, 并在配置选项框中选为M。 用make M=/drivers/char modules 命令生成TX2440_adc.ko文件 使用insmod 命令加载 驱动; 用lsmod 命令查 看驱动; rmmod命令卸载 驱动。 *

文档评论(0)

1亿VIP精品文档

相关文档