全志T153處理器ARM+RISC-V的雙核CP多有強?

原創(chuàng) 2026-01-16 10:30:00
全志T153異構雙核協(xié)作驗證

嵌入式設備拼性能、拼響應、拼功耗的內卷時代,雙核協(xié)作才是破局的關鍵

傳統(tǒng)的對稱多處理(SMP)架構已難以兼顧全場景需求,非對稱多處理(AMP)異構架構正在成為行業(yè)主流

在這樣的背景下,全志T153平臺直接搬出ARM+RISC-V的"雙核CP":主打高性能計算的Cortex-A7核心運行Linux,聚焦高實時性任務的RISC-V E907核心運行RTOS,組成 "互補型搭檔"。

全志T153異構雙核架構示意圖

本文會通過飛凌嵌入式OK153-S開發(fā)板,為大家實測這對雙核CP的協(xié)作實力——依托異構核間通訊機制(IPC)與Suspend/Resume電源管理機制,全面驗證A核與R核的協(xié)同工作能力,并驗證異構多核環(huán)境下的數(shù)據(jù)交互效率與智能化喚醒邏輯。

飛凌嵌入式OK153-S開發(fā)板

1 休眠喚醒功能驗證

pm_test節(jié)點可以用于測試Linux部分的休眠喚醒功能。設備凍結后,等待5s,即返回,執(zhí)行喚醒動作。

# 設置pm_test模式
echo devices > /sys/power/pm_test
# 設備進入休眠
echo mem > /sys/power/state
# 執(zhí)行以上命令后,設備5s后會被喚醒。

2 R核喚醒休眠的A核

功耗管理是產(chǎn)品續(xù)航與成本控制的核心競爭力。T153處理器的異構多核架構為此提供了的解決方案

  • A核休眠:ARM核在空閑時進入WFI深度睡眠,功耗降至最低
  • R核值守:RISC-V核心持續(xù)運行,監(jiān)聽外部事件
  • 按需喚醒:當傳感器觸發(fā)、定時任務到達時,R核一鍵喚醒A核處理復雜任務

A核進入WFI模式,R核運行在DRAM上,R核喚醒A核

首先設置主核休眠時,DRAM不進入自刷新,從核保持運行在DRAM上??梢酝ㄟ^linux控制臺輸入以下命令切換:

echo 0 >/sys/class/pm_msgbox/set_dram_refresh

然后A核進入休眠狀態(tài):

echo mem > /sys/power/state

使用R核喚醒A核。我們的R核提供了cpux_resume接口來喚醒主核,在R核中執(zhí)行以下命令進行A核喚醒:

cpux_resume

在低功耗場景下,高性能的A核休眠待機,低功耗的R核持續(xù)值守。當外部事件觸發(fā)時,R核可瞬間喚醒A核響應任務。這種"小核值班、大核待命"的架構,讓設備在續(xù)航與實時響應之間達到平衡。

3 雙核通訊驗證

T153處理器采用ARM Cortex-A7+RISC-V的多核異構架構,讓系統(tǒng)兼具"大腦"與"小腦",而異構核間通訊機制(IPC)正是連接兩個"腦"的高速通道,通過共享內存機制,雙核之間可實現(xiàn)數(shù)據(jù)傳輸。以下是操作方法

# 測試之前首先使能R核:
echo amp_rv0.bin > /sys/class/remoteproc/remoteproc0/firmware
echo start > /sys/class/remoteproc/remoteproc0/state

RISC-V端例程

代碼路徑:rtos/lichee/rtos-components/aw/rpbuf/rpbuf_demo/rpbuf_test.c

static void print_help_msg(void)
{
    printf("\n");
    printf("USAGE:\n");
    printf("  rpbuf_test [OPTIONS]\n");
    printf("OPTIONS:\n");
    printf("  -h : print help message\n");
    printf("  -c : create buffer\n");
    printf("  -C : Send Cnt(default: 1)\n");
    printf("  -d : destory buffer\n");
    printf("  -s : send test messagese\n");
    printf("  -l : list created buffers\n");
    printf("  -a : sync transmit\n");
    printf("  -I ID : specify controller ID (default: 0)\n");
    printf("  -N NAME : specify buffer name (default: \"%s\")\n", RPBUF_BUFFER_NAME_DEFAULT);
    printf("  -L LENGTH : specify buffer length (default: %d bytes)\n", RPBUF_BUFFER_LENGTH_DEFAULT);
    printf("  -p : print performance data\n");
    printf("\n");
    printf("e.g.\n");
    printf("  First, create a buffer (its name and length should match that of remote rpbuf buffer):\n");
    printf("    rpbuf_buffer -N \"xxx\" -L LENGTH -c\n");
    printf("  Then if remote sends data to it, the buffer callback will be called.\n");
    printf("\n");
    printf("  We can send test data to remote:\n");
    printf("    rpbuf_test -d 100 -s -L 32\n");
    printf("\n");
    printf("  If this buffer is no longer in use, destroy it:\n");
    printf("    rpbuf_test -N \"xxx\" -d\n");
    printf("\n");
}

參數(shù)說明

  • -c創(chuàng)建緩沖區(qū)
  • -C發(fā)送次數(shù)
  • -d銷毀
  • -i哪個節(jié)點
  • -a數(shù)據(jù)同步
  • -N名字
  • -L緩沖區(qū)大小

