一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于瑞芯微RK3562 四核 ARM Cortex-A53 + 單核 ARM Cortex-M0工業(yè)評(píng)估板——Linux應(yīng)用開發(fā)手冊(cè)

Tronlong創(chuàng)龍科技 ? 來源:Tronlong創(chuàng)龍科技 ? 作者:Tronlong創(chuàng)龍科技 ? 2025-04-16 10:56 ? 次閱讀

本文主要介紹TL3562-MiniEVM評(píng)估板的AMP(Asymmetric Multi-processing)開發(fā)案例,適用開發(fā)環(huán)境如下:

Windows開發(fā)環(huán)境:Windows 7 64bit、Windows 10 64bit

Linux開發(fā)環(huán)境:VMware16.2.5、Ubuntu20.04.6 64bit

U-Boot:U-Boot-2017.09

Kernel:Linux-5.10.209

LinuxSDK:rk3562-ubuntu20.04-sdk-[版本號(hào)](基于rk3562_linux_release_v1.2.0)

工程調(diào)試工具:OpenOCD、Eclipse

評(píng)估板支持Linux(Kernel-5.10.209)、Baremetal(HAL)、RTOS(RT-Thread)組合的AMP混合架構(gòu)設(shè)計(jì),滿足如電力物聯(lián)網(wǎng)、電網(wǎng)繼電保護(hù)、電力系統(tǒng)安全控制、工業(yè)自動(dòng)化的需求。

我司提供的AMP-SDK開發(fā)包基于官方的rk3562_linux_release_v1.2.0進(jìn)行拆解。AMP-SDK開發(fā)包與AMP案例位于“4-軟件資料Demoamp-demos”目錄下,具體說明如下所示。

備注:

(1) a53-3_baremetal為Cortex-A53(CPU3)核心Baremetal工程文件;

(2) a53-3_rtos為Cortex-A53(CPU3)核心RT-Thread(RTOS)工程文件;

(3) m0_baremetal為Cortex-M0(MCU)核心Baremetal工程文件;

(4) m0_rtos為Cortex-M0(MCU)核心RT-Thread(RTOS)工程文件;

(5) a53-3_baremetal、a53-3_rtos、m0_baremetal、m0_rtos工程均可單獨(dú)與Linux端通信。

wKgZO2f_TgWAGZHqAABPCakWLsQ709.pngwKgZPGf_TgWAWk85AAEI1DDDXmM83.jpeg

備注:不同案例目錄結(jié)構(gòu)會(huì)有所不同,請(qǐng)以實(shí)際情況為準(zhǔn)。

HAL(Hardware Abstraction Layer,硬件抽象層)是位于操作系統(tǒng)內(nèi)核與硬件電路之間的接口層,其目的在于將硬件抽象化。瑞芯微的Standalone系統(tǒng)是一個(gè)簡(jiǎn)單的、low-level的軟件層,內(nèi)部實(shí)現(xiàn)基于HAL,提供對(duì)基本處理器特性(如Cache、Interrupts和Exceptions)的訪問,以及對(duì)基礎(chǔ)外設(shè)(如標(biāo)準(zhǔn)輸入和輸出、UART、CAN、GMAC、I2C等)的驅(qū)動(dòng)支持。

RT-Thread(Real Time-Thread)是一款國(guó)產(chǎn)嵌入式開源實(shí)時(shí)多線程操作系統(tǒng),由RT-Thread工作室的專業(yè)開發(fā)人員開發(fā)、維護(hù)。RT-Thread不僅僅是一款高效、穩(wěn)定的實(shí)時(shí)核心,也是一套面向嵌入式系統(tǒng)的軟件平臺(tái),覆蓋了全搶占的實(shí)時(shí)操作系統(tǒng)內(nèi)核。

評(píng)估板簡(jiǎn)介

創(chuàng)龍科技 TL3562-MiniEVM 是一款基于瑞芯微 RK3562J/RK3562 處理器設(shè)計(jì)的四核 ARM Cortex-A53 + 單核 ARM Cortex-M0 國(guó)產(chǎn)工業(yè)評(píng)估板,主頻高達(dá) 2.0GHz。評(píng)估板由核心板和評(píng)估底板組成,核心板 CPU、ROMRAM、電源、晶振等所有元器件均采用國(guó)產(chǎn)工業(yè)級(jí)方案,國(guó)產(chǎn)化率 100%,評(píng)估底板大部分元器件亦采用國(guó)產(chǎn)工業(yè)級(jí)方案,國(guó)產(chǎn)化率約 99%(按元器件數(shù)量占比,數(shù)據(jù)僅供參考)。核心板經(jīng)過專業(yè)的 PCB Layout 和高低溫測(cè)試驗(yàn)證,支持選配屏蔽罩,質(zhì)量穩(wěn)定可靠,可滿足各種工業(yè)應(yīng)用環(huán)境要求。

評(píng)估板引出 2 路 Ethernet、2 路 USB、Micro SD、UART 等通信接口,同時(shí)引出 2 路 M IPI CSI、LVDS LCD、MIPI LCD、HDMI OUT、MIC IN、SPK OUT、HP OUT 多媒體接口,支

持 1080P@60fps H.264 視頻編碼、4K@30fps H.265 視頻解碼。

評(píng)估板體積小巧,尺寸為 85x130mm,可作為卡片式電腦使用,且便于產(chǎn)品集成,方便用戶快速進(jìn)行產(chǎn)品方案評(píng)估與技術(shù)預(yù)研。

wKgZO2f-IqCAe9vvAA6rUTREGz8634.png

評(píng)估板硬件資源圖解 1

wKgZO2f-IsCAPfA9AA0HAUm3ZNI793.png

評(píng)估板硬件資源圖解 2

開發(fā)環(huán)境搭建

本章節(jié)主要介紹基于Linux + RT-Thread(RTOS)、Baremetal的AMP案例的開發(fā)環(huán)境搭建。

打開Ubuntu,在任意目錄下執(zhí)行如下命令,安裝AMP案例編譯所需的相關(guān)工具。

Host# sudo apt update

wKgZO2f_TgaAYk3EAAZVFGPi_i8184.png

圖 1

Host# sudo apt install scons

wKgZPGf_TgaAVN85AAKC36clQLA348.png

圖 2

請(qǐng)將位于產(chǎn)品資料“4-軟件資料Demoamp-demosAMP-SDK”目錄下的AMP-SDK開發(fā)包AMP-SDK-[版本號(hào)].tar.gz拷貝至Ubuntu的RK3562工作目錄下,版本號(hào)請(qǐng)以實(shí)際情況為準(zhǔn)。執(zhí)行如下命令,將AMP-SDK開發(fā)包解壓至RK3562工作目錄。hal目錄用于存放裸機(jī)代碼,rt-thread目錄用于存放rt-thread代碼。

Host# tar -zxf amp-sdk-v1.0.tar.gz

wKgZO2f_TgeALCRHAAEssLEnCFw335.png

圖 3

至此,AMP開發(fā)環(huán)境搭建完成。

工程編譯與固化

評(píng)估板支持Cortex-M0(MCU)、Cortex-A53(CPU3)核心運(yùn)行Baremetal(HAL)、RTOS(RT-Thread)程序。本章節(jié)以led_flash案例為例,演示基于Linux + RT-Thread(RTOS)、Baremetal的AMP開發(fā)案例導(dǎo)入和編譯方法。

工程導(dǎo)入

Baremetal工程導(dǎo)入

(1) Cortex-M0(MCU)核心Baremetal工程導(dǎo)入

請(qǐng)將產(chǎn)品資料“4-軟件資料Demoamp-demosled_flashm0_baremetalproject”目錄下的整個(gè)工程源碼文件夾led_flash拷貝至AMP-SDK源碼目錄"hal/project/"下,如下圖所示。

wKgZPGf_TgeAC_5KAAErp8bIkBI149.png

圖 4 m0_baremetal

(2) Cortex-A53(CPU3)核心Baremetal工程導(dǎo)入

