framebuffer帧缓存

news/2024/9/19 12:47:37/ 标签: 缓存, 数据结构

FrameBuffer,可以译作"帧缓冲",有时简称为 fbdrv。

      这是一种独立于硬件的抽象图形设备。是Linux为显示设备提供的一个接口,把显存抽象后的一种设备,允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。

1、打开fb设备

使用文件IO学过的open函数

2、ioctl函数

设备驱动中的接口控制函数

int ioctl(int fd, unsigned long request, ...)

fd:文件描述符

以framebuffer 程序为例, 获取屏幕参数, request参数传 FBIOGET_VSCREENINFO

获取屏幕信息 对应的第三个参数为表示屏幕信息的结构体 : fb_var_screeninfo

 通过打印结构体中的数据可知道屏幕的参数

 int ret = ioctl(fd, FBIOGET_VSCREENINFO, &vinf);if(-1 == ret){perror("fail ioctl");return -1;}printf("xres = %d yres = %d\n", vinf.xres, vinf.yres);printf("xres_virtual = %d yres_virtual = %d\n", vinf.xres_virtual, vinf.yres_virtual);printf("bits_per_pixel = %d\n", vinf.bits_per_pixel);

3、映射显存空间

void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);

addr 映射区首地址,通常传NULL,系统自动分配

length 映射大小

prot 映射区权限 PROT_READ PROT_WRITE

flags 标志位参数 MAP_SHARED 修改后同步到源 ; MAP_PRIVATE 修改后不同步到源

fd 要映射到用户空间的文件描述字

offset 映射偏移量,一般为0

返回值: 映射到用户空间后的首地址

 size_t len = vinf.xres_virtual * vinf.yres_virtual * vinf.bits_per_pixel/8;pmep = mmap(NULL, len, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);if((void *)-1 == pmep){perror("fail mmap");return -1;}

4.解除映射关系

int munmap( void * addr, size_t len )

addr:调用mmap()时返回的地址

len是映射区的大小。

当映射关系解除后,对原来映射地址的访问将导致段错误发生。


http://www.ppmy.cn/news/1523662.html

相关文章

卷积神经网络综述

摘要 本文对卷积神经网络(Convolutional Neural Network,CNN)进行了全面综述。首先介绍了卷积神经网络的发展历程,包括早期的理论基础和关键突破。接着详细阐述了卷积神经网络的结构组成,包括卷积层、池化层、全连接层…

C语言常用头文件的介绍

一、C语言头文件的介绍 C语言的头文件是包含函数声明、宏定义和类型定义的重要组件,用于在编译阶段将这些信息包含到源文件中。 在C语言中,头文件以“.h”作为后缀,通常包含了类、子程序、变量和其他标识符的前置声明。这些头文件通过#incl…

【Linux 报错】SSH服务器拒绝了密码。请再试一次。(xshell)

