• 资料介绍
  • 在线预览
  • 相关推荐
申请入驻 产业图谱

LAT1443 TouchGFX 图形渲染没有刷新DCache导致的花屏问题分析

2025/03/06
704
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

LAT1443 TouchGFX 图形渲染没有刷新DCache导致的花屏问题分析

390.84 KB

1、引言

在嵌入式图形应用系统中,当 CPU 执行帧缓冲渲染操作时,建议使用数据缓存(DCache)来提高系统性能,但使用 Cortex-M7 执行帧缓冲处理时有时可能会遇到数据不一致导致的花屏问题。

2、问题描述

要避免 DCache 引起的数据不一致问题,可将帧缓冲区域缓存属性配置为透写模式(Write-through)。透写模式易于管理,无需通过软件执行缓存维护,对于数据一致性更安全,但它会对帧缓冲区生成大量单次写入操作,可能会影响整体系统性能。为了更高的性能,可以把帧缓冲区配置成 Normal write-back, write and read allocate(TEX=1, C=1, B=1)模式,简称 WBWA,关于根据 TEX, C, B, and S 参数来配置不同的MPU 属性,可以参考 PM0253 Table 91. TEX, C, B, and S encoding 表格。但 TouchGFX在执行完图形渲染操作后如果没有执行刷新 DCache 操作,可能会产生部分花屏现象。

3、问题分析与定位

通过查看生成的 TouchGFXHAL.cpp,会看到相关提示信息,每当 TouchGFX 引擎执行完渲染操作时都会调用 flushFrameBuffer 函数,以通知 TouchGFX 框架已执行刷新。

如果帧缓冲区被配置成 WBWA 模式,Write back 模式在数据更新时只写入 Cache,这样做的优点是速度快;但如果数据还未同步到物理内存时,LTDC(或其他主机)就对此内存进行访问,则可能会引发数据不一致问题,进而产生部分花屏现象。

4、问题解决

当执行完 flushFrameBuffer 之后,需要调用 SCB_CleanInvalidateDCache()函数,该函数的作用是 Clean & Invalidate DCache,添加该函数后花屏问题消失。

5、小结

出现花屏的问题可能多种多样,对于由于数据不一致导致的花屏,可以通过添加以上代码解决。在有多主设备访问同一内存区域的场景下,也需要注意类似问题。

在线预览

相关推荐

意法半导体拥有49,000名半导体技术的创造者和创新者,掌握半导体供应链和先进的制造设备。作为一 家半导体垂直整合制造商(IDM),意法半导体与二十多万家客户、成千上万名合作伙伴一起研发产品和 解决方案,共同构建生态系统,帮助他们更好地应对各种挑战和新机遇,满足世界对可持续发展的更高需 求。意法半导体的技术让人们的出行更智能,让电源和能源管理更高效,让云连接的自主化设备应用更广 泛。我们正按计划在所有直接和间接排放(包括范围1和范围2)、产品运输、商务旅行以及员工通勤排 放(重点关注的范围3)方面实现碳中和,并在2027年底前实现100%使用可再生电力的目标。 详情请浏 览意法半导体公司网站:www.st.com.cn