前 言
本文主要介紹TL3562-MiniEVM評(píng)估板的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-[版本號(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ì),滿(mǎn)足如電力物聯(lián)網(wǎng)、電網(wǎng)繼電保護(hù)、電力系統(tǒng)安全控制、工業(yè)自動(dòng)化的需求。
我司提供的AMP-SDK開(kāi)發(fā)包基于官方的rk3562_linux_release_v1.2.0進(jìn)行拆解。AMP-SDK開(kāi)發(fā)包與AMP案例位于“4-軟件資料Demoamp-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工程均可單獨(dú)與Linux端通信。


備注:不同案例目錄結(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)的訪問(wèn),以及對(duì)基礎(chǔ)外設(shè)(如標(biāo)準(zhǔn)輸入和輸出、UART、CAN、GMAC、I2C等)的驅(qū)動(dòng)支持。
RT-Thread(Real Time-Thread)是一款國(guó)產(chǎn)嵌入式開(kāi)源實(shí)時(shí)多線程操作系統(tǒng),由RT-Thread工作室的專(zhuān)業(yè)開(kāi)發(fā)人員開(kāi)發(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、ROM、RAM、電源、晶振等所有元器件均采用國(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)過(guò)專(zhuān)業(yè)的 PCB Layout 和高低溫測(cè)試驗(yàn)證,支持選配屏蔽罩,質(zhì)量穩(wěn)定可靠,可滿(mǎ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)品集成,方便用戶(hù)快速進(jìn)行產(chǎn)品方案評(píng)估與技術(shù)預(yù)研。

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

評(píng)估板硬件資源圖解 2
開(kāi)發(fā)環(huán)境搭建
本章節(jié)主要介紹基于Linux + RT-Thread(RTOS)、Baremetal的AMP案例的開(kāi)發(fā)環(huán)境搭建。
打開(kāi)Ubuntu,在任意目錄下執(zhí)行如下命令,安裝AMP案例編譯所需的相關(guān)工具。
Host# sudo apt update

圖 1
Host# sudo apt install scons

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

圖 3
至此,AMP開(kāi)發(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開(kāi)發(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/"下,如下圖所示。

圖 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/"下,如下圖所示。

圖 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/"下,如下圖所示。

圖 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/"下,如下圖所示。

圖 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

圖 8

圖 9

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

圖 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

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

圖 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)行的程序

圖 14

圖 15

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

圖 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

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

圖 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

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

圖 21

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

圖 23
執(zhí)行如下命令,將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)工程編譯
執(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

圖 26

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

圖 28
執(zhí)行如下命令,將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目錄下,負(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

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

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

工程固化
本小節(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鏡像操作方法類(lèi)似。
評(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)行程序。
通過(guò)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

圖 33
通過(guò)瑞芯微開(kāi)發(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)固化》文檔安裝瑞芯微開(kāi)發(fā)工具RKDevTool。將待固化的amp.img鏡像文件拷貝至Windows非中文工作目錄下。
(2) 打開(kāi)瑞芯微開(kāi)發(fā)工具,amp選項(xiàng)選擇待固化的amp.img鏡像文件存放路徑,并勾選對(duì)應(yīng)選項(xiàng),具體如下圖所示。

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

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

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

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

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

圖 39

圖 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)存已被占用,打印以下警告信息,忽略即可。

圖 41

圖 42
AMP開(kāi)發(fā)案例
本章節(jié)主要介紹基于Linux + RT-Thread(RTOS)、Baremetal的AMP開(kāi)發(fā)案例說(shuō)明。
本章節(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接口。


圖 43

圖 44
led_flash案例
案例說(shuō)明
案例功能:
(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)估底板用戶(hù)可編程指示燈每隔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)估底板用戶(hù)可編程指示燈每隔0.5s閃爍一次。

圖 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

圖 46
U-Boot啟動(dòng)后,將加載運(yùn)行amp.img鏡像,UART2串口終端將打印程序運(yùn)行信息,同時(shí)評(píng)估底板用戶(hù)可編程指示燈LED1、LED2每隔0.5s閃爍一次。
其中m0_baremetal、m0_rtos、a53-3_baremetal、a53-3_rtos程序鏡像固化后,UART2串口終端打印信息如下:
備注:評(píng)估板斷電時(shí),UART2串口終端可能會(huì)打印亂碼信息,不影響正常功能,忽略即可。

圖 47 m0_baremetal

圖 48 m0_rtos

圖 49 a53-3_baremetal

圖 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

圖 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ù)文件。
我司已提供配置好的設(shè)備樹(shù)文件,位于案例"dtssrctl3562-minievm-led-flash.dts"路徑下,可直接使用。如需重新編譯適用于本案例的內(nèi)核鏡像,請(qǐng)將tl3562-minievm-led-flash.dts設(shè)備樹(shù)文件拷貝至內(nèi)核源碼"arch/arm64/boot/dts/rockchip/"目錄下,然后參考《Ubuntu系統(tǒng)使用手冊(cè)》文檔“編譯設(shè)備樹(shù)文件”章節(jié)重新編譯生成內(nèi)核鏡像即可。
其中,tl3562-minievm-led-flash.dts設(shè)備樹(shù)文件是基于內(nèi)核源碼"arch/arm64/boot/dts/rockchip/"目錄下的tl3562-minievm.dts設(shè)備樹(shù)文件修改配置的。
修改內(nèi)容如下:
a) 關(guān)閉user_led0、user_led1節(jié)點(diǎn)。

圖 52 tl3562-minievm-led-flash.dts
b) 配置rockchip_amp節(jié)點(diǎn)。
由于修改了設(shè)備樹(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中斷。

圖 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)容
};

