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.
引导双核应用程序时、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