第11章、嵌入式Linux设备驱动开发

第11章、嵌入式Linux设备驱动开发

ID:36297214

大小:1.80 MB

页数:50页

时间:2019-05-08

第11章、嵌入式Linux设备驱动开发_第1页
第11章、嵌入式Linux设备驱动开发_第2页
第11章、嵌入式Linux设备驱动开发_第3页
第11章、嵌入式Linux设备驱动开发_第4页
第11章、嵌入式Linux设备驱动开发_第5页
资源描述:

《第11章、嵌入式Linux设备驱动开发》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《嵌入式Linux应用程序开发标准教程》——第11章、嵌入式Linux设备驱动开发嵌入式学院—华清远见旗下品牌:www.embedu.org《嵌入式Linux应用程序开发标准教程》——第11章、嵌入式Linux设备驱动开发第11章嵌入式Linux设备驱动开发本章目标本书从第6章~第10章详细讲解了嵌入式Linux应用程序的开发,这些都是处于用户空间的内容。本章将进入到Linux的内核空间,初步介绍嵌入式Linux设备驱动的开发。驱动的开发流程相对于应用程序的开发是全新的,与读者以前的编程习惯完全不同,希望读者能尽快地熟悉现

2、在环境。通过本章的学习,读者将会掌握以下内容。Linux设备驱动的基本概念Linux设备驱动程序的基本功能Linux设备驱动的运作过程常见设备驱动接口函数掌握LCD设备驱动程序编写步骤掌握键盘设备驱动程序编写步骤嵌入式学院—华清远见旗下品牌:www.embedu.org《嵌入式Linux应用程序开发标准教程》——第11章、嵌入式Linux设备驱动开发11.1设备驱动概述11.1.1设备驱动简介及驱动模块操作系统是通过各种驱动程序来驾驭硬件设备的,它为用户屏蔽了各种各样的设备,驱动硬件是操作系统最基本的功能,并且提供统一的操

3、作方式。设备驱动程序是内核的一部分,硬件驱动程序是操作系统最基本的组成部分,在Linux内核源程序中也占有60%以上。因此,熟悉驱动的编写是很重要的。在第2章中已经提到过,Linux内核中采用可加载的模块化设计(LKMs,LoadableKernelModules),一般情况下编译的Linux内核是支持可插入式模块的,也就是将最基本的核心代码编译在内核中,其他的代码可以编译到内核中,或者编译为内核的模块文件(在需要时动态加载)。常见的驱动程序是作为内核模块动态加载的,比如声卡驱动和网卡驱动等,而Linux最基础的驱动,如C

4、PU、PCI总线、TCP/IP协议、APM(高级电源管理)、VFS等驱动程序则直接编译在内核文件中。有时也把内核模块叫做驱动程序,只不过驱动的内容不一定是硬件罢了,比如ext3文件系统的驱动。因此,加载驱动就是加载内核模块。这里,首先列举一些模块相关的命令。nlsmod列出当前系统中加载的模块,其中左边第一列是模块名,第二列是该模块大小,第三列则是使用该模块的对象数目。如下所示:$lsmodModuleSizeUsedbyAutofs120680(autoclean)(unused)eepro100181281iptabl

5、e_nat192520(autoclean)(unused)ip_conntrack185401(autoclean)[iptable_nat]iptable_mangle22720(autoclean)(unused)iptable_filter22720(autoclean)(unused)ip_tables119365[iptable_natiptable_mangleiptable_filter]usb-ohci193280(unused)usbcore545281[usb-ohci]ext3677282jbd44

6、4802[ext3]aic7xxx1147043sd_mod115843scsi_mod985122[aic7xxxsd_mod]nrmmod是用于将当前模块卸载。ninsmod和modprobe嵌入式学院—华清远见旗下品牌:www.embedu.org《嵌入式Linux应用程序开发标准教程》——第11章、嵌入式Linux设备驱动开发是用于加载当前模块,但insmod不会自动解决依存关系,即如果要加载的模块引用了当前内核符号表中不存在的符号,则无法加载,也不会去查在其他尚未加载的模块中是否定义了该符号;modprobe可以

7、根据模块间依存关系以及/etc/modules.conf文件中的内容自动加载其他有依赖关系的模块。11.1.2设备分类本书在前面也提到过,Linux的一个重要特点就是将所有的设备都当做文件进行处理,这一类特殊文件就是设备文件,它们可以使用前面提到的文件、I/O相关函数进行操作,这样就大大方便了对设备的处理。它通常在/dev下面存在一个对应的逻辑设备节点,这个节点以文件的形式存在。Linux系统的设备分为3类:字符设备、块设备和网络设备。n字符设备通常指像普通文件或字节流一样,以字节为单位顺序读写的设备,如并口设备、虚拟控制

8、台等。字符设备可以通过设备文件节点访问,它与普通文件之间的区别在于普通文件可以被随机访问(可以前后移动访问指针),而大多数字符设备只能提供顺序访问,因为对它们的访问不会被系统所缓存。但也有例外,例如帧缓存(framebuffer)是一个可以被随机访问的字符设备。n块设备通常指一些需要以块为单位随机读写的

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

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

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