ok6410LCD测试程序

1.在屏幕上分别显示红绿蓝三个长方形:

 

#ifndef LCD_APP_H
#define LCD_APP_H

/*自定义结构体用来在用户空间里管理帧缓冲的信息*/
typedef struct fd_dev
{
	int fd;//帧缓冲设备文件描述符
	void *pfb;//指向帧缓冲映射到用户空间的首地址
	int xres,yres,siz;//一帧图像的宽度、高度和大小
	int bpp;//每个像素的位数
}fb_dev_t;



/*实现缓冲设备的打开和关闭操作的接口*/
int fb_open(fb_dev_t *fbd,char *fbn)
{
	struct fb_var_screeninfo vinfo;
	
	
	
	if(-1 == (fbd->fd=open(fbn,O_RDWR))){
		printf("Error:cannot open framebuffer device.\n");
		_exit(EXIT_FAILURE);
	}
	
	
	/*获取LCD的可变参数*/
	ioctl(fbd->fd,FBIOGET_VSCREENINFO,&vinfo);
	//将可变参数的中的相关数据保存到自定的结构体fbd中
	fbd->xres = vinfo.xres;
	fbd->yres = vinfo.yres;
	fbd->bpp = vinfo.bits_per_pixel;
	
	fbd->siz = fbd->xres * fbd->yres *fbd->bpp/8;
	
	
	printf("%dx%d,%dbpp,screensize = %d\n",fbd->xres,fbd->yres,
	fbd->bpp,fbd->siz);
	
	
	
	/*将帧缓冲映射到内存*/
	fbd->pfb = mmap(0,fbd->siz,PROT_READ|PROT_WRITE,
	MAP_SHARED,fbd->fd,0);
	
	
	if((int)fbd->pfb == -1){
		printf("Error:failed to map framebuffer device to memory.\n");
		_exit(EXIT_FAILURE);
	}
	return 0;
}



int fb_close(fb_dev_t *fbd)
{
	munmap(fbd->pfb,fbd->siz);//解除映射
	close(fbd->fd);//关闭设备文件
	
}



/*填充制定的巨型区域*/
int fb_drawrect(fb_dev_t *fbd,int x0,int y0,int w,int h,int color)
{
	int x,y;
	for(y=y0;y<y0+h;y++)
	{
		for(x = x0;x<x0+w;x++)
			*((short*)(fbd-
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值