完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,
我有位图缓存问题。以下是上下文 处理器和外围设备的详细信息:-
我遵循的步骤:-
外部闪存部分: { *(ExtFlashSection ExtFlashSection.*) } >内存
uint32_t 缓存大小 = 0x300000;//3 MB,例如 HAL& hal = touchgfx_generic_init
{ 如果(serialFlashread((uint8_t*)dest , (uint32_t)src - (uint32_t)0xd0061c8c, numBytes) != HAL_OK ) 返回false; 返回真; } 我为这个实验创建了一个较小的应用程序。总资产大小仅为 3 MB。当我在开始时使用 Bitmap::cacheAll() 并在 blockCopy 函数处保留一个断点时,我可以清楚地看到 src 、目标,如链接描述文件和 cacheStartAddr 中所述。我的 serialFlashread api 正确返回图像。我能够毫无问题地在屏幕上显示图片。 我的问题是:- 当我按照文档中的描述执行以下步骤而不是全部缓存时(因为我的 sd ram 不足以容纳完整的应用程序资产) void Screen1View::setupScreen() { //确保背景被缓存 位图::缓存(BITMAP_SCREEN2_ID); //缓存一些图标 位图::缓存(BITMAP_ICON10_ID); 位图::缓存(BITMAP_ICON11_ID); 位图::缓存(BITMAP_ICON12_ID); } void Screen1View::tearDownScreen() { //从缓存中移除所有位图 位图::clearCache(); } 我看到块副本正在调用并且 src 地址根据位图数据库是正确的……所以我的 spi 闪存正在返回正确的图像。但是目标地址是(cacheStartAddr + 524 字节)。这是有道理的,因为它从 assests 二进制文件中获取图像并将其放在缓存地址的开头,因此 toucchGFX 可以使用它。 但问题是这个图像没有显示在屏幕上并且显示了一些随机噪声(我可以理解这是因为位图数据库没有重新调整并且 touchGFX 仍在使用相同的旧数据库所以它显示噪声)。 我该如何解决这个问题以及我错过了什么。我真的被封锁了。 我看过动态位图,但我觉得我的应用程序不适合这种情况。我错了吗? |
|
相关推荐
1个回答
|
|
位图数据库是“常量”的,缓存函数不直接与其交互。当程序员请求缓存一个位图时,TouchGFX 找到位图在flash 中的地址,并从这里复制数据。我做了一个非常非常糟糕的过程示意图。
(“getData”返回一个指向位图数据的指针,这只是为了向您展示当您缓存位图时,TouchGFX 使用您编写的 BlockCopy 函数将像素从原始位置复制到位图缓存。) 你能分享你的自定义代码吗?我想帮助并了解撕裂的来源。 你的情况下的 524 个字节实际上是一个数组表,用于记录/知道缓存了哪个位图。如果可以的话,我还将尝试使用 F429I 迪斯科板和位图缓存来提供一个简单的演示(以及更好的说明)。 |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2566 浏览 1 评论
3190 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1761 浏览 1 评论
3586 浏览 6 评论
5962 浏览 21 评论
920浏览 4评论
1296浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
560浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1284浏览 3评论
1334浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-2 16:26 , Processed in 1.082105 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号