显示子系统对应用层提供的接口叫做framebuffer,一般位于/dev/fb0(下文示例运行于adroid的平台位于/dev/graphics/fb0,不过它们都是一样的),它为上层提供了统一的对显卡的描述。首先要明确的是lcd显示子系统虽然复杂,但其任然是基本的字符设备,fb0就是其设备节点,主设备号29。不同之处在于,可以通过mmap(mmap将一个文件或者其它对象映射进内存。)对其进行地址映射,将内核中的显存空间直接映射到用户空间,这样用户空间填入需要显示的数据就能直接显示在lcd上。其余的参数查询与设置通过ioctl都可以完成。
我们先从第一个应用层测试开始讲起:
1, 保持屏幕上有一帧画面,进入fb0对应的目录(/dev/ 或/dev/graphics/)执行:
cat fb0 > fb_test
这样就可以对framebuffer的一帧原始数据进行暂存
2, 切换一帧屏幕画面,执行