有的打不开fb,你可以参考一下这个
代码如下:
#include <linux/fb.h>
#include <stdio.h>
#include <sys/ioctl.h>
#include <linux/types.h>
#include <linux/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/mman.h>
#include <string.h>
#include <errno.h>
#include <malloc.h>
int main()
{
//打开fb0
int fb = open("/dev/fb0",O_WRONLY);
if(fb < 0)
{
printf("fail to open the file ");
return -1;
}
struct fb_var_screeninfo var;
//得到fb的相关参数
if(ioctl(fb,FBIOGET_VSCREENINFO,&var) < 0)
{
printf("fail to setup");
return -1;
}
printf("width = %d ",var.xres);
printf("height = %d ",var.yres);
printf("bpp = %d\n",var.bits_per_pixel/8);
//fb0的大小
int size = var.xres * var.yres * (var.bits_per_pixel/8);
char *ch = (char*)malloc(size);
int i;
/*for(i = 0 ; i < size/2;i += 2)
{
ch[i] = 0x00;
ch[i+1] = 0xf8;
}*/
//设置颜色(此处按照16色565标准),即对ch赋值
//ps:16位对应两个字节(ch[i],ch[i+1]),赋值是反着赋值(有的不是),
//即红色对应的二进制是1111 1000 0000 0000 应该赋值ch[i]=0xf8,ch[i+1]=0x00
for(i = 0;i<size;i += 2)
{
ch[i] = 0xf8;
ch[i+1] = 0x00;
}
//memset(ch,0xff,size);
//把ch写入fb,实现改变屏幕的颜色
write(fb,ch,size);
//关闭fb
close(fb);
return 0;
}
***********************************************
在linux下测试,需要切换到文本界面(ctrl+alt+f1)