MPC5746C双核启动配置分析

      MPC5746C内部集成了一个BAF(Boot Assist Flash)小工具(代码)(这个有点像Bootloader),BAF主要用于管理多核CPU的启动,其原理是寻找特定地址的启动头,查看并根据启动头的配置信息来启动CPU内核。

启动头的地址如下所示:

MPC5746C双核启动配置分析_第1张图片

 

启动头的配置结构如下所示:

MPC5746C双核启动配置分析_第2张图片

 

启动头配置字节如下所示:

MPC5746C双核启动配置分析_第3张图片

 

CPU编号与MPC5746C内核的对应关系如下所示:

 

 

 

 

 

 

项目实践:

       本工程主要分析AUTOSAR\MPC574XG_MCAL4_3_RTM_HF3_1_0_0 集成框架IntegrationFramework的启动配置。在其autosar_flash.ld文件中,定义了配置头的起始地址,如下所示:

MPC5746C双核启动配置分析_第4张图片

MPC5746C双核启动配置分析_第5张图片

在Vector_vle_core.s中,定义了启动头配置字节

MPC5746C双核启动配置分析_第6张图片

这里虽然配置了CPU2(Z2)和CPU0(Z4)的复位向量,但RCW配置为只启动CPU0(Z4),如果要同时启动这两个CPU核,则要建立2个代码工程,其中CPU2(Z2)的工程不能有启动头的配置信息。调试代码时需要先烧写CPU2(Z2)的代码,然后再烧录CPU0(Z4)的代码。

       这里的CPU0(Z4)复位向量_start为Startup_vle.c中的StartupCode函数。

     在编译代码时,需要将MCAL的所有插件放置在同一个文件夹下包括IntegrationFramework_TS_T2D35M10I0R0),然后启动Windows命令窗口,cd进入到……plugins\IntegrationFramework_TS_T2D35M10I0R0\auxiliary\build中,用文本打开launch.bat,修改TRESOS_DIR、MAKE_DIR、GHS_DIR、PLUGINS_DIR、TRESOS_WORKSPACE_DIR的值来适配EB、Make和Demo路径,然后输入如下命令:launch.bat TOOLCHAIN=ghs MODE=SUPR CORE=0 DERIV=5746C来编译demo,在./bin/文件夹下将生成IntegrationFramework.elf文件(有条件记得用最新版本的编译器来调试,笔者曾经被旧版本的GHS给坑了,生成的elf加载到芯片中运行时有奇怪的现象发生,比如一直卡在if(…)判断语句中)。如果读者想要生成S19文件,可以使用 gsrec.exe ***.elf –o ***.S19 (其中gsrec.exe为ghs路径下的可执行文件)。

 

你可能感兴趣的:(嵌入式微控制器编程)