【简介】
在之前的帖子( S32K3XX】多核启动 )中介绍了S32K3的多核启动代码。应用核心的启动是通过MC_ME来控制的,MC_ME 按照 Parttion 对控制信号进行管理,以下是MC_ME 的功能框图。

以下是App core 的启动流程说明。

STEP1 配置CORE1 的启动地址

STEP2 通过CCE信号使能core1 的时钟

STEP3 配置CCPUD信号

STEP4 更新配置KEY

STEP5 等待CORE1启动完成

以下代码按照上述的流程配置CORE1 的启动地址
void Mcme_Start_Core1(uint32_t startAddrCore1)
{
IP_MC_ME->PRTN0_CORE1_ADDR = startAddrCore1;
IP_MC_ME->PRTN0_CORE1_PCONF = 0x00000001;
IP_MC_ME->PRTN0_CORE1_PUPD = 0x00000001;
IP_MC_ME->CTL_KEY = 0x5AF0U;
IP_MC_ME->CTL_KEY = 0xA50FU;
while((IP_MC_ME->PRTN0_CORE1_STAT&0x0001) != 1);
}
unsigned int kickcore(char argc, char **argv)
{
Mcme_Start_Core1(0x500000U);
return 0;
}触发上述代码,发现core1 已经按照预期的被core0 拉起来并运行。

我要赚赏金
