Framebufffer 初探

Framebuffer概述:

帧缓冲类似一个蓄水池,存放来自用户进程的数据,然后把这些数据再输入显示设备中。对于用户而言,帧缓冲就是内存中的一块区域,可以读、写、映射。只要在初始化阶段把显示设备映射到用户进程空间,可以理解为将屏幕中的每一点和帧缓冲的每一点一一对应起来。这样接下来就可以对这块内存区域填充任何已经定义的像素以及颜色,而屏幕也就可以根据刚才写入的像素及颜色呈现出五彩缤纷的画面


Framebuffer在用户空间内使用的数据结构主要有fb_fix_screeninfo和fb_var_screeninfo,它们的主要内容如下:


    struct fb_fix_screeninfo {

        char id[16]; /* 设备名*/

        unsigned long smem_start; /* frame buffer 缓冲区起始地址(物理地址)*/

        __u32 smem_len; /* 缓冲区长度*/

        __u32 type; /* 设备类型,例如TFT或STN*/ ……

        __u32 visual; /* 色彩类型,真彩色、假彩色或单色*/

        ……

        __u32 line_length; /* 屏幕上每行的字节数 */

        unsigned long mmio_start; /* IO映射区起始地址(物理地址) */

        __u32 mmio_len; /* IO 映射区长度 */

        __u32 accel; /* 指出使用的加速卡是哪些特定的芯片 */

        __u16 reserved[3]; /* 系统保留*/ }



    struct fb_var_screeninfo {

        __u32 xres; /* visible resolution 可见分辨率 */

        __u32 yres;

        __u32 xres_virtual; /* virtual resolution 虚拟分辨率 */

        __u32 yres_virtual;

        __u32 xoffset; /* 从虚拟分辨率到可见分辨率的偏移量*/

        __u32 yoffset;

         

        __u32 bits_per_pixel; /* 像素深度 */

        __u32 grayscale; /* 灰度级 */

        struct fb_bitfield red;

        struct fb_bitfield green;

        struct fb_bitfield blue;

        struct fb_bitfield transp; /* 透明度 */

         

        __u32 nonstd; /* 非标准像素格式 */

        ……

        __u32 pixclock; /* 像素时钟,单位是皮秒*/

        __u32 left_margin; /* 左侧边缘区*/

        __u32 right_margin; /*右侧边缘区 */

        __u32 upper_margin; /*顶部边缘区 */

        __u32 lower_margin;

        __u32 hsync_len; /*水平扫描边缘区 */

        __u32 vsync_len; /*垂直扫描边缘区 */ ……. }


附上利用framebuffer画出简单图形的代码,亲测可用:

http://blog.sina.com.cn/s/blog_4d32d0b40100gjrp.html


framebuffer了解更多参见:

http://blog.chinaunix.net/uid-22028680-id-3763141.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值