請(qǐng)將產(chǎn)品資料“4-軟件資料Demoamp-demosled_flasha53-3_baremetalproject”目錄下的整個(gè)工程源碼文件夾led_flash拷貝至AMP-SDK源碼目錄"hal/project/"下,如下圖所示。

wKgZO2f_TgeAH3KeAAErp8bIkBI813.png

圖 5 a53-3_baremetal

RT-Thread(RTOS)工程導(dǎo)入

(1) Cortex-M0(MCU)核心RT-Thread(RTOS)工程導(dǎo)入

請(qǐng)將產(chǎn)品資料“4-軟件資料Demoamp-demosled_flashm0_rtosproject”目錄下的整個(gè)工程源碼文件夾led_flash拷貝至AMP-SDK源碼目錄"rtos/bsp/rockchip/"下,如下圖所示。

wKgZPGf_G7iAF6hbAAC96SifPEo432.png

圖 6 m0_rtos

(2) Cortex-A53(CPU3)核心RT-Thread(RTOS)工程導(dǎo)入

請(qǐng)將產(chǎn)品資料“4-軟件資料Demoamp-demosled_flasha53-3_rtosproject”目錄下的整個(gè)工程源碼文件夾led_flash拷貝至AMP-SDK源碼目錄"rtos/bsp/rockchip/"下,如下圖所示。

wKgZPGf_G7iAF6hbAAC96SifPEo432.png

圖 7 a53-3_rtos

工程編譯

Baremetal工程編譯

(1) Cortex-M0(MCU)核心Baremetal工程編譯

在AMP-SDK目錄下,執(zhí)行如下命令,進(jìn)入"hal/project/led_flash/GCC/"目錄,對(duì)Baremetal工程進(jìn)行編譯。

Host# cd hal/project/led_flash/GCC/

Host# make clean

Host# make

wKgZPGf_HBmAP_s-AAFWls7XOUw549.png

圖 8

wKgZPGf_HCqACqeBAAFck2Bk0XU118.png


圖 9

wKgZO2f_HD-AJYPwAAEbz8h9yeE006.png


圖 10

編譯完成后,在"hal/project/led_flash/GCC/"目錄下生成程序鏡像文件TestDemo.bin。

wKgZPGf_HE2AbZWKAABP1j1QJGU463.png

圖 11

執(zhí)行如下命令進(jìn)入led_flash源碼目錄,將Baremetal程序鏡像文件TestDemo.bin制作生成amp.img鏡像文件。

備注:不同案例打印信息可能會(huì)有所差異,請(qǐng)以實(shí)際為準(zhǔn)。

Host# cd /home/tronlong/RK3562/amp-sdk-v1.0/hal/project/led_flash/

Host# ./mkimage.sh

wKgZO2f_HFuACpwMAAFcnHLuKlY391.png

圖 12

制作完成后,將會(huì)在Image目錄下生成Baremetal工程的amp.img鏡像文件。

wKgZO2f_HGqAPG4VAABOOQLs81M029.png

圖 13

(2) Cortex-A53(CPU3)核心Baremetal工程編譯

在AMP-SDK的目錄下,執(zhí)行如下命令,進(jìn)入"hal/project/led_flash/GCC/"目錄,對(duì)Baremetal工程進(jìn)行編譯。

Host# cd hal/project/led_flash/GCC/

Host# make clean

Host# ./build.sh 3 //編譯在Cortex-A53(CPU3)上運(yùn)行的程序

wKgZO2f_HIuAYL0UAAETQ6dFJdI270.png

圖 14

wKgZPGf_HJqAK7juAADPcozi2ZY634.png

圖 15

wKgZO2f_HKmAPpW7AAE1oEzYRt8942.png

圖 16

編譯完成后,在"hal/project/led_flash/GCC/"目錄下生成程序鏡像文件hal3.bin。

wKgZO2f_HLiAZSKxAAEQ2Zd6aSA365.png

圖 17

執(zhí)行如下命令進(jìn)入led_flash源碼目錄,將Baremetal程序鏡像文件hal3.bin制作生成amp.img鏡像文件。

備注:不同案例打印信息可能會(huì)有所差異,請(qǐng)以實(shí)際為準(zhǔn)。

Host# cd /home/tronlong/RK3562/amp-sdk-v1.0/hal/project/led_flash

Host# ./mkimage.sh

wKgZO2f_HMeANQNZAAFaCNKIcmI545.png

圖 18

制作完成后,將會(huì)在Image目錄下生成Baremetal工程的amp.img鏡像文件。

wKgZPGf_HNiAZ4cgAABPxo2maG8118.png

圖 19

RT-Thread(RTOS)工程編譯

(1) Cortex-M0(MCU)核心RT-Thread(RTOS)工程編譯

執(zhí)行如下命令,進(jìn)入AMP-SDK下的"rtos/bsp/rockchip/led_flash/"目錄,配置交叉編譯工具鏈環(huán)境。

Host# cd /home/tronlong/RK3562/amp-sdk-v1.0/rtos/bsp/rockchip/led_flash/

Host# export RTT_EXEC_PATH=/home/tronlong/RK3562/amp-sdk-v1.0/prebuilts/gcc/linux-x86/arm/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux/bin

wKgZO2f_HSCAVJZbAACVwjz4RHg664.png

圖 20

執(zhí)行如下命令,對(duì)RT-Thread(RTOS)工程進(jìn)行編譯。

Host# scons -c

Host# scons

wKgZPGf_HTeAfcsbAAFBqrhtjdo429.png

圖 21

wKgZO2f_HUSAFqebAACeDBeAWGU269.png

圖 22

制作完成后,將會(huì)在當(dāng)前目錄下生成RT-Thread(RTOS)工程的rtthread.bin程序鏡像文件。

wKgZPGf_HVGAeJX5AABL6lv-bg8856.png

圖 23

執(zhí)行如下命令,將RT-Thread(RTOS)程序鏡像文件rtthread.bin制作生成amp.img鏡像文件。

Host# ./mkimage.sh

wKgZPGf_HWOAGclWAAErxzOCjxM632.png

圖 24

制作完成后,將會(huì)在Image目錄下生成RT-Thread(RTOS)工程的amp.img鏡像文件。

wKgZPGf_HXaATBN9AABOvtRDvBA326.png

圖 25

(2) Cortex-A53(CPU3)核心RT-Thread(RTOS)工程編譯

執(zhí)行如下命令,進(jìn)入AMP-SDK下的"rtos/bsp/rockchip/led_flash/"目錄,對(duì)RT-Thread(RTOS)工程進(jìn)行編譯。

Host# cd /home/tronlong/RK3562/amp-sdk-v1.0/rtos/bsp/rockchip/led_flash

Host# ./build.sh 3

wKgZPGf_HYSADGtnAAEOowKWyU8206.png

圖 26

wKgZO2f_HZGAakHCAACQl_K6cb8600.png

圖 27

編譯完成后,將會(huì)在當(dāng)前目錄下生成RT-Thread(RTOS)工程的rtt3.bin程序鏡像文件。

wKgZPGf_Ha-ARuNDAABTu1Q0jk0859.png

圖 28

執(zhí)行如下命令,將RT-Thread程序鏡像文件rtt3.bin制作生成amp.img鏡像文件。

Host# ./mkimage.sh

wKgZO2f_HxCAUqTnAAEfQ2xqjb8514.png

圖 29

制作完成后,將會(huì)在Image目錄下生成RT-Thread(RTOS)工程的amp.img鏡像文件。

wKgZPGf_Hx6AJrbRAABNzNXNfl4477.png

圖 30

配置文件說明

Cortex-M0(MCU)核心Baremetal/RT-Thread(RTOS)案例的配置文件為amp.its,Cortex-A53(CPU3)核心Baremetal/RT-Thread(RTOS)案例的配置文件為amp_linux.its,此文件均位于Baremetal/RT-Thread(RTOS)案例Image目錄下,負(fù)責(zé)描述打包生成amp.img鏡像的配置信息。在U-Boot啟動(dòng)后,讀取amp.img并解析amp.img中的配置信息,然后根據(jù)配置信息加載Baremetal、RT-Thread(RTOS)程序到指定內(nèi)存地址,并啟動(dòng)Cortex-M0/Cortex-A53核心運(yùn)行程序。