A核例程

static void print_help_msg(void)
{
    printf("\n");
    printf("USAGE:\n");
    printf("  rpbuf_test [OPTIONS]\n");
    printf("\n");
    printf("OPTIONS:\n");
    printf("  -d time : set data sending interval (default: 100 ms)\n");
    printf("  -s : send test messages\n");
    printf("  -c : send count (default: 10)\n");
    printf("  -r : receive messages\n");
    printf("  -t time : specifies the time of receive messagess, unit:ms\n");
    printf("  -a : sync transmit\n");
    printf("  -I ID : specify rpbuf ctrl ID (default: 0)\n");
    printf("  -N NAME : specify buffer name (default: \"%s\")\n", RPBUF_BUFFER_NAME_DEFAULT);
    printf("  -L LENGTH : specify buffer length (default: %d bytes)\n", RPBUF_BUFFER_LENGTH_DEFAULT);
    printf("  -p : print performance data\n");
    printf("\n");
    printf("e.g.\n");
    printf("  rpbuf_test -L 0x1000 -c 10 -s : send 10 test data, size=0x1000\n");
    printf("  rpbuf_test -L 0x1000 -r : receive test data forever, size=0x1000\n");
    printf("  rpbuf_test -L 0x1000 -r -t 1000 : receive test data 1 second, size=0x1000\n");
    printf("\n");
}

參數(shù)說明

  • -s發(fā)送
  • -c發(fā)送次數(shù)
  • -r阻塞接收

實驗現(xiàn)象

以RISC-V向A核發(fā)送數(shù)據(jù)為例,緩沖區(qū)大小為511.875K,發(fā)送100次;開辟一個511.875K的緩沖區(qū),A核向RISC-V發(fā)送一百次數(shù)據(jù)。

以下命令按次序執(zhí)行:

執(zhí)行端 命令
RISC-V端 rpbuf_test -c -I 0 -N rpbuf_test -L 524160 -a
A端 rpbuf_test -L 524160 -N rpbuf_test -r
RISC-V端 rpbuf_test -N rpbuf_test -C 100 -s

RISC-V 串口輸出

cpu0>rpbuf_test -c -I 0 -N rpbuf_test -L 524160 -a
cpu0>[RPBUF_INFO][rpbuf_addr_remap_default:206]reamp pa:0x42144000 -> va:0x42144000
[RPBUF_INFO][rpbuf_service_command_buffer_created_handler:827]buffer "rpbuf_test" (id:0): local_dummy_buffers -> buffers
buffer "rpbuf_test" is available
cpu0>rpbuf_test -N rpbuf_test -C 100 -s
[0]data:21a94801873e262b487f31000da27543...
[md5:fd0f42ddde63121837ebcdec775250b9]

A核串口輸出

root@OKT153:/# rpbuf_test -L 524160 -N rpbuf_test -r
ping: 8099.576172ms  bandwidth: 0.517149Mbps
data:21a94801873e262b487f31000da27543...  check:fd0f42ddde63121837ebcdec775250b9 success
ping: 14.155000ms   bandwidth: 186.086807Mbps
data:21a94801873e262b487f31000da27543...  check:fd0f42ddde63121837ebcdec775250b9 success
ping: 14.721000ms   bandwidth: 181.881592Mbps
data:21a94801873e262b487f31000da27543...  check:fd0f42ddde63121837ebcdec775250b9 success
ping: 14.694000ms   bandwidth: 181.992096Mbps
data:21a94801873e262b487f31000da27543...  check:fd0f42ddde63121837ebcdec775250b9 success
ping: 14.680000ms   bandwidth: 182.055313Mbps
data:21a94801873e262b487f31000da27543...  check:fd0f42ddde63121837ebcdec775250b9 success
ping: 14.712000ms   bandwidth: 181.779083Mbps
data:21a94801873e262b487f31000da27543...  check:fd0f42ddde63121837ebcdec775250b9 success
ping: 14.690000ms   bandwidth: 182.276901Mbps
data:21a94801873e262b487f31000da27543...  check:fd0f42ddde63121837ebcdec775250b9 success

測試數(shù)據(jù)顯示,ARM與RISC-V雙核間數(shù)據(jù)傳輸帶寬平均可達 184Mbps,驗證了共享內存機制的高效與穩(wěn)定。

4 結論

全志T153處理器通過 異構多核架構、 高效異構核間通訊機制(IPC)以及與之配套的 智能休眠喚醒方案,可以實現(xiàn)ARM核與RISC-V核的高效協(xié)作——Linux負責復雜運算,RTOS保障實時響應,同時將 "高性能計算""硬實時控制""超低功耗待機"這三大關鍵能力融為一體,滿足工業(yè)控制等場景需求。

這遠不止是技術功能的實現(xiàn),更是為下一代智能硬件提供了 一個量產(chǎn)化、功能完整、性能可靠的芯片級解決方案平臺

咨詢立即獲得專屬報價

華北區(qū)負責人二維碼

華北區(qū)負責人

華東區(qū)負責人二維碼

華東區(qū)負責人

華南區(qū)負責人二維碼

華南區(qū)負責人

中西區(qū)負責人二維碼

中西區(qū)負責人

推薦閱讀 換一批 換一批