飞凌干货丨NXP 的 i.MX 8MM如何在uboot运行M4程序

OKMX8MM-C 平台内部有一个Cortex-M4内核,可以使用MCUXpresso SDK进行开发,MCUXpresso SDK是微控制器软件支持的集合,它包含外围驱动程序,RPMSG多核通信,以及FreeRTOS支持。可以查看SDK API文档了解它实现的函数和结构体。
MCUXpresso SDK支持IAR或者armgcc两种方式编译镜像,编译可以生成三种镜像,分别运行在QSPI flash、ram、DDR中。编译方法参考飞凌Linux手册或SDK_2.5.0_EVK-MIMX8MM使用手册Getting Started with MCUXpresso SDK for i.MX 8M Mini。
下面介绍编译出的三种镜像如何在uboot启动,以最简单的hello world为例,程序启动后会在uart4输出“hello world.”。
如何在uboot启动QSPI flash版本的M4程序
首先需要将M4程序烧写到QSPI flash中,可以通过TF卡或者UUU工具(可以参考飞凌linux手册)。
然后在uboot启动QSPI flash中的M4核程序。
初始化QSPIflash
sf probe
M启动M4核程序
bootaux 0x8000000
输入命令后
在这里插入图片描述
输入命令后
在这里插入图片描述

如何在uboot启动ram版本的M4程序

首先需要在uboot将M4程序读取到ram中。
如在M4程序在emmc固定位置中,假定存放位置为MMC的10M偏移处。选择存放了M4程序的emmc作为当前mmc设备
mmc dev 1
将10M偏移处(0x2800 * 512 = 102400)读取50K到ram中
mmc read 0x7e0000 2800 100
如果在M4程序在U盘的fat分区中,
usb start
fatload usb 0:1 0x7e0000 hello_world.bin
然后在uboot启动ram版本的程序
bootaux 0x7e0000
0x7e0000为M4程序的地址
输入命令后
在这里插入图片描述
查看结果
在这里插入图片描述

如何在uboot启动DDR版本的程序

首先需要在uboot将M4程序读取到DDR中。
如在M4程序在emmc固定位置中,假定存放位置为MMC的10M偏移处。选择存放了M4程序的emmc作为当前mmc设备
mmc dev 1
将10M偏移处(0x2800 * 512 = 102400)读取50K到DDR中
mmc read 0x80000000 2800 100
dcache flush
如果在M4程序在U盘的fat分区中,
usb start
fatload usb 0:1 0x80000000 hello_world.bin
然后在uboot启动ram版本的程序
bootaux 0x80000000
0x80000000为M4程序的地址
输入命令
在这里插入图片描述
查看结果
在这里插入图片描述

特别注意: 编译生成的不同版本的M4程序,要严格按照编译版本进行加载,并跳转到其加载地址运行。
如果编译的镜像没有放到其需要运行的存储空间内(ram版放到ram、DDR版放到DDR内,QSPIflash版放到QSPIflash内),M4程序程序是不能运行的。例如M4程序是编译的QSPIflash版本的,把其放入到DDR或者ram内运行,程序无法运行。

希望大家看到有所收获,指出问题共同进步,在飞凌的技术支持和分享中获得更多的知识。

发布了4 篇原创文章 · 获赞 0 · 访问量 38

猜你喜欢

转载自blog.csdn.net/spear800/article/details/104774491