(1) amp.its

wKgZO2f_HzaAJx-AAACkRzk1L3M656.png

圖 31 Baremetal/RT-Thread(RTOS)程序配置文件amp.its

(2) amp_linux.its

wKgZPGf_H0eALmG2AACrxV-rom0973.png

圖 32 Baremetal/RT-Thread(RTOS)程序配置文件amp_linux.its

Baremetal/RT-Thread(RTOS)程序配置文件中的參數(shù)說明如下表所示:

wKgZPGf_H1qAJhxoAADc-SXPXx0579.png

工程固化

本小節(jié)以“4-軟件資料Demoamp-demosled_flashm0_baremetalbin”目錄下的amp.img鏡像文件為例,演示將amp.img鏡像固化至系統(tǒng)啟動(dòng)卡或eMMC的加載運(yùn)行方法。案例"m0_rtosbin"、"a53-3_baremetalbin"、"a53-3_rtosbin"目錄下的amp.img鏡像操作方法類似。

評(píng)估板重新上電啟動(dòng),在U-Boot啟動(dòng)階段將讀取amp.img鏡像文件,解析amp.img中的配置信息(配置信息由amp配置文件保存在amp.img),并根據(jù)配置信息加載Baremetal、RT-Thread工程至指定內(nèi)存地址,然后啟動(dòng)指定CPU運(yùn)行程序。

通過Linux命令行固化

請(qǐng)將待固化的amp.img鏡像拷貝至評(píng)估板文件系統(tǒng),執(zhí)行如下命令將其固化至系統(tǒng)啟動(dòng)卡對(duì)應(yīng)分區(qū)。

備注:如需固化至eMMC,請(qǐng)將設(shè)備節(jié)點(diǎn)修改為"/dev/mmcblk0p8"。

Target# dd if=amp.img of=/dev/mmcblk1p8 conv=fsync

Target# sync

Target# reboot

wKgZO2f_H4KAaJ84AAAmC4NMesI862.png

圖 33

通過瑞芯微開發(fā)工具RKDevTool固化

請(qǐng)確保評(píng)估板Micro SD卡槽未插入Micro SD卡,并使用Type-C線將評(píng)估板USB2.0 OTG接口連接至PC機(jī)USB接口。

備注:本小節(jié)操作方法僅支持固化amp.img鏡像文件至eMMC,不支持固化至系統(tǒng)啟動(dòng)卡。

(1) 請(qǐng)參考《系統(tǒng)啟動(dòng)卡制作及系統(tǒng)固化》文檔安裝瑞芯微開發(fā)工具RKDevTool。將待固化的amp.img鏡像文件拷貝至Windows非中文工作目錄下。

(2) 打開瑞芯微開發(fā)工具,amp選項(xiàng)選擇待固化的amp.img鏡像文件存放路徑,并勾選對(duì)應(yīng)選項(xiàng),具體如下圖所示。

wKgZO2f_H5qAXS_gAABdkhaB38w339.png

圖 34

(3) 將評(píng)估板斷電,長(zhǎng)按USER1(KEY3)按鍵,再將評(píng)估板上電,此時(shí)瑞芯微開發(fā)工具界面將會(huì)出現(xiàn)提示信息“發(fā)現(xiàn)一個(gè)LOADER設(shè)備”,然后松開USER1(KEY3)按鍵。

wKgZPGf_H6qAPRuqAABYJejv5Sw216.png

圖 35

(4) 點(diǎn)擊“執(zhí)行”選項(xiàng),將程序鏡像文件amp.img固化至eMMC。

wKgZO2f_H7mAZ1gOAABYs7BXBnU197.png

圖 36

(5) 直至出現(xiàn)如下界面,提示“下載完成”的信息,表示將amp.img鏡像文件固化至eMMC成功,此時(shí)評(píng)估板將自動(dòng)重啟。

wKgZO2f_H9iAK5YQAABeECBSV1E871.png

圖 37

通過系統(tǒng)鏡像固化

請(qǐng)參考《Ubuntu系統(tǒng)使用手冊(cè)》拆解update.img系統(tǒng)鏡像,將“4-軟件資料Demoamp-demosled_flashm0_baremetalbin”目錄下的amp.img鏡像文件拷貝至Mkimage的"output/Image/"目錄下。

wKgZO2f_H_SAVQwbAACHFLI4JFw120.png

圖 38

執(zhí)行如下命令,即可在"output/update"目錄合成新的update.img鏡像。

Host# ./mkimage.sh pack

wKgZPGf_IAOAI2JmAADpd0fZ8Rs365.png

圖 39

wKgZPGf_IBKAdWSoAACQo-vdKvU705.png

圖 40

請(qǐng)參考《系統(tǒng)啟動(dòng)卡制作及系統(tǒng)固化》文檔,將系統(tǒng)鏡像文件固化至Micro SD卡或eMMC。

備注:Linux內(nèi)核已預(yù)留Cortex-M0/Cortex-A53內(nèi)存,評(píng)估板固化amp.img鏡像后,在U-Boot啟動(dòng)時(shí)Cortex-M0/Cortex-A53將識(shí)別此部分內(nèi)存已被占用,打印以下警告信息,忽略即可。

wKgZO2f_ICyAF3QyAAEBqmO5a14957.png

圖 41

wKgZPGf_IDuAU8OwAAEe7yG2BDw739.png

圖 42

AMP開發(fā)案例

本章節(jié)主要介紹基于Linux + RT-Thread(RTOS)、Baremetal的AMP開發(fā)案例說明。

本章節(jié)默認(rèn)使用系統(tǒng)啟動(dòng)卡(即SD啟動(dòng)卡,Micro SD方式)啟動(dòng)系統(tǒng),使用USB TO UART0串口作為系統(tǒng)調(diào)試串口,使用UART2串口作為RT-Thread(RTOS)、Baremetal程序的調(diào)試串口。

備注:UART2調(diào)試串口的波特率為115200。

請(qǐng)使用Type-C線將評(píng)估板USB TO UART0串口連接至PC機(jī),使用杜邦線將USB TO TTL串口模塊與評(píng)估底板EXPORT0拓展口的UART2串口連接至PC機(jī)的USB接口。

wKgZPGf_IFqAcDEGAABLOol9v5c479.pngwKgZPGf_IGiAU4EjAADkxyHF4K4836.png

圖 43

wKgZPGf_IHmATxqNAAd47lu2lDQ059.png

圖 44

led_flash案例

案例說明

案例功能:

(1) Cortex-A53(CPU0、CPU1、CPU2、CPU3)核心運(yùn)行Linux系統(tǒng);Cortex-M0核心運(yùn)行RT-Thread(即m0_rtos)、Baremetal(即m0_baremetal)程序,分別控制評(píng)估底板用戶可編程指示燈每隔0.5s閃爍一次。

(2) Cortex-A53(CPU0、CPU1、CPU2)核心運(yùn)行Linux系統(tǒng);Cortex-A53(CPU3)核心運(yùn)行RT-Thread(即a53-3_rtos)、Baremetal(即a53-3_baremetal)程序,分別控制評(píng)估底板用戶可編程指示燈每隔0.5s閃爍一次。

wKgZPGf_IJ-AO5csAAAol4p4sPw565.png

圖 45

案例測(cè)試

請(qǐng)參考“工程編譯與固化”章節(jié)將位于案例目錄下"xxxbinamp.img"鏡像固化至評(píng)估板。

由于Linux內(nèi)核會(huì)占用UART2串口、LED1和LED2外設(shè)資源,因此在運(yùn)行Baremetal(HAL)、RTOS(RT-Thread)程序前,需先替換關(guān)閉相關(guān)外設(shè)資源的內(nèi)核鏡像。我司提供已修改的內(nèi)核鏡像boot.img,位于案例"dtsbin"目錄下,請(qǐng)將其拷貝至評(píng)估板文件系統(tǒng),執(zhí)行如下命令替換評(píng)估板系統(tǒng)內(nèi)核鏡像。

