久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 米爾RK3576開(kāi)發(fā)板AMP非對(duì)稱(chēng)多核開(kāi)發(fā)指南:從配置到實(shí)戰(zhàn)

米爾RK3576開(kāi)發(fā)板AMP非對(duì)稱(chēng)多核開(kāi)發(fā)指南:從配置到實(shí)戰(zhàn)

—— 深度實(shí)戰(zhàn)
作者: 時(shí)間:2025-12-05 來(lái)源:EEPW 收藏

一、什么是?為什么重要?

(Asymmetric Multi-Processing)非對(duì)稱(chēng)多處理架構(gòu),允許單個(gè)芯片的不同核心運(yùn)行不同的操作系統(tǒng)或裸機(jī)程序。相比傳統(tǒng)的SMP(對(duì)稱(chēng)多處理),具有獨(dú)特優(yōu)勢(shì)。

核心特性:

●   異構(gòu)運(yùn)算:不同核心運(yùn)行最適合的操作系統(tǒng),如Linux處理復(fù)雜應(yīng)用,RT-Thread保障實(shí)時(shí)任務(wù)

●   資源隔離:各核心擁有獨(dú)立內(nèi)存空間,避免資源沖突

●   靈活通信:通過(guò)共享內(nèi)存、RPMSG等方式實(shí)現(xiàn)高效核間通信

商業(yè)價(jià)值:

●   成本優(yōu)化:單芯片替代多芯片方案,減少PCB面積和元器件數(shù)量

●   開(kāi)發(fā)靈活:支持Linux、RT-Thread、裸機(jī)程序的自由組合

●   系統(tǒng)可靠:故障隔離,關(guān)鍵任務(wù)永不掉線

二、實(shí)戰(zhàn)選型:MYD-LR3576的AMP硬件基礎(chǔ)

核心板 MYD-LR3576 基于 RK3576 處理器,集成三大核心集群:AP 端配備 4 顆 ARM Cortex-A72 與 4 顆 ARM Cortex-A53 核心,MCU 端搭載 1 顆 ARM Cortex-M0 核心,通過(guò) AMP 架構(gòu)實(shí)現(xiàn)多系統(tǒng)異構(gòu)運(yùn)行,在成本優(yōu)化與開(kāi)發(fā)靈活性上展現(xiàn)突出優(yōu)勢(shì)。

1764920769283703.png

基于RK3576開(kāi)發(fā)板

三大核心集群:

1764920888700135.png

系統(tǒng)支持:

1764920939652483.png

已驗(yàn)證AMP方案:

●   AP+AP架構(gòu):Linux + RT-Thread/Bare-metal

●   AP+MCU架構(gòu):Linux + MCU RT-Thread/Bare-metal

三、實(shí)戰(zhàn)操作:AMP 系統(tǒng)串口資源配置

實(shí)戰(zhàn)目標(biāo):基于MYD-LR3576開(kāi)發(fā)板,詳細(xì)講解Linux與RT-Thread側(cè)的串口資源配置全流程,實(shí)現(xiàn)從理論到實(shí)踐的完整落地。

3.1 Linux側(cè)串口資源的剝離與分配

在 AMP 架構(gòu)中,若需將 UART6 分配給 RT-Thread 從核使用,需先在 Linux 設(shè)備樹(shù)中完成資源剝離,避免 Linux 內(nèi)核對(duì)該外設(shè)的占用。

1.失能UART6: Linux 設(shè)備樹(shù)通過(guò)節(jié)點(diǎn)狀態(tài)配置控制外設(shè)的啟用 / 禁用。對(duì)于 UART6,需在其節(jié)點(diǎn)中添加 “status = "disabled"” 屬性,明確告知 Linux 內(nèi)核:該串口不再由 Linux 管理。

&uart6 {

status = "disabled";  // 剝離Linux對(duì)UART6的控制權(quán)

};

2.分配UART6資源

剝離后的 UART6 資源需通過(guò) rockchip_amp 節(jié)點(diǎn)重新分配給從核,配置內(nèi)容包括時(shí)鐘資源、引腳功能與中斷路由:

&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.分配從核內(nèi)存

為避免 Linux 內(nèi)核占用從核的運(yùn)行內(nèi)存,需在 reserved-memory 節(jié)點(diǎn)中劃分專(zhuān)屬內(nèi)存區(qū)域。例如,為 RT-Thread 從核預(yù)留 8MB 內(nèi)存:

amp_reserved: amp@41800000 {

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

no-map; // 禁止Linux映射該區(qū)域,確保從核獨(dú)占

};

3.2 RT-Thread側(cè)UART6的初始化與啟用

Linux 側(cè)完成資源剝離后,需在 RT-Thread 中對(duì) UART6 進(jìn)行初始化,使其具備通信能力。RT-Thread 的配置流程主要包括引腳復(fù)用、中斷路由與外設(shè)使能三步。

