我们正在尝试将 M7 自定义应用程序与 GoldVIP BSP 集成,目标是同时启动 M7 和 A53,让每个内核独立运行。我们已经设法使引导加载程序启动核心并开始运行(可以看到 UART 控制台和 M7 输出),但在某些时候 M7 停止响应。
这是控制台日志,M7 在“(XEN) Grant table range: ...”之后的某处停止了。
我们的 M7 应用程序使用S32G_RTD_4.4_3.0.2_HF01配置并使用
S32DS3.4构建 。这是一个简单的演示代码,其中调度程序由 STM0 触发,它将使用 LLCE_CAN 定期传输 CAN 消息,并闪烁连接到 GPIO7 的 LED。对与引导加载程序和 BSP 的集成进行了一些更改:
- 从 M7 应用程序中删除了共享资源初始化过程(例如 Mcu_Init()、Port_init()、Platform_init())。引导加载程序将配置系统
- 使用 A53 协调 M7 应用程序和引导加载程序的 MCU 配置(例如时钟树)
- linker_ram.ld : MEMORY sram 区域更改为 0x34510000~0x346fffff
- core_specific.h:协调 MPU 设置与链接器
- 从项目设置中禁用MPU、D-cache 和 I-cache
我们还发现,如果我们
禁用MPU 并
启用缓存,BSP 和 M7 应用程序都可以运行而不会相互干扰,这是一件很奇怪的事情。由于没有不可缓存的 ram 区域,因此会出现其他一些问题。
这是我们的问题:
- BSP引导进程停止 M7 的可能原因是什么?
- M7 app 上的修改是否正确?
- 为什么在与 A53 集成时,缓存设置的差异会使 M7 停止工作?
- 如何使 M7 和 A53 同时工作,启用 MPU 或禁用缓存?