Warning: file_put_contents(Tpl/kadhoai.com.cn//cache_html/99d16ea14121c09aeb774311e80d14f2): Failed to open stream: No space left on device in /www/wwwroot/www.Jx.com/index.php on line 151
【深度實戰】米爾RK3576開發板AMP非對稱多核開發指南:從配置到實戰 - 工控新聞 自動化新聞 中華工控網
中國自動化學會專家谘詢工作委員會指定宣傳媒體
新聞詳情

【深度實戰】米爾RK3576開發板AMP非對稱多核開發指南:從配置到實戰

http://kadhoai.com.cn 2026-04-05 23:19:13 來源:米爾電子

一、什麼是AMP?為什麼重要?

AMP(Asymmetric Multi-Processing)非對稱多處理架構,允許單個芯片的不同核心運行不同的操作係統或裸機程序。相比傳統的SMP(對稱多處理),AMP具有獨特優勢。

核心特性:

•異構運算:不同核心運行最適合的操作係統,如Linux處理複雜應用,RT-Thread保障實時任務

•資源隔離:各核心擁有獨立內存空間,避免資源衝突

•靈活通信:通過共享內存、RPMSG等方式實現高效核間通信

商業價值:

•成本優化:單芯片替代多芯片方案,減少PCB麵積和元器件數量

•開發靈活:支持Linux、RT-Thread、裸機程序的自由組合

•係統可靠:故障隔離,關鍵任務永不掉線

二、實戰選型:MYD-LR3576的AMP硬件基礎

米爾核心板 MYD-LR3576 基於 RK3576 處理器,集成三大核心集群:AP 端配備 4 顆 ARM Cortex-A72 與 4 顆 ARM Cortex-A53 核心,MCU 端搭載 1 顆 ARM Cortex-M0 核心,通過 AMP 架構實現多係統異構運行,在成本優化與開發靈活性上展現突出優勢。

米爾基於RK3576開發板

三大核心集群:

係統支持:

已驗證AMP方案:

•AP+AP架構:Linux + RT-Thread/Bare-metal

•AP+MCU架構:Linux + MCU RT-Thread/Bare-metal

三、實戰操作:AMP 係統串口資源配置

實戰目標:基於MYD-LR3576開發板,詳細講解Linux與RT-Thread側的串口資源配置全流程,實現從理論到實踐的完整落地。

3.1 Linux 側串口資源的剝離與分配

在 AMP 架構中,若需將 UART6 分配給 RT-Thread 從核使用,需先在 Linux 設備樹中完成資源剝離,避免 Linux 內核對該外設的占用。

1.    失能UART6: Linux 設備樹通過節點狀態配置控製外設的啟用 / 禁用。對於 UART6,需在其節點中添加 “status = "disabled"” 屬性,明確告知 Linux 內核:該串口不再由 Linux 管理。

&uart6 {

status = "disabled";  // 剝離Linux對UART6的控製權

};

2.    分配UART6 資源

剝離後的 UART6 資源需通過 rockchip_amp 節點重新分配給從核,配置內容包括時鍾資源、引腳功能與中斷路由:

&rockchip_amp {

clocks = <...>, <&cru SCLK_UART6>, <&cru PCLK_UART6>;

pinctrl-0 = <&uart6m3_xfer>;

amp-irqs = <GIC_AMP_IRQ_CFG_ROUTE(114, CPU_GET_AFFINITY(3, 0))>;

};

3.    分配從核內存

為避免 Linux 內核占用從核的運行內存,需在 reserved-memory 節點中劃分專屬內存區域。例如,為 RT-Thread 從核預留 8MB 內存:

amp_reserved: amp@41800000 {

reg = <0x0 0x41800000 0x0 0x00800000>; // 起始地址0x41800000,大小8MB

no-map; // 禁止Linux映射該區域,確保從核獨占

};

3.2 RT-Thread 側 UART6 的初始化與啟用

Linux 側完成資源剝離後,需在 RT-Thread 中對 UART6 進行初始化,使其具備通信能力。RT-Thread 的配置流程主要包括引腳複用、中斷路由與外設使能三步。

1.    UART6 引腳複用配置

RK3576 的引腳支持多功能複用,UART6 的 TX/RX 引腳需配置為對應功能模式(如 Func13)。通過 RT-Thread 的硬件抽象層(HAL)接口,可直接完成引腳功能的配置:

#ifdef RT_USING_UART6

uart6_m3_iomux_config();

#endif

void uart6_m3_iomux_config(void)

{

HAL_PINCTRL_SetIOMUX(GPIO_BANK4, GPIO_PIN_C5, PIN_CONFIG_MUX_FUNC13);

HAL_PINCTRL_SetIOMUX(GPIO_BANK4, GPIO_PIN_C4, PIN_CONFIG_MUX_FUNC13);

}

2.    UART6 中斷路由配置

為確保 UART6 的中斷能被 CPU3(從核)響應,需通過 GIC 中斷控製器的路由配置,將 UART6 的中斷號與 CPU3 綁定。RT-Thread 提供了簡潔的條件編譯選項:

#ifdef RT_USING_UART6

GIC_AMP_IRQ_CFG_ROUTE(UART6_IRQn, 0xd0, CPU_GET_AFFINITY(3, 0));

#endif

3.    UART6 RTOS側使能

通過在 RT-Thread 的配置文件中啟用對應選項,使能 UART6條件編譯:

CONFIG_RT_CONSOLE_DEVICE_NAME="uart6"

CONFIG_RT_USING_UART6=y

四、編譯部署:AMP係統鏡像構建

4.1 編譯鏡像

完成配置後,返回 SDK 工程根目錄,執行編譯腳本:

cd MYD-LR3576

./build.sh lunch

1. rockchip_defconfig

2. rockchip_rk3576_myd_lr3576_amp_defconfig

3. rockchip_rk3576_myd_lr3576_defconfig

4. rockchip_rk3576_myd_lr3576_mcu_defconfig

Which would you like? [1]: 2

....

./build.sh # 完整編譯

編譯成功後,生成的係統鏡像文件路徑為:

ls output/update/Image/update.img

update.img

4.2 燒錄鏡像至開發板

請使用瑞芯微官方燒錄工具 RKDevTool 將鏡像寫入開發板。

五、功能驗證

5.1 驗證環境搭建

連接開發板 Debug 口:串口參數設為 115200 波特率、8 數據位、1 停止位、無校驗位;

連接開發板 UART6 串口(具體位置如下圖):參數設為 1500000 波特率、8 數據位、1 停止位、無校驗位。

5.2 主核驗證(Linux終端)

打開主核debug終端,輸入lscpu命令查看CPU信息,若Cortex-A53核心數量顯示為3(原4顆,1顆分配給RT-Thread),說明主核配置生效:

lscpu

# 輸出結果中Cortex-A53核心數為3

5.3 從核驗證(RT-Thread終端)

打開UART6對應的串口終端(波特率默認150000),若能看到RT-Thread的啟動日誌,說明從核係統已成功運行,UART6外設正常工作。

六、總結

本次串口資源配置實戰,清晰地驗證了外設從Linux側剝離、再分配至RT-Thread側的核心方法論。這僅是AMP靈活性的起點,基於相同的配置邏輯,開發者還可將GPIO、I2C、SPI等更多外設進行精細化分配。

這種靈活的異構計算模式,使其能夠無縫適配多類對性能、實時性與功耗有綜合要求的工業與嵌入式場景。其典型應用模式可歸納如下:

1.    工業網關:Linux運行網絡協議棧、數據庫與Web服務,實現數據上雲與遠程管理;RT-Thread則實時采集PLC數據、精準控製執行器,保障工業現場毫秒級響應與確定性。

2.    機器人控製器:Linux承載SLAM算法、視覺感知、路徑規劃與人機交互界麵;RT-Thread專責多軸電機閉環控製、高頻率傳感器融合及硬實時安全連鎖。

3.    智能音視頻設備:Linux處理高清音視頻編解碼、AI模型推理及雲服務對接;獨立Cortex-M0核心則實現低功耗待機、語音關鍵詞喚醒與觸控檢測,顯著優化係統功耗與響應速度。

AMP架構的價值,正是在於讓開發者能夠根據場景需求,在同一硬件平台上自由調配計算資源,實現性能、成本與功耗的最佳平衡。

版權所有 工控網 Copyright©2026 Gkong.com, All Rights Reserved