linux framebuffer 例子

Linux Framebuffer显示demo——jpeg图像显示 Linux Framebuffer应用编程——jpeg显示在RGB888 Lcd显示屏 包含源代码.c文件,运行在Arm9开发板的可执行文件,一张jpg图像(分辨率800*533) 相关原理详见【正点原子文档】I.MX6U嵌入式Linux C应用编程指南V1.4 或者可以去我的博客找《Linux Framebuffer编程之lcd屏幕显示jpeg图像》 立即下载

http://blog.youkuaiyun.com/fyzhao/archive/2008/12/11/3499805.aspx

 

昨天做的一个极简单的framebuffer的例子,用来学习怎样操作fb设备。

  这段代码是在picogl的vesafb backend部分的基础上简出来的,所以变量名还保留着。

流程如下:

1 打开framebuffer设备;

2 通过ioctl取得fixed screen information;

3 通过ioctl取得variable screen information;

4 通过mmap映射设备内存到进程空间;

5 写framebuffer;

6 终止。

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <fcntl.h>
  5. #include <linux/fb.h>
  6. #include <sys/mman.h>
  7. struct fb_fix_screeninfo FixedInfo;
  8. struct fb_var_screeninfo OrigVarInfo;
  9. static int FrameBufferFD = -1;
  10. void *FrameBuffer = (void *) -1;
  11. void openFBDEV(void) {
  12.     /* open the framebuffer device */
  13.     FrameBufferFD = open("/dev/fb0", O_RDWR);
  14.     if (FrameBufferFD < 0) {
  15.         fprintf(stderr, "Error opening /dev/fb0/n");
  16.         exit(1);
  17.     }
  18.     /* Get the fixed screen info */
  19.     if (ioctl(FrameBufferFD, FBIOGET_FSCREENINFO, &FixedInfo)) {
  20.         fprintf(stderr, "error: ioctl(FBIOGET_FSCREENINFO) failed/n");
  21.         exit(1);
  22.     }
  23.     /* get the variable screen info */
  24.     if (ioctl(FrameBufferFD, FBIOGET_VSCREENINFO, &OrigVarInfo)) {
  25.         fprintf(stderr, "error: ioctl(FBIOGET_VSCREENINFO) failed/n");
  26.         exit(1);
  27.     }
  28.        
  29.     if (FixedInfo.visual != FB_VISUAL_TRUECOLOR && FixedInfo.visual != FB_VISUAL_DIRECTCOLOR) {
  30.         fprintf(stderr, "non-TRUE/DIRECT-COLOR visuals (0x%x) not supported by this demo./n", FixedInfo.visual);
  31.         exit(1);
  32.     }
  33.     /*
  34.      * fbdev says the frame buffer is at offset zero, and the mmio region
  35.      * is immediately after.
  36.      */
  37.     /* mmap the framebuffer into our address space */
  38.     FrameBuffer = (void *) mmap(0, /* start */
  39.         FixedInfo.smem_len, /* bytes */
  40.         PROT_READ | PROT_WRITE, /* prot */
  41.         MAP_SHARED, /* flags */
  42.         FrameBufferFD, /* fd */
  43.         0 /* offset */);
  44.     if (FrameBuffer == (void *) - 1) {
  45.         fprintf(stderr, "error: unable to mmap framebuffer/n");
  46.         exit(1);
  47.     }
  48. }
  49. void closeFBDEV(void) {
  50.     munmap(FrameBuffer, FixedInfo.smem_len);
  51.     close(FrameBufferFD);
  52. }
  53. int main() {
  54.     openFBDEV();
  55.     fprintf(stderr, "openFBDEV finish/n");
  56.     memset(FrameBuffer, 128, FixedInfo.smem_len);
  57.     sleep(5);
  58.     closeFBDEV();
  59.     fprintf(stderr, "closeFBDEV finish/n");
  60.     return 0;
  61. }
  62. 补充一点,比如直接写屏操作:
  63. u_int * screen_memory = (u_int*)mmap(0,
                                            buffer_size,//fixinfo.smem_len,
                                          PROT_READ | PROT_WRITE,
                                          MAP_SHARED,
                                          fbdev,
                                          0);
  64. for(i=0;i<buffer_size/4;i++)    //buffer_size以字节为单位
            *(screen_memory+i) = 0xff;    //red
        sleep(2);
        for(i=0;i<buffer_size/4;i++)
            *(screen_memory+i) = 0xff00;//green
        sleep(2);
        for(i=0;i<buffer_size/4;i++)
            *(screen_memory+i) = 0xff0000;//blue
        sleep(2);

在ARM Linux上使用OpenGL 这两天在ARM上跑了一个OpenGL,应该说是OpenGL|ES的软件包,虽然我觉得可能后我不会使用这个软件包,但是还是记录下来以备忘记。 先全局介绍下,首先,什么是OpenGL和OpenGL|ES。OpenGL是一套绘图函数的标准,OpenGL|ES是OpenGL中针对嵌入式系统的一套函数子集。OpenGL|ES的官方是http://www.khronos.org/opengles/, 上面有更多的信息。需要注意的是,OpenGL仅仅是标准,而如果你要使用OpenGL,则需要找到可以实现这些OpenGL标准函数的程序库或源代码。 目前,在ARM这种一般没有图形加速器的平台上,OpenGL|E 立即下载

