LCD驱动

时序图

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值