一、引言
imx8mm除了支持4个Cortex-A53还带1个Cortex-M4核,本文需要在Cortex-M4核运行裸机程序。imx8mm 先启动A53内核,启动M4内核时,需要从外部存储器加载M4镜像到内存中(TCML/DDR),M4 在Uboot 测试流程如下:
1.从 NXP SDK官网 获取示例源码
2.安装 安装Linux下M4 gcc
3.编译示例代码,并烧录到sd卡2000扇区
4.启动uboot,使用mmc命令加载M4镜像到TCML中
5.使用bootaux启动M4内核
二、imx8mm m4代码获取与开发环境搭建
1.M4代码获取
进入 NXP MCUXpresso SDK Builder 选择开发板(Select Development Board) -> 处理器(Processors) -> i.MX -> 8M Mini Dual -> 对应的型号
图示流程如下:
等待SDK生成后,根据需要可选择SDK版本,编译工具(GCC/IAR),以及编译环境。还可选择操作系统和其它库(DSP等)。配置好后,选择 [Download SDK] 即可选择SDK。(教程以Linux为例,故选择 Toolchain / IDE:GCC ARM Host OS:Linux )
等待编译完成便会跳转到 [MCUXpresso SDK Dashboard] 界面,选择刚才编译的SDK下载即可(以前未创建SDK,会直接跳转到下载界面)
下载界面如下,选择示例工程下载即可:
2.开发环境搭建
1)安装编译链
下载:gcc-arm-none-eabi-7-2017-q4-major-linux.bz2 可使用 CSDN GCC链接 不过需要积分。也可以到我 gitee GCC工具 里获取(要使用 arm-gcc-none-eabi-7-2017-q4 )。解压并安装GCC: tar -xvf gcc-arm-none-eabi-7-2017-q4-major-linux.bz2
2)SDK配置
1.安装zip: sudo apt-get install zip
2.安装make: sudo apt-get install make
3.安装cmake: sudo apt-get install cmake
复制SDK到当前文件夹,使用unzip命令解压SDK,进入示例工程文件夹
<install_dir>/boards/<board_name>/<example_type>/<application_name>/armgcc 以hello_world为例:
cd boards/evkmimx8mm/demo_apps/hello_world/armgcc
导出GCC环境变量
export ARMGCC_DIR=GCC路径
export PATH=$PATH:GCC路径/bin
执行编译脚本:
./build_release.sh # 使用此脚本,程序链接地址为0x7E0000(TCML)
生成的文件在 ./release 目录中
使用dd命令,烧录M4镜像到SD卡第2000扇区中:
dd if=./release/hello_world.bin of=/dev/sdb bs=512 seek=2000 # of为输出设备,请正确选择
3.uboot启动M4
启动uboot使用输入以下命令:
#首先需要在uboot将M4程序读取到ram中。
#如在M4程序在emmc固定位置中,假定存放位置为MMC的10M偏移处。选择存放了M4程序的SD卡作为当前mmc设备 切换到当前SD通道
mmc dev 1
# 2.将2000扇区偏移处 读取10K到TCML中
mmc read 0x7e0000 2000 20
# 3.使用bootaux 启动M4
bootaux 0x7E0000
如果一切正常,串口4(波特率:115200)会输出"hello world."