FrameBuffer 应用

news/2023/5/28 9:10:31

1.Frame 是帧的意思, buffer 是缓冲的意思,所以 Framebuffer 就是帧缓冲。

Framebuffer 就是一块内存,里面保存着一帧图像。帧缓冲(framebuffer)是 Linux 系统中的一种显示驱动接口,它将显示设备(譬如 LCD) 进行抽象、 屏蔽了不同显示设备硬件的实现对应用层抽象为一块显示内存(显存),它允许上层应用程序直接对显示缓冲区进行读写操作,而用户不必关心物理显存的位置等具体细节,这些都由Framebuffer 设备驱动来完成。

2.在 Linux 系统中,显示设备被称为 FrameBuffer 设备(帧缓冲设备),所以 LCD 显示屏自然而言就是 FrameBuffer 设备

FrameBuffer 设备对应的设备文件为/dev/fbX(X 为数字, 0、 1、 2、 3 等), Linux下可支持多个 FrameBuffer 设备,最多可达 32 个,分别为/dev/fb0 到/dev/fb31, 开发板出厂系统中, /dev/fb0设备节点便是 LCD 屏

3.在应用程序中,操作/dev/fbX 的一般步骤如下:

①、首先打开/dev/fbX 设备文件。

②、 使用 ioctl()函数获取到当前显示设备的参数信息,譬如屏幕的分辨率大小、像素格式,根据屏幕参数计算显示缓冲区的大小。

③、通过存储映射 I/O 方式将屏幕的显示缓冲区映射到用户空间(mmap)。

④、映射成功后就可以直接读写屏幕的显示缓冲区,进行绘图或图片显示等操作了。

⑤、完成显示后, 调用 munmap()取消映射、并调用 close()关闭设备文件。

4.使用 ioctl()函数获取 LCD 的可变参数信息和固定参数信息

5.使用 mmap()将显示缓冲区映射到用户空间

数据量是比较庞大的, 使用普通 I/O 方式必然导致效率低下,所以才会采用存储映射I/O 方式。

6.具体代码的实现各位读者自己去看, 非常简单,来看下 main()中做了哪些事情:

1)首先调用 open()打开 LCD 设备文件得到文件描述符 fd;

2)接着使用 ioctl 函数获取 LCD 的可变参数信息和固定参数信息,通过得到的信息计算 LCD 显存大

小、得到 LCD 屏幕的分辨率,I.MX6U 开发板出厂系统将 LCD 实现为一个 RGB888 显示设备,所以程序中自定义的 4 个函数在操作 LCD 像素点时、都是以 RGB888的格式写入颜色值。

3)接着使用 mmap 建立映射;

4)映射成功之后就可以在应用层直接操作 LCD 显存了,调用自定义的函数在 LCD 上画线、画矩形、画方块;

5)操作完成之后,调用 munmap 取消映射,调用 close 关闭 LCD 设备文件,退出程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4558531.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

Word 允许西文在单词中间换行,没用/无效 终极办法

有时在写论文中,英文的调整相当麻烦,为了节约版面,会设置允许西文在单词中间换行。但有时不希望这样,特别是在复制网上英文时,会出现单词分断换行情况,如何解决: 1.一般办法。 在Word选择要调整…

2017年Q1中国服务器市场研究报告

2017年,云计算、大数据这些原来陌生的IT产业逐渐走向成熟,开始从“建设期”走向“普及期”,在2017年Q1中国服务器市场ZDC报告中我们发现,服务器作为所有互联网行业的支柱产品/技术正在积极调整姿态,各大服务器供应商相…

PostgreSQL 技术内幕(五)Greenplum-Interconnect模块

