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内运行,程序无法运行。
希望大家看到有所收获,指出问题共同进步,在飞凌的技术支持和分享中获得更多的知识。
文章评论(0条评论)
登录后参与讨论