備注:如需固化至eMMC,請(qǐng)將設(shè)備節(jié)點(diǎn)修改為"/dev/mmcblk0p3"。

Target# dd if=boot.img of=/dev/mmcblk1p3 conv=fsync //替換內(nèi)核鏡像

Target# sync

Target# reboot

wKgZO2f_ILSAKz9_AAAZEG0Ecos468.png

圖 46

U-Boot啟動(dòng)后,將加載運(yùn)行amp.img鏡像,UART2串口終端將打印程序運(yùn)行信息,同時(shí)評(píng)估底板用戶可編程指示燈LED1、LED2每隔0.5s閃爍一次。

其中m0_baremetal、m0_rtos、a53-3_baremetal、a53-3_rtos程序鏡像固化后,UART2串口終端打印信息如下:

備注:評(píng)估板斷電時(shí),UART2串口終端可能會(huì)打印亂碼信息,不影響正常功能,忽略即可。

wKgZPGf_IMeAIfq3AAAOiBiTKHk559.png

圖 47 m0_baremetal

wKgZO2f_INqAJjMkAAAR0wy4SAw449.png

圖 48 m0_rtos

wKgZO2f_IO-AZQvCAAAE08NyZSE555.png

圖 49 a53-3_baremetal

wKgZPGf_IQaAK_VLAAAeeY2h6-o290.png

圖 50 a53-3_rtos

測(cè)試完成后,如需恢復(fù)系統(tǒng)默認(rèn)的內(nèi)核鏡像,請(qǐng)將位于產(chǎn)品資料“4-軟件資料UbuntuKernelimagelinux-5.10.209-[版本號(hào)]-[Git系列號(hào)]”目錄下的內(nèi)核鏡像boot.img拷貝至評(píng)估板文件系統(tǒng),執(zhí)行如下命令替換內(nèi)核鏡像。

備注:如需固化至eMMC,請(qǐng)將設(shè)備節(jié)點(diǎn)修改為"/dev/mmcblk0p3"。

Target# dd if=boot.img of=/dev/mmcblk1p3 conv=fsync

Target# sync

Target# reboot

wKgZO2f_IRyAA14MAAAkdBPimAA303.png

圖 51

案例編譯

(1) RT-Thread、Baremetal程序編譯

請(qǐng)參考“工程編譯與固化”章節(jié)將案例m0_baremetal、m0_rtos、a53-3_barametal或a53-3_rtos目錄下的程序源碼進(jìn)行編譯。

(2) 內(nèi)核編譯

為了避免Linux內(nèi)核占用案例的外設(shè)資源,需替換或修改設(shè)備樹文件。

我司已提供配置好的設(shè)備樹文件,位于案例"dtssrctl3562-minievm-led-flash.dts"路徑下,可直接使用。如需重新編譯適用于本案例的內(nèi)核鏡像,請(qǐng)將tl3562-minievm-led-flash.dts設(shè)備樹文件拷貝至內(nèi)核源碼"arch/arm64/boot/dts/rockchip/"目錄下,然后參考《Ubuntu系統(tǒng)使用手冊(cè)》文檔“編譯設(shè)備樹文件”章節(jié)重新編譯生成內(nèi)核鏡像即可。

其中,tl3562-minievm-led-flash.dts設(shè)備樹文件是基于內(nèi)核源碼"arch/arm64/boot/dts/rockchip/"目錄下的tl3562-minievm.dts設(shè)備樹文件修改配置的。

修改內(nèi)容如下:

a) 關(guān)閉user_led0、user_led1節(jié)點(diǎn)。

wKgZPGf_ITmAJjFcAABe_J6HxqE301.png

圖 52 tl3562-minievm-led-flash.dts

b) 配置rockchip_amp節(jié)點(diǎn)。

由于修改了設(shè)備樹文件關(guān)閉UART2節(jié)點(diǎn),系統(tǒng)啟動(dòng)時(shí)默認(rèn)關(guān)閉UART2時(shí)鐘及不配置UART2 pinctrl,因此需在rockchip_amp節(jié)點(diǎn)配置UART2時(shí)鐘及UART2 pinctrl,保證系統(tǒng)啟動(dòng)后UART2功能正常,并加入U(xiǎn)ART2中斷配置,使Cortex-A53(CPU3)正常響應(yīng)UART2中斷。

wKgZO2f_IU2AHg9pAAAkRVQrWxE662.png

圖 53 tl3562-minievm.dts

修改內(nèi)容如下:

&rockchip_amp {

clocks = <&cru FCLK_BUS_CM0_CORE>, <&cru CLK_BUS_CM0_RTC>,

<&cru PCLK_MAILBOX>, <&cru PCLK_INTC>,

<&cru PCLK_TIMER>, <&cru CLK_TIMER4>, <&cru CLK_TIMER5>,

<&cru SCLK_UART2>, <&cru PCLK_UART2>; //需修改內(nèi)容

amp-irqs = /bits/ 64 ; //需修改內(nèi)容

pinctrl-names = "default"; //需修改內(nèi)容

pinctrl-0 = <&uart2m1_xfer>; //需修改內(nèi)容

};

wKgZPGf_IV-AFx5eAACyEmi57z8287.png

圖 54 tl3562-minievm-led-flash.dts

c) 配置princtrl節(jié)點(diǎn)

由于UART2串口作為RT-Thread(RTOS)、Baremetal程序的調(diào)試串口,需使用UART2引腳,因此需刪除Linux內(nèi)核占用的引腳。

wKgZO2f_IW-AMu8eAABPJzfTfpo364.png

圖 55 tl3562-minievm-led-flash.dts

刪除如下內(nèi)容:

0 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none

0 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none

關(guān)鍵代碼

本案例Baremetal程序Cortex-M0(MCU)、Cortex-A53(CPU3)核心控制評(píng)估底板的LED1、LED2的關(guān)鍵代碼相同;RT-Thread(RTOS)程序Cortex-M0(MCU)、Cortex-A53(CPU3)核心控制評(píng)估底板的LED1、LED2的關(guān)鍵代碼相同。

(1) Baremetal程序

Baremetal程序的main.c文件位于案例"xxxprojectled_flashsrc"目錄下。

a) 初始化GPIO。

wKgZO2f_IZWAIMfbAACYZmrkX7k665.png

圖 56

b) 控制LED每隔0.5s狀態(tài)翻轉(zhuǎn)。

wKgZPGf_IamAEpGeAACZHtYxtSo510.png

圖 57

(2) RT-Thread(RTOS)程序

RT-Thread(RTOS)程序的main.c文件位于案例"xxxprojectled_flashapplications"目錄下。

a) 初始化GPIO。

wKgZO2f_Ig2ASRedAABys-pupuI337.png

圖 58

b) 控制LED每隔0.5s狀態(tài)翻轉(zhuǎn)。

wKgZPGf_IiOAUaOaAAB0RwHHgmo216.png

圖 59

(3) amp.its配置文件

amp.its配置文件為Cortex-M0(MCU)核心配置文件,amp_linux.its配置文件為Cortex-A53(CPU3)核心配置文件,均位于案例Image目錄下,負(fù)責(zé)描述打包生成amp.img鏡像的配置信息。

wKgZO2f_IkGAOjg5AADD9LFh_eg305.png

圖 60 Baremetal/RT-Thread程序配置文件amp.its

wKgZO2f_IlSAFdHBAACrZvlLTrM478.png

圖 61 Baremetal/RT-Thread程序配置文件amp_linux.its

uart_echo案例

案例說明

案例功能:

(1) Cortex-A53(CPU0、CPU1、CPU2、CPU3)核心運(yùn)行Linux系統(tǒng);Cortex-M0(MCU)核心運(yùn)行RT-Thread(即m0_rtos)、Baremetal(即m0_baremetal)程序,實(shí)現(xiàn)UART3串口回顯功能。

(2) Cortex-A53(CPU0、CPU1、CPU2)核心運(yùn)行Linux系統(tǒng);Cortex-A53(CPU3)核心運(yùn)行RT-Thread(即a53-3_rtos)、Baremetal(即a53-3_baremetal)程序,實(shí)現(xiàn)UART3串口回顯功能。

