在嵌入式設(shè)備拼性能、拼響應(yīng)、拼功耗的內(nèi)卷時代,雙核協(xié)作才是破局的關(guān)鍵。傳統(tǒng)的對稱多處理(SMP)架構(gòu)已難以兼顧全場景需求,非對稱多處理(AMP)異構(gòu)架構(gòu)正在成為行業(yè)主流,在這樣的背景下,全志T153平臺直接搬出ARM+RISC-V的“雙核CP”:主打高性能計(jì)算的Cortex-A7核心運(yùn)行Linux,聚焦高實(shí)時性任務(wù)的RISC-V E907核心運(yùn)行RTOS,組成 “互補(bǔ)型搭檔”。
本文會通過飛凌嵌入式OK153-S開發(fā)板,為大家實(shí)測這對雙核CP的協(xié)作實(shí)力——依托異構(gòu)核間通訊機(jī)制(IPC)與Suspend/Resume電源管理機(jī)制,全面驗(yàn)證A核與R核的協(xié)同工作能力,并驗(yàn)證異構(gòu)多核環(huán)境下的數(shù)據(jù)交互效率與智能化喚醒邏輯。
1、休眠喚醒功能驗(yàn)證
pm_test 節(jié)點(diǎn)可以用于測試Linux部分的休眠喚醒功能。設(shè)備凍結(jié)后,等待5s,即返回,執(zhí)行喚醒動作。
echodevices > /sys/power/pm_test設(shè)備進(jìn)入休眠:
echomem > /sys/power/state執(zhí)行以上命令后,設(shè)備5s后會被喚醒。
2、R核喚醒休眠的A核
“功耗管理”是產(chǎn)品續(xù)航與成本控制的核心競爭力。T153處理器的異構(gòu)多核架構(gòu)為此提供了的解決方案:
A核休眠:ARM核在空閑時進(jìn)入WFI深度睡眠,功耗降至最低;
R核值守:RISC-V核心持續(xù)運(yùn)行,監(jiān)聽外部事件;
按需喚醒:當(dāng)傳感器觸發(fā)、定時任務(wù)到達(dá)時,R核一鍵喚醒A核處理復(fù)雜任務(wù)。
A核進(jìn)入WFI模式,R核運(yùn)行在DRAM上,R核喚醒A核。
首先設(shè)置主核休眠時,DRAM不進(jìn)入自刷新,從核保持運(yùn)行在DRAM上。可以通過linux控制臺輸入以下命令切換:
echo0>/sys/class/pm_msgbox/set_dram_refresh然后A核進(jìn)入休眠狀態(tài):
echomem > /sys/power/state使用R核喚醒A核。我們的R核提供了cpux_resume接口來喚醒主核,在R核中執(zhí)行以下命令進(jìn)行A核喚醒:
cpux_resume
在低功耗場景下,高性能的A核休眠待機(jī),低功耗的R核持續(xù)值守。當(dāng)外部事件觸發(fā)時,R核可瞬間喚醒A核響應(yīng)任務(wù)。這種 "小核值班、大核待命" 的架構(gòu),讓設(shè)備在續(xù)航與實(shí)時響應(yīng)之間達(dá)到平衡。
3、雙核通訊驗(yàn)證
T153處理器采用ARM Cortex-A7+RISC-V 的多核異構(gòu)架構(gòu),讓系統(tǒng)兼具"大腦"與"小腦",而異構(gòu)核間通訊機(jī)制(IPC)正是連接兩個"腦"的高速通道,通過共享內(nèi)存機(jī)制,雙核之間可實(shí)現(xiàn)數(shù)據(jù)傳輸。以下是操作方法:
測試之前首先使能R核:
echo amp_rv0.bin > /sys/class/remoteproc/remoteproc0/firmware
echo start > /sys/class/remoteproc/remoteproc0/state(1)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é)點(diǎn)
-a數(shù)據(jù)同步
-N名字
-L緩沖區(qū)大小
(2)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阻塞接收
(3)實(shí)驗(yàn)現(xiàn)象
以RISC-V向A核發(fā)送數(shù)據(jù)為例,緩沖區(qū)大小為511.875K,發(fā)送100次;
開辟一個511.875K的緩沖區(qū),A核向RISC-V發(fā)送一百次數(shù)據(jù)。
以下命令按次序執(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ù)傳輸帶寬平均可達(dá)184Mbps,驗(yàn)證了共享內(nèi)存機(jī)制的高效與穩(wěn)定。
4、結(jié)論
全志T153處理器通過?異構(gòu)多核架構(gòu)?、??高效異構(gòu)核間通訊機(jī)制(IPC)以及與之配套的?智能休眠喚醒方案?,可以實(shí)現(xiàn)ARM核與RISC-V核的高效協(xié)作——Linux負(fù)責(zé)復(fù)雜運(yùn)算,RTOS保障實(shí)時響應(yīng),同時將?“高性能計(jì)算”?、?“硬實(shí)時控制”? 與 ?“超低功耗待機(jī)”? 這三大關(guān)鍵能力融為一體,滿足工業(yè)控制等場景需求。這遠(yuǎn)不止是技術(shù)功能的實(shí)現(xiàn),更是為下一代智能硬件提供了?一個量產(chǎn)化、功能完整、性能可靠的芯片級解決方案平臺?。
-
嵌入式
+關(guān)注
關(guān)注
5203文章
20549瀏覽量
335773 -
Linux
+關(guān)注
關(guān)注
88文章
11785瀏覽量
219313 -
Amp
+關(guān)注
關(guān)注
0文章
100瀏覽量
48549 -
全志科技
+關(guān)注
關(guān)注
4文章
137瀏覽量
17825
發(fā)布評論請先 登錄
基于Intel 凌動雙核D525處理器的無風(fēng)扇嵌入式系統(tǒng)
飛凌嵌入式首款RISC-V核心板FET7110-C搶先看——國產(chǎn)、高性能
【米爾全志T153開發(fā)板評測】介紹、環(huán)境搭建、工程測試
ARM9處理器C語言編程(全) ADS開發(fā)環(huán)境創(chuàng)建簡介
Arm+RISC-V雙核異構(gòu)前景如何?
中國首顆ARM+RISC-V異構(gòu)多核MCU伴隨IAR在上海國際嵌入式展亮相
飛凌嵌入式國產(chǎn)平臺大盤點(diǎn)之瑞芯微系列
全志T113i全國產(chǎn)核心板上市
全志嵌入式處理器T113開發(fā)板特性分析
T536行業(yè)首發(fā)!飛凌嵌入式FET536-C/FET536-S核心板驚艷亮相
基于全志T113-i多核異構(gòu)處理器的全國產(chǎn)嵌入式核心板簡介
【新品發(fā)布】10路UART、3路千兆網(wǎng)、2路CAN-FD,全志T153核心板為工業(yè)應(yīng)用而生
基于全志T153處理器的PLC控制器主控選型方案
全志T153處理器ARM+RISC-V的雙核CP多有強(qiáng)?——飛凌嵌入式
評論