本文我将通过NXP S32G274ARDB2开发板的LED,分别使用裸机程序,异核启动介绍M7程序的运作方式和构建方法与注意事项。
一. 板载LED介绍
在NXP S32G274ARDB2开发板上,使用的是RGB LED灯,使用的IO口分别是GPIO6,GPIO7和GPIO95。
特别需要注意的是,使用这个RGB LED灯时,需要将SW11开关设置为ON,默认是OFF,使用的是J5接口。
二. M7裸机程序
2.1 配置环境
使用M7裸机程序点亮LED的方式较为简单,使用S32DS软件即可进行配置,首先从NXP官网下载S32G2相关SDK(包括S32G2sdk包,RTD包),随后在S32DS->Help->Install new software->add->archive中选择下载好的SDK并确认安装。
2.2 新建工程
新建application工程,选择S32G274A_Rev2 Cortex-M7
为M7_0核心选择SDK
2.3 编写程序
新建完成后,点击pins组件,勾选siul2,gpio6,7,95.
打开外设组件,在drivers中添加osif_1, Siul2_Dio, Siul2_Port_1
随后点击生成代码并应用。在主函数中添加
Clock_Ip_Init(Mcu_aClockConfigPB);
Siul2_Port_Ip_Init(NUM_OF_CONFIGURED_PINS0,g_pin_mux_InitConfigArr0);
Siul2_Dio_Ip_WritePin(PTA,6,0);
Siul2_Dio_Ip_WritePin(PTA,7,0);
Siul2_Dio_Ip_WritePin(PTF,15,0);
随后进入project->properties->c/c++ build->settings->cross settings选择creat flash image,
随后在standard S32DS create flash image->general->Output file format中选择Raw binary,目的是生成.bin文件,方便之后使用IVT工具制作镜像。
随后编译工程,会生成xxx.bin文件
2.4 制作镜像
打开IVT工具,选择BOOT_TARGET为M7_0,在Boot device type中选择目标存储介质,随后将除application bootloader的镜像表均置为reserved,随后在application bootloader中导入之前编译生成的.bin文件,在RAM start pointer中填入RAM的起始地址,S32G2的 SRAM起始地址为0x34000000;在RAM entry pointer中填入RAM的入口地址,在工程的map文件中搜索intc_vector可快速找到入口地址,这里为0x34207000。
填好后点击导出blob镜像,生成最终的可执行文件。
2.5 调试结果
我这里选择的是emmc启动方式,所以最后使用flashtool烧写到emmc中,调成emmc启动方式,上电即可直接点亮led。
三. 异核启动M7
该部分讲解如何使用s32g uboot中自带命令“startm7”,启动M7核心,运行可执行文件点亮LED。
3.1 配置工程
在配置工程方面和上一部分裸机代码基本一致,除了需要注意在这里我们需要注释掉MCU的初始化时钟部分,否则在使用startm7命令时会卡死。
随后编译生成.bin文件
3.2 Uboot命令
在Uboot命令行中,我们输入以下指令:
1. 首先先清空SRAM中的内容 -> initsram 0x34000000 0x700000
2. 随后从SD卡中将.bin文件读取到SRAM起始地址中 -> fatload mmc 0:1 0x34000000 xxx.bin
3. 最后使用startm7命令,后面的地址是是RAM的入口地址,同样是在map文件中找到。
3.3 调试结果
将镜像读到SRAM中时LED灯未有变化
在使用startm7命令之后,M7启动,镜像运行,LED点亮
以上为两种点亮LED,入门开发板的介绍。