wKgZO2f_In-AC8hNAAAZp_wU_eY576.png

圖 62

案例測(cè)試

請(qǐng)使用Type-C線將評(píng)估板USB TO UART0串口連接至PC機(jī),使用杜邦線將兩個(gè)USB TO TTL串口模塊與評(píng)估底板EXPORT0拓展口的UART2和UART3串口連接至PC機(jī)的USB接口。

兩個(gè)USB TO TTL串口模塊與評(píng)估底板EXPORT0拓展口的UART2和UART3串口連接方法如下表所示。

UART2連接關(guān)系

wKgZO2f_IqaAHc4DAABNZlyx1og458.png

UART3連接關(guān)系

wKgZPGf_IrKAe4uIAABOhr4BFTM799.pngwKgZO2f_I12ADZItAAA5p0t6gAE937.png

圖 63

硬件連接如下圖所示。

wKgZPGf_I4aAAH8pAAjSssh503w858.png

圖 64

請(qǐng)參考“工程編譯與固化”章節(jié)將位于案例目錄下"xxxbinamp.img"鏡像固化至評(píng)估板。

由于Linux內(nèi)核會(huì)占用RS232 UART2串口、RS485 UART3串口外設(shè)資源,因此在運(yùn)行Baremetal(HAL)、RTOS(RT-Thread)程序前,需先替換關(guān)閉相關(guān)外設(shè)資源的內(nèi)核鏡像。我司提供已修改的內(nèi)核鏡像boot.img,位于案例"dtsbin"目錄下,請(qǐng)將其拷貝至評(píng)估板文件系統(tǒng),執(zhí)行如下命令替換評(píng)估板系統(tǒng)內(nèi)核鏡像。

備注:如需固化至eMMC,請(qǐng)將設(shè)備節(jié)點(diǎn)修改為"/dev/mmcblk0p3"。

Target# dd if=boot.img of=/dev/mmcblk1p3 conv=fsync //替換內(nèi)核鏡像

Target# sync

Target# reboot

wKgZPGf_I5eAFdo-AAAZIBOwt7E030.png

圖 65

U-Boot啟動(dòng)后,將加載運(yùn)行amp.img鏡像,UART2串口終端將打印程序運(yùn)行信息。

其中m0_baremetal、m0_rtos、a53-3_baremetal、a53-3_rtos程序鏡像固化后,UART2串口終端打印信息如下:

wKgZO2f_I6eAE-DNAAAV_xbHTuE882.png

圖 66 m0_baremetal

wKgZO2f_I72ATdlkAAAYhddX0Ys062.png

圖 67 m0_rtos

wKgZPGf_I82AeY0jAAAKWMtknoc247.png

圖 68 a53-3_baremetal

wKgZPGf_I_eAVetPAAAkq6NfAnk957.png

圖 69 a53-3_rtos

在UART3串口終端輸入8個(gè)字符后按回車,串口終端將回顯接收到的字符。

wKgZPGf_JAuABtAsAAAM-Mfydr4228.png

圖 70

備注:評(píng)估板斷電時(shí),UART2串口終端可能會(huì)打印亂碼信息,不影響功能使用,忽略即可。

案例編譯

(1) RT-Thread(RTOS)、Baremetal程序編譯

請(qǐng)參考“工程編譯與固化”章節(jié)將案例m0_baremetal、m0_rtos、a53-3_barametal或a53-3_rtos目錄下的程序源碼進(jìn)行編譯。

(2) 內(nèi)核編譯

為了避免Linux內(nèi)核占用案例的外設(shè)資源,需替換或修改設(shè)備樹文件。

我司已提供配置修改好的設(shè)備樹文件,位于案例目錄下"dtssrctl3562-minievm-uart-echo.dts",可直接使用。如需重新編譯本案例內(nèi)核鏡像,請(qǐng)將tl3562-minievm-uart-echo.dts設(shè)備樹文件拷貝至內(nèi)核源碼"arch/arm64/boot/dts/rockchip/"目錄下,然后參考《Ubuntu系統(tǒng)使用手冊(cè)》文檔“編譯設(shè)備樹文件”章節(jié)重新編譯生成內(nèi)核鏡像即可。

其中,tl3562-minievm-uart-echo.dts設(shè)備樹文件是基于內(nèi)核源碼"arch/arm64/boot/dts/rockchip/"目錄下的tl3562-minievm.dts設(shè)備樹文件修改配置的。

修改內(nèi)容如下:

a) 修改設(shè)備樹文件關(guān)閉設(shè)備樹uart3和uart2節(jié)點(diǎn)。

wKgZO2f_JDyAWw_FAAAqoGm3MlE441.png

圖 71 tl3562-minievm.dts

wKgZPGf_JEyAElNUAAAl06Vlxa8627.png

圖 72 tl3562-minievm.dts

b) 配置rockchip_amp節(jié)點(diǎn)。

由于修改了設(shè)備樹文件關(guān)閉UART2節(jié)點(diǎn)和UART3節(jié)點(diǎn),系統(tǒng)啟動(dòng)時(shí)默認(rèn)關(guān)閉UART2、UART3時(shí)鐘及不配置UART2 pinctrl、UART3 pinctrl,因此需在rockchip_amp節(jié)點(diǎn)配置UART2、UART3時(shí)鐘及不配置UART2 pinctrl、UART3 pinctrl,保證系統(tǒng)啟動(dòng)后UART2和UART3功能正常,并加入U(xiǎn)ART2、UART3中斷配置,使Cortex-A53(CPU3)正常響應(yīng)UART2、UART3中斷。

修改內(nèi)容如下:

&rockchip_amp {

clocks = <&cru FCLK_BUS_CM0_CORE>, <&cru CLK_BUS_CM0_RTC>,

<&cru PCLK_MAILBOX>, <&cru PCLK_INTC>,

<&cru PCLK_TIMER>, <&cru CLK_TIMER4>, <&cru CLK_TIMER5>,

<&cru SCLK_UART2>, <&cru PCLK_UART2>,

<&cru SCLK_UART3>, <&cru PCLK_UART3>;

amp-irqs = /bits/ 64

GIC_AMP_IRQ_CFG_ROUTE(64, 0xd0, CPU_GET_AFFINITY(3, 0))

GIC_AMP_IRQ_CFG_ROUTE(65, 0xd0, CPU_GET_AFFINITY(3, 0))>;

pinctrl-names = "default";

pinctrl-0 = <&uart2m0_xfer &uart3m0_xfer>;

};

wKgZPGf_JGiAKrMSAADU_SOlrxg391.png

圖 73 tl3562-minievm-uart-echo.dts

c) 配置princtrl節(jié)點(diǎn)

由于UART2串口作為RT-Thread(RTOS)、Baremetal程序的調(diào)試串口,UART3用于案例串口回顯功能,需使用UART2、UART3引腳,因此需刪除Linux內(nèi)核占用的引腳。

wKgZPGf_JHuARDDwAABxjIecVUw619.png

圖 74 tl3562-minievm-uart-echo.dts

刪除如下內(nèi)容:

0 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none

0 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none

4 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none

4 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none

關(guān)鍵代碼

(1) m0_baremetal/m0_rtos程序關(guān)鍵代碼

m0_baremetal程序的main.c文件位于案例"m0_baremetalprojectuart_echosrc"目錄下,m0_rtos程序的main.c文件位于案例"m0_rtosprojectuart_echoapplications"目錄下。其中,Baremetal與RT-Thread程序main.c文件的關(guān)鍵代碼相同。

備注:main.c源碼文件中包含官方板級(jí)初始化代碼,本小節(jié)僅對(duì)程序的關(guān)鍵代碼進(jìn)行說明。

a) 初始化UART3及其中斷。

wKgZPGf_JKmAR2zjAAAifaFTE9s391.png

圖 75 main.c

b) 清除數(shù)據(jù)buf,拉低流控GPIO,準(zhǔn)備接收數(shù)據(jù)。

wKgZPGf_JMKAYBJdAAAgU-h3Ft4343.png

圖 76 main.c

