0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

将framebuffer保存为图片来检查内容正确性

STM32单片机 来源:STM32单片机 作者:STM32单片机 2022-04-25 10:46 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1、前言

客户在做 GUI 项目开发时,会碰到许多显示相关的问题。

屏幕花屏是比较严重的问题,如果产品出现花屏,会严重影响使用体验。正常的 UI 显示,包括画图和将帧缓冲传输到屏幕两个过程。如果画图过程出错,那帧缓冲的内容就不对了,传输到屏幕后显示也不可能正确。如果画图过程正确,而传输过程出错,虽然帧缓冲的内容是对的,而屏幕接收到的数据出错了,那屏幕显示的内容自然也是错误的。因此在定位显示错乱、花屏等问题时,需要先判断是画图出错还是传输过程出错。

本文会介绍一种方法,将帧缓冲内容导出并保存为图片,来判断帧缓冲内容是否正确。由于帧缓冲的内容为全部像素的 RGB 数据,在导出后需要借助其它工具将 RGB 数据转换为图片,方便在 PC 上直接查看。

这里可以使用 pythonpillow 包,将 RGB 转换为JPG 图片。而读取帧缓冲的过程可以借助 python 的 pyswd 包来实现。

2、环境安装

本机环境:Windows10 64bit 安装 python 3.9.0 (测试过 3.9.6 正常),检查系统环境变量,将 python 添加到 Path中。

下载:https://www.python.org/downloads/

ec3f427c-c3d1-11ec-bce3-dac502259ad0.png

2.1. 安装 libusb

下载:https://github.com/libusb/libusb/releases

解压 libusb-1.0.24.7z,将 VS2019/MS64/dll/libusb-1.0.dll 拷贝到 python 安装目录,与 python.exe 相同目录

2.2. 安装 pyusb

下载:https://pypi.org/project/pyusb/#files

打开 powershell,输入 pip install pyusb-1.2.1-py3-none-any.whl

2.3. 安装 Pillow

下载:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pil

打开 powershell,输入 pip install Pillow-8.3.1-cp39-cp39-win_amd64.whl

2.4. 安装 pyswd

下载:https://github.com/cortexm/pyswd/releases/tag/v1.0.0

解压 pyswd-1.0.0.zip,打开 powershell,进入 pyswd-1.0.0 目录,输入 pythonsetup.py install

3. 将帧缓冲保存为图片

3.1. 读取帧缓冲

通过 pyswd,可以创建 stlink 对象连接到目标板,用read_mem 函数来读取目标板内存。

3.2. 保存图片

从 Pillow 包导入 Image 类,创建图片对象,将 pyswd 读取的 framebuffer 数据填充到 image 对象中并保存实现代码如下,保存为 pyswd_rgb2jpg.py 文件。

ec540446-c3d1-11ec-bce3-dac502259ad0.png

4、测试及小结

在 L4R9-DK 板上进行了测试

(1) 无 GFXMMU 时,传给脚本的参数,宽和高为实际 LCD 的宽和高将 GUI 固件烧录到开发板后,屏幕正常显示。在工程 map 文件中,找到 framebuffer 地址。打开 powershell,执行 pyswd_rgb2jpg.py:

ec6040f8-c3d1-11ec-bce3-dac502259ad0.png

(2)开启 GFXMMU 时,framebuffer 对应为虚拟地址,传给脚本的参数中,图像的宽度要用GFXMMU 像素宽度

ec7b2332-c3d1-11ec-bce3-dac502259ad0.png

在完成环境安装后,通过此脚本可方便查看 framebuffer 内容。如果出现屏幕花屏的问题,可导出 framebuffer 图片查看。如果画图过程出错,则导出的图片显示也是错误的。反之,如果画图过程正常,则 framebuffer 内容正常,导出的图片也是正常的,这样就需要查一下传输过程导致的显示问题。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    7315

    浏览量

    93985
  • 图片
    +关注

    关注

    0

    文章

    203

    浏览量

    16460
  • Framebuffer
    +关注

    关注

    0

    文章

    8

    浏览量

    8349

原文标题:工程师笔记|将 framebuffer 保存为图片来检查内容正确性

