Other Parts Discussed in Thread: C2000WARE
部件号: TMS320F28379D
主题: C2000WARE 中讨论的其他器件
我有一个工程使用 CPU1、CPU2 和两个关联的 CLA。 通过调试器、我使工程按预期运行。 我一直在尝试让 CPU2 中的代码独立运行、但我遇到了一些问题。
我查看了一些示例、并尝试使用 IPCBootCPU2 (C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH) 函数。 我通读了代码、并注意到该函数正在 在 BOOTSTS 寄存器中查找 C2_BootROM_BOOTSTS_SYSTEM_READY 的值。 我在 CPU2 可执行文件中放置了相应的代码行、以适当地在寄存器中设置值。 接下来、该函数会返回 IPC_FLAG0 和 IPC_FLAG31 的 IPCLtoRFlagBusy 函数、以返回值 0。
我的第一个问题是、我是否需要以编程方式清除第二个 CPU 中的这些标志、或者是否应该自动发生? 我没有在 CPU2 工程中看到任何显式说明的示例工程。
我注意到、如果可以超出 CPU1 中代码的这一点、则 IPCBOOTMODE、IPCSENDCOM 和 IPCSET 寄存器将使用特定的值进行设置。 根据 IPCSET 值、CPU2 似乎需要确认标志 0 和 31。 是这样吗? 是否必须在 CPU2 程序中以编程方式执行任何其他操作来响应 IPCSENDCOM 和 IPCBOOTMODE 寄存器值? 我是否还需要让 CPU2 等待 CPU1 以将标志 0 和 31 向前设置? 一个功能齐全的独立示例将会大有帮助。
我也对 InitIpc 函数有疑问。 我计划在两个 CPU 中运行任何 IPC 引导函数之前添加 InitIpc、以便清除所有标志以干净地处理微控制器中的复位、我认为没有任何缺点、除非它可能导致其他问题。 我不确定是否缺少干净可靠的独立启动过程所需的任何其他信息。 请提供任何建议。