完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,
我有一个在 STM32f439z 上运行的通信 (UART) 和 DMA 密集型应用程序。 我遇到了一个奇怪的 Hardfault,不是很少见,我会说平均每小时一次,与总线上错误的地址访问有关。 对于同一地址或代码的同一点并不总是发生,但是,行为是相同的,1 位被翻转或损坏或以某种方式更改并获得错误的总线访问。 对于下面的示例,当它试图从地址 0x2000002c 读取时,寄存器(r3)的内容不知何故为 0x2020002c,并且该地址当然超出范围(Ram end:0x20030000) 任何人都可以猜测这样的故障吗? 这可能是闪存损坏或闪存读取错误吗? 这可能与电压/时钟错误有关吗? 我使用的是内部 16MHz HSI RC,系统时钟是 80MHz。APB1 PCLK 为 40MHz,APB2 PCLK 为 80MHz。 Hw为定制PCB,MCU的Vcc为3v3。 有什么提示可以进一步调试此类故障吗? 一个例子在STM32CubeIDE环境下的调试详情如下: 800b60a:4b18 ldr r3,[pc,#96];(800b66c) 800b60c: 4628 mov r0, r5 800b60e: 6819 ldr r1, [r3, #0] ..... 800b66c: 2000002c.word 0x2000002c 相关故障寄存器: 寄存器:CFSR_UFSR_BFSR_MMFSR 地址:0xe000ed28 值:0x8200 尺码:32 重置值:0x0 重置掩码:0xFFFFFFFF 访问权限:RW 读取动作: 描述: 可配置的故障状态 登记 注册: BFAR 地址:0xe000ed38 值:0x2020002c 尺码:32 重置值:0x0 重置掩码:0xFFFFFFFF 访问权限:RW 读取动作: 描述: 总线故障地址寄存器 通用寄存器: r0 0x2001c6a0(十六进制) r1 0x0(十六进制) r2 0x2001ccdc(十六进制) r3 0x2020002c(十六进制) r4 0x2001c558(十六进制) r5 0x2001c6a0(十六进制) r6 0x2001ec50(十六进制) r7 0x2002fe40(十六进制) r8 0x51(十六进制) r9 0x2001ec58(十六进制) r10 0x2001ec54(十六进制) r11 0x2001ec50(十六进制) r12 0x1(十六进制) sp 0x2002fd30(十六进制) lr 0xffffffe9(十六进制) PC 0x8004eda(十六进制) xpsr 0x61000003(十六进制) d0 0x738d(十六进制) d1 0xa8c0(十六进制) d2 0x0(十六进制) d3 0x0(十六进制) d4 0x0(十六进制) d5 0x0(十六进制) d6 0x0(十六进制) d7 0x26dcd(十六进制) d8 0x0(十六进制) d9 0x0(十六进制) |
|
相关推荐
1个回答
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2666 浏览 1 评论
3221 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1793 浏览 1 评论
3622 浏览 6 评论
6003 浏览 21 评论
951浏览 4评论
1323浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
597浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1316浏览 3评论
1375浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-2 12:59 , Processed in 1.064254 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号