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內運行,程序無法運行。
希望大家看到有所收穫,指出問題共同進步,在飛凌的技術支持和分享中獲得更多的知識。