相关推荐

Unity FPS射击控制系统:数据驱动的武器行为解耦方案

在Unity第一人称射击(FPS)开发中,射击系统常因输入、状态、行为耦合导致连发异常、换弹冲突与网络同步失准。其本质是缺乏对‘武器行为’(如后坐力曲线、弹药逻辑)与‘射击控制’(如输入合法性校验、冷却调度)的正交分离。本方案基于ScriptableObject实现WeaponData数据资产化,配合ShootingController状态机服务,达成输入解耦、运行时参数可调、协程受控、网络预测友好等工程目标。适用于中大型FPS项目架构升级与数据驱动转型,尤其解决Unity InputSystem与物理反馈

weixin_30536861的博客 609

在嵌入式linux上玩OpenGL

在我的嵌入式linux上板子资源和性能还是有限。想玩下OpenGL,倒不是板子flash或内存太小,而是底层图形接口是基于framebuffer的dev/fb0的,在标准的OpenGL下不支持。网上了解到在嵌入式linux或单片机上,可以跑OpenGL的一个子集,叫做TinyGL。OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图象(二维的亦可)。OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库。

猫哥 的沉淀、积累、总结。天天学习,好好向上...c/c++,嵌入式 linux,Android,HarmonyOS,AIOT) 5223

【软件介绍】RVC本地部署使用方法

【摘要】RVC是一款功能强大的开源语音转换工具,具有实时处理、多音效选择、高质量音频处理等特点。文章详细介绍了RVC的安装与使用方法:1)配置Python环境;2)根据电脑系统选择对应安装包解压;3)启动程序进入浏览器操作界面。重点讲解了声音克隆的关键步骤:建议使用短音频素材,选择合适训练方法(推荐pm或rmvpe),设置100次训练轮数,生成的模型文件存入weights文件夹。最后通过上传音频即可实现声音克隆。操作过程需注意保持程序运行状态,并提供了相关资源下载地址。

心动的那一刻,记忆便盛开了花 2977

Qt5.X 在Arm上LinuxFB平台旋转显示

