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.

[参考译文] TM4C129XNCZAD:无效的执行序列

Guru**** 2321550 points
Other Parts Discussed in Thread: SEGGER, TM4C129XNCZAD, EK-TM4C1294XL, EK-TM4C129EXL, MSP-EXP432E401Y, MSP432E401Y
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/955745/tm4c129xnczad-invalid-execution-sequence

器件型号:TM4C129XNCZAD
主题中讨论的其他器件:SEGGERDK-TM4C129XEK-TM4C1294XLEK-TM4C129EXLMSP-EXP432E401YMSP432E401Y

您好!

我们一直在努力解决一个非常奇怪的硬故障、这种故障要么在相同条件下的一段时间后发生、要么从未发生(取决于编译输出)。

我们投资了一款用于 Cortex M 的 J-Trace Pro 并执行了指令跟踪、我们观察到了最奇怪的行为。 在某个指针处、在中断处理程序中、PC 不仅在一条简单的寄存器加载指令后递增、而且会跳转到代码的完全不同部分。

您是否经历过这样的行为? 勘误表中是否有我可能遗漏的内容?

请在下面找到进入硬故障处理程序时指令跟踪的屏幕截图:

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

    [报价用户="Ralph Jacobi">我希望这是一个选项、但这些器件的模拟数据库位于存档中。可以理解。

    我能够通过移植在 MSP-EXP432E401Y 上运行的示例来获得相同的硬故障。

    主源文件只需要对从 TivaWare 到 simplelink_msp432e4_SDK_4_20_00_12的端口进行以下更改:

    • 更改为包含文件;包含 ti/devices/msp432e4/driverlib/driverlib.h、而不是 TivaWare 的单独包含文件
    • 更改中断函数的名称以匹配 CCS/STARTUP_msp432e401y_CCS.c 文件中的函数;MSP432E4 Simplelink 启动文件使用弱别名定义 ISR、这意味着可以使用 ISR 函数名称而无需修改 interruptVecteds[]数组

    最初移植的示例没有失败、但通过在链接器命令文件中添加以下内容来调整闪存中函数的地址、能够使其失败:

    padded_sect:
    {
    /*强制执行此2字节填充会导致硬故障发生*/
    。 += 2;
    
    MSP432E401Y_SysTK_wfi_main.obj (.text)
    } >闪存
    

    这并不奇怪、因为故障看起来更敏感于指令对齐、而 MSP432E driverlib 和启动函数可能与 TivaWare 版本不同。

     由于 MSP432E401Y 是较新的器件、使用与 TM4C129系列相同的外设、MSP432团队也许能够使用随附的示例运行器件仿真?

    e2e.ti.com/.../MSP432E401Y_5F00_systick_5F00_wfi.zip

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

    切斯特、您好!

    拉尔夫本周外出。 与我相比、他与 MSP 小组的联系更好、因此我会让他在回来时回答。 不过,我恐怕他们会有与我们相同的限制。

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

    切斯特、您好!

    我不知道他们有什么能力这样做。 我的联系人更多的是应用方面、而不是设计方面。 此外、即使他们这样做、要求他们花费这些资源来调查 TM4C 问题也不是很重要、因为他们有自己的优先级、我目前无法提出这一请求。

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

    您好 Ralph & Chester、

    首先,我祝愿你新年快乐,尽管我们经历了这些复杂的时刻。

    为了给您一些更新、我们在 WFI 指令前后使用 DSB 和 ISB 指令进行了一些测试、但问题仍然存在。

    @Ralph 您是否有关于此主题的任何更新? 使用他们在设计 MCU 时可能使用的 FPGA 仿真器可能确实是一个很好的解决方案研究、正如 Chester 所说的。

    此致、

    Matthieu Tsardivon

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

    您好、Matthieu、

    遗憾的是、我们最终没有任何其他更新。 您是否能够测试关闭预取缓冲器是否至少能够可靠地解决该问题? 我们可以尝试并具体讨论一下、如果它确认是100%修复、尽管内存对齐的想法确实针对该想法...

    [引用 user="Matthieu Tardivon"]@Ralph 您对此主题是否有任何更新? 使用他们在设计 MCU 时可能使用的 FPGA 仿真器可能确实是一个很好的解决方案研究、正如 Chester 所说的。[/quot]

    遗憾的是、我无法请求另一个工程团队来研究这一复杂的问题。 这种跨产品调查很少发生。 如果您有 TI 现场销售联系人、或许可以与他们交谈、看看他们可以做些什么来帮助解决此类请求?

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

    我想知道、通过修改程序使主函数和中断函数在 RAM 中运行、并从闪存读取测试模式、是否可以调查预取缓冲器、以查看从睡眠唤醒后是否可以显示从闪存读取的错误数据。

    通过在 RAM 中使用这些函数、可以在不发生更模糊崩溃的情况下调查症状;这是由闪存预取缓冲器向 Cortex-M3提供无效指令造成的。

    还没有尝试过这种方法。