gpt4 book ai didi

c - MSP430 随机复位 'Security Violation (BOR)'

转载 作者:太空宇宙 更新时间:2023-11-04 02:44:19 24 4
gpt4 key购买 nike

我面临随机 Controller 重置,“SYSRSTIV”寄存器给出值“0x0A”,根据用户指南,这意味着“安全违规 (BOR)”。我搜索了很多论坛,发现与该问题相关的主题很少,但这没有帮助。

详细信息:

使用的 Controller : MSP430F6634

问题:随机重启

假设

> 嵌套 ISR:但情况并非如此,因为 MSP430 在 ISR 中默认禁用全局中断,我确保我没有启用

> 看门狗定时器 (WDT):这里的情况并非如此,因为 WDT 导致“SYSRSTIV”寄存器读取值 0x18

> Stack Overflow :这是我的最终假设,但情况似乎并非如此,因为我不断打印 Stack Pointer 以检查它是否超出了限制,但这并没有发生。

> DMA Register :在 TI 论坛中发现了类似的问题,建议处理 DMA 寄存器,在我们的项目中 DMA 仅用于 USB 并且完全禁用 USB 也没有帮助

数据表和用户手册中的记录很少,TI 客户支持到目前为止也没有帮助。我在 3 周内一直在努力解决这个问题,但我无法解决。

请帮帮我。

提前致谢。

最佳答案

@CL。 谢谢的指导,真的很有收获。

我使用了 __no_init 并记录了它在重置之前的最后一个函数,但是我无法得出结论,所以我使用 __no_init 创建了一个 ARRAY并记录了 RESET 之前的最后 200 个功能/位置,我今天能够查明问题所在。 (真是漫长的等待)

原因是:

我正在从数组中读取数据并计算 CRC,由于数据溢出,我得到了错误的长度(负值)并且指针继续读取 ENTIRE RAM、DATA 和 CODE 内存,最后在我获得 RESET 之前,最终进入了 BSL 内存。

我还有一个疑问是:

1. 如果我只是读取数据而不是操纵/覆盖这些位置的信息,为什么我得到安全违规

2. 为什么只有当我读取指针位置 0x1010(BSL 内存)的值时我才得到 RESET 而不是在任何其他位置如 代码内存 等 BSL 内存也从 0x1000 开始,但仅在指针到达 0x1010 后才发生复位,并且从 0x1000 到 0x100F 。我很好奇。

@CL。再次感谢您:)

关于c - MSP430 随机复位 'Security Violation (BOR)',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28943839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com