圖 54 tl3562-minievm-led-flash.dts
c) 配置princtrl節(jié)點(diǎn)
由于UART2串口作為RT-Thread(RTOS)、Baremetal程序的調(diào)試串口,需使用UART2引腳,因此需刪除Linux內(nèi)核占用的引腳。

圖 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。

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

圖 57
(2) RT-Thread(RTOS)程序
RT-Thread(RTOS)程序的main.c文件位于案例"xxxprojectled_flashapplications"目錄下。
a) 初始化GPIO。

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

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

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

圖 61 Baremetal/RT-Thread程序配置文件amp_linux.its
uart_echo案例
案例說(shuō)明
案例功能:
(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串口回顯功能。

圖 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)系

UART3連接關(guān)系


圖 63
硬件連接如下圖所示。

圖 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

圖 65
U-Boot啟動(dòng)后,將加載運(yùn)行amp.img鏡像,UART2串口終端將打印程序運(yùn)行信息。
其中m0_baremetal、m0_rtos、a53-3_baremetal、a53-3_rtos程序鏡像固化后,UART2串口終端打印信息如下:

圖 66 m0_baremetal

圖 67 m0_rtos

圖 68 a53-3_baremetal

圖 69 a53-3_rtos
在UART3串口終端輸入8個(gè)字符后按回車(chē),串口終端將回顯接收到的字符。

圖 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ù)文件。
我司已提供配置修改好的設(shè)備樹(shù)文件,位于案例目錄下"dtssrctl3562-minievm-uart-echo.dts",可直接使用。如需重新編譯本案例內(nèi)核鏡像,請(qǐng)將tl3562-minievm-uart-echo.dts設(shè)備樹(shù)文件拷貝至內(nèi)核源碼"arch/arm64/boot/dts/rockchip/"目錄下,然后參考《Ubuntu系統(tǒng)使用手冊(cè)》文檔“編譯設(shè)備樹(shù)文件”章節(jié)重新編譯生成內(nèi)核鏡像即可。
其中,tl3562-minievm-uart-echo.dts設(shè)備樹(shù)文件是基于內(nèi)核源碼"arch/arm64/boot/dts/rockchip/"目錄下的tl3562-minievm.dts設(shè)備樹(shù)文件修改配置的。
修改內(nèi)容如下:
a) 修改設(shè)備樹(shù)文件關(guān)閉設(shè)備樹(shù)uart3和uart2節(jié)點(diǎn)。