Greenplum是在开源PostgreSQL的基础上,采用MPP架构的关系型分布式数据库。Greenplum被业界认为是最快最具性价比的数据库,具有强大的大规模数据分析任务处理能力。 Greenplum采用Shared-Nothing架构,整个集群由多个数据节点(Segm…

数学建模(NO.11多元线性回归分析)

多元线性回归分析一.应用二.三个关键词三.目的四.回归模型分类五.数据分类1.三种数据2.模型与数据对应六.数据收集网址七.一元线性回归1.概念2.对“线性”理解1.纠正线性2. 预处理3.什么时候取对数?3.回归系数的解释4.内生性探究5. 解释变量与控制变量6.四类模型回归…

数据分析的心法、手法和利器

“人人都是数据分析师”,这句话并不是空穴来风,而是随着大数据的深入落地,每个产业都会以数据驱动的模式经营。因此,这要求产业中的每个人都必须能够分析数据。同时,伴随着技术的发展,也会有很多简单的工具…

2-需求分析

一、需求收集 (1)需求概念 以下常见三种情形 提问题 目的不明确,明确困境 提目的 目的明确,解决方案不明确 提方案 目的明确,方案明确 概念 本质是用户的预期和现状之间的差异产生的需求在提出需求时,往…

GW1NSR-LV4CQN48GC6/I5 FPGA呼吸灯

环境 pwm.v $ cat pwm.v module Pwm( input clk, input [31:0] period, input [31:0] duty, output pwmout ); reg [31:0] counter; reg r_pwmout; always (posedge clk) begin if(counter < duty) begin r_pwmout 1; end…

低代码,没有想象的那么容易,一个过来人的吐槽

我一个小镇青年&#xff0c;大学学的电子信息专业&#xff0c;毕业几年过后&#xff0c;就一直开始承接外包项目&#xff0c;才开始还行&#xff0c;团队小&#xff0c;业务不复杂&#xff0c;小日子过得还算不错&#xff0c;这种样子持续好几年&#xff0c;中途兜兜转转&#…

DBCO高分子PEG_DBCO-PEG-Lipoic COOH_二苯并环辛炔-聚乙二醇-硫辛酸

DBCO-PEG-Lipoic acid“点击化学"一般由叠氮化物&#xff08;azide&#xff09;和炔烃&#xff08;alkyne&#xff09;作用形共价键&#xff0c;具有高效稳定&#xff0c;高特异性等优点。反应不受PH影响&#xff0c;能在常温条件下的水中进行,甚至能在活细胞中进行。DBCO…

100小时学SAP-SD(June笔记)

100小时学SAP-SD(June笔记) 1.建立销售组织、分销渠道、产品组并分配 1&#xff09;说明 SD销售组织是为企业销售而建立的组织单元&#xff0c;用于物料和服务的销售。销售组织下又可以分为若干个分销渠道&#xff0c;用于不同的市场服务&#xff1b;分销渠道又可以按产品组…

聊天止于呵呵------使用的map<pair<string,string>,int> m;

这题第一次遇到的时候&#xff0c;用的模拟写出来了。其中用到了 map<pair<string,string>,int> 类型。在学校OJ上写的这道题&#xff1a;传送门 样例&#xff1a; 输入&#xff1a; A->B: Hello! A->C: Hi! B->A: Hehe B->D: Hei! D->B: How are…

湖南省第十一届程序设计大赛 (水题)聊天止于呵呵

模拟题老师基本上都不讲&#xff0c;因为只要足够细心&#xff0c;大家都能做对。集训到今天就结束了。这次下来&#xff0c; 发现自己做模拟题已经很有手感了&#xff0c;相较于之前&#xff0c;真的有很大的成长。 简单的分析下这道题&#xff0c; 1、首先&#xff0c;要找…

干货 | 互联网广告数据的匿名化方案研究

以下内容整理自清华大学《数智安全与标准化》课程大作业期末报告同学的汇报内容。第一部分&#xff1a;背景介绍一、匿名化必要性互联网广告具有非常重要的商业价值&#xff0c;同时也是涉及数据处理十分密集的行业&#xff0c;出现了操作规范化、个人信息保护和商业数据安全等…

华雨欢:数字货币一场骗局一场辩论,对于价值的片面判断只会进入死局

华雨欢&#xff1a;数字货币一场骗局一场辩论&#xff0c;对于价值的片面判断只会进入死局前言&#xff1a;在币市里呆的时间久的人就能明确一点的就是链圈和币圈在不断的分离&#xff0c;在不如起初你中有我我中有你的情况&#xff0c;当初数字币是区块链的闪光点&#xff0c;…

微软新编程字体开源,用着一不小心就骂人了

&#xff08;给程序员的那些事加星标&#xff09;2019 年 5 月 7 日&#xff0c;微软 Build 开发者大会上推出了新终端工具&#xff1a;Windows Terminal。Terminal 的宣传视频推出后&#xff0c;其新特性&#xff08;包括&#xff1a;支持多 Tab、可定制主题、丰富的富文本等&…

java屏蔽游戏中骂人的话,替换为*,屏蔽敏感词汇

方法一&#xff1a; package com.oracle.corepublic class Replace {public static void main(String[] args){String str"你真是个畜生&#xff0c;你真的太牛逼了&#xff0c;真是个垃圾";String words[]{"畜生","牛逼","垃圾"};fo…

想骂人!开发语言不能统一成一个么?

原创&#xff1a;小姐姐味道&#xff08;微信公众号ID&#xff1a;xjjdog&#xff09;&#xff0c;欢迎分享&#xff0c;转载请保留出处。有时候&#xff0c;写TypeScript写多了&#xff0c;写Java的时候就老容易出错。而当陷入某个项目一段时间之后&#xff0c;自我感觉老熟悉…

Python基础学习 -- 概念

一、变量python的变量定义起来比较随意&#xff0c;不用定义数据类型a123b"123"系统会自动识别a为数值&#xff0c;b为字符串二、关键字定义变量名字的时候&#xff0c;要避开下面的关键字&#xff0c;但是可以通过大小写区分&#xff0c;as123;#错误定义As123;print…

Mysql常用命令练习(一)

Mysql常用命令练习&#xff08;一&#xff09;一、数据库的三层结构二、数据库2.1、创建数据库2.2、查看、删除数据库2.3、备份和恢复数据库三、表3.1、创建表mysql常用的数据类型(列类型)创建表查看表查看表结构练习3.2、修改表修改表名修改表的字符集添加列修改列删除列练习3…

Java--枚举类型(枚举类型介绍 定义枚举类型 枚举类型的使用 枚举类型的注意事项 遍历枚举项)

01: Java–枚举类型&#xff08;枚举类型介绍 & 定义枚举类型 & 枚举类型的使用 & 枚举类型的注意事项 & 遍历枚举项&#xff09; 02: Java–枚举类型&#xff08;枚举类型实现接口 & 枚举类型之间的比较 & 枚举类型用于switch语句&#xff09; 1. 枚…