概述
嵌入式系统原理及应用教程(第2 版)/清华大学出版社 EL-ARM-860 V1.2
实验四 Linux 驱动程序的编写
一、实验目的
1. 掌握Linux 驱动程序的编写方法。
2. 掌握驱动程序动态模块的调试方法。
3. 掌握驱动程序填加到内核的方法。
二、实验内容
1. 学习Linux 驱动程序的编写流程。
2. 学习驱动程序动态模块的调试方法。
3. 学习驱动程序填加到内核的流程。
三、实验设备
1. Pentium II 以上的PC 机,LINUX 操作系统,EL-ARM860 实验箱。
四、Linux 的驱动程序的编写
嵌入式应用对成本和实时性比较敏感,而对Linux 的应用主要体现在对硬件
的驱动程序的编写和上层应用程序的开发上。
嵌入式Linux驱动程序的基本结构和标准Linux 的结构基本一致,也支持模块
化模式,所以,大部分驱动程序编成模块化形式,而且,要求可以在不同的体系
结构上安装。Linux是可以支持模块化模式的,但由于嵌入式应用是针对具体的
应用,所以,一般不采用该模式,而是把驱动程序直接编译进内核之中。但是这
种模式是调试驱动模块的极佳方法。
设备驱动程序是操作系统内核和机器硬件之间的接口。设备驱动程序为应用程序
屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序
可以像操作普通文件一样对硬件设备进行操作。同时,设备驱动程序是内核的一
部分,它完成以下的功能:对设备初始化和释放;把数据从内核传送到硬件和从硬
件读取数据;读取应用程序传送给设备文件的数据和回送应用程序请求的数据;
检测和处理设备出现的错误。在Linux操作系统下有字符设备和块设备两类主要
的设备文件类型。字符设备和块设备的主要区别是:在对字符设备发出读写请求
时,实际的硬件I/O一般就紧接着发生了;块设备利用一块系统内存作为缓冲区,
当用户进程对设备请求满足用户要求时,就返回请求的数据。块设备是主要针对
磁盘等慢速设备设计的,以免耗费过多的CPU时间来等待。
~ 1 ~ 宁德师范学院 信息与机电工程学院 王良
嵌入式系统原理及应用教程(第2 版)/清华大学出版社 EL-ARM-860 V1.2
4.1 设备驱动程序的 file_operations 结构
通常一个设备驱动程序包括两个基本的任务:驱动设备的某些函数作为系统
调用执行;而某些函数则负责处理中断(即中断处理函数) 。而file_operations 结构
的每一个成员的名称都对应着一个系统调用。用户程序利用系统调用,比如在对
一个设备文件进行诸如read操作时,这时对应于该设备文件的驱动程序就会执行
相关的ssize_t (*read) (struct file *, char *, size_t, loff_t *)函数。在操作系统内部,
外部设备的存取是通过一组固定入口点进行的,这些入口点由每个外设的驱动程
序提供。由file_operations结构向系统进行说明,因此,编写设备驱动程序的主要工
作就是编写子函数,并填充file_operations 的各个域。file_operations 结构在
kernel/include/linux/fs.h 中可以找到。
struct file_operations {
struct module *owner;
loff_t (*llseek) (struct file *, loff_t, int);
ssize_t (*read) (struct file *, char *, size_t, loff_t *);
ssize_t (*write) (struct file *, const char *, size_t, loff_t *);
int (*readdir) (struct file *, void *, filldir_t);
unsigned int (*poll) (struct file *, struct poll_table_struct *);
最后
以上就是壮观香氛为你收集整理的Linux驱动程序的编写实验,实验四linux驱动程序的编写一、实验目的.pdf的全部内容,希望文章能够帮你解决Linux驱动程序的编写实验,实验四linux驱动程序的编写一、实验目的.pdf所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复