圖 71 tl3562-minievm.dts

圖 72 tl3562-minievm.dts
b) 配置rockchip_amp節(jié)點(diǎn)。
由于修改了設(shè)備樹(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>;
};

圖 73 tl3562-minievm-uart-echo.dts
c) 配置princtrl節(jié)點(diǎn)
由于UART2串口作為RT-Thread(RTOS)、Baremetal程序的調(diào)試串口,UART3用于案例串口回顯功能,需使用UART2、UART3引腳,因此需刪除Linux內(nèi)核占用的引腳。

圖 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)行說(shuō)明。
a) 初始化UART3及其中斷。

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

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

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

圖 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)鍵代碼存在差異,具體說(shuō)明如下。
備注:main.c源碼文件中包含官方板級(jí)初始化代碼,本小節(jié)僅對(duì)程序的關(guān)鍵代碼進(jìn)行說(shuō)明。
a) 初始化UART3及其中斷。

圖 79 a53-3_baremetal main.c程序

圖 80 a53-3_rtos main.c程序
b) 清除數(shù)據(jù)buf,拉低流控GPIO,準(zhǔn)備接收數(shù)據(jù)。

圖 81 a53-3_baremetal main.c程序

圖 82 a53-3_rtos main.c程序
c) 中斷處理函數(shù)中,接收8個(gè)字節(jié)后,拉高流控GPIO,把接收的8個(gè)字節(jié)發(fā)送回去。

圖 83 a53-3_baremetal main.c程序

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

圖 85 amp_linux.its
rpmsg_echo案例
案例說(shuō)明
案例功能:
(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端接收到來(lái)至Linux端的rpmsg數(shù)據(jù)后會(huì)將數(shù)據(jù)發(fā)送回Linux端;
d) Linux端將接收來(lái)自RT-Thread(RTOS)、Baremetal端的rpmsg數(shù)據(jù);
e) Linux程序與RT-Thread(RTOS)、Baremetal程序之間循環(huán)往復(fù)接收與發(fā)送rpmsg數(shù)據(jù),實(shí)現(xiàn)核間通信。
案例程序流程圖如下:

圖 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

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

圖 88 m0_baremetal

圖 89 m0_rtos

圖 90 a53-3_baremetal

圖 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

圖 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

圖 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ù)文件。
我司已提供配置修改好的設(shè)備樹(shù)文件,位于案例目錄"dtssrc"下,可直接使用。如需重新編譯本案例內(nèi)核鏡像,請(qǐng)將設(shè)備樹(shù)文件拷貝至內(nèi)核源碼"arch/arm64/boot/dts/rockchip/"目錄下,然后參考《Ubuntu系統(tǒng)使用手冊(cè)》文檔“編譯設(shè)備樹(shù)文件”章節(jié)重新編譯生成內(nèi)核鏡像即可。
其中,tl3562-minievm-rpmsg-echo-mcu.dts設(shè)備樹(shù)和tl3562-minievm-rpmsg-echo-a53-3.dts設(shè)備樹(shù)文件是基于內(nèi)核源碼"arch/arm64/boot/dts/rockchip/"目錄下的tl3562-minievm.dts設(shè)備樹(shù)文件修改配置的。
修改內(nèi)容如下:
a) 關(guān)閉設(shè)備樹(shù)uart2節(jié)點(diǎn)。

圖 94 tl3562-minievm -rpmsg-echo-mcu.dts
b) 配置rockchip_amp節(jié)點(diǎn)。
由于修改了設(shè)備樹(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>;
};

圖 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)。

圖 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

圖 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)行說(shuō)明。
a) 檢查共享內(nèi)存,確定主從CPU ID。

圖 98 main.c
b) 初始化rpmsg,并等待與Linux連接。

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

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

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

圖 102 amp.its

