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:TMS570安全库 pbistRun() SCI1 DMA

Guru**** 2614265 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/777319/tms570ls3137-tms570-safety-library-pbistrun-sci1-dma

器件型号:TMS570LS3137
主题中讨论的其他器件:HALCOGEN

大家好、

与引导加载程序和应用程序相关的安全库存在一个非常特殊的问题。

我们使用稍作修改的 HALCoGen 生成的代码形式、因此到目前为止、初始化应该是正确的。

在引导加载程序中,我们为两个双端口存储器(VIM RAM 和 DMA RAM)调用 pbistRun()。
在应用中、我们希望使用 SCI1 TX 和 DMA。

这会导致不 传输任何字节、有时仅传输第一个字节的问题。 此外、DMA RAM 中只有0xC3、或者如果我们对 DMA RAM 执行存储器初始化、则其中有0x00。

但是,如果我们不对 DMA RAM 调用 pbistRun(),则通过 SCI1和 DMA 进行的传输将会非常完美。 此外、DMA RAM 中也提供了传输所需的数据。


那么、有人能帮我们吗?

谢谢、此致、


Johann

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

    如果只在启动时执行 PBIST,它应该会影响 main()中的 DMA 使用。 请在执行 PBIST 之后禁用 PBIST 时钟并禁用存储器自检(成功或失败)。

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

    QJ Wang、您好!

    感谢您的回答!

    双端口存储器的列表检查仅在乘船时运行。

    之后、我们会按照建议完全禁用 pbist、或生成 halcogen。

    测试完成后,我们调用 pbistStop()。

    我后来也在应用程序开始时尝试了 memoryInit()。

    在这两种情况下、DMA RAM 都初始化为0、但无法再对其进行写入。

    这就是我们的呼吁:

    pbistRun((UINT32) 0x00000800U /* DMA RAM */
    |(UINT32) 0x00000200U /* VIM RAM */
    、(uint32) PBIST_March13N_DP); 

    memoryInit((UINT32)((UINT32) 1U <<1U )/*   DMA RAM */
            |(uint32)((uint32) 1U << 2U)            /* VIM RAM */
            );

    PS:我们没有启用编译器优化(等待循环)。

    您是否有任何想法、还有什么其他想法或我们需要注意什么?

    谢谢、此致

    Johann

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    现在,我们的问题已经得到解决。 此主题可作为解决方案、如需更多信息、请访问:
    e2e.ti.com/.../1547314

    谢谢、此致
    Johann