- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
设备的轮询和中断处理 中断处理方式 硬件在需要的时候,向内核发出中断请求信号,而内核则负责把中断信号传递给相应的设备驱动。 驱动程序必须在设备驱动的初始化时申请中断资源,并注册中断处理函数: 申请:request_irq(irq , irq_handler, flag, dev_name, dev_id); 释放:free_irq(irq, dev_id); 其中irq为申请的中断线号,irq_handler为注册的中断处理函数,dev_id 用于共享中断信号线。 第三十页,共五十四页。 典型字符驱动程序框架 static struct demo_fops = { read: demo_read write: demo_write open: demo_open ……}; int init_module(void){ return demo_init();}用于注册设备驱动、申请中断线,初始化等 void cleanup_module(void){ demo_cleanup();}用于注销设备驱动、释放中断线等 接口函数的实现 …… Example1 第三十一页,共五十四页。 PXA270开发系统的按键驱动程序与数码显示驱动 数码显示源代码 按键驱动源代码 第三十二页,共五十四页。 调试驱动程序,使用printk输出信息,信息的优先级依次为: KERN_EMERG KERN_ALERT KERN_CRIT KERN_ERR KERN_WARNING KERN_NOTICE KERN_INFO KERN_DEBUG 如果要在终端输出信息,编译选项:-Wall –O2 根据/kernel/printk.c的不同设置,不显示的信息会出现在/var/log/messages中 驱动调试方法参见Linux Device Drivers chapter 3 第三十三页,共五十四页。 帧缓冲设备驱动程序 第三十四页,共五十四页。 LCD分类 LCD可由为液晶照明的方式有两种:传送式和反射式 传送式屏幕要使用外加光源照明,称为背光(backlight),照明光源要安装在LCD的背后。传送式LCD在正常光线及暗光线下,显示效果都很好,但在户外,尤其在日光下,很难辩清显示内容。 反射式屏幕,则不需要外加照明电源,使用周围环境的光线(或在某些笔记本中,使用前部照明系统的光线)。这样,反射式屏幕就没有背光,所以,此种屏幕在户外或光线充足的室内,才会有出色的显示效果,但在一般室内光线下,这种显示屏的显示效果就不及背光传送式的。 第三十五页,共五十四页。 帧缓冲(Framebuffer) 帧缓冲(framebuffer)-显示缓冲区 是Linux为显示设备提供的一个接口,是把显存抽象后的一种设备,他允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。 Xwindow绘制窗口,显示汉字都是通过fb 第三十六页,共五十四页。 帧缓冲设备 Linux可支持最多32个/dev/fb0~/dev/fb31 缺省是/dev/fb0 可以直接拷贝位图到fb来显示到屏幕 cp /bitmap/penguin.bin /dev/fb0 第三十七页,共五十四页。 帧缓冲设备驱动原理 帧缓冲设备属于字符设备,其目的就是通过配置PXA270的寄存器,在一段指定的内存与LCD之间建立一个自动传输的通道。这样,任何程序只要修改这段内存中的数据,就可以改变LCD上的显示内容。 第三十八页,共五十四页。 嵌入式LINUX设备驱动程序 第一页,共五十四页。 本讲主要内容 嵌入式linux设备驱动的基本框架与实现 数码管显示驱动程序分析 帧缓冲显示驱动实现方法。 第二页,共五十四页。 Linux系统中的设备文件 Linux将所有外部设备看成是一类特殊文件,称之为“设备文件”。 如果说系统调用是Linux内核和应用程序之间的接口,那么设备驱动程序则可以看成是Linux内核与外部设备之间的接口。 设备驱动程序向应用程序屏蔽了硬件在实现上的细节,使得应用程序可以像操作普通文件一样来操作外部设备 第三页,共五十四页。 Linux设备驱动在系统中的层次 第四页,共五十四页。 设备驱动的作用 设备驱动是位于应用和物理设备之间的软件层,负责完成二者间的I/O操作; 在LINUX系统里,对用户程序,设备驱动隐藏了设备的具体细节,为不同设备提供了一致的接口; 设备驱动是嵌入式系统开发的重要内容之一 第五页,共五十四页。 设备驱动完成的主要功能 对设备的初始化和释放; 将数据从内核传递到硬件设备,以及从硬件读取数据; 读取应用程序传送给设备文件的数据,并回送应用程序请求的数据。 这需要在用户空间、内核空
文档评论(0)