米爾基于NXP i.MX 93開(kāi)發(fā)板的M33處理器應(yīng)用開(kāi)發(fā)筆記
1.概述
本文主要介紹M33核的兩種工程調(diào)試開(kāi)發(fā),第一種方式是通過(guò)板子自帶的固件進(jìn)行開(kāi)發(fā),第二種方式是使用 IAR Embedded Workbench 來(lái)構(gòu)建可移植的Freertos文件進(jìn)行開(kāi)發(fā)。
2.硬件資源
● MYD-LMX9X 開(kāi)發(fā)板(米爾基于NXP i.MX 93開(kāi)發(fā)板)
3.軟件資源
● Windows7及以上版本
● 軟件 :IAR Embedded Workbench
4.板載固件調(diào)試M33
4.1環(huán)境準(zhǔn)備
在A55 Debug(J14)和M33 Debug(J15)上分別接上串口,我這里COM25連接A55核,COM7接的M33核,上電開(kāi)機(jī)進(jìn)入系統(tǒng),在目錄/run/media/root-mmcblk0p2/lib/firmware下有調(diào)試M33核的五個(gè)固件,如圖4-1所示。
圖4-1 固件圖
接下來(lái)本章將以str_echo為例進(jìn)行調(diào)試。
4.2調(diào)試
首先將固件加載到開(kāi)發(fā)板當(dāng)中,然后將M33核打開(kāi),命令如下
root@myd-lmx9x:/run/media/root-mmcblk0p2/lib/firmware# echo imx93-11x11-evk_m33_TCM_rpmsg_lite_str_echo_rtos.elf > /sys/devices/platform/imx93-cm33/remoteproc/remoteproc0/firmware
root@myd-lmx9x:/run/media/root-mmcblk0p2/lib/firmware# echo start > /sys/devices/platform/imx93-cm33/remoteproc/remoteproc0/state
此時(shí)M33的終端COM7口會(huì)出現(xiàn)打印如下
Connecting to COM7...
Connected.
RPMSG String Echo FreeRTOS RTOS API Demo...
Nameservice sent, ready for incoming messages...
Get Message From Master Side : "hello world!" [len : 12]
此時(shí)還不能發(fā)送字符,還需要將驅(qū)動(dòng)裝好命令如下
root@myd-lmx9x:/run/media/root-mmcblk0p2/lib/firmware# modprobe imx_rpmsg_tty
[ 272.516722] imx_rpmsg_tty virtio1.rpmsg-virtual-tty-channel.-1.30: new channel: 0x400 -> 0x1e!
[ 272.526155] Install rpmsg tty driver!
此時(shí)就能看到目錄/dev下多了一個(gè)ttyRPMSG30,可以通過(guò)這個(gè)端口向M33核發(fā)送字符串
root@myd-lmx9x:/run/media/root-mmcblk0p2/lib/firmware# echo 1234 > /dev/ttyRPMSG30
然后在M33串口端接收到字符
Connecting to COM7...
Connected.
RPMSG String Echo FreeRTOS RTOS API Demo...
Nameservice sent, ready for incoming messages...
Get Message From Master Side : "hello world!" [len : 12]
Get Message From Master Side : "1234" [len : 4]
Get New Line From Master Side
4.3切換固件
如果想要切換固件必須先暫停M33核,命令如下
root@myd-lmx9x:/run/media/root-mmcblk0p2/lib/firmware# echo stop > /sys/devices/platform/imx93-cm33/remoteproc/remoteproc0/state
[ 1956.373753] imx_rpmsg_tty virtio1.rpmsg-virtual-tty-channel.-1.30: rpmsg tty driver is removed
[ 1956.384837] remoteproc remoteproc0: stopped remote processor imx-rproc
然后才能往板子里裝固件,如4.2章節(jié)所示。
5.IAR Embedded Workbench調(diào)試M33
5.1.環(huán)境準(zhǔn)備
下載SDk,下載地址為示例工程 | MCUXpresso SDK構(gòu)建工具 (nxp.com)
圖5-1 SDK示例工程
安裝IAR Embedded Workbench,安裝地址為IAR Embedded Workbench for Arm - Free trial version | IAR
5.2. 導(dǎo)入工程文件
打開(kāi) IAR Embedded Workbench 軟件,點(diǎn)擊界面 [File]>[Open Workspace] 并選擇導(dǎo)入所下載的sdk,我這里選擇的是freertos_hello,在下載目錄MCIMX93-EVK-freertos_hellofreertos_hello下的freertos_hello.eww,如下圖所示
圖5-2 選擇導(dǎo)入文件
選擇完之后,然后點(diǎn)擊[打開(kāi)]導(dǎo)入,然后確認(rèn),即導(dǎo)入成功。
5.3. 環(huán)境配置
● 選擇芯片
右鍵單擊freertos_hello-debug文件夾選擇Options,在General Options一欄中點(diǎn)擊Target選擇選擇芯片,這里沒(méi)有9352芯片所以選擇NXP MIMXRT595S_M33,如下圖所示
圖5-3 選擇芯片
● 選擇庫(kù)函數(shù)
圖5-4 選擇庫(kù)函數(shù)
● 設(shè)置優(yōu)化等級(jí)
圖5-4 設(shè)置優(yōu)化等級(jí)
● 選擇下載器
圖5-5 選擇下載器
● 設(shè)置輸出文件和輸出名字
圖5-6 設(shè)置輸出文件和輸出名字
5.3.編譯
右鍵單擊freertos_hello-debug文件夾先點(diǎn)擊make,成功后點(diǎn)擊RebuildAll。
圖5-7 構(gòu)建項(xiàng)目
成功后在目錄MCIMX93-EVK-freertos_hellofreertos_helloDebug下生成hello-world.bin文件。
圖5-8 生成bin文件
5.4.燒錄
這里我們選擇SD卡燒錄,首先把生成的hello-world.bin文件放到SD卡里面,選擇SD卡啟動(dòng)(具體參考),分別接上A55 Debug串口(J14)和M33 Debug串口(J15),本章所示COM25接的A55,COM7接的M33,在上電之后A55端進(jìn)入uboot,輸入以下指令
COM25:
Hit any key to stop autoboot: 0
u-boot=>
u-boot=> fatload mmc 1:1 80000000 hello-world.bin; cp.b 0x80000000 0x201e0000 0x1014424 bytes read in 3 ms (4.6 MiB/s)
u-boot=> bootaux 0x1ffe0000 0
## Starting auxiliary core addr = 0x1FFE0000...
此時(shí)在M33的終端COM7上會(huì)出現(xiàn)打印
Connecting to COM7
Connected.
hello world.
6.參考資料
MCUXpresso SDK for MCIMX93-EVK快速入門(mén)
Getting Started with MCUXpresso SDK for MCIMX93-EVK.pdf (nxp.com)
《MYD-LMX9X Linux軟件評(píng)估指南》
《MYD-LMX9X Linux軟件開(kāi)發(fā)指南》
評(píng)論