在应用电脑时,你知道你应用的是操作系统么?一定会有人说微软的Windows,不过你了解Linux么?有人说Linux不如Windows,其实不然,这是因为你不懂Linux,本文介绍一些Linux知识,比如Linux Framebuffer编程问题,希望本文对你Linux Framebuffer编程有所帮助。Linux framebuffer设备文件名通常是/dev/fb0,1,2等。
控制framebuffer设备的一般步骤如下:1) 打开设备,映射framebuffer2)依照硬件要求,准备好数据3)把数据复制到framebuffer
例子程序如下:
1)打开设备,映射framebuffer
staticvoid*fbbuf; intopenfb(char*devname) { intfd; fd=open(devname,O_RDWR); if(ioctl(fd,FBIOGET_VSCREENINFO,&fbvar)<0) return-1; bpp=fbvar.bits_per_pixel; screen_size=fbvar.xres*fbvar.yres*bpp/8; fbbuf=mmap(0,screen_size,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0); returnfd; }
2)数据准备,假设lcd控制器被初始化为565,16bit格式的
staticinlineintmake_pixel(unsignedinta,unsignedintr,unsignedintg,unsignedintb) { return(unsignedint)(((r>>3)<<11)|((g>>2)<<5|(b>>3))); }
3) 把想要显示的数据复制到framebuffer,假设把framebuffer填充成一种颜色
staticvoidfill_pixel(unsignedintpixel,intx0,inty0,intw,inth) { inti,j; unsignedshort*pbuf=(unsignedshort*)fbbuf; for(i=y0;i<h;i++){ for(j=x0;j<w;j++){ pbuf[i*screen_width+j]=pixel; } } }
下面程序把lcd屏幕填充成蓝色
fill_pixel(make_pixel(0,0,0,0xff),0,0,screen_width,screen_height);
以上就是Linux Framebuffer编程的过程。
人生没有彩排,只有现场直播,所以每一件事都要努力做得最好