当前位置: 首页 > news >正文

mmap提高LCD显示效率

一、提高LCD显示效率

内存映射

可以发现通过系统IO直接操作LCD的时候LCD屏的部分像素点会显示“黑线”,过段时间或者重新再次运行程序之后“黑线”会慢慢消失。其实这种现象并不是由于硬件原因导致的,而是系统调用的过程中数据传输效率较低导致的。

int buf[800*480] -->用户缓冲区-->循环放入颜色分量-->调用write()写入LCD --> 把用户缓冲区的数据拷贝到内核缓冲区--->内核把缓冲区中的颜色分量依次写入LCD的驱动程序-->LCD看到显示效果。

由于write函数是系统调用,所以数据需要先从用户态进入到内核态,将用户态中的缓冲区数据拷贝到操作系统的内核缓冲区当中,此时已经完成了第一次数据拷贝,然后再将内核缓冲区中的数据再次拷贝到磁盘当中,此时完成了第二次拷贝。在这个过程当中我们进行了两次拷贝,数据传输的效率是比较低的。
image
为了提高数据的传输效率,那就需要减少拷贝次数,可以通过Linux系统的一个叫做mmap()的函数接口实现。mmap的全称是memory map,翻译为中文也就是内存映射,其实是一种内存映射文件的方法。

通过内存映射,用户可以将一个文件或者其它对象映射到进程的地址空间,从而实现磁盘的一段物理地址和进程的一段虚拟地址建立对应关系。
通过mmap()这个系统调用函数,用户可以让多个进程之间通过映射到同一个普通文件实现共享内存,普通文件被映射到进程地址空间之后,进程可以向访问普通内存一样对文件进行一系列操作,就不需要调用read/write函数,比如为LCD屏进行内存映射,用户把颜色数据写入到内存中,则LCD屏的像素点也会进行刷新。
image

http://www.sczhlp.com/news/753.html

相关文章:

  • 用 Python 构建可扩展的验证码识别系统
  • Java学习Day28
  • 语录
  • 深度学习(onnx量化)
  • Redisson
  • P13493 【MX-X14-T3】心电感应 题解
  • uni-app项目跑APP报useStore报错
  • DE_aemmprty 草稿纸合集
  • 22天
  • 基于 Python 的简易验证码识别系统设计与实现
  • java语法的学习笔记
  • 机械运动
  • 【2025.7.28】模拟赛T4
  • 《构建之法》读后感
  • 亚马逊发布TEACh数据集训练家用机器人
  • 日记
  • 完全使用TRAE和AI 开发一款完整的应用----第一周
  • CentOS Stream 9上部署FTP应用服务的两种方法(传统安装和docker-compose)
  • SeuratExtend 可视化教程(1):单细胞分析的高颜值绘图指南
  • SpringBoot 默认配置
  • 暑假7.28
  • 计算机硬件:RAID 0、1、5、6、10简单介绍
  • nest基础学习流程图
  • grabcad
  • 2025.7.28总结 - A
  • Python 实现基于图像处理的验证码识别
  • 2025最新程序员面试题集合 包括各大厂面试规范,面试问题
  • 浅谈基环树
  • Day 28
  • 2025.7.28