有很多研究單片機(jī)的小伙伴在面對(duì)多核異構(gòu)處理器時(shí),可能會(huì)對(duì)多核的啟動(dòng)流程感到困惑——因?yàn)椴皇煜CC編程和GDB調(diào)試,所以也無法確定多核異構(gòu)處理器的程序是否能像單片機(jī)那樣方便地編寫和仿真。本篇文章,小編就將以飛凌嵌入式的OKMX8MP-C開發(fā)板為例,為大家介紹多核異構(gòu)處理器M核程序的啟動(dòng)配置、程序編寫和實(shí)時(shí)仿真的過程。
飛凌嵌入式OKMX8MP-C開發(fā)板所搭載的NXP i.MX8M Plus處理器具備強(qiáng)悍的性能,集成4個(gè)主頻最高可達(dá)1.8GHz (工業(yè)級(jí)主頻為1.6GHz)的Arm Cortex-A53多任務(wù)核和1個(gè)Cortex-M7實(shí)時(shí)核,不管是對(duì)數(shù)據(jù)的高速吞吐、處理,還是復(fù)雜的人機(jī)交互界面處理,都能從容應(yīng)對(duì)。
01M核程序啟動(dòng) NXP i.MX8M Plus處理器的M核是無法單獨(dú)啟動(dòng)的,必須由A核uboot加載,因此飛凌嵌入式基于這款處理器打造的OKMX8MP-C開發(fā)板也是默認(rèn)不開啟M核的,需要修改uboot下的環(huán)境變量,配置M核自啟動(dòng)。
這樣每次A核啟動(dòng)后,uboot會(huì)加載/run/media/mmcblk2p1/目錄下的forlinx_m7_tcm_firmware.bin文件,M核啟動(dòng)后會(huì)完成內(nèi)核初始化,并由資源域0變?yōu)橘Y源域1,再將時(shí)鐘、外設(shè)、內(nèi)存等資源初始化,就可以完成程序的輪轉(zhuǎn)運(yùn)行了。
1. uboot環(huán)境變量加載M核 (1)重啟OKMX8MP-C開發(fā)板,按空格鍵進(jìn)入uboot命令行控制臺(tái)。
(2)輸入”1”進(jìn)入uboot控制臺(tái)。并按順序依次輸入以下命令,修改uboot環(huán)境變量,使其能加載M核程序。
2. 下載M核程序 (1)我們可以使用IAR軟件對(duì)飛凌M核軟件開發(fā)包的程序進(jìn)行編譯,在工程目錄/IAR/debug目錄下將生成*.bin文件,將文件名稱改為:forlinx_m7_tcm_firmware.bin ;
(2)使用串口Xmodem,網(wǎng)絡(luò)FTP,SCP,U盤,TF卡等多種方式,都可以將forlinx_m7_tcm_firmware.bin 從電腦拷貝至核心板/run/media/mmcblk2p1/目錄下,在Linux調(diào)試串口輸入 sync 命令同步 ; (3)給OKMX8MP-C開發(fā)板重新上電,A核uboot會(huì)加載M核程序,通過M核串口即可看到程序的打印信息。
02M核程序編寫 許多使用單片機(jī)的用戶習(xí)慣通過Keil或IAR這類IDE工具對(duì)程序進(jìn)行編寫;由于此類軟件易用性較差,因此很多時(shí)候我們都會(huì)再使用VScode等編輯器進(jìn)行代碼的編輯開發(fā);但此類編輯器對(duì)程序編譯、燒寫和仿真時(shí)又相當(dāng)不方便,大家在選擇工具時(shí)可能會(huì)很頭痛。
這里小編推薦使用VScode對(duì)代碼編寫和修改,使用IAR對(duì)程序編譯、下載、仿真。
1. IDE工具——IAR IAR是支持多個(gè)廠家的單片機(jī)處理器的集成開發(fā)環(huán)境(IDE),用于提供開發(fā)環(huán)境的應(yīng)用程序,是集成了代碼編寫功能、分析功能、編譯功能、調(diào)試功能等一體化的開發(fā)軟件。
i.MX8M Plus處理器的IAR版本要求在9.20版本以上,用戶可在網(wǎng)上自行下載。用戶在安裝IAR后,打開飛凌嵌入式提供的M核SDK開發(fā)包,可在boards\evkmimx8mp\driver_examples\*\*\iar目錄下找到iar工程文件*.ewww,雙擊即打開IAR項(xiàng)目。
2. VScode VScode是微軟推出的一款跨平臺(tái)的編輯器,能夠在windows、Linux、iOS等平臺(tái)上運(yùn)行,通過安裝插件可以讓這個(gè)編輯器變成一個(gè)編譯器。
軟件打開后在菜單欄單擊文件--打開文件夾,選擇SDK下對(duì)應(yīng)的例程,即可完成代碼的編寫和修改工作。
03M核程序仿真 飛凌嵌入式OKMX8MP-C開發(fā)板支持JTAG對(duì)M核的硬件仿真功能,用戶可在IAR中通過JTAG設(shè)置斷點(diǎn),實(shí)時(shí)查看和修改各變量,全速運(yùn)行或單步運(yùn)行程序等功能,提高程序排查錯(cuò)誤時(shí)的效率。
1. 安裝JTAG (1)在Segger官網(wǎng)下載J-LINK驅(qū)動(dòng),并在電腦上安裝程序,IDE工具選擇IAR; (2)由于i.MX8M Plus是推出時(shí)間相對(duì)較短的芯片,因此需要更換Segger目錄下8mp的J-LINK驅(qū)動(dòng); (3)如果使用的NXP官方的 SDK還需要更換啟動(dòng)文件。
2. 硬件鏈接 飛凌嵌入式OKMX8MP-C開發(fā)板JTAG接口采用標(biāo)準(zhǔn)線序,用戶可通過20pin 2.54間距轉(zhuǎn)10pin 1.27間距的JTAG轉(zhuǎn)接板和10pin1.27 間距的連接線與J-LINK連接,注意J-LINK 1腳要和開發(fā)板JTAG 1 腳對(duì)應(yīng)。
3. 硬件仿真 (1)用戶將程序編譯完成后,將執(zhí)行程序放入 核心板/run/media/mmcblk2p1/ 目錄下,因?yàn)橛布抡媸菍DK包的程序加載到內(nèi)存執(zhí)行,所以要仿真的程序和核心板中的forlinx_m7_tcm_firmware.bin可不是同一個(gè); (2)點(diǎn)擊仿真按鈕或快捷鍵Ctrl+D,進(jìn)入仿真界面,可正常設(shè)置斷點(diǎn)、監(jiān)測(cè)變量、單步和全速執(zhí)行、復(fù)位等操作; (3)如果需要查看freeRTOS任務(wù)調(diào)度情況,在工程處右擊,選擇OptionS菜單,Debugger-Plugins界面中勾選FreeRTOS and OpenROTS。
4. 串口打印 飛凌嵌入式OKMX8MP-C開發(fā)板除了支持JLink硬件仿真外,應(yīng)用程序中還可通過PRINTF函數(shù)向M核串口輸出打印信息,了解程序運(yùn)行過程。
|