- 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 frambuffer 设备总结
主要内容:
本文详细描述怎样编写 linux frambuffer LCD 驱动程序
LCD 驱动/设备/控制器
linux frambuffer 驱动
为什么要用 frambuffer?
什么是 frambuffer 设备?
怎样编写 frambuffer 驱动程序?
linux frambuffer 驱动源码分析
fb.h
fbmen.c
LCD 控制器驱动程序结构
为 lcd 显存分配内存
实现 fb_ops 功能函数
LCD 驱动/设备/控制器
除了 LCD 设备的 datasheet,还有两个关于 LCD 的非常不错的书,并且他们都是中文的。一本叫:《液晶显示技术》,另外一本叫《液晶显示器件》。这两本书详细介绍了 LCD 的知识,包括对硬件的操作,LCD 的底层编程等。这两本书对设计 LCD 模块和底层编程都很有帮助。
linux frambuffer 驱动
为什么要用 frambuffer?
如果我们的系统要用 GUI(图形界面接口),比如 minigui,MicroWindows.这时 LCD 设备驱动程序就应该编写成 frambuffer 接口,而不是编写成仅仅操作底层的 LCD 控制器接口。
什么是 frambuffer 设备?
frambuffer 设备层是对图像设备的一种抽象,它代表了视频硬件的帧缓存,使得应用程序通过定义好的接口就可以访问硬件。所以应用程序不需要考虑底层的
(寄存器级)的操作。应用程序对设备文件的访问一般在
/dev 目录,如 /dev/fb*。更多关于 frambuffer 设备的详细信息请阅读内核文档: linux /Documentation /fb /framebuffer.txt and linux /Documentation /fb /interal.txt
怎样编写 frambuffer 驱动程序?
关于如何编写 frambuffer 设备驱动, 有很多参考资料。 你可以在
/linux-fbdev.sourceforge.net /HOWTO /index.html 网站上阅读“Linux Frame buffer Driver Writing HOWTO”。
但是我认为这篇文章过于简短。所以分析内核相关部分的源码才是王道。
linux frambuffer 驱动源码分析
linux 中 frambuffer 接口的所有功能实现都包括在下面两个文件中
linux/include/linux/fb.h
linux/drivers/video/fbmem.c
下面详细分析这两个文件:
fb.h
所有 frambuffer 重要的结构体都定义在这个文件中。下面逐个分析他们:
fb_var_screeninfo
这个结构用来描述一个显卡可以被设置的特性,在 fb_var_screeninfo 结构体里有我们设备需要的,比如分辨率等信息。
struct fb_var_screeninfo {
u32 xres; /* 视口水平分辨率 */
u32 yres;
u32 xres_virtual; /* 虚拟屏幕水平分辨率 */
u32 yres_virtual;
u32 xoffset; /* 偏移视口与虚拟屏幕水平分辨率偏移 */
u32 yoffset;
u32 bits_per_pixel; /* 像素的位数 */
u32 grayscale; /* 灰度标志,如果为 1 代表是灰度 */
struct fb_bitfield red; /* 如果是真彩色,这个是颜色位,如果不是那么只有结构的大小重要,其他表示的信息无关紧要 */
struct fb_bitfield green; struct fb_bitfield blue;
struct fb_bitfield transp; /* 透明度 */
u32 nonstd;
/* 非标准颜色表示标志位
*/
u32 activate;
/* 参照 FB_ACTIVATE_*
*/
u32 height;
/* 在内存地址空间的长度
*/
u32 width;
/* 在内存地址空间的宽度
*/
u32 accel_flags; /* (不用了) 参照 fb_info.flags */
/* 时序: 以下所有的值单位都是 pixclock, 当然除了 pixclock */
u32 pixclock; /* 每秒像素值 */
u32 left_margin; /* 从 sync 信号到显示真正的像素的时钟个数 */
u32 right_margin; /* 从真正显示像素到 sync 信号的时钟个数 */
u32 u
您可能关注的文档
最近下载
- 医疗机构内麻醉、精神药品使用与管理制度.docx VIP
- 重庆市房屋建筑与装饰工程计价定额2018-建筑工程.docx VIP
- 重庆市房屋建筑与装饰工程计价定额2018建筑工程.docx VIP
- 七年级语文第一次月考卷(全解全析)(苏州专用)-A4.docx VIP
- 周杰伦所有歌词(14张专辑-包括床边的故事)呕心沥血已经整理完毕可打印.doc VIP
- 中古时期郡望郡姓地理分布考论.docx VIP
- 机械工程材料完整全套教学课件.pptx
- 城市轨道交通运营管理毕业论文-关于铁路客运服务质量的调查与探讨.docx VIP
- 2025年高压电工证题库(附答案).docx
- 智慧工地整体解决方案(投标方案).docx
文档评论(0)