嵌入式系统实验6 字符设备驱动程序设计-陈文智

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

◦ 字符设备驱动的文件操作函数
file_operations结构体中的成员函数是字符设备驱动与内核 之间的接口,用户空间对Linux进行系统调用最终会调用 这些函数。大多数设备驱动都会实现open、release、read、 write、ioctl等几个函数。
虚拟字符设备设计

虚拟字符设备是一个实际上并不存在的设备, 在本实验中,它实际上是代表一块指定大小 的内存空间。
实验6 字符设备驱动程序设计
Hale Waihona Puke Baidu
一 实验目的
理解字符设备驱动程序设计的相关概念。 掌握字符设备驱动程序的开发过程。 学会编写简单的GPIO驱动。

二 实验环境
硬件:AT91SAM9G45-EKES开发板、PC机 软件:Windows 2000/NT/XP、Ubuntu 9.10

三 实验任务
驱动模块初始化函数及退出函数
◦ 驱动安装
交叉编译及动态加载模块
◦ 驱动测试
测试编写好的驱动模块,对设备文件操作
实验二 虚拟字符设备设计

本实验的任务是设计一个虚拟的字符设备,它其 实是一块内存区域的封装。 希望通过这个实验,可以加深读者对字符设备的 理解,并熟练掌握编写字符设备驱动的能力。 需要实现的文件操作:

该驱动需要提供的操作包括:
◦ 读写(read/write) ◦ 控制(ioctl) ◦ 定位(llseek)

注意内存越界行为
GPIO按键驱动原理

输入设备,例如键盘、鼠标、触摸屏等,是一个典 型的字符设备,它的工作原理一般是底层在检测到 按键、点击等输入动作时产生一个中断,然后CPU 通过SPI、I2C或者外部存储器总线读取按键值、坐 标等数据并交由字符设备驱动管理,而驱动的读操 作让用户可以读取这些数据。 而为了简化输入系统的设计和驱动的编写,Linux系 统专门提供了input子系统,它统一管理鼠标和键盘 事件。而在input架构的基础上,内核目录下的 drivers/input/keyboard/ gpio_keys.c实现了通用的GPIO 按键驱动。
编写简单的字符设备驱动。 虚拟字符设备——virtualcdev设计 理解和掌握GPIO按键驱动的原理

四 实验原理
简单的字符设备驱动 虚拟字符设备设计原理 GPIO按键驱动原理

简单的字符设备驱动

最基本的字符设备驱动由以下两部分组成:
◦ 字符设备驱动模块加载和卸载函数
在字符设备的模块加载函数中,需要完成设备号的分配和 字符设备的注册;在字符设备折模块卸载函数中,需要完 成设备号的释放和字符设备的注销。

五 实验步骤
实验一 编写一个简单的字符设备驱动 实验二 虚拟字符设备设计 实验三 GPIO按键驱动

实验一 简单的字符设备驱动
驱动程序包括以下内容:
◦ 头文件及全局变量
驱动模块的一些必要的头文件、宏以及全局变量
◦ 主要操作函数
定义file_operations的操作函数
◦ 驱动模块函数
按照实验原理,修改board-sam9m10g45ek.ce 及gpio_keys.c代码,然后重新编译内核并下 载到目标板上运行。
六 实验讨论与思考
字符设备的设备号分配方式有哪几种? 字符设备驱动的初始化和退出需要完成哪些工 作? 如何使用文件私有数据(private_data)来改写 实验二? 如何在input子系统的基础上模拟键盘或者鼠标 输入?

◦ read、write、ioctl和lseek



编写测试程序验证驱动设计
实验三 GPIO按键驱动

本实验的任务有两个:
◦ 在原有的GPIO按键驱动的基础上修改代码,可以 在按键的时候在屏幕上打印按键信息,例如按键 的代码值以及按键类型等。 ◦ 修改配认的GPIO按键配置,将鼠标左右键定义替 换成其它键值。
相关文档
最新文档