圖 103 amp_linux.its
(2) RT-Thread程序關(guān)鍵代碼
RT-Thread程序的main.c文件位于案例"xxxprojectrpmsg_echoapplications"目錄下。
a) 檢查共享內(nèi)存,確定主從CPU ID。

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

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

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

圖 107 main.c
(3) Linux端程序關(guān)鍵代碼
Linux端程序的rpmsg_echo.c文件位于案例"rpmsg_echohost_linuxsrc"目錄下。
a) 創(chuàng)建并打開(kāi)rpmsg端點(diǎn)。

圖 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)。

圖 109 rpmsg_echo.c文件

圖 110 Baremetal程序main.c文件
c) 構(gòu)建數(shù)據(jù)包,通過(guò)rpmsg將數(shù)據(jù)包發(fā)送出去,再通過(guò)rpmsg接收數(shù)據(jù)包。

圖 111
審核編輯 黃宇
-
瑞芯微
+關(guān)注
關(guān)注
27文章
792瀏覽量
54286 -
評(píng)估板
+關(guān)注
關(guān)注
1文章
931瀏覽量
31177 -
RK3562
+關(guān)注
關(guān)注
0文章
99瀏覽量
689
發(fā)布評(píng)論請(qǐng)先 登錄
瑞芯微米爾RK3562國(guó)產(chǎn)核心板,ARM中量級(jí)多面手
基于ARM Cortex-M0核的MCU設(shè)計(jì)及應(yīng)用
新一代低價(jià)開(kāi)發(fā)板芯片RK3562來(lái)啦! — 觸覺(jué)智能RK3562開(kāi)發(fā)板
全國(guó)產(chǎn)!瑞芯微3562Mini(2GHz四核A53 NPU)工業(yè)開(kāi)發(fā)板規(guī)格書(shū)
瑞芯微RK3506(3核ARM+Cortex-A7 + ARM Cortex-M0)工業(yè)核心板選型資料
瑞芯微RK3576,8核2.2GHz+6T算力NPU工業(yè)核心板說(shuō)明書(shū)
國(guó)產(chǎn)!瑞芯微RK3506 3核ARM+Cortex-A7 + ARM Cortex-M0 工業(yè)評(píng)估板說(shuō)明書(shū)
基于瑞芯微RK3562 四核 ARM Cortex-A53 + 單核 ARM Cortex-M0工業(yè)評(píng)估板——NPU開(kāi)發(fā)案列
基于瑞芯微RK3576國(guó)產(chǎn)ARM八核2.2GHz A72 工業(yè)評(píng)估板——Docker容器部署方法說(shuō)明
全國(guó)產(chǎn)!瑞芯微 RK3576 ARM 八核 2.2GHz 工業(yè)開(kāi)發(fā)板—LVGL應(yīng)用開(kāi)發(fā)案例
全國(guó)產(chǎn)!瑞芯微 RK3576 ARM 八核 2.2GHz 工業(yè)開(kāi)發(fā)板—Linux系統(tǒng)使用手冊(cè)
全國(guó)產(chǎn)!瑞芯微 RK3576 ARM 八核 2.2GHz 工業(yè)開(kāi)發(fā)板—Linux開(kāi)發(fā)環(huán)境搭建
全國(guó)產(chǎn)!瑞芯微 RK3576 ARM 八核 2.2GHz 工業(yè)開(kāi)發(fā)板—Linux應(yīng)用開(kāi)發(fā)手冊(cè)
創(chuàng)龍瑞芯微 RK3562 國(guó)產(chǎn) 2GHz 四核A53 工業(yè)開(kāi)發(fā)板—調(diào)試工具安裝
創(chuàng)龍 瑞芯微 RK3562 國(guó)產(chǎn) 2GHz 四核A53 工業(yè)開(kāi)發(fā)板—IRIG-B碼對(duì)時(shí)案例
基于瑞芯微RK3562 四核 ARM Cortex-A53 + 單核 ARM Cortex-M0工業(yè)評(píng)估板——Linux應(yīng)用開(kāi)發(fā)手冊(cè)
評(píng)論