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.

[参考译文] MSP430F2274:运算放大器期间的中断向量变化;导致系统引导失败

Guru**** 2513185 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1180487/msp430f2274-interrupt-vector-changes-during-operation-causes-system-boot-fail

器件型号:MSP430F2274

您好!

需要一些有关 MCU 故障调查的建议-在对某些卡上工作一段时间后、闪存中断矢量的一部分是 altert。 因此、系统停止工作。
1.你知道这样的问题吗?
2. 在运行时、是否有任何从 TI 方面启动的写入到闪存中的中断矢量区域?
3。 是否有任何系统函数使用写入闪存中断矢量?

4.是否有硬件问题会导致此类现象?

谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Eduard、

    器件中没有在闪存中写入中断矢量区域的操作。

    顺便说一下、问题详细信息不是很清楚、这是否意味着闪存中的中断矢量发生了变化?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好、Gary

    是的、在不同的卡中、中断矢量以不同的方式发生了变化

    请参阅下面的、运行 MCU 与三个失败:

      地址 数据
    好的 FFE0 FFFF46B738A5FFFF8CB7FFFF0AADFFFFF0ADE2A1FFFF02B3FFFF6680
    失败#1 FFE0 FFFF46B738A5FFFF8CB7FFFF0AADFFFFF0ADE2A1FFFF02B3FFFF2200
    失败#2 FFE0 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    失败#3 FFE0 FFFFFFFFFFBFBFF5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFEFFFFFEFFFFEB

    什么原因会导致这种情况?

    有什么建议如何调查此问题?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您的应用程序代码中是否有任何闪存操作?

    顺便说一下、故障率是多少?

    是否将此项目置于生产或评估状态?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好、Gary

    循环写入闪存256字节信息存储器。
    使用地址的区域包括:
    ADDR_FLASH_SEG_B (0x1080)
    ADDR_FLASH_SEG_C (0x1040)
    ADDR_FLASH_SEG_D (0x1000)

    故障率约为5%(当前)

    该项目正在投入生产、现场已有5、000多个系统

    什么原因会导致中断矢量发生更改?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您可以参阅此文档  

    https://www.ti.com/lit/an/slaa729a/slaa729a.pdf?ts=1671108404259 

    请使用您的用例逐一检查表1中的项目、以查看是否有任何提示。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    可以了、谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    没有什么可以暗示我们所面临的问题...

    除了应用程序代码之外,还有其它任何可以写入/更改中断矢量的内容?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Eduard、

    这里有一个问题、除了应用程序代码外、闪存更改部分始终是中断矢量?

    如果是、它看起来与软件更相关。 您可以尝试增加堆栈大小、以避免编译器无法检测到的堆栈溢出。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    调查取决于您的代码、因为这几乎肯定是错误的。 编写代码的详细信息及其调用方式将有所帮助。

    如果闪存写入代码是使用要写入的地址调用的函数、请在写入前添加对地址的完整性检查。

    您的故障示例显示了不同类型的故障:

    1) 1)只有复位矢量发生了变化。 发生这种情况的方法有两种。 代码会将要擦除的段复制到 RAM 中、擦除该段、然后将保存的数据与您的更改一起写回。 另一个是在不擦除段的情况下执行单字写入。 擦除会将所有位更改为1、而写入会将1转换为0。

    2) 2)看起来像段擦除没有写入。

    3) 3)可能是由于闪存时序发生器设置不正确而导致段擦除失败。

    所有这些都建议使用不良数据执行您的闪存写入代码。 可能是因为其他一些故障(堆栈已改编)导致执行运行为通配。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Gary

    我们就在这里

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 David

    我们将接受您的建议并查看代码

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、如果您的一方有任何进展、请向我们提供反馈。 谢谢