c) 在中斷處理函數(shù)中,接收8個(gè)字節(jié)后,拉高流控GPIO,把接收的8個(gè)字節(jié)發(fā)送回去。

wKgZPGf_JNKAAQG-AABRBympTHw033.png

圖 77 main.c

d) amp.its配置文件位于RT-Thread(RTOS)/Baremetal案例Image目錄下,負(fù)責(zé)描述打包生成amp.img鏡像的配置信息。

wKgZO2f_IkGAOjg5AADD9LFh_eg305.png

圖 78 amp.its

(2) a53-3_baremetal/a53-3_rtos核心程序關(guān)鍵代碼

Baremetal程序的main.c文件位于案例"a53-3_baremetalprojectuart_echosrc"目錄下,RT-Thread程序的main.c文件位于案例"a53-3_rtosprojectuart_echoapplications"目錄下。其中,Baremetal與RT-Thread程序main.c文件的關(guān)鍵代碼存在差異,具體說明如下。

備注:main.c源碼文件中包含官方板級(jí)初始化代碼,本小節(jié)僅對(duì)程序的關(guān)鍵代碼進(jìn)行說明。

a) 初始化UART3及其中斷。

wKgZPGf_JQCAMt0JAAAj0-XuQCA631.png

圖 79 a53-3_baremetal main.c程序

wKgZO2f_JQ-AEcrEAAAijrsclek293.png

圖 80 a53-3_rtos main.c程序

b) 清除數(shù)據(jù)buf,拉低流控GPIO,準(zhǔn)備接收數(shù)據(jù)。

wKgZO2f_JSKAVfbtAAAbM45fF4U426.png

圖 81 a53-3_baremetal main.c程序

wKgZPGf_JS-AOA7nAAAbCMBlVAM728.png

圖 82 a53-3_rtos main.c程序

c) 中斷處理函數(shù)中,接收8個(gè)字節(jié)后,拉高流控GPIO,把接收的8個(gè)字節(jié)發(fā)送回去。

wKgZO2f_JUmAGOiMAABFT8Bremg394.png

圖 83 a53-3_baremetal main.c程序

wKgZPGf_JVSAKJjXAABRITQjGGA125.png

圖 84 a53-3_rtos main.c程序

d) amp_linux.its配置文件位于RT-Thread(RTOS)/Baremetal案例Image目錄下,負(fù)責(zé)描述打包生成amp.img鏡像的配置信息。

wKgZO2f_IlSAFdHBAACrZvlLTrM478.png

圖 85 amp_linux.its

rpmsg_echo案例

案例說明

案例功能:

(1) Cortex-A53(CPU0、CPU1、CPU2、CPU3)核心運(yùn)行Linux系統(tǒng)與rpmsg_echo應(yīng)用程序(即host_linux);Cortex-M0(MCU)核心運(yùn)行RT-Thread(即m0_rtos)、Baremetal(即m0_baremetal)程序,實(shí)現(xiàn)Linux端的rpmsg數(shù)據(jù)的接收與發(fā)送功能。

(2) Cortex-A53(CPU0、CPU1、CPU2)核心運(yùn)行Linux系統(tǒng)與rpmsg_echo應(yīng)用程序(即host_linux);Cortex-A53(CPU3)核心運(yùn)行RT-Thread(即a53-3_rtos)、Baremetal(即a53-3_baremetal)程序,實(shí)現(xiàn)Linux端的rpmsg數(shù)據(jù)的接收與發(fā)送功能。

案例程序原理如下:

a) RT-Thread(RTOS)、Baremetal端等待接收Linux端的rpmsg數(shù)據(jù);

b) Linux端的rpmsg_echo應(yīng)用程序發(fā)送rpmsg數(shù)據(jù)至RT-Thread(RTOS)、Baremetal端;

c) 當(dāng)RT-Thread(RTOS)、Baremetal端接收到來至Linux端的rpmsg數(shù)據(jù)后會(huì)將數(shù)據(jù)發(fā)送回Linux端;

d) Linux端將接收來自RT-Thread(RTOS)、Baremetal端的rpmsg數(shù)據(jù);

e) Linux程序與RT-Thread(RTOS)、Baremetal程序之間循環(huán)往復(fù)接收與發(fā)送rpmsg數(shù)據(jù),實(shí)現(xiàn)核間通信。

案例程序流程圖如下:

wKgZPGf_JYSAMRbuAAvFWzk79Hw501.png

圖 86

案例測(cè)試

請(qǐng)參考“工程編譯與固化”章節(jié)將位于案例目錄下"xxxbinamp.img"鏡像固化至評(píng)估板。

為了使Linux端的rpmsg正常運(yùn)行,需按如下步驟替換評(píng)估板系統(tǒng)內(nèi)核鏡像。請(qǐng)將案例"dtsbin"目錄下的內(nèi)核鏡像boot-rpmsg-echo-mcu.img拷貝至評(píng)估板文件系統(tǒng),執(zhí)行如下命令將其固化至系統(tǒng)啟動(dòng)卡。

備注:

a) 如需固化至eMMC,請(qǐng)將設(shè)備節(jié)點(diǎn)修改為"/dev/mmcblk0p3";

b) 如需運(yùn)行Cortex-A53(CPU3)核心案例程序,請(qǐng)將內(nèi)核鏡像替換為boot-rpmsg-echo-a53-3.img內(nèi)核鏡像。

Target# dd if=boot-rpmsg-echo-mcu.img of=/dev/mmcblk1p3 conv=fsync

Target# sync

Target# reboot

wKgZPGf_JZqALFqPAAAiQCHv9-Q569.png

圖 87

U-Boot啟動(dòng)后,將加載運(yùn)行amp.img鏡像,UART2串口終端將打印程序運(yùn)行信息。

wKgZO2f_JamABAO4AAAaxZwpMI4067.png

圖 88 m0_baremetal

wKgZO2f_JbqAR5ohAAAeNDRVuWc837.png

圖 89 m0_rtos

wKgZPGf_JcuAZeB-AAANa8_m7BY063.png

圖 90 a53-3_baremetal

wKgZPGf_JfiASLPRAAAegOfmOwY503.png

圖 91 a53-3_rtos

將案例"host_linuxbin"目錄下的應(yīng)用程序rpmsg_echo拷貝至評(píng)估板文件系統(tǒng),執(zhí)行如下命令查看程序參數(shù)信息。"-n"表示rpmsg數(shù)據(jù)包個(gè)數(shù),默認(rèn)為10。

Target# ./rpmsg_echo -h

wKgZPGf_JhOAVtegAAE4yR3QT6E457.png

圖 92

執(zhí)行如下命令運(yùn)行Linux應(yīng)用程序,發(fā)送8個(gè)rpmsg數(shù)據(jù)包至運(yùn)行Baremetal程序的Cortex-M0核心,當(dāng)Cortex-M0核心每收到1個(gè)rpmsg數(shù)據(jù)包就會(huì)將數(shù)據(jù)包發(fā)送回Linux端。rpmsg數(shù)據(jù)包內(nèi)容為"hello there x!"(x是rpmsg數(shù)據(jù)包序號(hào),每發(fā)送一次加1)。

Target# ./rpmsg_echo -n 8

wKgZO2f_JiSASqjdAAAq8mXVKas717.png

圖 93

備注:評(píng)估板斷電時(shí),UART2串口終端可能會(huì)打印亂碼信息,不影響功能使用,忽略即可。

案例編譯

(1) RT-Thread(RTOS)、Baremetal程序編譯

請(qǐng)參考“工程編譯與固化”章節(jié)將案例m0_baremetal、m0_rtos、a53-3_barametal或a53-3_rtos目錄下的程序源碼進(jìn)行編譯。

(2) 內(nèi)核編譯

為了避免Linux內(nèi)核占用案例的外設(shè)資源,需替換或修改設(shè)備樹文件。

我司已提供配置修改好的設(shè)備樹文件,位于案例目錄"dtssrc"下,可直接使用。如需重新編譯本案例內(nèi)核鏡像,請(qǐng)將設(shè)備樹文件拷貝至內(nèi)核源碼"arch/arm64/boot/dts/rockchip/"目錄下,然后參考《Ubuntu系統(tǒng)使用手冊(cè)》文檔“編譯設(shè)備樹文件”章節(jié)重新編譯生成內(nèi)核鏡像即可。

