- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式LINUX设备驱动程序53P
嵌入式LINUX设备驱动程序 本讲主要内容 嵌入式linux设备驱动的基本框架与实现 数码管显示驱动程序分析 帧缓冲显示驱动实现方法。 Linux系统中的设备文件 Linux将所有外部设备看成是一类特殊文件,称之为“设备文件”。 如果说系统调用是Linux内核和应用程序之间的接口,那么设备驱动程序则可以看成是Linux内核与外部设备之间的接口。 设备驱动程序向应用程序屏蔽了硬件在实现上的细节,使得应用程序可以像操作普通文件一样来操作外部设备 Linux设备驱动在系统中的层次 设备驱动的作用 设备驱动是位于应用和物理设备之间的软件层,负责完成二者间的I/O操作; 在LINUX系统里,对用户程序,设备驱动隐藏了设备的具体细节,为不同设备提供了一致的接口; 设备驱动是嵌入式系统开发的重要内容之一 设备驱动完成的主要功能 对设备的初始化和释放; 将数据从内核传递到硬件设备,以及从硬件读取数据; 读取应用程序传送给设备文件的数据,并回送应用程序请求的数据。 这需要在用户空间、内核空间、总线以及外设之间传输数据; 检查和处理设备出现的错误。 设备驱动的分类 Linux支持3种不同类型的设备 字符设备 块设备 网络接口 字符设备 能够像字节流一样被访问的设备,一般不需要缓存技术,也不支持随机访问。 典型的字符设备有:鼠标、键盘、I/O设备等。 设备驱动的分类 块设备 支持面向块访问的设备,每块包含2的N次幂字节数据,典型的块大小为512或1024B; 大多数块设备允许随机访问,而且常常采用buffer、cache等缓存技术; 块设备的访问常常通过文件系统来进行; 典型的块设备有:如磁盘、硬盘、光盘驱动器等。 设备驱动的分类 网络接口 能够和其他主机交换数据的设备接口。 网络接口只是面向数据包而不是数据流,它没有被映射为任何设备文件,其访问要通过BSD套接口进行。 设备驱动的分类 主设备号与次设备号 LINUX系统中,设备由一个主设备号和一个次设备号来唯一标识; 主设备号 唯一标识了设备类型,即设备驱动程序类型,它是块设备表或字符设备表中设备表项的索引。 一些典型设备的主设备号已经基本固定下来,例如,软驱的主设备号为2,IDE硬盘的主设备号为3等等。 设备宏操作MAJOR()可以获取主设备号。 主设备号与次设备号 次设备号 用于标识使用同一设备驱动程序的不同硬件,并仅由设备驱动程序解释 当应用程序操作某个设备文件时,Linux内核根据其主设备号调用相应的驱动程序,并从用户态进入内核态 驱动程序判断次设备号,并完成相应的硬件操作。 用户空间和内核空间 Linux运行在2种模式下 内核模式 用户模式 内核模式对应内核空间,而用户模式对应用户空间。 驱动程序作为内核的一部分,它对应内核空间,应用程序不能直接访问其数据, 用户空间和内核空间 用户空间和内核空间的数据传递: copy_to_user(void *to, const void *from,unsigned long count); copy_from_user(void *to, const void *from,unsigned long count); __copy_to_user() __copy_from_user() 第一种方法在复制数据的同时,会进行地址空间的有效性检查。 内核设备驱动模块 设备驱动程序以两种方式添加到内核: Build in 直接把驱动程序编译到内核代码中 Module 以模块的方式加载驱动程序 加载:insmod driver.o 卸载:rmmod driver 查看:lsmod Linux设备节点的添加 设备节点位于/dev路径下 可用如下命令添加dev节点,b 代表块设备,C表示字符设备 mknod /dev/hda1 b(/c) 127 1 块设备,主设备号127,次设备号1 Linux设备驱动代码的分布 /char:字符设备驱动源码; /block:块设备驱动源码; /cdrom:Linux CDROM驱动源码。 这里可以找到某些特殊的CDROM设备(如SoundblasterCDROM)。IDE接口的CD驱动位于drivers/ide/ide-cd.c中而SCSICD驱动位于drivers/scsi/scsi.c中。 /pci:它包含了PCI伪设备驱动源码。这里可以找到关于PCI子系统映射与初始化的代码。 Linux设备驱动代码的分布 /scsi:所有的SCSI代码以及Linux支持的SCSI设备的设备驱动。 /net:包含网络驱动源码。 /sound:所有的声卡驱动源码。 /video:所有的视频卡驱动源码。 Linux设备驱动的代码结构 驱动程序的注册与注销 设备的打开与释放 设备的读写操作 设备的控制操作 设备的中
您可能关注的文档
最近下载
- 2023年武汉科技大学计算机科学与技术专业《计算机网络》科目期末试卷B(有答案).docx VIP
- 乳腺癌-病例讨论.ppt VIP
- 职业教育课程思政.pptx
- 2020 电力市场交易人员培训考核规范.docx VIP
- Q_GDW 12070-2020 配电网工程标准化设计图元规范.docx VIP
- csds_CSDS100-21-0 对苯二甲酸物质安全资料表SDS或化学品安全技术说明书MSDS.pdf VIP
- 《纪律处分条例》修订课件.ppt VIP
- 乳腺癌病例讨论.ppt VIP
- 护理学术会议心得体会汇报.pptx
- 2023年武汉科技大学网络工程专业《计算机网络》科目期末试卷A(有答案).docx VIP
- 软件下载与安装、电脑疑难问题解决、office软件处理 + 关注
-
实名认证服务提供商
专注于电脑软件的下载与安装,各种疑难问题的解决,office办公软件的咨询,文档格式转换,音视频下载等等,欢迎各位咨询!
文档评论(0)