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.

[参考译文] TMS320F28377D:引导加载程序关于28377D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/591993/tms320f28377d-the-bootloader-about-28377d

器件型号:TMS320F28377D

28377d 中 CPU2的引导加载程序受 CPU1控制、此图显示 CPU1复位 CPU2后的流程。  在独立模式下,引导模式由 Zx-BOOTCTRL 寄存   器控制,DCSM 模块中有两个 BOOTCTRL 寄存器,一个是 Z1-BOOTCTRL 寄存器,另一个是 Z2_BOOTCTRL 寄存器。

我的问题在于 CPU2的引导加载程序,哪个寄存器需要 CPU2的引导模式?

此致

摇晃

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

    您好、我震惊了、

    CPU (CPU1和 CPU2)上都存在 Z1-BOOTCTRL 和 Z2-BOOTCTRL。 每个 CPU 有两个安全区域、因此有两个 BOOTCTRL 寄存器。 您可以使用其中任何一个来控制引导设置、但如果您使用 Z2_BOOTCTRL 寄存器列表、则您将有机会通过编程 Z1_BOOTCTRL 来更改它(如果需要)。

    此致、

    Vivek Singh

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

    你好! Vivek Singh

    感谢您的回答,我知道理想

    还有另一个问题、如图所示、如果 CPU2从闪存引导、它可以转到自己的应用程序本身。 为什么必须有这些代码。

    #ifdef _standalone
    #ifdef _flash
    //
    //发送引导命令以允许 CPU2应用程序开始执行
    //
    IPCBootCPU2 (C1C2_Brom_BOOTMODE_BOOT_FROM _FLASH);
    其他
    //
    //发送引导命令以允许 CPU2应用程序开始执行
    //
    IPCBootCPU2 (C1C2_Brom_BOOTMODE_BOOT_FROM _RAM);
    #endif
    #endif

    另一个问题。 如图所示、如果 CPU2从闪存引导、则 CPU2可以转到其自己的应用程序本身。 但为什么 CPU1中必须有这些代码?

    #ifdef _standalone
    #ifdef _flash
    //
    //发送引导命令以允许 CPU2应用程序开始执行
    //
    IPCBootCPU2 (C1C2_Brom_BOOTMODE_BOOT_FROM _FLASH);
    其他
    //
    //发送引导命令以允许 CPU2应用程序开始执行
    //
    IPCBootCPU2 (C1C2_Brom_BOOTMODE_BOOT_FROM _RAM);
    #endif
    #endif

    此致

    摇晃

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

    您好、我震惊了、

    默认情况下、CPU2不会引导至闪存。 用户需要在 CPU2上对 BOOTCTRL 寄存器进行编程以启用该功能。 给出的示例代码仅供参考、前提是大多数用户将使用 IPC 方法来引导 CPU2。

    此致、

    Vivek Singh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、Vivek Singh
    默认引导模式取决于 zx_bootctrlotp_key 和 zx_bootctrlotp_BMODE 的值。 这两个寄存器的值与 CPU1和 CPU2相同、为什么 CPU1默认引导至闪存、但 CPU2不是? 谢谢你
    此致
    摇晃
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、Vivek Singh
    我‘s 的另一个问题是在 CPU1的 project 中使用了代码“IPCBootCPU2(C1C2_Brom_BOOTMODE_BOOT_FROM _FLASH)”。 但 CPU2在上电后无法运行。 为什么?
    此致
    摇晃
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    第一个问题、我有答案、zx_bootctrlotp_key 默认值不是0X5A、因此 CPU2的默认模式不是从闪存引导、对吧?
    但另一个问题我没有答案。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    哦、抱歉、另一个问题是我的错误、我的 CPU2程序有一个小错误、CPU2可以正常运行。 谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很高兴知道它工作正常。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    另一个有关从闪存引导 CPU2的问题是、由于默认器件密钥值为0xFF 且无效、因此 CPU2不会引导至闪存。 这样做的原因是、CPU2是从处理器、需要等待 CPU1应用程序代码完成器件初始化(例如 Pinmux 设置、GSx RAM 所有权控制、外设所有权控制等)。