其中,tl3562-minievm-rpmsg-echo-mcu.dts設(shè)備樹和tl3562-minievm-rpmsg-echo-a53-3.dts設(shè)備樹文件是基于內(nèi)核源碼"arch/arm64/boot/dts/rockchip/"目錄下的tl3562-minievm.dts設(shè)備樹文件修改配置的。

修改內(nèi)容如下:

a) 關(guān)閉設(shè)備樹uart2節(jié)點(diǎn)。

wKgZPGf_JkGARNDDAAA6lZW3_0E388.png

圖 94 tl3562-minievm -rpmsg-echo-mcu.dts

b) 配置rockchip_amp節(jié)點(diǎn)。

由于修改了設(shè)備樹文件關(guān)閉UART2節(jié)點(diǎn),系統(tǒng)啟動(dòng)時(shí)默認(rèn)關(guān)閉UART2時(shí)鐘以及不配置UART2 pinctrl,因此需在rockchip_amp節(jié)點(diǎn)配置UART2時(shí)鐘以及UART2 pinctrl,保證系統(tǒng)啟動(dòng)后UART2功能正常,并加入U(xiǎn)ART2、MAILBOX中斷配置,使Cortex-A53(CPU3)正常響應(yīng)UART2、MAILBOX中斷。

修改內(nèi)容如下:

&rockchip_amp {

clocks = <&cru FCLK_BUS_CM0_CORE>, <&cru CLK_BUS_CM0_RTC>,

<&cru PCLK_MAILBOX>, <&cru PCLK_INTC>,

<&cru PCLK_TIMER>, <&cru CLK_TIMER4>, <&cru CLK_TIMER5>,

<&cru SCLK_UART2>, <&cru PCLK_UART2>;

amp-irqs = /bits/ 64

GIC_AMP_IRQ_CFG_ROUTE(64, 0xd0, CPU_GET_AFFINITY(3, 0))>;

pinctrl-names = "default";

pinctrl-0 = <&uart2m0_xfer>;

};

wKgZO2f_JlWAVVXJAADh-ib2t6Q258.png

圖 95 tl3562-minievm -rpmsg-echo-mcu.dts

c) 配置rpmsg節(jié)點(diǎn)。link-id參數(shù)為運(yùn)行案例程序CPU序號(hào),0x03為Cortex-A53(CPU3),0x04為Cortex-M0(MCU)。

wKgZO2f_JmWAfuIFAAAmy4KsY3w792.png

圖 96 tl3562-minievm -rpmsg-echo-mcu.dts

(3) Linux應(yīng)用程序編譯

請(qǐng)將案例host_linux目錄下的src源碼目錄拷貝至Ubuntu工作目錄下。執(zhí)行如下命令,配置應(yīng)用程序交叉編譯工具鏈環(huán)境變量,并編譯程序,編譯完成將會(huì)在相同目錄下生成可執(zhí)行程序。

Host# source /home/tronlong/RK3562/Ubuntu/rk3562-ubuntu20.04-sdk-v1.0/environment

Host# make

wKgZPGf_JnWAEztdAACuA_TCvWY725.png

圖 97

關(guān)鍵代碼

本案例Baremetal程序Cortex-M0(MCU)、Cortex-A53(CPU3)核心的關(guān)鍵代碼相同;RT-Thread(RTOS)程序Cortex-M0(MCU)、Cortex-A53(CPU3)核心的關(guān)鍵代碼相同。

(1) Baremetal程序關(guān)鍵代碼

Baremetal程序的main.c文件位于案例"xxxprojectrpmsg_echosrc"目錄下。

備注:main.c源碼文件中包含官方板級(jí)初始化代碼,本小節(jié)僅對(duì)程序的關(guān)鍵代碼進(jìn)行說明。

a) 檢查共享內(nèi)存,確定主從CPU ID。

wKgZPGf_JoyAU-V9AABZ1mybVQ0691.png

圖 98 main.c

b) 初始化rpmsg,并等待與Linux連接。

wKgZO2f_JpmAEsfcAABV-8c0EQA877.png

圖 99 main.c

c) 與Linux連接成功后,創(chuàng)建rpmsg端點(diǎn),并把端點(diǎn)信息傳遞至Linux。

wKgZPGf_JqeAH4crAABheMRBZIc135.png

圖 100 main.c

d) 接收到rpmsg數(shù)據(jù)包后將數(shù)據(jù)包發(fā)送回Linux。

wKgZPGf_JrSAEacgAABRyGqera0338.png

圖 101 main.c

e) amp配置文件位于RT-Thread(RTOS)/Baremetal案例Image目錄下,負(fù)責(zé)描述打包生成amp.img鏡像的配置信息。

wKgZPGf_JseAeiEbAACpRuijsfE774.png

圖 102 amp.its

wKgZO2f_IlSAFdHBAACrZvlLTrM478.png

圖 103 amp_linux.its

(2) RT-Thread程序關(guān)鍵代碼

RT-Thread程序的main.c文件位于案例"xxxprojectrpmsg_echoapplications"目錄下。

a) 檢查共享內(nèi)存,確定主從CPU ID。

wKgZO2f_JuWAddxXAABX2XgyGYU367.png

圖 104 main.c

b) 初始化rpmsg,設(shè)定等待超時(shí)時(shí)間為10s,并等待與Linux連接。

wKgZO2f_JwCAD298AABXMQtQVGo807.png

圖 105 main.c

c) 與Linux連接成功后,創(chuàng)建rpmsg端點(diǎn),并把端點(diǎn)信息傳遞至Linux。

wKgZO2f_Jw-AUD0iAABh46NFSnk091.png

圖 106 main.c

d) 接收到rpmsg數(shù)據(jù)包后將數(shù)據(jù)包發(fā)送回Linux。

wKgZO2f_JyKAG-sFAABRZSTKm5k672.png

圖 107 main.c

(3) Linux端程序關(guān)鍵代碼

Linux端程序的rpmsg_echo.c文件位于案例"rpmsg_echohost_linuxsrc"目錄下。

a) 創(chuàng)建并打開rpmsg端點(diǎn)。

wKgZPGf_JzOAYpBDAAA9h6fW1uw216.png

圖 108

b) 點(diǎn)地址選擇準(zhǔn)則如下。

本地端點(diǎn)地址(RPMSG_MASTER_ADDR):由于1024及以下的端點(diǎn)地址被Linux內(nèi)核使用,因此本地端點(diǎn)地址需指定大于1024。

遠(yuǎn)程端點(diǎn)地址(RPMSG_REMOTE_ADDR):需與Baremetal程序設(shè)定的端點(diǎn)地址對(duì)應(yīng)。

wKgZPGf_Jz-ACAKIAABKN4Fjgm4108.png

圖 109 rpmsg_echo.c文件

wKgZPGf_J1iAKRSzAAA0J9i0i8U396.png

圖 110 Baremetal程序main.c文件

c) 構(gòu)建數(shù)據(jù)包,通過rpmsg將數(shù)據(jù)包發(fā)送出去,再通過rpmsg接收數(shù)據(jù)包。

wKgZPGf_J02AVmRxAAD4Xv3W9DY905.png

