2391078_zh-CN

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

2391078_zh-CN

2391078_zh-CN

S32K358 多核数据共享

你好 ,

我正在尝试在 s32k358 多核处理器中使用共享内存。

我正在学习用户自定义示例,

当我尝试在buzzer_state_shared_data_U32 中赋值时(目前只有核心 0 访问此内存),核心 0 挂起并 swt 重置控制器。

但是当我把代码烧录到调试闪存中时,它运行正常。上电复位后,核心 0 卡住。

为什么刷机时运行正常,而断电重启后却无法运行?

nirmal_masilamani_0-1783316750067.pngnirmal_masilamani_0-1783316750067.png


Re: S32K358 multi core data sharing

你好@Julián_AragónM

感谢您的快速回复。

我检查了启动文件,SRAM 初始化正在进行。

我已附上启动文件和链接器文件。请协助我解决这个问题。

Re: S32K358 multi core data sharing

你好@nirmal_masilamani

但是当我把代码烧录到调试闪存中时,它运行正常。上电复位后,核心 0 卡住。

这很可能是由ECC RAM错误引起的。通常情况下,调试器会在易失性存储器上初始化 ECC,但是,在开机和关机时,调试器不会初始化 RAM,因此在尝试访问内存时会发生硬故障。

这通常是在启动代码中,在 main 函数之前完成的。

该部分还应配置为不可缓存。

关于你的第二个问题:但是当我尝试从定时器中断服务例程或操作系统任务访问它时,核心 0 会发生硬故障。

您可以尝试追溯硬故障。在 HardFault_Handler() 中停止内核,并在内核寄存器中找到 SP 值:如何调试 ARM Cortex-M(V7M) MCU(S32K3XX) 上的故障异常

此致,
朱利安

Re: S32K358 multi core data sharing

你好,

当我在 main() 中访问共享内存时,即使在断电重启后也能正常工作,但是当我尝试从定时器中断服务例程或操作系统任务中访问它时,核心 0 会发生硬故障。

请支持我。

Re: S32K358 multi core data sharing

你好@Julián_AragónM

请协助解答此问题。我到底漏掉了什么?

Re: S32K358 multi core data sharing

你好@nirmal_masilamani

在不使用调试器的情况下,能否在 POR RESET 后通过 main() 函数访问共享内存?问题是否出在内存初始化上?

但是当我尝试从定时器中断服务例程或操作系统任务访问它时,核心 0 会发生硬故障。

您是否能够像我上次回复中提到的那样,确定故障类型?

您是否也确保将变量放置在不可缓存的区域中,或者禁用了缓存?

建议如下:

对 core1Status 保持 volatile 状态,并在读取(Core0)和写入(Core1)两侧使用__DMB()/__ DSB() 屏障。

您的问题也可能是由 MPU 配置引起的,如果定义了 MPU_ENABLE,请在任何 ISR 或 OS 任务开始执行之前调用 MPU 配置。

您可以参考以下链接: Arm Cortex-M7 设备通用用户指南 r1p2AN14715:S32K3XX 硬件资源隔离和保护

此致,
朱利安

Re: S32K358 multi core data sharing

你好@Julián_AragónM

谢谢你的回复。

很遗憾,我无法继续进行这项工作,我会仔细核查您提出的观点。

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