rtthread TouchGFX(三)外部flash读取图片

2024-05-25 02:48

本文主要是介绍rtthread TouchGFX(三)外部flash读取图片,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

   本文没有用文件系统挂载的方式读取图片,因为挂载后,文件夹中并没有任何文件,怀疑是flash烧写按字节烧写,文件系统不识别,如果图片以文件格式存入flash,可能就可以用文件系统方式读取了

一、env配置Flash

在这里插入图片描述

二、从Flash中读取图片资源

1.修改链接脚本link.sct

文件地址:\board\linker_scripts\link.sct
默认情况下,TouchGFX中的所有位图都放入ExtFlashSection中,标准的链接描述文件(此处为GCC)将其他只读数据一起放入闪存。在此示例中,我们将图像数据放入地址为0x90000000的ExtFlashSection中。您可以选择任何其他未使用的地址(不属于代码或数据地址空间的一部分)。

; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************LR_IROM1 0x08000000 0x00100000  {    ; load region size_regionER_IROM1 0x08000000 0x00100000  {  ; load address = execution address*.o (RESET, +First)*(InRoot$$Sections).ANY (+RO).ANY (+XO)*.o (TextFlashSection)*.o (FontFlashSection)}RW_IRAM1 0x20000000 0x00040000  {  ; RW data.ANY (+RW +ZI)}RW_SDRAM 0xC0200000 UNINIT 0x01E00000  {  ; RW data*.o (TouchGFX_Framebuffer)}
}LR_EROM1 0x90000000 0x02000000  {    ; load region size_regionER_EROM1 0x90000000 0x02000000  {  ; load address = execution address*.o (ExtFlashSection)}
}

2.修改BlockCopy功能

在TouchGFXHAL.cpp中修改blockcopy函数
当您将位图缓存到RAM时,TouchGFX会调用HAL :: BlockCopy来获取数据。

extern "C"
{
#include "spi_flash_sfud.h"
}
sfud_flash_t sfud_dev;
bool TouchGFXHAL::blockCopy(void* RESTRICT dest, const void* RESTRICT src, uint32_t numBytes)
{	uint32_t dataOffset = (uint32_t) src;if (dataOffset >= 0x90000000 && dataOffset < 0x92000000){                   sfud_dev = rt_sfud_flash_find_by_dev_name("W25Q256");if(sfud_dev != RT_NULL){dataOffset = dataOffset - 0x90000000;if(sfud_read(sfud_dev, dataOffset, numBytes, (uint8_t *)dest) == SFUD_SUCCESS){return true;}}}else{return TouchGFXGeneratedHAL::blockCopy(dest, src, numBytes);}
}

3.将位图数据从闪存复制到缓存

在TouchGFXHAL.cpp中启用和配置位图缓存。首先,需要删除默认创建的位图缓存数据库,然后根据提供的存储区域设置新的缓存。

void TouchGFXHAL::initialize()
{// Calling parent implementation of initialize().//// To overwrite the generated implementation, omit call to parent function// and implemented needed functionality here.// Please note, HAL::initialize() must be called to initialize the framework.TouchGFXGeneratedHAL::initialize();uint16_t* frameBuf = (uint16_t*)rt_malloc(0x1400000);uint32_t cacheSize = 0x1400000;Bitmap::removeCache();Bitmap::setCache(frameBuf, cacheSize, 1024);Bitmap::cacheAll();
}

三、下载

STM32F429_SPI_W25Q256.FLM下载算法,提前放在C:\Keil_v5\ARM\Flash目录下
在这里插入图片描述
不勾选verify,勾选上总是报烧写错误
在这里插入图片描述

这篇关于rtthread TouchGFX(三)外部flash读取图片的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1000266

相关文章

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

SpringBoot读取ZooKeeper(ZK)属性的方法实现

《SpringBoot读取ZooKeeper(ZK)属性的方法实现》本文主要介绍了SpringBoot读取ZooKeeper(ZK)属性的方法实现,强调使用@ConfigurationProperti... 目录1. 在配置文件中定义 ZK 属性application.propertiesapplicati

使用Python实现base64字符串与图片互转的详细步骤

《使用Python实现base64字符串与图片互转的详细步骤》要将一个Base64编码的字符串转换为图片文件并保存下来,可以使用Python的base64模块来实现,这一过程包括解码Base64字符串... 目录1. 图片编码为 Base64 字符串2. Base64 字符串解码为图片文件3. 示例使用注意

Java -jar命令如何运行外部依赖JAR包

《Java-jar命令如何运行外部依赖JAR包》在Java应用部署中,java-jar命令是启动可执行JAR包的标准方式,但当应用需要依赖外部JAR文件时,直接使用java-jar会面临类加载困... 目录引言:外部依赖JAR的必要性一、问题本质:类加载机制的限制1. Java -jar的默认行为2. 类加

Python中文件读取操作漏洞深度解析与防护指南

《Python中文件读取操作漏洞深度解析与防护指南》在Web应用开发中,文件操作是最基础也最危险的功能之一,这篇文章将全面剖析Python环境中常见的文件读取漏洞类型,成因及防护方案,感兴趣的小伙伴可... 目录引言一、静态资源处理中的路径穿越漏洞1.1 典型漏洞场景1.2 os.path.join()的陷

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb

c/c++的opencv实现图片膨胀

《c/c++的opencv实现图片膨胀》图像膨胀是形态学操作,通过结构元素扩张亮区填充孔洞、连接断开部分、加粗物体,OpenCV的cv::dilate函数实现该操作,本文就来介绍一下opencv图片... 目录什么是图像膨胀?结构元素 (KerChina编程nel)OpenCV 中的 cv::dilate() 函

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现