圖 111

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 瑞芯微
    +關(guān)注

    關(guān)注

    24

    文章

    512

    瀏覽量

    52034
  • 評(píng)估板
    +關(guān)注

    關(guān)注

    1

    文章

    587

    瀏覽量

    29853
  • RK3562
    +關(guān)注

    關(guān)注

    0

    文章

    55

    瀏覽量

    267
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    國(guó)產(chǎn)!RK3576(八@2.2GHz+6T NPU)工業(yè)開發(fā)板規(guī)格書

    ARM Cortex-A72 + ARM Cortex-A53 +
    發(fā)表于 11-28 16:52

    國(guó)產(chǎn)!RK3576(八@2.2GHz+6T NPU)工業(yè)核心規(guī)格書

    ARM Cortex-A72 + ARM Cortex-A53 +
    發(fā)表于 11-28 16:58

    微米爾RK3562國(guó)產(chǎn)核心,ARM中量級(jí)多面手

    網(wǎng)關(guān)、邊緣計(jì)算等領(lǐng)域提供了高性價(jià)比的解決方案。 核心基于 RK3562RK3562J處理器,采用
    發(fā)表于 02-28 15:32

    基于ARM Cortex-M0的MCU設(shè)計(jì)及應(yīng)用

    知網(wǎng)鏈接:基于ARM Cortex-M0的MCU設(shè)計(jì)及應(yīng)用
    發(fā)表于 11-05 15:35 ?18次下載
    基于<b class='flag-5'>ARM</b> <b class='flag-5'>Cortex-M0</b><b class='flag-5'>核</b>的MCU設(shè)計(jì)及應(yīng)用

    新一代低價(jià)開發(fā)板芯片RK3562來啦! — 觸覺智能RK3562開發(fā)板

    3566,RK3568之類的,咋最近還出了個(gè)RK3562啊。這個(gè)RK3562可以認(rèn)為是RK3568的低配版,可以進(jìn)一步的降低價(jià)格。RK3562
    的頭像 發(fā)表于 08-15 17:42 ?2441次閱讀
    新一代低價(jià)<b class='flag-5'>開發(fā)板</b>芯片<b class='flag-5'>RK3562</b>來啦! — 觸覺智能<b class='flag-5'>RK3562</b><b class='flag-5'>開發(fā)板</b>

    4CPU,ARM中量級(jí)多面手,米爾RK3562核心上市

    近日,米爾電子攜手推出全新一代ARM核心——基于RK3562(J)處理器的MYC-YR
    的頭像 發(fā)表于 02-27 08:03 ?498次閱讀
    4<b class='flag-5'>核</b>CPU,<b class='flag-5'>ARM</b>中量級(jí)多面手,米爾<b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK3562</b>核心<b class='flag-5'>板</b>上市

    全國(guó)產(chǎn)!3562Mini(2GHzA53 NPU)工業(yè)開發(fā)板規(guī)格書

    評(píng)估簡(jiǎn)介創(chuàng)龍科技TL3562-MiniEVM是一款基于
    的頭像 發(fā)表于 03-10 09:16 ?526次閱讀
    全國(guó)產(chǎn)!<b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>3562</b>Mini(2GHz<b class='flag-5'>四</b><b class='flag-5'>核</b><b class='flag-5'>A53</b> NPU)<b class='flag-5'>工業(yè)</b><b class='flag-5'>開發(fā)板</b>規(guī)格書

    RK3506(3ARM+Cortex-A7 + ARM Cortex-M0工業(yè)核心選型資料

    創(chuàng)龍科技SOM-TL3506是一款基于RK3506J/RK3506B處理器設(shè)計(jì)的3
    的頭像 發(fā)表于 04-09 09:04 ?364次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK</b>3506(3<b class='flag-5'>核</b><b class='flag-5'>ARM+Cortex-A</b>7 + <b class='flag-5'>ARM</b> <b class='flag-5'>Cortex-M0</b>)<b class='flag-5'>工業(yè)</b>核心<b class='flag-5'>板</b>選型資料

    RK3576,82.2GHz+6T算力NPU工業(yè)核心說明書

    創(chuàng)龍科技SOM-TL3576-S是一款基于RK3576J/RK3576高性能處理器設(shè)計(jì)的4
    的頭像 發(fā)表于 04-09 09:46 ?1025次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK</b>3576,8<b class='flag-5'>核</b>2.2GHz+6T算力NPU<b class='flag-5'>工業(yè)</b>核心<b class='flag-5'>板</b>說明書

    國(guó)產(chǎn)!3576-Mini(82.2GHz)工業(yè)評(píng)估規(guī)格書

    創(chuàng)龍科技TL3576-MiniEVM是一款基于RK3576J/RK3576高性能處理器設(shè)計(jì)的4
    的頭像 發(fā)表于 04-09 17:54 ?259次閱讀
    國(guó)產(chǎn)!<b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>3576-Mini(8<b class='flag-5'>核</b>2.2GHz)<b class='flag-5'>工業(yè)</b><b class='flag-5'>評(píng)估</b><b class='flag-5'>板</b>規(guī)格書

    國(guó)產(chǎn)!RK3506 3ARM+Cortex-A7 + ARM Cortex-M0 工業(yè)評(píng)估說明書

    創(chuàng)龍科技TL3506-EVM是一款基于RK3506J/RK3506B處理器設(shè)計(jì)的3
    的頭像 發(fā)表于 04-29 15:42 ?280次閱讀
    國(guó)產(chǎn)!<b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK</b>3506 3<b class='flag-5'>核</b><b class='flag-5'>ARM+Cortex-A</b>7 + <b class='flag-5'>ARM</b> <b class='flag-5'>Cortex-M0</b> <b class='flag-5'>工業(yè)</b><b class='flag-5'>評(píng)估</b><b class='flag-5'>板</b>說明書

    RK3576,82.2GHz+6T算力NPU工業(yè)評(píng)估規(guī)格書

    創(chuàng)龍科技TL3576-EVM-S是一款基于RK3576J/RK3576高性能處理器設(shè)計(jì)的4
    的頭像 發(fā)表于 04-10 15:03 ?745次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK</b>3576,8<b class='flag-5'>核</b>2.2GHz+6T算力NPU<b class='flag-5'>工業(yè)</b><b class='flag-5'>評(píng)估</b><b class='flag-5'>板</b>規(guī)格書

    基于RK3562 ARM Cortex-A53 + 單核 ARM Cortex-M0工業(yè)評(píng)估——NPU開發(fā)案列

    本文主要介紹基于創(chuàng)龍科技TL3562-MiniEVM評(píng)估的NPU開發(fā)案例,適用開發(fā)環(huán)境如下。
    的頭像 發(fā)表于 04-15 17:18 ?96次閱讀
    基于<b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK3562</b> <b class='flag-5'>四</b><b class='flag-5'>核</b> <b class='flag-5'>ARM</b> <b class='flag-5'>Cortex-A53</b> + <b class='flag-5'>單核</b> <b class='flag-5'>ARM</b> <b class='flag-5'>Cortex-M0</b><b class='flag-5'>工業(yè)</b><b class='flag-5'>評(píng)估</b><b class='flag-5'>板</b>——NPU<b class='flag-5'>開發(fā)</b>案列

    基于RK3576國(guó)產(chǎn)ARM2.2GHz A72 工業(yè)評(píng)估——Docker容器部署方法說明

    創(chuàng)龍科技TL3576-MiniEVM是一款基于RK3576J/RK3576高性能處理器設(shè)計(jì)的4
    的頭像 發(fā)表于 04-18 10:18 ?205次閱讀
    基于<b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK</b>3576國(guó)產(chǎn)<b class='flag-5'>ARM</b>八<b class='flag-5'>核</b>2.2GHz <b class='flag-5'>A</b>72 <b class='flag-5'>工業(yè)</b><b class='flag-5'>評(píng)估</b><b class='flag-5'>板</b>——Docker容器部署方法說明

    新品發(fā)布 ▏國(guó)產(chǎn)工業(yè)級(jí)核心+1TOPS算力,RK3562_Mini開發(fā)板打造靈活工業(yè)解決方案

    合眾恒躍近日推出HZ-RK3562_MiniEVM,這是一款專為工業(yè)控制、智能設(shè)備、物聯(lián)網(wǎng)以及邊緣AI應(yīng)用設(shè)計(jì)的高性能產(chǎn)品。該平臺(tái)搭載了
    的頭像 發(fā)表于 04-29 18:40 ?269次閱讀
    新品發(fā)布 ▏國(guó)產(chǎn)<b class='flag-5'>工業(yè)</b>級(jí)核心+1TOPS算力,<b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RK3562</b>_Mini<b class='flag-5'>開發(fā)板</b>打造靈活<b class='flag-5'>工業(yè)</b>解決方案