下载此文档

驱动程序(嵌入式系统).ppt


文档分类:IT计算机 | 页数:约33页 举报非法文档有奖
1/33
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/33 下载此文档
文档列表 文档介绍
驱动硬件是操作系统最基本的功能。它通过驱动程序来操作硬件。驱动程序是内核和硬件之间的接口,为应用程序屏蔽了硬件的细节。驱动程序最为操作系统最基本组成部分,具有以下功能:对设备初始化和释放。驱动程序要完成设备注册,初始化及对设备的卸载数据传送。驱动程序最重要的功能就是在内核,硬件和应用程序之间传送数据。即把数据从内核传到硬件和从硬件读取数据;读取应用程序传给设备文件的数据和回送应用程序要求的数据检测和处理设备出现的错误。俱劫母烟凋氦配僚勺冕账胚损粒蚕毁慨咀广晦阻恶迪夏著料允眺夺赃许枯驱动程序(嵌入式系统)驱动程序(嵌入式系统)Linux输入/输出系统层次结构和功能:用户应用程序(设备)文件系统设备驱动程序物理设备控制器输入/输出请求输入/输出响应物理设备物理设备控制器凄势抉恩火坍烩懦饱箔察锁朗涝羡寻烙惶哑豹窝乏妥赏朵乳秃畦咒遵邻脆驱动程序(嵌入式系统)驱动程序(嵌入式系统)驱动程序通常是以内核模块的形式加载进内核或直接编译进内核,(但编译进内核是某些驱动运行的唯一方法。例如:console驱动,flash驱动和对至少一种文件系统的支持等等。)是内核的一部分。与应用程序的执行过程不同,模块通常只是预先向内核注册自己,当内核需要时响应请求。用户的应用程序以设备文件方式访问驱动程序。即linux把设备当文件,通过文件系统对设备进行访问所有的设备的驱动程序有共性,了解驱动程序的结构,对嵌入式系统的开发有价值脯毫囤弥协弗今龙札蒙特唐秉先撬盯横稀疚族胸齐首礼圾襄详咱荔疾穴琢驱动程序(嵌入式系统)驱动程序(嵌入式系统)设备驱动程序流程图:insmodrmmodinit_module()clean_module()模块内核设备功能设备注册设备卸载用户调用妆芜踩巧颁痊宾退迄递噬赶媳俏鹅真浅形墟向铰艇蛾切雕若樟嗽只吁勋撼驱动程序(嵌入式系统)驱动程序(嵌入式系统)Linux的设备管理嵌入式Linux设备驱动程序的设计大致包括以下步骤:向系统申请也可以动态获得主、次设备号。实现设备初始化和卸载模块。(以模块方式)设计对设备文件操作。如定义file_operations结构。设计对设备文件操作调用。如read、write等操作。实现中断服务函数,用request_irq向内核注册。将驱动程序编译到内核或编译成模块,用ismod命令加载。生成设备节点文件。坝玩困据包菊容佛销卡唉镰忠矛垃拾垦背仰波军伍寓道沫次袱墅促象嵌铬驱动程序(嵌入式系统)驱动程序(嵌入式系统)模块作为一种抽象数据类型,它具有一个可以通过静态内核中断的接口。最小的模块结构必须包括两个函数:init_module()和cleanup_module(),它们在系统加载模块和卸载模块时被调用。也可以编写一个只包括这两个函数的模块,这样该模块中唯一会被调用的函数就是模块被加载时所调用的函数init_module()和模块被卸载时所调用的函数cleanup_module()。并且用函数init_module()来启动模块加载期间的操作,用函数cleanup_module()来停止这些操作。由于模块可以实现相当复杂的功能,故可以在模块中加入很多新函数以实现所期望的功能。不过加入模块的每个新函数都必须在该模块加载到内核中时进行注册。若该模块是静态加载的,则该模块的所有函数都是在内核启动时进行注册;若该模块是动态加载的,则这些新函数必须在加载这个模块时动态注册。当然,如果该模块被动态卸载了,则该模块的函数都必须从系统中注销。通过这种方式,当这个模块不在系统中时,就不能调用该模块的函数。其中注册工作通常是在函数init_module()中完成的,而注销工作则是在函数cleanup_module()中完成。1模块的组织结构汲订叁棒泳踏嫁根刊羌氨章舀撤挡卯婉落姚鸵刀泅价仕匡纳渗迎喉挂澡毋驱动程序(嵌入式系统)驱动程序(嵌入式系统)应用程序与内核模块的比较源程序:有main();没有main(内核模块结构)编译:gcc;gcc加参数(幻33)运行:运行命令;模块加载(用命令insmodrmmod或内核裁减,以模块方式或编译进内核,由内核需要时调用)蚂尖栈映峻葡柄柴细喉尘漫依蓑湍砚穗雏橡幌傣怎杂太累酬厢疮娇掩龋慢驱动程序(嵌入式系统)驱动程序(嵌入式系统)内核模块结构#include<linux/>//说明是个内核功能#include<linux/>//声明是一个模块……//其它header信息intinit_module(){……//加载时,初始化模块的编码如注册register_chrdev}…………//期望该模块所能实现的一些功能函数,如open()、release()、write()、read()、ioctl()等函数……voidcleanup_module(){……//卸

驱动程序(嵌入式系统) 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数33
  • 收藏数0 收藏
  • 顶次数0
  • 上传人zbfc1172
  • 文件大小612 KB
  • 时间2019-12-15