工具/软件:
您好专家、
我想弄清楚是否以及如何能够在 AM243x 的 MAIN 域中复位单个 R5内核。 与使用 CCS 进行调试类似、我希望复位一个 CPU 内核、加载固件并再次启动该内核。 但不在调试中、但在运行期间由 SoC 的另一个内核触发。
因此、我更喜欢的结果是:
-使用内核 R5 0-1触发复位
-重置内核 R5 0-0
-再次加载固件并重新启动内核 R5 0-0
-保留主域的其余部分(MSRAM 数据、...)
此致
Robin
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.
工具/软件:
您好专家、
我想弄清楚是否以及如何能够在 AM243x 的 MAIN 域中复位单个 R5内核。 与使用 CCS 进行调试类似、我希望复位一个 CPU 内核、加载固件并再次启动该内核。 但不在调试中、但在运行期间由 SoC 的另一个内核触发。
因此、我更喜欢的结果是:
-使用内核 R5 0-1触发复位
-重置内核 R5 0-0
-再次加载固件并重新启动内核 R5 0-0
-保留主域的其余部分(MSRAM 数据、...)
此致
Robin
您好、Robin、
对延迟的回复表示歉意。
是的、您可以执行 CPU 复位、此复位不会影响其他内核。
但是、在实时用例中、这种复位可能会导致您的应用程序出现问题。
例如、如果执行 CPU 复位、内核将从头开始重新启动。 如果要将 DMA 与外设一起使用、则需要重新初始化 DMA 通道。 DM 内核将不再接受 DMA 通道分配、您可能会遇到 SCI_CLIENT 错误。
您能否说明为什么要从 R5F0_1复位 R5F0_0内核?
另外、您打算在什么时候复位 R5F0_0?
此致、
Anil.
您好、Robin、
尝试以下 API、当我们调用值为1的第一个 API 时、内核始终处于复位状态。
当您调用值为0的第二个相同 API 时、内核释放 Reset。
retVal = Sciclient_pmSetModuleRst(TISCI_DEV_R5FSS0_CORE0, 1, SystemP_WAIT_FOREVER); if(0 != retVal) { DebugP_log("[Error] Sciclient Reset Assertion failed!!!\r\n"); DebugP_assert(FALSE); } retVal = Sciclient_pmSetModuleRst(TISCI_DEV_R5FSS0_CORE0, 0, SystemP_WAIT_FOREVER); if(0 != retVal) { DebugP_log("[Error] Sciclient Reset Deassert failed!!!\r\n"); DebugP_assert(FALSE); }
此致、
Anil.
你好、Robbin、
当执行 CPU 本地复位时、PC 指向复位地址、而从复位地址、应该加载应用程序。
这是不是发生了? 如果没有发生这种情况、请检查 PC 值? 它应该指出本地 CPU 复位地址、因为本地 CPU 复位不会复位存储器内容、所以我们不会清除任何 RAM 内容。
请确保需要将以下逻辑集成到您的示例中。
例如、如果执行 CPU 重置、内核将从头开始重新启动。 如果要将 DMA 与外设一起使用、则需要重新初始化 DMA 通道。 DM 内核将不再接受 DMA 通道分配、您可能会遇到 SCI_CLIENT 错误。
此致、
Anil.