1.UART6引腳復(fù)用配置

RK3576 的引腳支持多功能復(fù)用,UART6 的 TX/RX 引腳需配置為對(duì)應(yīng)功能模式(如 Func13)。通過(guò) 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(從核)響應(yīng),需通過(guò) GIC 中斷控制器的路由配置,將 UART6 的中斷號(hào)與 CPU3 綁定。RT-Thread 提供了簡(jiǎn)潔的條件編譯選項(xiàng):

#ifdef RT_USING_UART6

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

#endif

3.UART6 RTOS側(cè)使能

通過(guò)在 RT-Thread 的配置文件中啟用對(duì)應(yīng)選項(xiàng),使能 UART6條件編譯:

CONFIG_RT_CONSOLE_DEVICE_NAME="uart6"

CONFIG_RT_USING_UART6=y

四、編譯部署:AMP系統(tǒng)鏡像構(gòu)建

4.1 編譯鏡像

完成配置后,返回 SDK 工程根目錄,執(zhí)行編譯腳本:

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 # 完整編譯

編譯成功后,生成的系統(tǒng)鏡像文件路徑為:

ls output/update/Image/update.img

update.img

4.2 燒錄鏡像至開(kāi)發(fā)板

請(qǐng)使用瑞芯微官方燒錄工具 RKDevTool 將鏡像寫(xiě)入開(kāi)發(fā)板。

五、功能驗(yàn)證

5.1 驗(yàn)證環(huán)境搭建

連接開(kāi)發(fā)板Debug口:串口參數(shù)設(shè)為 115200 波特率、8 數(shù)據(jù)位、1 停止位、無(wú)校驗(yàn)位;

連接開(kāi)發(fā)板UART6串口(具體位置如下圖):參數(shù)設(shè)為 1500000 波特率、8 數(shù)據(jù)位、1 停止位、無(wú)校驗(yàn)位。

1764920798632374.png

5.2 主核驗(yàn)證(Linux終端)

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

Lscpu

# 輸出結(jié)果中Cortex-A53核心數(shù)為3

1764920824388628.png

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

打開(kāi)UART6對(duì)應(yīng)的串口終端(波特率默認(rèn)150000),若能看到RT-Thread的啟動(dòng)日志,說(shuō)明從核系統(tǒng)已成功運(yùn)行,UART6外設(shè)正常工作。

1764921027714667.png

六、總結(jié)

本次串口資源配置實(shí)戰(zhàn),清晰地驗(yàn)證了外設(shè)從Linux側(cè)剝離、再分配至RT-Thread側(cè)的核心方法論。這僅是AMP靈活性的起點(diǎn),基于相同的配置邏輯,開(kāi)發(fā)者還可將GPIO、I2C、SPI等更多外設(shè)進(jìn)行精細(xì)化分配。

這種靈活的異構(gòu)計(jì)算模式,使其能夠無(wú)縫適配多類(lèi)對(duì)性能、實(shí)時(shí)性與功耗有綜合要求的工業(yè)與嵌入式場(chǎng)景。其典型應(yīng)用模式可歸納如下:

1.工業(yè)網(wǎng)關(guān):Linux運(yùn)行網(wǎng)絡(luò)協(xié)議棧、數(shù)據(jù)庫(kù)與Web服務(wù),實(shí)現(xiàn)數(shù)據(jù)上云與遠(yuǎn)程管理;RT-Thread則實(shí)時(shí)采集PLC數(shù)據(jù)、精準(zhǔn)控制執(zhí)行器,保障工業(yè)現(xiàn)場(chǎng)毫秒級(jí)響應(yīng)與確定性。

2.機(jī)器人控制器:Linux承載SLAM算法、視覺(jué)感知、路徑規(guī)劃與人機(jī)交互界面;RT-Thread專(zhuān)責(zé)多軸電機(jī)閉環(huán)控制、高頻率傳感器融合及硬實(shí)時(shí)安全連鎖。

3.智能音視頻設(shè)備:Linux處理高清音視頻編解碼、AI模型推理及云服務(wù)對(duì)接;獨(dú)立Cortex-M0核心則實(shí)現(xiàn)低功耗待機(jī)、語(yǔ)音關(guān)鍵詞喚醒與觸控檢測(cè),顯著優(yōu)化系統(tǒng)功耗與響應(yīng)速度。

1764921042551180.png

AMP架構(gòu)的價(jià)值,正是在于讓開(kāi)發(fā)者能夠根據(jù)場(chǎng)景需求,在同一硬件平臺(tái)上自由調(diào)配計(jì)算資源,實(shí)現(xiàn)性能、成本與功耗的最佳平衡。


評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