完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我目前正在使用 Touchgfx 在带有 STM32F469II 和 RGB565 格式的 1024x600 屏幕的自定义板上开发一个项目。我还同时使用了外部 SDRAM 和闪存,并且 DMA2D 已激活。
最近,我一直遇到执行某些屏幕转换时发生硬故障的问题。错误总是发生,例如,当执行 2 个向上滑动过渡然后从左到右滑动过渡时。在此过程中的任何时间执行任何屏幕转换(包括“无”转换)时,它也可能随机发生。禁用 DMA2D 并不能解决问题。 进入硬故障处理程序时,故障分析器会为我们提供以下标志: 因此,通过查看标志,我相信这是一个总线故障,它转变为一个硬故障,尽管它没有提到数据访问是否准确。BFAR中存储的地址似乎没有更新,无助于定位故障源。 SP 寄存器指向地址 0x2002ae48,它在 TouchGFX 堆栈的堆栈范围内,连同我设置的所有其他任务,似乎没有其他任务(许多 0xA5A5A5A5 默认值仍然存在于所有栈)。我还可以通过查看“pxCurrentTCB”的值来补充,硬故障似乎是在 TouchGFX 任务开启时发生的。 PC 寄存器指向地址 0x26262030,它在内部 RAM 的范围之外,内部 RAM 停止在 0x20050000。 最后,LR 寄存器指向 0x809bbf9 处的闪存地址。进入反汇编,我们可以看到围绕该地址的以下指令: 因此,硬故障似乎是由屏幕转换前调用的函数“touchgfx::Drawable::invalidate()”触发的。但是,对我来说,由于在 invalidate() 函数内将任何断点放入源代码/汇编程序代码会停止代码的处理,因此永远不会到达,因此跟踪就此停止。 我还尝试增加/减少 touchGFX 任务可用的堆栈(低至 1024 字和高至 10240 字)但无济于事。 我对那种硬故障调试很陌生,所以如果有人能帮我解决这个错误,我将不胜感激。 |
|
相关推荐
1个回答
|
|
到目前为止调试效果不错。
问题是否总是出现在同一屏幕上?你能在一个干净的、最小的项目上重现这个问题吗?如果是这样,它是否也发生在 ST 开发板上的类似最小项目中?不幸的是,离已知硬件越远,在不深入了解您的项目的情况下远程回答就越难。 重要的是要注意,仅仅因为硬故障发生在 TouchGFX 过程中,并不意味着导致硬故障的问题源是 TouchGFX。我建议隔离 TouchGFX 任务并逐渐重新启用其他任务,直到问题开始出现。 我唯一一次在更换屏幕时遇到硬故障,特别是问题与持有图形资产的不正确闪烁的 QSPI 有关。但它不是零星的,就像你的问题似乎是。 |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2642 浏览 1 评论
3208 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1783 浏览 1 评论
3611 浏览 6 评论
5989 浏览 21 评论
940浏览 4评论
1317浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
585浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1304浏览 3评论
1362浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 10:30 , Processed in 0.973589 second(s), Total 48, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号