Linux驱动程序的编写实验,实验四linux驱动程序的编写一、实验目的.pdf

嵌入式系统原理及应用教程(第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 *);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值