出现该错误 可能的原因: 你写入的登录密码错误了,错误原因有: 1、本来输入就错误了 2、创建用户时,只创建了用户名,但密码没有重新设置 3、多人使用同一台服务器时,该服务器管理员(本体&#x…

开源 AI 智能名片小程序在内容营销中的应用与价值

摘要:本文深入探讨在消费升级的时代背景下,开源 AI 智能名片小程序如何在内容营销中发挥重要作用。阐述了内容营销通过图片、文字、视频等媒介传播相关内容信息给目标用户以促进销售及实现营销目的的过程。分析了开源 AI 智能名片小程序作为一种新型营销…

C# WPF燃气报警器记录读取串口工具

C# WPF燃气报警器记录读取串口工具 概要串口帧数据布局文件代码文件运行效果源码下载 概要 符合国标文件《GB15322.2-2019.pdf》串口通信协议定义;可读取燃气报警器家用版设备历史记录信息等信息; 串口帧数据 串口通信如何确定一帧数据接收完成是个…

LeetCode之图的广度优先搜索

433. 最小基因变化 class Solution {public int minMutation(String start, String end, String[] bank) {// 将基因库存储在集合中&#xff0c;便于快速查找Set<String> bankSet new HashSet<>(Arrays.asList(bank));// 如果目标基因不在基因库中&#xff0c;则…

【基础知识复习 - 随机练习题】

问题 1&#xff1a;在软件生命周期模型中&#xff0c;哪一个模型强调了开发过程的迭代性和反馈&#xff1f; A. 瀑布模型 B. V模型 C. 敏捷模型 D. 原型模型 答案&#xff1a;C. 敏捷模型 解析&#xff1a;敏捷模型强调迭代开发和反馈&#xff0c;允许在每个迭代周期中进行调…

鸿蒙轻内核M核源码分析系列二一 02 文件系统LittleFS

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 持续更新中…… 1、LFS文件系统结构体介绍 会分2部分来介绍结构体部分&#xff0c;先介绍LittleFS文件系统的结构体&#xff0c;然后介绍LiteOS-M内核中…

【C++】模拟实现vector

文章目录 前言成员变量 & 迭代器反向迭代器 空间管理函数成员函数构造函数默认构造拷贝构造 析构函数赋值操作符重载 元素访问元素修改迭代器失效问题模拟实现 总结 前言 模拟实现不是为了写得和库里面一样好。而是为了更好的了解底层&#xff0c;从而能够更熟练的使用这些…

Keras深度学习中文文本分类

一.文本分类概述 文本分类旨在对文本集按照一定的分类体系或标准进行自动分类标记&#xff0c;属于一种基于分类体系的自动分类。文本分类最早可以追溯到上世纪50年代&#xff0c;那时主要通过专家定义规则来进行文本分类&#xff1b;80年代出现了利用知识工程建立的专家系统&…

国庆出行要准备什么?这款骨传导耳机你一定不能错过!

在准备国庆假期的旅行计划时&#xff0c;大家可能正在考虑如何让旅途更加充实有趣&#xff0c;同时也注重个人健康和舒适度。选择一款适合旅行的耳机&#xff0c;不仅是对音乐品味的追求&#xff0c;更是对旅途品质的提升。 今天&#xff0c;我想给大家推荐一款我个人非常喜欢的…

SpringBoot 引用 ZXing 生成二维码 条形码

ZXing&#xff0c;全名为"Zebra Crossing"&#xff0c;是一个开源的Java 库&#xff0c;用于二维码的生成和解析。它是一个强大的工具&#xff0c;可以用于生成QR码以及解析包括QR码在内的多种二维码格式。ZXing提供了多种编程语言的API&#xff0c;使开发者能够轻松…

网络安全(黑客)入门到精通

不管你是小白还是工作已久 这份资料真的超级全面详细 几乎秒杀了市面上90%的自学资料 来&#xff0c;把它全灌输到脑子里&#xff0c;肯定对你会有很大的帮助&#xff01; 2024最新网络安全/渗透测试/运维安全学习资料&#xff08;全套视频&#xff0c;大厂面经&#xff0c;必备…

2024年P气瓶充装证模拟考试题库及P气瓶充装理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年P气瓶充装证模拟考试题库及P气瓶充装理论考试试题是由安全生产模拟考试一点通提供&#xff0c;P气瓶充装证模拟考试题库是根据P气瓶充装最新版教材&#xff0c;P气瓶充装大纲整理而成&#xff08;含2024年P气瓶…

OpengGL教程(二)---使用VAO和VBO方式绘制三角形

本章参考官方教程&#xff1a;learnopengl-cn VertexShader.glsl #version 330 core layout(location 0) in vec3 position; layout(location 1) in vec3 color; uniform mat4 projection; // 投影矩阵 out vec4 ourColor; void main() {gl_Position projection * vec4(p…

react js 路由 Router

完整的项目,我已经上传了 资料链接 起因, 目的: 路由, 这部分很难。 原因是, 多个组件,进行交互,复杂度比较高。 我看的视频教程 1. 初步使用 安装: npm install react-router-dom 修改 index.js/ 或是 main.js 把 App, 用 BrowserRouter 包裹起来 2. Navigate 点击…

前端计算机网络面试基础知识

http和https区别 http 超文本传输协议&#xff0c;运行在tcp协议上&#xff0c;指定了客户端和服务器的通信规则特点 支持C/S模式无连接、无状态&#xff0c;只需要发送路径和请求方法&#xff0c;快速灵活&#xff0c;允许传输任意类型对象 URL构成 http://[主机/ip][端口]…

毒枸杞事件启示录:EasyCVR视频AI智能监管方案如何重塑食品卫生安全防线

一、方案背景 近年来&#xff0c;食品安全问题频发&#xff0c;引发了社会各界的广泛关注。其中&#xff0c;毒枸杞事件尤为引人关注。新闻报道&#xff0c;在青海格尔木、甘肃靖远等地&#xff0c;部分商户为了提升枸杞的品相&#xff0c;违规使用焦亚硫酸钠和工业硫磺进行“…

苹果软件产品使用的 TCP 和 UDP 端口列表(apple、mac)

端口 TCP 或 UDP 服务或 协议名称1 RFC2 服务名称3 使用者 22 TCP Secure Shell (SSH)、SSH 文件传输协议 (SFTP) 和安全拷贝 (scp) 4253 ssh Xcode 服务器&#xff08;托管和远程 GitSSH&#xff1b;远程 SVNSSH&#xff09; 25 TCP 简单邮件传输协议 (SMTP) 5…

故障诊断迁移学习项目DDC(保姆教程)

本项目从零开始搭建深度领域混淆&#xff08;Deep Domain Confusion&#xff0c;DDC&#xff09;算法。项目包括加载CWRU轴承原始信号&#xff0c;信号处理、数据集制作&#xff0c;模型搭建&#xff0c;DDC域混淆算法设计、特征可视化&#xff0c;混淆矩阵等流程来帮助读者学习…