1,修改Qt5源码:(1) 修改linuxfb/qlinuxfbscreen.h,如下所示:class QLinuxFbScreen : public QFbScreen { Q_OBJECT public: QLinuxFbScreen(const QStringList &amp;args); ~QLinuxFbScreen(); bool initializ...

immortal018的博客 8161

微信小程序 | 小程序开发

事实上,目前小程序在我们生活中已经随处可见(特别是这次疫情的推动,不管是什么岗位、什么年龄阶段的人,到哪都需要打开健康码)WePY是由腾讯开源的,一款让小程序支持组件化开发的框架,通过预编译的手段让开发者可以选择自己喜欢的开发风格去开发小程序。Mpvue是一个使用Vue开发小程序的前端框架,也是 支持 微信小程序、百度智能小程序,头条小程序 和 支付宝小程序;微信小程序、支付宝小程序、淘宝小程序、抖音小程序、头条小程序、QQ小程序、美团小程序等。,其他平台的小程序往往是平台本身的一些公司或者顺手开发的。

CoderHing的博客~ 1万+

30天Python入门(第一天:Python入门)

30天带你入门Python,这是第一天

Science prince的博客 583

飞凌6410+linux2.6.28+PicoGL

突发奇想要把openGL移植到板子上,于是上网搜索,找到一篇相当不错的文章,整个移植过程基本上都是按照这个来的: http://blog.lehu.shu.edu.cn/byman/A264749.html 首先向牛人致敬! 然后说一下自己做的不太一样的地方,就一个,交叉编译器偷懒没有使用文章里面的方法,直接使用的arm-linux-gcc 4.2.2

yyandhh的专栏 1626

如何在 Mac 上下载安装 Xcode——并为 iOS 开发更新它原文

下载 Xcode安装命令行工具打开新版本删除文件注意,我在下面的步骤中列出了一些终端命令。这些命令可以被输入到你现在的工作目录中。这意味着你不需要导航到任何特定的文件夹。如果你真的想这样做,你可以在输入下面的步骤中的命令之前先输入== cd==。这将使你返回到主文件夹。

专注于AI领域前沿知识,业余爱好开发软件 4666

linux framebuffer 例子 (2)

把前面一篇的例了加强一下。上一个例子打开了fbdev设备并一次性地向里面写了一屏的数据,把整个屏幕画成红色。但这个时候如果用Alt+Fi切换一下虚拟终端,画出的红色马上消失。这是因为切换终端之后,这个终端也要维护屏幕的输出,重绘的framebuffer。  DirectFB和PicoGL在使用framebuffer的时候都避免了这种情况的发生,方法就是操作tty设备。原理很简单,就是打开一个新的终

-第二月-的专栏 5954

ABAP CDS 实体权限控制,从 DCL 到 PFCG 的完整运行逻辑

本文探讨了SAP S/4HANA开发中CDS View的权限控制机制。核心观点如下: CDS access control通过DCL语言实现数据实例级权限控制,而非替代传统PFCG权限体系,二者形成互补关系:PFCG控制功能入口权限,DCL控制数据可见性。 DDL定义数据结构,DCL定义访问规则。DCL通过角色映射将数据字段与PFCG授权对象关联,运行时自动将权限条件注入SQL查询,实现数据过滤。 访问控制行为特点: 无DCL role不会默认拒绝访问 权限检查通过减少结果集而非抛出错误实现 需配合@Acc

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 101

利用Python爬虫采集京东商品评论情感分析案例(含完整代码)

在电商蓬勃发展的今天,商品评论蕴含着巨大的商业价值。本文以京东商品评论为研究对象,系统介绍如何使用Python构建一个完整的评论采集与情感分析系统。文章涵盖京东反爬机制分析、动态请求模拟、评论数据解析、中文文本预处理、基于SnowNLP和深度学习的情感极性分类、以及可视化展示等完整技术链路。所有代码均基于2025-2026年最新可用接口编写,并提供可直接运行的完整源码。全文力求详实,总字数逾八千字,适合Python数据分析从业者、电商运营人员及自然语言处理初学者参考实践。目录摘要第一章 引言。

2201_76125261的博客 88

linux下利用framebuffer画点的程序小例子

<br />/* * ===================================================================================== * * Filename: framebuffer.c * * Description: linux下利用framebuffer画点的程序小例子 * * Version: 1.0 * Created: 2011年02月25日 10时

c-dev 2934

MySQL 一一 MySQL基本使用

1、数据库 简单来说,所谓的数据库就是存储数据的容器,而且是永久存储的。 2、为什么需要数据库 3、为什么要学习MySQL数据库 最早MySQL数据,瑞典AB公司开发的一款开源型的关系型数据库。 随着时间的推移,瑞典AB公司把MySQL数据库转让给Sun公司(Java语言的创始公司) 后来,Sun公司经营不善,又把MySQL数据库转让给甲骨文公司(Oracle数据库) 4、数

Guizy 7万+

linux下的framebuffer的例子(转)

例子实现了直接写屏的功能,即把屏幕清空(变黑),程序的流程大致为:打开一个FrameBuffer设备;通过mmap调用把显卡的物理内存空间映射到用户空间;通过映射关系直接写内存。头文件///////////////////////////////////////////////////// fbtools.h ////////////////////////////////

游手好弦 信步涂鸦 1699

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

linux fb应用例子,Linux下利用framebuffer画点的程序小例子

Linux下利用framebuffer画点的程序小例子:/** =====================================================================================** Filename: framebuffer.c** Description: linux下利用framebuffer画点的程序小例子**...

weixin_39667626的博客 393

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

与afreez一起学习DirectFB之:一个linux下的framebuffer例子的学问

摘要:通过一个一个framebuffer例子,复习了内存分配的应用。其中的framebuffer例子为网上流行的(确实有bug的),在编译运行的过程中又重新温习了好多差不多已经被遗忘的知识点,写出来和大家分享!-------------------------------------------------------------------------------------------

afreez's home 1877

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

linux直接写framebuffer linux 直接 对 Frame Buffer 操作,写画面缓存例子,c语言读写framebuffer

提供的中断调用来实现直接写屏,故Linux抽象出FrameBuffer这个设备来供用户态   进程实现直接写屏。   在继续下面的之前,先说明几个背景知识:   1、FrameBuffer主要是根据VESA标准的实现的,所以只能实现最简单的功能。   2、由于涉及内核的问题,FrameBuffer是不允许在系统起来后修改显示模式等一系   列操作。(好象很多人都想要这样干,这是不被允许的

Done Lin的专栏 4633

linux fb0测试,与afreez一起学习DirectFB之:一个linux下的framebuffer例子的学问

与afreez一起学习DirectFB之:一个linux下的framebuffer例子的学问摘要:通过一个一个framebuffer例子,复习了内存分配的应用。其中的framebuffer例子为网上流行的(确实有bug的),在编译运行的过程中又重新温习了好多差不多已经被遗忘的知识点,写出来和大家分享!-------------------------------------------------...

weixin_39722921的博客 394

FrameBuffer的原理

一、FrameBuffer的原理 FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。 Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Linux抽象出 FrameBuffer这个设备来供用户态进程实现直接写屏。Framebuffer机制模仿显卡的功能,将显卡硬件结构抽象掉,可以通过 Framebuffe

sunpengshine的专栏 515

非常好的将framebuffer驱动的文章,看过后受益匪浅

*一、FrameBuffer的原理*      FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。 Linux是工作在保护模式下,所以用户态进程是无法象DOS那样使用显卡BIOS里提供的中断调用来实现直接写屏,Linux抽象出FrameBuffer这-个设备来供用户态进程实现直接写屏。Framebuffer机制模仿显卡的功能,将显卡硬件结构抽象掉,可以通过Fram

angle_birds的专栏 1362
上一篇: Framebuffer编程How-to
下一篇: 【原】qt embedded 4.5 实现屏幕旋转 ,lcd旋转 transform
#Page#
博客等级 码龄23年 1691粉丝 360原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值