您的位置:首页 > 其它

实验四外设驱动程序设计报告

2015-11-30 12:54 260 查看
北京电子科技学院(BESTI)

实 验 报 告

课程:深入理解计算机系统 班级: 1352

姓名:莫凡 潘俊洋

学号:20135225 20135230

成绩: 指导教师:娄嘉鹏 实验日期:2015/11/24

实验密级: 预习程度: 实验时间:3:30~6:00

仪器组次: 必修/选修:必修 实验序号:4

实验名称: 外设驱动程序设计

实验目的:

1.掌握实时系统应用和驱动程序的编写
2.选择某个接口电路

实验仪器:

名称

型号

数量

实验箱

UP-NETARM2410嵌入式

1

PC

WinXP

1

实验内容、步骤与体会:

实验内容:

1.导入并编译驱动模块及测试代码





2.测试驱动程序



代码分析

将驱动映射为标准接口

static struct file_operations demo_fops = {…}完成了将驱动函数映射为
标准接口。

驱动向内核注册

devfs_registe()和 register_chrdev()函数完成将驱动向内核注册。

Open方法

Open
方法提供给驱动程序初始化设备的能力,从而为以后的设备操作做好准备,此外open操作一般还会递增使用计数,用以防止文件关闭前模块被卸载出内核。

- 递增使用计数
- 检查特定设备错误。
- 如果设备是首次打开,则对其进行初始化。
- 识别次设备号,如有必要修改 f_op 指针。
- 分配并填写 filp->private_data 中的数据。


Release 方法

与 open 方法相反,release 方法应完成如下功能:

- 释放由 open 分配的 filp->private_data 中的所有内容
- 在最后一次关闭操作时关闭设备
- 使用计数减一


Read 和 和 Write 方法
ssize_t demo_write(struct file *filp,const char * buffer, size_t count,loff_t *ppos)
ssize_t demo_read(struct file *filp, char *buffer, size_t count, loff_t *ppos)


read 方法完成将数据从内核拷贝到应用程序空间,write 方法相反,将数据从应用程
序空间拷贝到内核。对于者两个方法,参数 filp
是文件指针,count 是请求传输数据的长
度,buffer 是用户空间的数据缓冲区,ppos 是文件中进行操作的偏移量,类型为 64 位数。

由于用户空间和内核空间的内存映射方式完全不同,所以不能使用象 memcpy 之类的函数,
必须使用如下函数:

unsigned long copy_to_user (void *to,const void *from,unsigned long count);
unsigned long copy_from_user(void *to,const void *from,unsigned long count);


ioctl方法

ioctl 方法主要用于对设备进行读写之外的其他控制,比如配置设备、进入或退出某种
操作模式,这些操作一般都无法通过 read/write
文件操作来完成。

编写中断处理函数的注意事项:

中断处理程序与普通C代码没有太大不同,不同的是中断处理程序在中断期间运行,它有如下限制:

不能向用户空间发送或接受数据
不能执行有睡眠操作的函数
不能调用调度函数


使用/proc文件系统

/proc 文件系统是由程序创建的文件系统,内核利用它向外输出信息。/proc 目录下的
每一个文件都被绑定到一个内核函数,这个函数在此文件被读取时,动态地生成文件的内
容。

大多数情况下 proc 目录下的文件是只读的。使用/proc 的模块必须包

<linux/proc_fs.h>头文件

遇到的问题及解决:

1.编译时失败

解决:在/usr/src下没有建立一个Linux连接,可以使用

[root@zxt 01_demo]# cd /usr/src/

[root@zxt src]# ln -sf linux-2.4.20-8 linux

[root@zxt src]# ls

debug linux linux-2.4 linux-2.4.20-8 redhat

ln指令的用法是连接,使用格式是ln [options] source dist,这里我们用到的sf参数的含义是:

-f:链接时先将与dist同档名的档案删除

-s:进行软链接。(软链接,又称符号链接,这个文件包含了另一个文件的路径名,特点是可以链接不同文件系统的文件,甚至可以链接不存在的文件。)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: