第嵌入式Linux软件设计.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第嵌入式Linux软件设计

12.4 嵌入式Linux文件系统的移植 文件系统是Linux/UNIX系统的一个重要组成部分。 也是操作系统正常工作时的必要组成部分。 在启动时内核需要根文件系统来挂载和组织文件。 内核代码映像文件保存在根文件系统中。 系统引导启动程序会从这个根文件系统设备上把内核执行代码加载到内存中去运行。 在Linux 中,用户能看到的文件空间是用一个单树状结构来组织的。 根文件系统的最顶层称为root 其下的每一个目录都有其具体的目的和用途 常见的根文件系统有Romfs?、JFFS2、NFS、ext2、RamDisk、cramfs等 。 12.5 Linux下设备驱动程序的开发 Linux驱动开发是嵌入式软件设计中的主要内容。 也是嵌入式Linux移植中工作量最大的部分。 这里主要概述: Linux设备驱动框架 驱动程序的组成 常用的加载驱动程序的方法 通过实例来详细介绍字符设备驱动程序的开发过程。 12.5.1 驱动程序概述 设备驱动程序是应用程序与硬件之间的一个中间软件层。 可以看作是一个硬件抽象层。 为应用程序屏蔽了硬件的细节。 在应用程序看来,硬件设备只是一个设备文件。 应用程序可以像操作普通文件一样对硬件设备进行操作。 在操作系统看来,设备驱动程序是内核的一部分。 它主要实现的功能有: 对设备进行初始化和释放; 把数据从内核传送到硬件和从硬件读取数据; 读取应用程序传送给设备文件的数据 回送应用程序请求的数据 检测和处理设备出现的错误。 1. 设备类型分类 在Linux操作系统下有3类主要的设备类型: 字符设备 块设备 网络设备 3类主要的设备类型 (1) 字符设备 字符设备(char device)和普通文件之间有主要的区别:普通文件可以来回读/写,而大多数字符设备仅仅是数据通道,只能顺序读/写。 (2)块设备 块设备(block device)是文件系统的物质基础,它也支持像文件一样被访问。 (3)网络设备 网络设备是一个物理设备,如以太网卡,但软件也可以作为网络设备,典型的是回送设备(loopback)。 字符设备和块设备的主要区别在于是否使用了缓冲技术。 2. 设备驱动与文件系统的关系 Linux通过设备文件系统对设备进行管理。 设备都以文件的形式存放在/dev目录下,称为“设备文件”。 应用程序可以像普通文件一样打开、关闭和读/写这些设备文件。 为了管理这些设备,系统为设备编了号,每个设备号又分为主设备号和次设备号。 (p396数据结构) 12.5.2 重要的数据结构和函数 1. 设备驱动中关键数据结构 设备驱动程序提供的这组入口点由几个结构向系统进行说明,是: file_operations数据结构 inode数据结构 file数据结构(P397) 2. 设备驱动开发中的基本函数 设备驱动程序所提供的入口点,在设备驱动程序初始化的时候向系统进行说明,以便系统在适当的时候调用。 初始化部分一般还负责为设备驱动程序申请系统资源,包括内存、中断、时钟、I/O端口等(这些资源也可以在open子程序或别的地方申请) 在这些资源不用的时候,应该释放它们,以利于资源的共享。 (1)设备注册函数 (2)内存操作函数 (3)中断申请和释放函数 (4) I/O端口操作函数 12.5.3 字符设备驱动程序的组成 设备驱动程序作为内核的一部分.它完成的功能包括: 对设备初始化和释放; 把数据从内核传送到硬件并从硬件读取数据; 读取应用程序传送给设备文件的数据和回送应用程序请求的数据; 检测和处理设备出现的错误。 1. 驱动程序的注册和注销 设备驱动程序通过命令insmod以模块的方式动态加载后. 入口点是init _module 函数或宏 mdolue init 。 2. 设备操作 在设备成功注册之后,就可对它进行打开、读写、控制和释放等操作。 在Linux内核中,字符设备使用fie_operations结构来定义设备的各种操作集合。 3. 驱动程序的中断处理 在实际的系统中,设备的许多工作通常与处理器不同步,而且总比处理器慢。 在设备准备好后通知处理器来进行处理,这种方法就是中断。 由于系统的中断资源有限.驱动程序在使用中断前需要申请,使用完后需要释放。 Linux中,中断的申请和释放分别是通过 request_irq()函数和free_irq()函数来实现的。 12.5.4 动态和静态加载方式 Linux设备驱动模块属于内核的一部分 可以用静态和动态两种方式来进行编译和加载 两者方式的开发过程稍有不同,也各有特点。 1. 静态加载方式 (1)特点 静态方式就

文档评论(0)

little28 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档