热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

AndroidLCD驱动

LCD驱动分为三部分:驱动程序架构、程序分析、程序实现1.驱动程序架构:从裸机程序可以知道LCD驱动有两部分组成:初始化(控制器初始化、端口初始化、非常重要–指明帧缓冲)、L




LCD驱动

分为三部分:驱动程序架构、程序分析、程序实现


1.驱动程序架构:

从裸机程序可以知道LCD驱动有两部分组成:初始化(控制器初始化、端口初始化、非常重要–指明帧缓冲)、LCD图形显示(将图形数据写入帧缓冲) 所以说帧缓冲很重要

帧缓冲:简单讲就是内存中的一块区域,只是这些内存告诉 LCD控制器 这些的内存的地址,然后控制器就会从帧缓冲中一行一行的显示到LCD上面(裸机阶段)

在驱动中依然是存在这样的帧缓冲,使用工具 Img2Lcd 将bmp格式的图片设置成二进制的格式 ok.bin形式 ,将文件复制到开发板,然后cat ok.bin > /dev/fb0 就可以显示图片了,说明我们在linux中依然是帧缓冲的方式来控制LCD ,只不过在linux中帧缓冲的名字是/dev/fb0这样的设备文件的方式出现的(名字就是fb0)

Linux帧缓冲架构:应用程序就是将我们的相应的图形数据写入到/dev/fb0(帧缓冲)这个设备文件当中去,使用ls -l 可以看到是 字符设备;找到代码 fbmem.c这个文件,然后找到fbmem_init()这个函数,里面有一个注册设备文件的函数 register_chrdev(FB_MAJOR,”FB”,&fb_fops) 在开发板使用ls -l /dev/fb0既可以看到设备的设备号是29 ,所以主设备号就是FB_MAJOR,相应的操作函数级就是fb_fops,当我们调用写函数时就是 fb_write函数,进入函数会看到有很多info ,因为fb_write函数就是围绕info展开的,所以可以得到下图&







推荐阅读
author-avatar
Aime--Gemini
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有