概述
本文的copyright归yuweixian4230@163.com 所有,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途。
作者:yuweixian4230@163.com
博客:yuweixian4230.blog.chinaunix.net
通过学习,加深对framebuffer的了解,现在记录下 对 framebuff 的了解 认识
framebuffer:
1. framebuffer驱动程序的功能是什么??
1.1 在内存中分配一段内存,当做显存使用
1.2 对LCD 进行配置, 这样应用程序中,就可以得到 lcd 信息了
2.流程:
2.1 打开 /dev/fb0
2.2 ioctl操作获取当前显示屏幕的参数,如屏幕分辨率、每个像素点的比特数和偏移。根据屏幕 参数可计算屏幕缓冲区的大小
2.3 将屏幕缓冲区 映射到 用户空间
2.4 直接读/写 屏幕缓冲区,进行绘图和图片显示了
-
- struct fb_var_screeninfo vinfo;
- struct fb_fix_screeninfo finfo;
- 2.1打开 设备
-
- fdfd=open("/dev/fb0",O_RDWR);
-
- 2.2 获取LCD参数
-
- ioctl(fdfd,FBIOGET_FSCREENINFO,&finfo); //获取 固定参数
-
- ioctl(fdfd,FBIOGET_VSCREENINFO,&vinfo); //获取可变参数
-
- screensize=vinfo.xres*vinfo.yres*vinfo.bits_per_pixel/8; //计算一帧图片占了 多少字节
2.3 映射
-
- fbp=(char *)mmap(NULL,screensize,PROT_READ|PROT_WRITE,MAP_SHARED,fdfd,0);
-
- 2.4 绘制图片
-
- for(y=100;y<200;y++)
- for(x=100;x<300;x++)
- {
- location=(x+vinfo.xoffset)*(vinfo.bits_per_pixel/8)+
- (y+vinfo.yoffset)*finfo.line_length;
- /*
- location=x*2+y*vinfo.xres*2;;
- */
-
- int b=(x-100)/6;
- int g=31-(y-100)/16;
- int r=10;
- unsigned short int t=r<<11|g<<5|b;
- *((unsigned short int *)(fbp+location))=t;
- }
-
最后
以上就是优秀自行车为你收集整理的小结 frambuffer 原理及流程 (五)的全部内容,希望文章能够帮你解决小结 frambuffer 原理及流程 (五)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复