最近发现一个不错的GUI库:lvgl,它是支持LinuxFramebuffer的,下次找机会学习一下并分享给大家,一方面可以看下开源软件是如何进行Framebuffer应用编程的,另一方面也学习一下GUI库的内部实现,或许以后项目里还能用得上,今天先把Framebuffer编程复习一下吧。
Linux项目实战视频更新一节《Framebuffer应用编程》,免费观看。B站,网盘,百问网均已同步更新,本文是视频配套的文档。
一、LCD操作原理在Linux系统中通过Framebuffer驱动程序来控制LCD。Frame是帧的意思,buffer是缓冲的意思,这意味着Framebuffer就是一块内存,里面保存着一帧图像。
Framebuffer中保存着一帧图像的每一个像素颜色值,假设LCD的分辨率是x,每一个像素的颜色用32位来表示,那么Framebuffer的大小就是:xx32/8=字节。
LCD的操作原理:
①驱动程序设置好LCD控制器:根据LCD的参数设置LCD控制器的时序、信号极性;根据LCD分辨率、BPP分配Framebuffer。②APP使用ioctl获得LCD分辨率、BPP③APP通过mmap映射Framebuffer,在Framebuffer中写入数据假设需要设置LCD中坐标(x,y)处像素的颜色,首要要找到这个像素对应的内存,然后根据它的BPP值设置颜色。
假设fb_base是APP执行mmap后得到的Framebuffer