前 言 本文主要介紹TL3562-MiniEVM評估板的AMP(Asymmetric Multi-processing)開(kāi)發(fā)案例,適用開(kāi)發(fā)環(huán)境如下: Windows開(kāi)發(fā)環(huán)境:Windows 7 64bit、Windows 10 64bit Linux開(kāi)發(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-[版本號](基于rk3562_linux_release_v1.2.0) 工程調試工具:OpenOCD、Eclipse 評估板支持Linux(Kernel-5.10.209)、Baremetal(HAL)、RTOS(RT-Thread)組合的AMP混合架構設計,滿(mǎn)足如電力物聯(lián)網(wǎng)、電網(wǎng)繼電保護、電力系統安全控制、工業(yè)自動(dòng)化的需求。 我司提供的AMP-SDK開(kāi)發(fā)包基于官方的rk3562_linux_release_v1.2.0進(jìn)行拆解。AMP-SDK開(kāi)發(fā)包與AMP案例位于“4-軟件資料\Demo\amp-demos\”目錄下,具體說(shuō)明如下所示。 備注: (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工程均可單獨與Linux端通信。 HAL(Hardware Abstraction Layer,硬件抽象層)是位于操作系統內核與硬件電路之間的接口層,其目的在于將硬件抽象化。瑞芯微的Standalone系統是一個(gè)簡(jiǎn)單的、low-level的軟件層,內部實(shí)現基于HAL,提供對基本處理器特性(如Cache、Interrupts和Exceptions)的訪(fǎng)問(wèn),以及對基礎外設(如標準輸入和輸出、UART、CAN、GMAC、I2C等)的驅動(dòng)支持。 RT-Thread(Real Time-Thread)是一款國產(chǎn)嵌入式開(kāi)源實(shí)時(shí)多線(xiàn)程操作系統,由RT-Thread工作室的專(zhuān)業(yè)開(kāi)發(fā)人員開(kāi)發(fā)、維護。RT-Thread不僅僅是一款高效、穩定的實(shí)時(shí)核心,也是一套面向嵌入式系統的軟件平臺,覆蓋了全搶占的實(shí)時(shí)操作系統內核。 評估板簡(jiǎn)介 創(chuàng )龍科技 TL3562-MiniEVM 是一款基于瑞芯微 RK3562J/RK3562 處理器設計的四核 ARM Cortex-A53 + 單核 ARM Cortex-M0 國產(chǎn)工業(yè)評估板,主頻高達 2.0GHz。評估板由核心板和評估底板組成,核心板 CPU、ROM、RAM、電源、晶振等所有元器件均采用國產(chǎn)工業(yè)級方案,國產(chǎn)化率 100%,評估底板大部分元器件亦采用國產(chǎn)工業(yè)級方案,國產(chǎn)化率約 99%(按元器件數量占比,數據僅供參考)。核心板經(jīng)過(guò)專(zhuān)業(yè)的 PCB Layout 和高低溫測試驗證,支持選配屏蔽罩,質(zhì)量穩定可靠,可滿(mǎn)足各種工業(yè)應用環(huán)境要求。 評估板引出 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 視頻解碼。 評估板體積小巧,尺寸為 85x130mm,可作為卡片式電腦使用,且便于產(chǎn)品集成,方便用戶(hù)快速進(jìn)行產(chǎn)品方案評估與技術(shù)預研。 評估板硬件資源圖解 1 評估板硬件資源圖解 2 開(kāi)發(fā)環(huán)境搭建 本章節主要介紹基于Linux + RT-Thread(RTOS)、Baremetal的AMP案例的開(kāi)發(fā)環(huán)境搭建。 打開(kāi)Ubuntu,在任意目錄下執行如下命令,安裝AMP案例編譯所需的相關(guān)工具。 Host# sudo apt update 圖 1 Host# sudo apt install scons圖 2 請將位于產(chǎn)品資料“4-軟件資料\Demo\amp-demos\AMP-SDK\”目錄下的AMP-SDK開(kāi)發(fā)包AMP-SDK-[版本號].tar.gz拷貝至Ubuntu的RK3562工作目錄下,版本號請以實(shí)際情況為準。執行如下命令,將AMP-SDK開(kāi)發(fā)包解壓至RK3562工作目錄。hal目錄用于存放裸機代碼,rt-thread目錄用于存放rt-thread代碼。 Host# tar -zxf amp-sdk-v1.0.tar.gz 圖 3 至此,AMP開(kāi)發(fā)環(huán)境搭建完成。 工程編譯與固化 評估板支持Cortex-M0(MCU)、Cortex-A53(CPU3)核心運行Baremetal(HAL)、RTOS(RT-Thread)程序。本章節以led_flash案例為例,演示基于Linux + RT-Thread(RTOS)、Baremetal的AMP開(kāi)發(fā)案例導入和編譯方法。 工程導入 Baremetal工程導入 (1) Cortex-M0(MCU)核心Baremetal工程導入 請將產(chǎn)品資料“4-軟件資料\Demo\amp-demos\led_flash\m0_baremetal\project\”目錄下的整個(gè)工程源碼文件夾led_flash拷貝至AMP-SDK源碼目錄"hal/project/"下,如下圖所示。 圖 4 m0_baremetal (2) Cortex-A53(CPU3)核心Baremetal工程導入 請將產(chǎn)品資料“4-軟件資料\Demo\amp-demos\led_flash\a53-3_baremetal\project\”目錄下的整個(gè)工程源碼文件夾led_flash拷貝至AMP-SDK源碼目錄"hal/project/"下,如下圖所示。 圖 5 a53-3_baremetal RT-Thread(RTOS)工程導入 (1) Cortex-M0(MCU)核心RT-Thread(RTOS)工程導入 請將產(chǎn)品資料“4-軟件資料\Demo\amp-demos\led_flash\m0_rtos\project\”目錄下的整個(gè)工程源碼文件夾led_flash拷貝至AMP-SDK源碼目錄"rtos/bsp/rockchip/"下,如下圖所示。 圖 6 m0_rtos (2) Cortex-A53(CPU3)核心RT-Thread(RTOS)工程導入 請將產(chǎn)品資料“4-軟件資料\Demo\amp-demos\led_flash\a53-3_rtos\project\”目錄下的整個(gè)工程源碼文件夾led_flash拷貝至AMP-SDK源碼目錄"rtos/bsp/rockchip/"下,如下圖所示。 圖 7 a53-3_rtos 工程編譯 Baremetal工程編譯 (1) Cortex-M0(MCU)核心Baremetal工程編譯 在A(yíng)MP-SDK目錄下,執行如下命令,進(jìn)入"hal/project/led_flash/GCC/"目錄,對Baremetal工程進(jìn)行編譯。 Host# cd hal/project/led_flash/GCC/ Host# make clean Host# make 圖 8 圖 9 圖 10 編譯完成后,在"hal/project/led_flash/GCC/"目錄下生成程序鏡像文件TestDemo.bin。 圖 11 執行如下命令進(jìn)入led_flash源碼目錄,將Baremetal程序鏡像文件TestDemo.bin制作生成amp.img鏡像文件。 備注:不同案例打印信息可能會(huì )有所差異,請以實(shí)際為準。 Host# cd /home/tronlong/RK3562/amp-sdk-v1.0/hal/project/led_flash/ Host# ./mkimage.sh 圖 12 制作完成后,將會(huì )在Image目錄下生成Baremetal工程的amp.img鏡像文件。 圖 13 (2) Cortex-A53(CPU3)核心Baremetal工程編譯 在A(yíng)MP-SDK的目錄下,執行如下命令,進(jìn)入"hal/project/led_flash/GCC/"目錄,對Baremetal工程進(jìn)行編譯。 Host# cd hal/project/led_flash/GCC/ Host# make clean Host# ./build.sh 3 //編譯在Cortex-A53(CPU3)上運行的程序 圖 14 圖 15 圖 16 編譯完成后,在"hal/project/led_flash/GCC/"目錄下生成程序鏡像文件hal3.bin。 圖 17 執行如下命令進(jìn)入led_flash源碼目錄,將Baremetal程序鏡像文件hal3.bin制作生成amp.img鏡像文件。 備注:不同案例打印信息可能會(huì )有所差異,請以實(shí)際為準。 Host# cd /home/tronlong/RK3562/amp-sdk-v1.0/hal/project/led_flash Host# ./mkimage.sh 圖 18 制作完成后,將會(huì )在Image目錄下生成Baremetal工程的amp.img鏡像文件。 圖 19 RT-Thread(RTOS)工程編譯 (1) Cortex-M0(MCU)核心RT-Thread(RTOS)工程編譯 執行如下命令,進(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 圖 20 執行如下命令,對RT-Thread(RTOS)工程進(jìn)行編譯。Host# scons -c Host# scons 圖 21 圖 22 制作完成后,將會(huì )在當前目錄下生成RT-Thread(RTOS)工程的rtthread.bin程序鏡像文件。 圖 23 執行如下命令,將RT-Thread(RTOS)程序鏡像文件rtthread.bin制作生成amp.img鏡像文件。 Host# ./mkimage.sh 圖 24 制作完成后,將會(huì )在Image目錄下生成RT-Thread(RTOS)工程的amp.img鏡像文件。 圖 25 (2) Cortex-A53(CPU3)核心RT-Thread(RTOS)工程編譯 執行如下命令,進(jìn)入AMP-SDK下的"rtos/bsp/rockchip/led_flash/"目錄,對RT-Thread(RTOS)工程進(jìn)行編譯。 Host# cd /home/tronlong/RK3562/amp-sdk-v1.0/rtos/bsp/rockchip/led_flash Host# ./build.sh 3 圖 26 圖 27 編譯完成后,將會(huì )在當前目錄下生成RT-Thread(RTOS)工程的rtt3.bin程序鏡像文件。 圖 28 執行如下命令,將RT-Thread程序鏡像文件rtt3.bin制作生成amp.img鏡像文件。 Host# ./mkimage.sh 圖 29 制作完成后,將會(huì )在Image目錄下生成RT-Thread(RTOS)工程的amp.img鏡像文件。 圖 30 配置文件說(shuō)明 Cortex-M0(MCU)核心Baremetal/RT-Thread(RTOS)案例的配置文件為amp.its,Cortex-A53(CPU3)核心Baremetal/RT-Thread(RTOS)案例的配置文件為amp_linux.its,此文件均位于Baremetal/RT-Thread(RTOS)案例Image目錄下,負責描述打包生成amp.img鏡像的配置信息。在U-Boot啟動(dòng)后,讀取amp.img并解析amp.img中的配置信息,然后根據配置信息加載Baremetal、RT-Thread(RTOS)程序到指定內存地址,并啟動(dòng)Cortex-M0/Cortex-A53核心運行程序。 (1) amp.its 圖 31 Baremetal/RT-Thread(RTOS)程序配置文件amp.its (2) amp_linux.its 圖 32 Baremetal/RT-Thread(RTOS)程序配置文件amp_linux.its Baremetal/RT-Thread(RTOS)程序配置文件中的參數說(shuō)明如下表所示: 本小節以“4-軟件資料\Demo\amp-demos\led_flash\m0_baremetal\bin\”目錄下的amp.img鏡像文件為例,演示將amp.img鏡像固化至系統啟動(dòng)卡或eMMC的加載運行方法。案例"m0_rtos\bin\"、"a53-3_baremetal\bin\"、"a53-3_rtos\bin\"目錄下的amp.img鏡像操作方法類(lèi)似。 評估板重新上電啟動(dòng),在U-Boot啟動(dòng)階段將讀取amp.img鏡像文件,解析amp.img中的配置信息(配置信息由amp配置文件保存在amp.img),并根據配置信息加載Baremetal、RT-Thread工程至指定內存地址,然后啟動(dòng)指定CPU運行程序。 通過(guò)Linux命令行固化 請將待固化的amp.img鏡像拷貝至評估板文件系統,執行如下命令將其固化至系統啟動(dòng)卡對應分區。 備注:如需固化至eMMC,請將設備節點(diǎn)修改為"/dev/mmcblk0p8"。 Target# dd if=amp.img of=/dev/mmcblk1p8 conv=fsync Target# sync Target# reboot 圖 33 通過(guò)瑞芯微開(kāi)發(fā)工具RKDevTool固化 請確保評估板Micro SD卡槽未插入Micro SD卡,并使用Type-C線(xiàn)將評估板USB2.0 OTG接口連接至PC機USB接口。 備注:本小節操作方法僅支持固化amp.img鏡像文件至eMMC,不支持固化至系統啟動(dòng)卡。 (1) 請參考《系統啟動(dòng)卡制作及系統固化》文檔安裝瑞芯微開(kāi)發(fā)工具RKDevTool。將待固化的amp.img鏡像文件拷貝至Windows非中文工作目錄下。 (2) 打開(kāi)瑞芯微開(kāi)發(fā)工具,amp選項選擇待固化的amp.img鏡像文件存放路徑,并勾選對應選項,具體如下圖所示。 圖 34 (3) 將評估板斷電,長(cháng)按USER1(KEY3)按鍵,再將評估板上電,此時(shí)瑞芯微開(kāi)發(fā)工具界面將會(huì )出現提示信息“發(fā)現一個(gè)LOADER設備”,然后松開(kāi)USER1(KEY3)按鍵。 圖 35 (4) 點(diǎn)擊“執行”選項,將程序鏡像文件amp.img固化至eMMC。 圖 36 (5) 直至出現如下界面,提示“下載完成”的信息,表示將amp.img鏡像文件固化至eMMC成功,此時(shí)評估板將自動(dòng)重啟。 圖 37 通過(guò)系統鏡像固化 請參考《Ubuntu系統使用手冊》拆解update.img系統鏡像,將“4-軟件資料\Demo\amp-demos\led_flash\m0_baremetal\bin\”目錄下的amp.img鏡像文件拷貝至Mkimage的"output/Image/"目錄下。 圖 38 執行如下命令,即可在"output/update"目錄合成新的update.img鏡像。 Host# ./mkimage.sh pack 圖 39 圖 40 請參考《系統啟動(dòng)卡制作及系統固化》文檔,將系統鏡像文件固化至Micro SD卡或eMMC。 備注:Linux內核已預留Cortex-M0/Cortex-A53內存,評估板固化amp.img鏡像后,在U-Boot啟動(dòng)時(shí)Cortex-M0/Cortex-A53將識別此部分內存已被占用,打印以下警告信息,忽略即可。 圖 41 圖 42 想了解更多不同案例,可前往創(chuàng )龍科技官網(wǎng)或微信公眾號。 |
表2_01.jpg (295.62 KB)