i.MX8M mini内置4核Cortex-A53和一个通用Cortex-M4小核,大核可以用来处理复杂的任务,而小核可以执行一些轻便任务。
今天给大家演示如何用启扬i.MX8M mini开发板的Cortex-M4内核运行一个“Hello World”的demo。
环境搭建
启扬i.MX8M mini开发板在启动时会首先启动A53核,然后再启动M4核,所以我们需要先从外部存储器将M4的镜像加载到内存中,这里我们选择SD卡加载到内存(TCML/DDR)。
首先我们需要从NXP官网下载官方提供的M4核SDK以及相关演示镜像。
下载内容如图所示:
因为这里需要编译M4核镜像,所以就不再使用编译A53内核镜像的交叉编译器,而是使用新的交叉编译器,如下图所示:
交叉编译器安装完毕后我们需要将交叉编译器声明,命令如下:
export ARMGCC_DIR=GCC路径
export PATH=$PATH:GCC路径/bin
在编译之前我们还需要安装一些工具,防止编译出错,命令如下:
sudo apt-get install make
sudo apt-get install cmake
以上便是相关环境的搭建。
M4内核演示程序编译
首先,进入启扬i.MX8M mini的demo文件中,这里的路径是
/home/ylook/Linux/m4/sdk/boards/evkmimx8mm/demo_apps/hello_world
内容如下图所示,主要是demo的相关源文件以及头文件,还有已经编译好的bin文件。
因为我们要将demo编译到自己的内存上使用,所以就不再使用它提供的bin镜像。首先进入到armgcc目录中,这里有NXP提供用于制作镜像的脚本,不同的内存使用不同的脚本进行编译,且镜像的链接地址也不尽相同,具体可见sdk目录下的docs目录。
这里我们选择build_release.sh这个脚本,符合我们sd卡加载ddr的配置,./build_release.sh运行编译,编译结束后会在release目录下生成我们需要的bin镜像文件,如下图所示:
hello_world.bin就是我们所需要的镜像文件。
接下来,我们首先将bin文件拷贝到SD卡中,这里需要注意SD卡最好保留一个分区以便uboot加载时能够很好地找到拷贝的文件。
插入SD卡,停留在uboot处,通过mmc list命令可以查看目前我们板子上有哪些mmc设备,如图显示有sd卡和emmc两种。
mmc dev 0命令将当前mmc设备设置为sd卡;
mmc info命令查看sd卡的信息,保证我们的sd卡是完好且被识别的;
mmc part命令查看mmc分区信息,显示一个分区。
确认无误后,将M4调试串口连接。因启扬i.MX8M mini开发板的M4调试串口为ttl电平,所以需要对应的串口连接,串口配置如下:
配置完M4调试串口后,我们在A53上加载M4镜像,命令如下:
fatload mmc 0:1 0x48000000 hello_world.bin
cp.b 0x48000000 0x7e0000 0x20000
bootaux 0x7e0000
运行成功的话就可以在m4调试串口上看到打印hello world.字样。