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.

[参考译文] TMS570LS3137-TMS570LS3137:EP -安全库实现-对电路板进行下电上电时出现预取中止异常

Guru**** 2538955 points
Other Parts Discussed in Thread: TMS570LS3137, HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1255101/tms570ls3137-ep-tms570ls3137---safety-library-implementation---prefetch-abort-exception-when-power-cycling-the-board

器件型号:EP
主题中讨论的其他器件:TMS570LS3137HALCOGEN

您好  

我目前正在 为 TMS570LS3137实现安全库 v2.4、并且正在经历一个预取中止。此中止在调试器复位电路板时并不会发生、但在重启之后才会出现。

在下电上电后、使用调试器加载符号时、我可以在预取中止函数中看到 SW。

有些人似乎遇到了类似的问题、但实际上没有线程可以显示问题的结论。

请参阅下面的中止寄存器的捕获。 ABORT 指令地址似乎位于保留空间中。 将深入探讨该如何进一步解码中止寄存器。

 同时,任何指示都值得高度赞赏。

此致

 SEB

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

    您好、

    我能否获得完整的项目以便我能够重现问题并对其进行调试?

    您甚至可以对"完成项目"执行私人消息?

    --

    谢谢。此致、
    Jagdish。

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

    您好

    非常感谢您对其进行深入研究。

    找到附加的项目。 到目前为止,我不得不处理另一个问题。 现在返回到它。  

    如果您需要有关该问题的更多信息、请告诉我。

    e2e.ti.com/.../Bootloader_5F00_ZooxBoard_5F00_ExtNvm_5F00_Safety.zip

    感谢您的帮助。

    此致

    SEB

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

    您好,Jagadish

    你有没有机会看看这个?

    谢谢。

    SEB

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

    您好

    我设法隔离了发生在 sysst_startup.c 中的线路

     

    就在启用中断之前、我们可以看到 FIQ 通道0待处理、IRQ 通道21:

     

      

    FIQ 将被设置优先级、但 FIQVecReg 加载了无效的地址:

    IRQVecReg 被载入到地址 VIM 奇偶校验错误处理程序:

     

    在 VIM 中、ESM 高电平和低电平都被启用。

    ESM 高电平作为 FIQ 硬接线至通道0。

    VIM 奇偶校验寄存器显示一个奇偶校验错误、即使已被禁用:

     

    启用中断时、CPU 分支到 FIQVecReg 中的地址变为异常、中止寄存器显示且地址接近 FIQVecReg 中的分支地址:

     

     

    现在、为什么我在 FIQVecReg 中得到一个虚假地址…

    它在 sys_startup.c 中进行的 VIM 奇偶校验期间

     

    我们有 VIM 奇偶校验寄存器、与使用 FbParErr 来指向采用中止期间显示的地址0xC83CE02的奇偶校验错误处理程序一样:

     

     

    中断寄存器现在显示 FIQ 为待处理、FIQRegVec 显示错误地址:

     

     

    在启用奇偶校验之后、VIM RAM 上的 CRC CALC 在 VIM 上创建了奇偶校验错误行#1269

     

     

    找到部分解决方案-在对外设 RAM 进行奇偶校验之前、引入对 vimInit 的调用。 这是为了确保 FIQRegVec 获得正确的值、然后奇偶校验触发任何 FIQ。

     

     

    这已解决预取中止问题、但现在卡在了带有 VIM 奇偶校验的 ESM 低电平中断中-似乎中断从未被清除、因为奇偶校验错误处理程序从未被调用...

    我当时正在研究 Safe 库的演示项目、可能错过了 sonethign。 虽然我三次检查,但找不到任何让人难以抗拒的地方。

    您能否告诉我、我是在以协调的方式实施安全库、还是漏掉了一些东西?

    谢谢

    此致

    SEB

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

    您好、

    FIQ 将被设置优先级、但 FIQVecReg 加载了无效的地址:

    IRQVecReg 被载入到地址 VIM 奇偶校验错误处理程序:

    [/报价]

    当注入奇偶校验错误并且读取带有奇偶校验错误的 RAM 位置时、回退寄存器的内容将被分配给 IRQVECTOR 和 FIQVECTOR 寄存器。 在 HalCoGen 代码中、回退寄存器的内容是奇偶校验错误处理程序的地址。

    中断寄存器现在显示 FIQ 为待定,FIQRegVec 显示错误地址:

    如果为 VIM 奇偶校验错误启用了 ESM 中断、并且中断被映射到 FIQ、您将在读取带有奇偶校验错误的位置时获得挂起的 FIQ。

    我看到 FIQVEC 和 IRQVEC 都具有正确的值:0xC83CE02  

    VIM RAM 上的 CRC 计算在启用奇偶校验后在 VIM 上创建奇偶校验错误行#1269

    vimParityCheck()在奇偶校验自检后将 VIM RAM 恢复为正确的数据,因此  VIM RAM 上的 CRC CALC 不会产生奇偶校验错误。

    请您告诉我是以协调方式实施安全库还是错过了什么吗?

    您可以因为奇偶校验自检而禁用中断吗?  

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

    QJ 您好

    非常感谢您的反馈。 休息2周后、我将重新选择该主题。

    好的。 我想我明白了我们为什么要遵守行为。 我将禁用中断并进行检查、我还会回来讨论在禁用 ingterrupt 后创建奇偶校验错误的 CRC 问题。

    但我想理解以下内容:

    -为什么 0xC83CE02是正确的值?

    -在运行时检查模块奇偶校验的最佳方式是什么?

    例如、我看到在安全库示例中奇偶校验错误没有映射到 ESM、但我们的想法是为 VIM/CAN/SPI 启用这些错误、并在中断标记的应用级别处理错误。   

    而安全示例会运行时间检查。

    您是否还有一个 selftestFailNotification ()实现的示例?

    非常感谢。

    此致

    SEB

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

    0xC83CE02是   FBPARERR 中定义的 VIM 回退 ISR 地址。 当 VIM 表存在错误时、FBPARERR 中的 ISR 地址将提供给 RQVECREG 和 FIQVECREG。 "正确"表示中断向量寄存器的值= FAPARERR 中的地址。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    例如,我看到在安全库示例中奇偶校验错误未映射到 ESM,但我们的想法是为 VIM/CAN/SPI 启用奇偶校验错误并处理由中断标记的应用级别错误。   [/报价]

    是的、在进行奇偶校验自检之前禁用 ESM 中断。 SDL 使用轮询模式来检查 ESM 标志是否被设定。

    您是否还有一个 selfestFailNotification ()实施的示例?

    否,我没有  selftestFailNotification ()的示例。

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

    QJ 您好

    感谢您的反馈。

    ESM 中的不平衡 VIM 奇 偶校验中断解决了使用 VIM 奇偶校验卡在 ESM 低电平中断中。

    初始化时引起奇偶校验错误的 CRC 不再出现。

    还是我必须保持 vimInit()这里:  

    否则,我得到了他的预发中止,我以前,由 vimParityCheck()函数引起。 FIQVecReg 将加载 FBPARERR 中的地址。

    我可以观察到的是执行到达 enableParity()函数,FIQ == 0x01表示 esmHigh 中断已挂起。

    挂起的中断是由 SRAM 自检引起的。

    IRQ 在 sl_SelfTest_SRAM()函数中被禁用,但 FIQ 是三态的。 我认为这是正常行为、因为 RAM 地址总线奇偶校验错误与不可屏蔽的 ESM 组2相关联。

    在此阶段,FIQRegVec 包含以下内容:  

    总之、在进入奇偶校验部分之前、存在挂起的 FIQ。

    在 VIM 上执行奇偶校验时、FiqVecReg 将加载 FBPARERR 中的地址。

    在启用中断时、由于 FIQ 挂起、会发生 preftech 中止。

    我将查看安全项目、但如果能得到有关我可能错过的内容的建议、我将不胜感激。

    此致

    SEB

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

    您好、

    SRAM 地址奇偶校验自检将生成奇偶校验错误、然后是 ESM 高优先级中断。  一旦 VIM 接收到一个中断(FIQ 或者 IRQ)、它从中断矢量表(VIM RAM)中载入 ISR 的地址、并且将其存储到中断矢量寄存器中(IRQVECREG 用于 IRQ 中断、FIQVECREG 用于 FIQ 中断)。 在 sys_startup 文件中、执行 SRAM 奇偶校验自检时、VIM RAM 尚未初始化、因此 FIQVECREG 加载了一个无效地址、并且从该无效地址提取指令会生成预取中止。

    我建议对奇偶校验自检和 SRAM 自检使用轮询模式。 如果您的应用需要中断、请在进行自检之前对 VIM 表进行编程。

    在启用中断之前、应用软件必须启动指向每个中断通道 ISR 的中断矢量表(VIM RAM)。

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

    QJ 您好

    感谢您的反馈。

    这是绝对有意义的并解决了我的问题。  

    此致

    SEB