第8章 嵌入式设备驱动程序设计

第8章 嵌入式设备驱动程序设计

ID:40225310

大小:494.00 KB

页数:66页

时间:2019-07-27

第8章 嵌入式设备驱动程序设计_第1页
第8章 嵌入式设备驱动程序设计_第2页
第8章 嵌入式设备驱动程序设计_第3页
第8章 嵌入式设备驱动程序设计_第4页
第8章 嵌入式设备驱动程序设计_第5页
资源描述:

《第8章 嵌入式设备驱动程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第8章嵌入式 设备驱动程序设计教材:嵌入式系统设计与应用作者:张思民出版:清华大学出版社第8章 嵌入式设备驱动程序设计8.1嵌入式设备驱动程序基础8.1.1设备驱动程序概述8.1.2设备驱动程序的框架8.1.3设备驱动程序的加载过程8.1.4设备驱动程序功能接口函数模块8.1.5设备驱动程序重要的数据结构体8.2设备驱动程序设计8.2.1设计驱动程序8.2.2编译和加载驱动程序8.3简单驱动程序设计示例8.1嵌入式设备驱动程序基础8.1.1设备驱动程序概述1、设备文件设备文件分为三类:字符设备文件、块设备文件和网络接口设备文件。字符设备文件通常指不

2、需要缓冲就能够直接读写的设备。块设备文件通常指仅能以块为单位读写的设备,它的存取是通过缓冲区来进行。网络接口设备文件通常指网络设备访问的接口,如网卡等。内核主要负责操作系统最基本的内存管理、进程调度和文件管理以及虚拟内存、需求加载、TCP/IP网络功能等。内核空间和用户空间分别引用不同的内存映射,也就是程序代码使用不同的地址空间。2、内核空间和用户空间内核空间用户空间3、设备驱动程序和用户应用程序设备驱动程序可以理解为操作系统的一部分,它的作用就是让操作系统能正确识别和控制设备。嵌入式Linux内核采用可加载的模块化设计方式,也就是将最基本的核心代

3、码编译在内核中,其他的代码可以则编译成内核的模块文件。对设备进行访问和操作的程序由两部分组成,即: 设备驱动程序+用户应用程序。设备驱动程序特点:(1)内核代码:设备驱动程序是内核的一部分,如果设备驱动程序出错,则有可能导致系统崩溃。(2)内核接口:设备驱动程序必须为内核或者其子系统提供一个标准接口(3)可动态装载:大多数嵌入式Linux设备驱动程序都可以在需要时动态地装载进内核,在不需要时从内核中卸载。设备驱动程序运行在内核空间,而用户应用程序则运行在用户空间。嵌入式操作系统通过系统调用和硬件中断来完成从用户空间到内核空间的控制转移。8.1.2设

4、备驱动程序的框架【例8-1】最简单的驱动程序。#include#includeintinit_module(void){printk("Hello,Test_drv[---kernel---]");return0;}voidcleanup_module(void){printk("GoodbyeTest_drv[---kernel---]");}module_init(init_module);module_exit(cleanup_module);一般地,一个设备驱动程序模块

5、的基本框架如下:#include<……/xxx.h>//驱动程序所必须的包含文件open(){…}read(){…}write(){…}……//设备的功能接口函数与数据结构体structfile_operation{……};intinit_module(void){……//驱动程序注册语句}voidcleanup_module(void){……//释放设备资源语句}module_init(init_module);//加载驱动的入口点module_exit(cleanup_module);//卸载设备驱动的入口点8.1.3设备驱动程序的加载过程1、

6、设备号嵌入式Linux系统通过设备号来区分不同设备。设备号分为主设备号和次设备号。内核通过主设备号将设备与相应的驱动程序对应起来。主设备号的取值范围是0~255。当一个驱动程序要控制若干个设备时,就要用次设备号来区分它们。2、设备进入点对每个设备都要定义一个设备进入点,该设备进入点的名称则称为设备名。设备进入点又称为设备文件。如果设备注册成功,则设备名就会写入到/proc/devices文件中。对于设备进入点(设备文件),可以象操作磁盘上的普通文件一个,进行删除(rm)、移动(mv)和复制(cp)等操作。(1)创建设备进入点创建设备进入点的命令格式

7、为:mknod/dev/xxxtypemajorminor其中:xxx为设备名;type为设备类型,若为字符设备,则为c,若为块设备,则为b;major和minor分别为主设备号、次设备号。(2)查看设备进入点查看设备进入点是否创建成功,命令的一般格式为:ls-l/dev

8、grep设备名3、加载设备驱动程序(1)加载设备驱动程序的一般格式为:insmod<设备驱动程序.o>(2)要察看当前加载了哪些设备驱动程序则使用下列命令:lsmod-l(3)若要卸载驱动程序,则使用命令:rmmod<设备驱动程序.o>4、设备驱动程序加载与卸载的工作过程8.1.

9、4设备驱动程序的功能接口函数模块一个设备驱动程序模块包含有5个部分的功能接口函数:(1)驱动程序的注册与释放;(2)设备的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。