文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于开源鸿蒙的图片编辑开发样例(2)

    本期内容介绍基于开源鸿蒙在RK3568上开发图片编辑样例的全流程,分为上篇和下篇,本篇为下篇,主要介绍标记、保存图片功能。
    的头像 发表于 10-31 09:19 2783次阅读
    基于开源鸿蒙的<b class='flag-5'>图片</b>编辑开发样例(2)

    在Linux ubuntu上使用riscv-formal工具验证蜂鸟E203 SoC的正确性

    内容:在Linux ubuntu上使用riscv-formal工具验证蜂鸟E203 SoC的正确性 步骤: 1、下载和安装riscv-formal工具: bash复制代码 git clone
    发表于 10-24 07:52

    商品图片批量上传接口设计与实现

    ? 在电商平台或内容管理系统中,商品图片的高效管理是核心需求之一。批量上传接口允许用户一次上传多张图片,显著提升操作效率。本文逐步介绍如
    的头像 发表于 10-13 15:25 214次阅读

    【HarmonyOS 5】鸿蒙应用实现发票扫描、文档扫描输出PDF图片或者表格的功能

    包括 :扫描合同、票据、会议记录并保存为 PDF 分享。拍摄课堂 PPT、书籍章节生成图片存档。快速识别表格数据,减少手动录入成本。 在Harmon
    的头像 发表于 07-11 18:16 873次阅读
    【HarmonyOS 5】鸿蒙应用实现发票扫描、文档扫描输出PDF<b class='flag-5'>图片</b>或者表格的功能

    ##DevEco Studio##如何让模拟器里有图片?【图片下载法】

    的开发过程中,有一次我开发的项目需要将图片下载到本地,通过文档,我了解到了“安全控件”中的“保存控件“,简单来说,就是可以超级方便的图片进行保存
    发表于 06-29 22:51

    无刷双馈异步电机潮流建模和收敛研究

    的 BDFM初值算法,给出IEEERTS系统中 BDFM参数计算结果,以验证所提 BDFM潮流算法的可行正确性。 纯分享帖,点击下方附件免费获取完整资料~~~ *附件:无刷双馈异步电机潮流建模和收敛
    发表于 06-25 13:12

    HarmonyOS实战:一招搞定保存图片到相册

    保存图片功能几乎是每个应用程序必备的功能之一,当用户遇到喜欢的图片时可以保存到手机相册。那么在鸿蒙中保存
    的头像 发表于 06-24 17:04 992次阅读

    绕组开放型永磁同步电机的建模及应用

    永磁电机的 Mallab/Simulink 模型并应用该模型进行新型发电系统性能的仿真,仿真结果表明模型的正确性和发电系统控制策略的有效。 纯分享帖,需要者可点击附件免费获取完整资料~~~*附件
    发表于 06-12 13:52

    泰克示波器波形数据保存为CSV格式的完整指南

    在电子工程与科研实验中,示波器作为信号分析的核心工具,其波形数据的存储与后续处理至关重要。泰克示波器凭借其卓越的性能与丰富的功能,为用户提供了多种波形保存方式,其中CSV格式因兼容强、数据开放度高
    的头像 发表于 06-07 15:31 878次阅读
    泰克示波器波形数据<b class='flag-5'>保存为</b>CSV格式的完整指南

    求大佬解答,怎么保存为带表头的电子表格

    求大佬解答,怎么保存为带表头的电子表格
    发表于 06-04 14:14

    如何正确使用和维护水下灯具气密检测仪

    水下灯具气密检测仪对于保障水下灯具的质量和安全至关重要,以下为你详细介绍其正确的使用和维护方法:(一)正确使用方法使用前准备检查外观:仔
    的头像 发表于 05-26 11:47 338次阅读
    如何<b class='flag-5'>正确</b>使用和维护水下灯具气密<b class='flag-5'>性</b>检测仪

    求助,关于SGTL5000 LINE-IN声音录制问题

    。 我注意到 tinymix 设置中有一个 capture mux 变量。即使我将其更改为 LINE_IN,我仍然无法正确录制声音。 下面,我默认设置保存为 tinymix
    发表于 04-11 06:49

    DLP6500存储内存为128m,存储图片数量少,请问能否对其进行扩容?

    根据用户手册,DLP6500存储内存为128m,存储图片数量少,请问能否对其进行扩容?或者有其他方法提高存储容量吗?
    发表于 02-21 06:48

    DAC0832的典型接法几点正确性的疑问求解

    DAC0832的典型接法几点正确性的怀疑: 1.Iout2直接接地。电路输出端子直接接地违背常理,那样会烧坏片子。 2.LM336就这样简单的接下可以产生2.5v参考,不现实。需要接电源和限流
    发表于 02-05 09:21

    根据ADS1292R Data sheet组了一个前端电路,请问要如何测试电路的正确性?

    我根据ADS1292R Data sheet 自己组了一个前端电路,请问要如何测试电路的正确性?
    发表于 12-16 06:27