时序图
VSYNC:帧同步信号
每发出一个脉冲,表示新的一屏图像数据开始传送
HSYNC:行同步信号
每发出一个脉冲,表示新的一行图像数据开始传送
VCLK:像素时钟信号
每发出一个脉冲,表示新的一个点图像数据开始传送
LEND:行结束信号
VBPD:表示在一帧图像开始时,帧同步信号以后的无效的行数,对应驱动中的upper_margin;
VFBD:表示在一帧图像结束后,帧同步信号以前的无效的行数,对应驱动中的lower_margin;
VSPW:表示垂直同步脉冲的宽度,用行数计算,对应驱动中的vsync_len;
HBPD:表示从水平同步信号开始到一行的有效数据开始之间的VCLK的个数,对应驱动中的left_margin;
HFPD:表示一行的有效数据结束到下一个水平同步信号开始之间的VCLK的个数,对应驱动中的right_margin;
HSPW:表示水平同步信号的宽度,用VCLK计算,对应驱动中的hsync_len;
在嵌入式开发中没有显存设备,常用内存模拟frame buffer
帧缓冲设备对应的设备文件是/dev/fb*,若有多个显卡,linux支持多个帧缓冲设备,最多32个,/dev/fb为当前缺省的帧缓冲设备,通常指向/dev/fb0。帧缓冲设备为标准字符设备,主设备号为29,次设备号从0到31.(linux2.6可以自动分配主设备号)
清除LCD
Dd if=/dev/zero of=/dev/fb0 bs=240 count=320
运行应用程序,画图
./LCD
清除LCD
显示图片
Cat *.bmp > /dev/fb0
linux已经完成了大部分工作只需注册framebuffer和完善fb_info结构
linux使用struct fb_info来描述帧缓冲设备
struct fb_info{
struct fb_var_screeninfo var; /*可变参数*/
struct fb_fix_screeninfo fix; /*固定参数*/
struct fb_ops * fbops; /*帧缓冲操作*/
};
struct fb_var_screeinfo记录了用户可以修改的显示参数,包括屏幕分辨率等.
struct fb_fix_screeninfo记录了用户不可修改的显示控制器参数,如显示缓存的物理地址等.
struct fb_ops包含了对控制器进行操作的函数指针,系统默认为相应framebuffer字符设备设置了默认操作函数,用户可以自己编写
int register_framebuffer(struct fb_info * fb_info)/*注册帧缓冲设备*/
int unregister_framebuffer(struct fb_info * fb_info)