国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 1411|回復(fù): 0
打印 上一主題 下一主題

iMX8MQ MCUXpresso SDK開發(fā)詳解

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2021-2-8 08:54:05 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
關(guān)鍵詞: 飛凌嵌入式
飛凌iMX8MQ 平臺內(nèi)部有一個Cortex M4內(nèi)核,支持使用MCUXpresso SDK進(jìn)行開發(fā)。
MCUXpresso SDK是微控制器軟件支持的集合,它包含外圍驅(qū)動程序,RPMSG多核通信,以及FreeRTOS支持。可以查看SDK API文檔了解它實現(xiàn)的函數(shù)和結(jié)構(gòu)體。
一、使用ARM GCC工具編譯應(yīng)用程序
Linux環(huán)境下,MCUXpresso SDK使用GCC工具進(jìn)行編譯,下面以hello_world demo為例說明編譯的過程。
首先需要搭建Linux編譯環(huán)境:
1、安裝cmake
$ sudo apt-get install cmake
$ cmake --version
cmake 的版本要大于 3.0.x 才行。如果您的的版本小于3.0,可以參考下列步驟進(jìn)行更新。
$ cd /tmp
$ wget https://cmake.org/files/v3.11/cmake-3.11.0-rc4-Linux-x86_64.tar.gz
$ tar zxvf cmake-3.11.0-rc4-Linux-x86_64.tar.gz
$ sudo mv cmake-3.11.0-rc4-Linux-x86_64 /opt/cmake-3.11
$ sudo ln -sf /opt/cmake-3.11/bin/* /usr/bin/
$ cmake --version
2、安裝GCc編譯器
將用戶資料工具目錄的 gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2 拷貝到虛擬機/tmp 目錄。
$ cd /tmp
$ sudo tar xvf gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2 -C /opt
3、設(shè)置環(huán)境變量
$ export ARMGCC_DIR=/opt/gcc-arm-none-eabi-7-2017-q4-major
$ export PATH=/opt/gcc-arm-none-eabi-7-2017-q4-major/binPATH
設(shè)置完成可以看一下是否設(shè)置成功:
$ echo $ARMGCC_DIR
$ echo $PATH
4、編譯
將用戶資料原廠資料中的 SDK_2.8.0_EVK-MIMX8MQ.zip 拷貝到虛擬機 /home/forlinx/imx8mq 目錄下:
$ cd /home/forlinx/imx8mq
$ mkdir SDK_2.8.0_EVK-MIMX8MQ
$ mv SDK_2.8.0_EVK-MIMX8MQ.zip SDK_2.8.0_EVK-MIMX8MQ
$ cd SDK_2.8.0_EVK-MIMX8MQ
$ unzip SDK_2.8.0_EVK-MIMX8MQ.zip
$ cd boards/evkmimx8mq/demo_apps/hello_world/armgcc
$ ./build_debug.sh
  編譯出來的 hello_world.bin 文件在 ./debug 目錄下。
注意:這里也可以編譯其他版本,如build_ddr_debug.sh,只是在運行的時候會有差別。
二、 使用IAR和J link編譯和 調(diào)試
參考官方提供的手冊 《SDK_2.8.0_EVK-MIMX8MQ\docs\Getting Started with MCUXpresso SDK for EVK-MIMX8MQ》。
1、IAR和Jlink官方工具版本要求
IAR請使用IAR embedded Workbench 8.30.2版本或更高版本,jlink官方工具版本請使用包含MIM8M6_M4設(shè)備的版本,我們使用的版本為JLink_Windows_V654c。IAR embedded Workbench為付費軟件,請用戶自行購買安裝。Jlink官方工具用戶可以在jlink官方網(wǎng)站下載。
另外還需要NXP提供的SDK_2.8.0_EVK-MIMX8MQ,用戶資料內(nèi)已經(jīng)提供。
2、IAR通過Jlink運行測試程序
步驟一、打開工程
1.  打開IAR
2.  在“File”菜單下選擇“Open Workspace”,選擇SDK_2.8.0_EVK-MIMX8MQ\boards\evkmimx8mq\demo_apps\hello_world\iar\hello_world.eww。
3.  選擇debug選項
步驟   配置工程
按下ALT+F7快捷鍵打開配置界面。
1.  設(shè)置General Options選項配置:
2. 設(shè)置linker選項配置:
點擊“Edit...”
選擇MIMX8MQ6xxxJZ_cm4_ddr_ram.icf、MIMX8MQ6xxxJZ_cm4_ram.icf,不同的選項會生成的鏡像會運行在不同的存儲中(ddr、ram)。
3.  設(shè)置Debugger選項配置:
4. 設(shè)置J-Link/J-Trace選項配置:
配置完成后點擊 “OK”。
步驟三、編譯并運行工程
注意:調(diào)試M4程序,iMX8MQ開發(fā)板不能啟動到Linux內(nèi)核階段,需要停止在uboot(啟動時,在調(diào)試串口按下空格鍵)。
1.  點擊“Make”編譯工程,工程編譯完成,且無報錯:
2. 點擊“Download and Debug”按鈕:
3. 提示設(shè)置 J-Link 選擇設(shè)備:
4. 選擇“MIMX8MQ6_M4”設(shè)備:
5. 運行測試程序:
6. 在M4核調(diào)試串口查看運行結(jié)果:
三、使用 U -boot運行應(yīng)用程序
可以在iMX8MQ開發(fā)板啟動的時候進(jìn)入u-boot命令行,通過u-boot命令來將bin文件加載到M4中并運行,下面以hello_world.bin程序為例說明運行的過程。
注意:M4程序運行可能和A53有資源沖突,如某個接口在M4中已經(jīng)使用,A53中不要再次調(diào)用此接口。M4程序運行在DDR中,需要Linux中預(yù)留這部分內(nèi)存。在系統(tǒng)燒寫的設(shè)備樹ok8mq-evk-rpmsg.dtb中有配置。我們下面測試都是使用此設(shè)備樹測試M4程序。
在uboot命令行內(nèi)輸入下列命令修改設(shè)備樹:
$ setenv fdt_file ok8mq-evk-rpmsg.dtb
$ saveenv
1、 準(zhǔn)備測試用M4程序
采用第一或者第二中的方法生成運行在DDR和ram的hello_world.bin,并將它們分別命名為hello_world_ddr.bin和hello_world_ram.bin。
2、 串口連接
由于hello_world程序中使用了uart2,因此在開始測試之前請連接uart2到PC的串口。并使用串口調(diào)試工具打開對應(yīng)的COM口,波特率等參數(shù)設(shè)置和OKMX8MQ Debug口參數(shù)相同。
3、 將編譯出來的hello_world_ddr.bin和hello_world_ram.bin拷貝到U盤(fat32)的根目錄下面,將U盤插到開發(fā)板上,重啟iMX8MQ開發(fā)板,停在u-boot命令行。
4、 在u-boot命令行執(zhí)行如下命令
對于debug/release版本的bin文件,它運行在TCM,執(zhí)行下列命令:
$ usb start
$ fatload usb 0:1 0x48000000 hello_world_ram.bin
$ cp.b 0x48000000 0x7e0000 0x20000
$ bootaux 0x7e0000
終端的執(zhí)行:
在uart2的調(diào)試串口工具上可以看到打印信息如下:
對于ddr_debug/ddr_release版本的bin文件,它運行在ddr4,執(zhí)行下列命令:
$setenv fdt_file ok8mq-evk-rpmsg.dtb
$ saveenv
$ usb start
$ fatload usb 0:1 0x80000000 hello_world_ddr.bin
$ dcache flush
$ bootaux 0x80000000
終端的執(zhí)行:
在uart2的調(diào)試串口工具上可以看到打印信息如下:
四、Uboot自動啟動M4程序
    在制作系統(tǒng)鏡像的時候,會將源碼包內(nèi)images/m4/文件夾下的文件寫入到boot.img鏡像內(nèi),該鏡像是rootfs.sdcard的一部分。我們把鏡像燒寫到emmc后,這些m4程序的鏡像就在emmc的fat32分區(qū)內(nèi)存在。Uboot啟動過程中會運行m4_run,將m4_run設(shè)置為啟動m4程序,啟動后uboot會啟動M4程序。
以hello_world例程示例,按下面的方法設(shè)置uboot環(huán)境變量后,uboot會自動啟動M4程序。
hello_world程序的鏡像,我們已經(jīng)默認(rèn)添加到源碼的images/m4/文件夾下,所以我們的鏡像內(nèi)emmc的分區(qū)1內(nèi)的m4文件夾下包含了hello_world的鏡像,hello_world_ram.bin和hello_world_ddr.bin。
在ram啟動M4程序。
$ setenv m4_run 'mmc dev 0; fatload mmc 0:1 0x48000000 m4/hello_world_ram.bin; cp.b 0x48000000 0x7e0000 0x20000; bootaux 0x7e0000 '
$ saveenv
在ddr啟動M4程序。
$ setenv m4_run 'mmc dev 0; fatload mmc 0:1 0x80000000 m4/hello_world_ddr.bin; dcache flush; bootaux 0x80000000'
$ saveenv
注1:用戶添加自己編譯的鏡像放到images/m4/文件夾下,編輯生成鏡像,燒寫后就會在emmc的fat分區(qū)內(nèi),啟動的時候根據(jù)編譯的為ddr版或ram版選擇m4_run的設(shè)置方法,并將m4_run命令內(nèi)的m4鏡像名字替換成自己編譯的m4鏡像的名字。
注2:可以在系統(tǒng)啟動后查看fat分區(qū)內(nèi)包含的鏡像,也可以通過cp命令添加鏡像。
查看鏡像:
$ ls /run/media/mmcblk0p1/m4
復(fù)制鏡像到文件夾:
$ cp /run/media/sda1/m4_flash.bin /run/media/mmcblk0p1/m4/
五、異構(gòu)多核通信測試
使用RPMsg(Remote Processor Messaging)實現(xiàn)Cortex A53跟Cortex M4進(jìn)行通信。
RPMsg是一種基于virtio的消息傳遞總線,它允許內(nèi)核驅(qū)動程序與系統(tǒng)上可用的遠(yuǎn)程處理器(如Cortex M4)進(jìn)行通信。下圖是一個多核通信架構(gòu):
飛凌iMX8MQ的MCUXpresso SDK中有一個demo:rpmsg_lite_pingpong_rtos,它實現(xiàn)了Cortex A53與Cortex M4的數(shù)據(jù)收發(fā),二者使用了共享內(nèi)存,并且在Cortex M4上運行了一個FreeRTOS Task。
在Cortex A53端通過內(nèi)核模塊的方式實現(xiàn)該功能,代碼位于:drivers/rpmsg/imx_rpmsg_pingpong.c。
下面以 Arm GCC 方式編譯示例。
進(jìn)入以下目錄:
$ cd boards/evkmimx8mq/multicore_examples/rpmsg_lite_pingpong_rtos/linux_remote/armgcc
編譯debug版本的bin文件:
$ ./build_debug.sh
$ cd debug
$ ls -l
將編譯出來的bin文件rpmsg_lite_pingpong_rtos_linux_remote.bin拷貝到U盤(Fat32)的根目錄下面,啟動開發(fā)板停在u-boot命令行。
$ setenv fdt_file ok8mq-evk-rpmsg.dtb
$ saveenv
$ usb start
$ fatload usb 0:1 0x48000000 rpmsg_lite_pingpong_rtos_linux_remote.bin
$ cp.b 0x48000000 0x7e0000 0x20000
$ bootaux 0x7e0000
運行bin文件后,可以在uart2的串口終端看到以下輸出:
然后在A53 U-boot命令行輸入 boot 啟動kernel,此時可以在Cortex M4的串口終端看到以下輸出:
然后在Cortex A53的串口終端加載以下內(nèi)核模塊:
$ modprobe imx_rpmsg_pingpong
模塊加載之后,Cortex A53開始跟Cortex M4進(jìn)行數(shù)據(jù)傳輸,此時可以在Cortex M4的串口終端看到以下輸出:
此時可以在Cortex A53的串口終端看到以下輸出:

詳情請查看飛凌官方網(wǎng)站https://www.forlinx.com/

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产亚洲婷婷香蕉久久精品 | 欧美成人一区二区三区不卡视频 | 精品区卡一卡2卡三免费 | 国产资源在线看 | 中文精品视频一区二区在线观看 | 国产三级高清 | 九九热在线播放 | 九九精品视频在线播放 | 久久这里只是精品免费视频 | h在线视频 | 欧美黄色大片免费 | 久久久久久国产精品视频 | 中文毛片| 色操插| 久草视频免费 | 高清成年美女黄网站色大 | 他是谁电视剧免费观看 天堂 | 国产日韩欧美一区二区三区综合 | 蜜臀91精品国产高清在线观看 | 青青日 | 花季传媒app下载v3.048 | 日本亚洲国产精品久久 | 福利视频自拍 | 在线免费观看毛片网站 | 欧美xxxxbb| 国产美女久久精品香蕉69 | 八戒八戒在线播放免费观看5 | 一级毛片免费一级直接观看 | 国产青青草视频 | 欧美激情综合 | 极品精品国产超清自在线观看 | 四虎影视永久在线 | 99草视频 | 青青青视频在线播放视频 | 国产精品亚洲欧美一区麻豆 | 久久国产免费一区 | 国产一区二区视频在线 | 亚洲欧美另类视频 | 亚洲福利一区福利三区 | 天天干天天操天天射 | www.青青草.com|