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