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.

[参考译文] TMS320F28379D:CPU2引导状态向 CPU1发送信号(IPCBOOTSTS)

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1211117/tms320f28379d-cpu2-boot-status-signalling-to-cpu1-ipcbootsts

器件型号:TMS320F28379D

引导双核应用程序时、CPU1等待来自 CPU2的信号以确认其已引导。 这由 F2837xD_IPC_Driver_Util.c 中的函数 IPCGetBootStatus ()进行检查、该函数会检查 IpcRegs.IPCBOOTSTS。

当应用程序配置为从 RAM 引导时、这可以正常工作、并且两个内核都在引导和运行。 当我更改为从闪存引导时、我发现 CPU1卡在循环中、等待 IPCBOOTSTS 变为非零。 如果我在启动后在 CPU2代码中明确设置了 IPCBOOTSTS、则两个内核似乎都启动并可以正常运行(除了 CPU2可以在我的应用中中断、但我不确定这是否相关)。

如果我没有显式设置 IPCBOOTSTS、如何设置 IPCBOOTSTS?

当从闪存引导时、是否应该对其进行设置、而无需我显式设置它?

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

    Dave、您好!

    从闪存引导时 、仅当器件没有活动的 JTAG 连接时、CPU2才会设置 IpcRegs.IPCBOOTSTS。 如果您在 CCS 调试会话中单步执行程序、则不会设置 IPCBOOTSTS。

    我需要询问另一位专家为什么会发生这种情况、因此我 很快会向您提供解释。  

    此致、

    Ben Collier

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

    尊敬的 Ben:

    这是有用的信息、谢谢。 我还意识到、从 RAM 进行引导时不会出现问题的原因是 IPCBootCPU2函数仅在定义_flash 和_standalone 符号时使用。  

    最好能有更多关于这方面的背景知识、如果有更多信息、敬请告知。 与此同时、我想使用#ifdef 来包含在定义_flash 但不是_standalone 时明确设置 IPCBOOTSTS 的行应该是一个很好的权变措施?

    谢谢、

    Dave

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

    Dave、您好!

    这听起来是一个很好的权变措施。 独立启动 ROM 中可能存在会设置 IPCBOOTSTS 的内容、但当仿真器被连接时、器件会遵循不同的引导流程。  

    此致、

    Ben Collier