framebuffer测试程序
/* framebuffer简单测试程序 网上转载 很多次 的程序 :-) */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <asm/page.h>
#include <linux/fb.h>
#define TRUE 1
#define FALSE 2 typedef struct fbdev{
int fb;
unsigned long fb_mem_offset;
unsigned long fb_mem;
struct fb_fix_screeninfo fb_fix;
struct fb_var_screeninfo fb_var;
char dev[];
} FBDEV, *PFBDEV; int fb_open(PFBDEV pFbdev)
{
pFbdev->fb = open(pFbdev->dev, O_RDWR);
if(pFbdev->fb < )
{
printf("Error opening %s: %m. Check kernel config\n", pFbdev->dev);
return FALSE;
}
if (- == ioctl(pFbdev->fb,FBIOGET_VSCREENINFO,&(pFbdev->fb_var)))
{
printf("ioctl FBIOGET_VSCREENINFO\n");
return FALSE;
}
if (- == ioctl(pFbdev->fb,FBIOGET_FSCREENINFO,&(pFbdev->fb_fix)))
{
printf("ioctl FBIOGET_FSCREENINFO\n");
return FALSE;
} pFbdev->fb_mem_offset = (unsigned long)(pFbdev->fb_fix.smem_start) & (~PAGE_MASK);
pFbdev->fb_mem = (unsigned long int)mmap(NULL, pFbdev->fb_fix.smem_len +
pFbdev->fb_mem_offset,
PROT_READ | PROT_WRITE, MAP_SHARED, pFbdev->fb, );
if (-1L == (long) pFbdev->fb_mem)
{
printf("mmap error! mem:%ld offset:%ld\n", pFbdev->fb_mem,
pFbdev->fb_mem_offset);
return FALSE;
} return TRUE;
} void fb_close(PFBDEV pFbdev)
{
close(pFbdev->fb);
pFbdev->fb=-;
} void fb_memset (void *addr, int c, size_t len)
{
memset(addr, c, len);
} void draw_dot (PFBDEV pFbdev, uint32_t x, uint32_t y, uint8_t r, uint8_t g, uint8_t b)
{
unsigned int offset;
if (-1L == (long) pFbdev->fb_mem)
{
printf("mmap error! mem:%ld offset:%ld\n", pFbdev->fb_mem,
pFbdev->fb_mem_offset);
return;
} offset = y*pFbdev->fb_fix.line_length+*x;
fb_memset((void*)(pFbdev->fb_mem + pFbdev->fb_mem_offset + offset), b, );
fb_memset((void*)(pFbdev->fb_mem + pFbdev->fb_mem_offset + offset + ), g, );
} int main(void)
{
FBDEV fb;
memset(&fb, , sizeof(FBDEV));
strcpy(fb.dev, "/dev/fb0");
if(fb_open(&fb)==FALSE)
{
printf("open frame buffer error\n");
return ;
} printf("depth(bits per pixel) = %d\n",fb.fb_var.bits_per_pixel);
printf("smemlen = %d\n",fb.fb_fix.smem_len);
printf("fix_line(in byte) = %d\n",fb.fb_fix.line_length); int i,j;
for(i=; i<; ++i)
for(j = ;j<;++j)
{
draw_dot(&fb,i,j,0xff,0xff,0xff);
} fb_close(&fb);
return ;
}
framebuffer测试程序的更多相关文章
- Linux framebuffer测试程序
Linux framebuffer的框架非常简单, 对于应用程序就是操作一块内存(俗称帧缓存), 当然也有可能是双缓存, 一般用于高帧率场景, 一块帧在填充数据时, 另一块在显示, 接着对调过来, 那 ...
- sc7731 Android 5.1 LCD驱动简明笔记之二
此篇笔记基于sc7731 - android 5.1,对lcd的framebuffer做一个简明笔记. 一共分为两大部分:第一部分,关于LCD的硬件方面的:第二部分,关于lcd核心处理(framebu ...
- 调试 lvgl 的一个例子
发现一个新的 vector graphic 的库,用 C 写的,效果丰富,接口简单,而且是 MIT License,所以想试一试.因为它支持 framebuffer,所以,在 linux 上先走一个. ...
- 嵌入式Linux基于framebuffer的jpeg格式本地LCD屏显示
在基于Linux的视频监控采集系统中,摄像头采集到的一帧视频图像数据一般都是经过硬件自动压缩成jpeg格式的,然后再保存到摄像头设备的缓冲区.如果要把采集到的jpeg格式显示在本地LCD屏上,由于我们 ...
- uboot-tiny4412启动流程(下)----如何将自己的裸板测试程序加入uboot中启动测试
今天在工作上搞了一天高通的芯片uboot程序,目的是希望将一个裸板的程序移植到uboot中,并且开机让它运行.这个芯片是NXP4330,目前是高通的一个芯片,基于ARM-contexA9架构,那么就跟 ...
- 十四、使用framebuffer填充纯色
简单描述一下framebuffer的使用,它其实就相当于将屏幕上的像素映射到内存中,改变内存中的内容后屏幕自动就变颜色了. 首先要调用open("/dev/fb0", O_RDWR ...
- V4L2 camera 驱动 capture测试程序【转】
转自:http://blog.csdn.net/kickxxx/article/details/6336346 在网上找了一个测试程序, 看了看,是根据capture.c修改的.测试步骤如下 . gc ...
- 全网络最正确的让 Linux 开机进入字符界面的方法及设置 FrameBuffer 分辨率的方法
引言 这个标题有点长,是为了在标题中就把问题说清楚,以便搜索引擎能够把有需要的朋友准确地带到我这里来.目前在网络上,很多关于 Linux 方面的知识是过时的和错误的.我标题中指出的两个知识点就是其中的 ...
- CSharpGL(29)初步封装Texture和Framebuffer
+BIT祝威+悄悄在此留下版了个权的信息说: CSharpGL(29)初步封装Texture和Framebuffer +BIT祝威+悄悄在此留下版了个权的信息说: Texture和Framebuffe ...
随机推荐
- 在RHEL6_Oracle_Linux_6上生成正确的udev_rule_规则文件
1. #首先确认是 Linux 6.0以上版本 [root@vrh6 dev]# cat /etc/issue Oracle Linux Server release 6.2Kern ...
- Vue复杂路由器的实现
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 全面解读php-引用变量(&)
本文讲述引用传值的核心原理,看完即可扫清一切和引用传值相关的内容,不会了记得画图. 一.memory_get_usage的使用 传值赋值 // 定义一个变量 $a = range(0, 10000); ...
- eclipse subclipse svn 插件安装使用
一.在线安装 1.打开Eclipse,菜单栏中选择"Help"->"Install New SoftWare..." 2.在弹出的对话框中,点击" ...
- python接口测试之mock(三)
前面介绍了moco的详细的使用,它主要是基于moco-runner-0.11.0-standalone.jar,通过编写json的文件来实现,mock翻译过来就是模拟的意思,也就是说,它是将测试对象所 ...
- http协议详解之响应报文 3
--------------响应示例--------------------------response#状态行HTTP/1.1 200 OK #协议及版本号.状态码.状态描述 #消息报头Date: ...
- PyQt GUI--信号与槽
目录 目录 前言 系统软件 GUI的主循环 信号与槽 信号的应用 使用控件类的内建信号 自定义信号 带参数的信号 槽的应用 创建槽 信号和槽的连接 最后 前言 PyQt中的信号和槽,就是一个触发和执行 ...
- Flume采集日志
角色 Source 数据来源 (exec, kafka, http…)Channel 数据通道 (memory,file,jdbc)Sink 数据目的地 (kafka,hdfs,es…) Agent ...
- python 并发编程 多进程 生产者消费者模型总结
生产者消费者模型总结 生产者消费者模型什么时候用? 1.程序中有两类角色 一类负责生产数据(生产者) 一类负责处理数据(消费者) 2.引入生产者消费者模型为了解决的问题是 平衡生产者与消费者之间的速度 ...
- poj2352(树状数组)
题目链接:https://vjudge.net/problem/POJ-2352 题意:在直角坐标系中给出n个点的 (x,y),(0<=x,y<=32000),定义每个点的level为(x ...