LCD驱动

来源:互联网 发布:淘宝橙路女生书包 编辑:程序博客网 时间:2024/05/22 11:36

时序图

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,次设备号从031.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)