主题中讨论的其他器件: MSP430WARE
大家好、
我使用 MSP430fr5969、 通过使用 FET 闪存编程器将代码转换为字节。 因此 、当我与原始字节进行比较时、一些字节会丢失、我为什么没有人能帮助我呢?
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.
大家好、
我使用 MSP430fr5969、 通过使用 FET 闪存编程器将代码转换为字节。 因此 、当我与原始字节进行比较时、一些字节会丢失、我为什么没有人能帮助我呢?
您好!
首先、感谢您的回复。 我们在产品中使用 MSP430。 在这种情况下、我们上传了源代码并将其提供给了客户、并且代码运行良好、但几天前、我们从用户方面得到了一些问题、您的设备无法正常工作。 因此、我们决定找到解决方案、因为我们已经发现了一些问题。 问题是当通过 GPIO (按钮)发出中断时器件被复位。 因此、我们在硬件上检查了它是否正常工作。 但是、我们将检查复位条件(BOR、POR、PUC)。 与此同时,我们已经通过 e2e 论坛讨论了先前发生的任何问题。 我们获得了有关比较十六进制文件的信息。 因此、我们将受影响的板级十六进制文件与有效的十六进制文件进行了比较。 我们看到0x4400地址中缺少一些数据。 在我们的代码中、它被分配给 FRAM 存储器(使用.map 文件验证)。
那么、我们不知道为什么缺少字节? FRAM 中的数据如何丢失? 那么、您可以在这个问题上提供支持吗?
你好、Santhosh、
FRAM 损坏的最常见原因是缓冲区溢出或无效指针访问。 由于 FRAM 的行为与非卷积 RAM 类似、因此如果不加以保护、则很容易对其进行覆盖。
此 FRAM 最佳实践应用手册 在第6节中讨论了此主题和 MPU 配置。 大多数最新版本的 CCS 和 MSP430ware 会尝试以他们所能提供的最佳方式自动配置 MPU 设置、以帮助防止出现这些问题、但我建议您查看项目的 MPU 设置并确定此部分代码是否应受到保护。
如果您有任何疑问、请告诉我。
祝您好运!
JD
新年快乐!
如果启用 MPU 可以解决您的问题、那么它可能是某种缓冲区溢出或指针问题。 这些通常是很难重新创建和定位的问题。 您可以禁用 MPU 并运行一些测试、并尝试重新创建问题、但您可能还需要设置一个阈值、以确定您花费的时间。
如果这非常重要、我知道静态代码检查器等第三方工具可用于在固件上运行、它们会查看每个分支并尝试识别问题。
无论怎样、我都没有更多的建议来进一步缩小您的问题范围。
祝您好运!
JD