飛凌乾貨丨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內運行,程序無法運行。

希望大家看到有所收穫,指出問題共同進步,在飛凌的技術支持和分享中獲得更多的知識。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章