2398625_zh-CN

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

2398625_zh-CN

2398625_zh-CN

S32K388 JumpApp 仅在核心 0 处于活动状态时运行。

我创建了一个引导加载程序,并将其放置在地址 0x400000 到 0x420000 处。每次我通过串口更新程序时,只有核心 0 继续运行。如何才能让其他核心也运行起来?

S32_SCB->VTOR = 0x00422000;
__asm volatile(
        "msr msp, % 0"
:
: "r" (appStack)
: “记忆” );
((pFunction)appEntry)();
Re: S32K388 JumpApp Only runs with core 0 active.

嗨@zhangyu5454 ,

您可以在启动代码中启用核心。请参阅默认 S32DS 项目的启动代码(startup_cm7.s)。

例如,如果 CM7_2_ENABLE == 1,则启动代码将在系统启动期间启用 CM7_2。

也可以稍后通过 CM7_0 应用程序启用内核,方法是直接配置相关寄存器,或者使用 MCU MCAL 驱动程序或 Power_Ip 驱动程序。请参考以下示例:

https://community.nxp.com/t5/S32K-Knowledge-Base/S32K358-Multicore-Start-CM7-2-from-CM7-0/ta-p/19238...


BR,丹尼尔


Re: S32K388 JumpApp Only runs with core 0 active.

感谢您的回复。我尝试使用 Power_Ip,但是当程序中出现“Power_Ip_Init(&Power_Ip_HwIPsConfigPB);”这行代码时,调试过程会自动结束。此外,即使我不按下 RESET 按钮,RESET 指示灯仍然亮着,导致设备完全无法运行。当我使用 IP_MC_ME 时,程序运行正常,但没有产生任何结果。其他元器件也无法启动。这段代码似乎对 388 型号不太适用。

Re: S32K388 JumpApp Only runs with core 0 active.

嗨@zhangyu5454 ,

如果 MCU 发生系统RESET,则需要读取RESET源。

您可以致电

Power_Ip_GetResetReason();

在 main() 函数开头之前

Power_Ip_Init();

根本原因可能是 V15 开关电源——它必须与硬件设计相匹配。

danielmartynek_0-1785236184264.pngdanielmartynek_0-1785236184264.pngdanielmartynek_0-1785236184264.pngdanielmartynek_0-1785236184264.pngdanielmartynek_0-1785236184264.pngdanielmartynek_0-1785236184264.png


BR,丹尼尔


Re: S32K388 JumpApp Only runs with core 0 active.#S32K388
根据您的建议,我将在 int main(void) 部分中实现它。调用了 Power_Ip_GetResetReason() 函数。然而,测试结果依然没有改变。
 
