大家好、
问题: 执行某些函数时、程序定义的全局变量数组变为随机数据、在发送拍字节数据时、为 fram 串行端口定义变量将崩溃。
客户希望知道如何解决。
您可以帮助检查此案例吗? 谢谢。
此致、
樱桃
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好、
问题: 执行某些函数时、程序定义的全局变量数组变为随机数据、在发送拍字节数据时、为 fram 串行端口定义变量将崩溃。
客户希望知道如何解决。
您可以帮助检查此案例吗? 谢谢。
此致、
樱桃
您好、Cherry、
这可能是缓冲区溢出或堆栈溢出引起的软件问题。 您能否单步执行代码以确定变量被覆盖的确切位置? 您还可以参阅此应用手册、了解 MSP + CCS 的高级调试功能、以帮助缩小问题范围: https://www.ti.com/lit/slaa393
以下是一些有关如何检测可能的堆栈溢出[link1、 link2]的调试提示。
谢谢、
王国新
尊敬的 王乌里卡:
感谢您的回答。
[引用 userid="489743" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1055384/msp430fr6972-define-variables-issue/3911812 #3911812")您是否可以单步执行代码以确定变量被覆盖的确切位置? [/报价]在客户跟踪了确切位置后、我们应该采取下一步措施来解决此问题?
谢谢、此致、
樱桃
您好、Cherry、
一旦客户确定变量被覆盖的位置、我建议他们查看周围的代码以确定这是否是软件问题。 例如、它们应检查是否存在超出范围的数组访问、错误指针、堆栈溢出、新数据是否实际上是随机的、或者是否存在模式等 观察变量和存储器也会有所帮助。
基本上、我们希望了解此问题是否可重现。 哪些变量在哪些特定函数等处被覆盖? 确定之后、客户可以查看这些特定的功能以了解任何编码问题。
谢谢、
王国新
您好、Cherry、
写入发送缓冲器清除 UCTXIFG。 我要在第91行之前将第92行放在 usart0_Fasong()中。 您可以参阅 MSP UART Academy 和器件 UART 代码示例、了解如何构建 UART TX 和 RX 函数[学院、 示例]。
此外、屏幕截图中的其他变量(yali_k/b、xunhuo_guding _flag 等)是否为正确的值? 看起来它们也是由 usart0_Fasong()调用修改的。
我建议客户检查"buf"和"len"的值、检查 UART TX 和 RX 功能、并添加一个可以在特定存储器访问[链接]上触发的观察点。
再说一次、这是应该在客户的终端进行调试的内容、因为我不知道项目和代码本身的具体细节。
谢谢、
王国新
您好、Cherry、
我很怀疑这是芯片问题造成的。 覆盖全局数组通常表示存在软件问题。
根据您的屏幕截图、阵列似乎放置在 RAM 中。 我建议客户使用"persistent" pragma 将阵列放入 FRAM 中、然后锁定不能使用 FRAM 控制器进行写入。 这将防止意外 RAM 溢出等项目。 有关如何执行此操作的更多信息、请参阅 FRAM 最佳实践应用手册的第6节"FRAM 保护和安全": https://www.ti.com/lit/slaa628
谢谢、
王国新