Linux驱动修炼之道-framebuffer(下)

努力成为linux kernel hacker的人李万鹏原创作品,为梦而战。转载请标明出处

http://blog.csdn.net/woshixingaaa/archive/2011/05/29/6452690.aspx

用户写屏程序:

这个是网上流行的用户测试程序,总结一下用户程序写屏步骤:
1)打开设备节点
2)获得fb_info的固定参数与可变参数结构体
3)计算帧缓冲区大小
4)调用mmap将缓冲区映射到进程的地址空间
5)写屏
这里注意fb_var_screeninfo中的可见分辨率xres,yres是屏的实际大小,即320,240。而虚拟分辨率xres_virtual,yres_virtual是虚拟窗口的大小。但是在s3c2440中被设为相等的。看源码:
s3c24xxfb_probe函数中:

s3c2410fb_check_var函数中:

所以xres=xres_virtual,yres=yres_virtual。
而实际的xres_virtual=xres + 2 * x_offset,yres_virtual = yres + 2 * y_offset。可以看s3c2440的datasheet,有一个图,

Linux驱动修炼之道-framebuffer(下)_第1张图片

看那个for循环,如果是在PC机上当然就是32BPP,R,G,B分别一个字节,另外一个字节空着或者干其他的事情,比如这里就用来表示透明度。如果在开发板上运行就是16BPP,在开发板上运行要改一下x,y的范围。在开发板上运行清屏命令:

然后运行效果如下:

Linux驱动修炼之道-framebuffer(下)_第2张图片

你可能感兴趣的:(linux,.net,Blog)