int main(void)
{
Power_Ip_GetResetReason();
Power_Ip_Init(&Power_Ip_HwIPsConfigPB);
Clock_Ip_Init(&Mcu_aClockConfigPB[0]);
Power_Ip_SetMode(&Power_Ip_aModeConfigPB[0]);
当(1)
{

Re: S32K388 JumpApp Only runs with core 0 active.#S32K388

嗨@zhangyu5454 ,

那么RESET的原因是什么?

如果让我猜的话,应该是POR/LVR。


V15在PCB板上是如何供电的?

您是否已相应地配置 Power_Ip?


此致,

丹尼尔




谢谢!


Re: S32K388 JumpApp Only runs with core 0 active.#S32K388

你好@zhangyu5454 ,

我知道您在PCB板上使用了SMPS电源,因此必须在配置工具中启用它:

danielmartynek_0-1786525102760.pngdanielmartynek_0-1786525102760.pngdanielmartynek_0-1786525102760.pngdanielmartynek_0-1786525102760.pngdanielmartynek_0-1786525102760.pngdanielmartynek_0-1786525102760.png

danielmartynek_1-1786525162418.pngdanielmartynek_1-1786525162418.pngdanielmartynek_1-1786525162418.pngdanielmartynek_1-1786525162418.pngdanielmartynek_1-1786525162418.pngdanielmartynek_1-1786525162418.png


关于SXOSC,请确保已禁用:

danielmartynek_2-1786525202445.pngdanielmartynek_2-1786525202445.pngdanielmartynek_2-1786525202445.pngdanielmartynek_2-1786525202445.pngdanielmartynek_2-1786525202445.pngdanielmartynek_2-1786525202445.png


Re: S32K388 JumpApp Only runs with core 0 active.#S32K388

谢谢你的回复。我不太了解这些功能。是否有相关的示例或教程文件?我尝试按照 S32K358 的示例进行操作,但没有成功。关于 V15 电源,我发现它是由外部 3.3V 电压通过微控制器控制的晶体管产生 1.5V 电压,同时在微控制器控制下还会产生 1.1V 电压。我还注意到我的硬件设计中没有 32.768 晶振(晶体振荡器),程序卡在了 Clock_Ip_ExtOsc.c 的循环中。
做 {
SxoscStatus = ((Clock_Ip_apxXosc[Instance]->STAT & SXOSC_SXOSC_STAT_OSC_STAT_MASK) >> SXOSC_SXOSC_STAT_OSC_STAT_SHIFT);
TimeoutOccurred = Clock_Ip_TimeoutExpired(&StartTime, &ElapsedTime, TimeoutTicks);
} while ((0U == SxoscStatus) && (FALSE == TimeoutOccurred));

Re: S32K388 JumpApp Only runs with core 0 active.#S32K388

你好@zhangyu5454 ,

这两次写入操作中 ConfigValue 的值分别是多少?

IP_PMC->CONFIG = ConfigValue;
IP_PMC->SMPSCONFIG = ConfigValue;

由于电源模式配置错误,MCU正在复位。

将以下循环放在 main() 函数的开头,以便在重置后进行调试。

volatile uint32_t loop = 1;
while (loop)
{
}

可以通过调试器修改循环变量,以允许程序继续执行。

当代码在循环中停止执行时,调用:

Power_Ip_GetResetReason()

它应该返回 MCU_POWER_ON_RESET。

另外,请查阅低电压状态和控制(LVSC)寄存器,以获取有关 RESET 事件的更多信息。


此致,

丹尼尔


Re: S32K388 JumpApp Only runs with core 0 active.#S32K388

zhangyu5454_0-1786934052028.pngzhangyu5454_0-1786934052028.pngzhangyu5454_0-1786934052028.pngzhangyu5454_0-1786934052028.png张宇5454_0-1786934052028.png

您好,我按照您的方法启用了V15并禁用了SXOSC。但是,当调试到达 `Power_Ip_PMC_PowerInit` 中的 `IP_PMC->SMPSCONFIG = ConfigValue;` 行(该行位于 `Power_Ip_Init` 内部)时,调试会话会自动终止,并且板载 RESET 指示灯 LED 会保持微弱而稳定的亮光。

Re: S32K388 JumpApp Only runs with core 0 active.#S32K388

嗨@zhangyu5454 ,

我用你分享的配置值在我的EVB上无法重现这个问题。

您使用的是 XS32K388EVB-Q289 吗?如果可以的话,请问您能否告知跳线 J118 的位置?


danielmartynek_0-1787229063371.pngdanielmartynek_0-1787229063371.pngdanielmartynek_0-1787229063371.pngdanielmartynek_0-1787229063371.png

如果您使用的是定制电路板,请分享原理图。如果您不想在此处分享,请创建支持工单并将原理图附加到工单中。


谢谢!

BR,丹尼尔

Re: S32K388 JumpApp Only runs with core 0 active.#S32K388

@嗨@zhangyu5454 ,

我很难解释清楚。

您能否使用示波器测量 Power_Ip 初始化期间的 V15 和 V11 电压?

Re: S32K388 JumpApp Only runs with core 0 active.#S32K388

我用另一种方法解决了这个问题;以下是我的程序。

IP_MC_ME->PRTN0_CORE4_ADDR = 0x00800000U;
IP_MC_ME->PRTN0_CORE3_ADDR = 0x00A00000U;

IP_MC_ME->PRTN0_CORE4_PCONF = 0x00000001U;
IP_MC_ME->PRTN0_CORE3_PCONF = 0x00000001U;

IP_MC_ME->PRTN0_CORE4_PUPD = 0x00000001U;
IP_MC_ME->PRTN0_CORE3_PUPD = 0x00000001U;
IP_MC_ME->CTL_KEY = 0x5AF0U;
IP_MC_ME->CTL_KEY = 0xA50FU;

while ((IP_MC_ME->PRTN0_CORE4_PUPD == 1U) || (IP_MC_ME->PRTN0_CORE3_PUPD == 1U)) {}

while ((IP_MC_ME->PRTN0_CORE4_STAT & MC_ME_PRTN0_CORE4_STAT_CCS_MASK) == 0U) {}
while ((IP_MC_ME->PRTN0_CORE3_STAT & MC_ME_PRTN0_CORE3_STAT_CCS_MASK) == 0U) {}

标记 (1)
无评分
版本历史
最后更新:
3 周之前
更新人: