注:這是一個(gè)由中國(guó)科學(xué)院軟件研究所合作資助的開源項(xiàng)目,RT-Thread社區(qū)參與,并推動(dòng)更新到upstream。這個(gè)過(guò)程中也得到了張健,董波(無(wú)錫控博),李志銳(廈門大學(xué))的支持,這里一并表示感謝。
RISC-V指令集架構(gòu)在這幾年中異軍突起,受到大家廣泛的關(guān)注,認(rèn)可,參與,實(shí)踐。越來(lái)越多的廠商選擇使用RISC-V,從單獨(dú)實(shí)驗(yàn)性芯片的嘗試,到備份芯片,到輔助芯片,到獨(dú)立芯片,一步步應(yīng)用到實(shí)際的產(chǎn)業(yè)應(yīng)用領(lǐng)域。例如最近平頭哥就針對(duì)低端到中高端發(fā)布了開源的RISC-V處理器IP core,E902(RV32),E906(帶cache的RV32),C906(單核RV64),C910(多核RV64),同時(shí)在上面也支持Linux,RT-Thread等開源操作系統(tǒng)。
與此同時(shí)RT-Thread團(tuán)隊(duì)也看到了未來(lái)異構(gòu)多核芯片領(lǐng)域會(huì)有更多的應(yīng)用需求,和中國(guó)科學(xué)院軟件研究所的想法不謀而合,融合RISC-V的異構(gòu)多核系統(tǒng)這個(gè)項(xiàng)目就是在這樣的一個(gè)背景下產(chǎn)生,所以雙方聯(lián)合來(lái)推進(jìn),并一起推進(jìn)到系列開源項(xiàng)目的upstream,讓更多人易于使用,讓產(chǎn)業(yè)界受益。
架構(gòu)說(shuō)明
本項(xiàng)目以qemu模擬的虛擬硬件:qemu-riscv64-virt為硬件平臺(tái),上面具備Dual RV64 core,分別運(yùn)行Linux和RTOS(RT-Thread)。對(duì)于這類應(yīng)用,RV64在運(yùn)行時(shí)會(huì)涉及到三種運(yùn)行模式,M-Mode,S-Modem,U-Mode,如下面的架構(gòu)圖。
M-Mode模式,機(jī)器模式,一般會(huì)運(yùn)行一些簡(jiǎn)單的程序;如果芯片只包含機(jī)器模式,可以運(yùn)行一些裸機(jī)程序或者RTOS,多見于MCU芯片;
H-Mode模式,是虛擬化運(yùn)行模式,此種情況下未涉及,后續(xù)不過(guò)多提及;
S-Mode, Supervisor Mode模式是管理者模式,用于運(yùn)行例如Linux內(nèi)核的操作系統(tǒng)內(nèi)核;
U-Mode模式,是用戶模式,運(yùn)行用戶態(tài)應(yīng)用程序;而對(duì)于RTOS來(lái)說(shuō),一般不會(huì)運(yùn)行在層。
在這樣的方式下,硬件底層是RV64的雙核,分別運(yùn)行Linux和RTOS操作系統(tǒng),整體的架構(gòu)如下所示:
在這樣的方式下,可以由Linux來(lái)完成一些復(fù)雜的工作,例如存儲(chǔ),網(wǎng)絡(luò),顯示等;而RTOS則可以用于實(shí)時(shí)控制,這里運(yùn)行RT-Thread開源操作系統(tǒng)。在Linux和RTOS之間,可以通過(guò)標(biāo)準(zhǔn)的OpenAMP框架進(jìn)行通信,異系統(tǒng)間的數(shù)據(jù)交互。
OpenAMP說(shuō)明
OpenAMP是Xilinx和Mentor Graphic于2014年發(fā)起的一個(gè)開源項(xiàng)目,旨在提供一份協(xié)處理器的標(biāo)準(zhǔn)通信框架。OpenAMP是對(duì)Ohad Ben-Cohen在2011年Linux 3.4.1引入的RPmsg, RemoteProc的在異構(gòu)處理器上的實(shí)現(xiàn),并采用BSD許可協(xié)議開源。
lRemoteProc用于Linux作為master來(lái)控制和管理協(xié)處理器,對(duì)協(xié)處理器進(jìn)行power off/on,reset,load firmware等管理操作;
lRPmsg用于多系統(tǒng)間的IPC消息交互。
OpenAMP本身包括幾個(gè)部分:
llibmetal,主要涉及OpenAMP在不同底層系統(tǒng)上的對(duì)接,分成了對(duì)Linux,RTOS及裸機(jī)的支持。
lopen-amp,提供對(duì)virtio,rpmsg,remoteproc等的實(shí)現(xiàn);
OpenAMP本身以cmake方式編譯,因?yàn)樵瓉?lái)只包括arm方式的交叉編譯方式,所以這個(gè)項(xiàng)目中加入對(duì)risc-v交叉編譯方式的支持。默認(rèn)WITH_PROXY等相關(guān)的特性關(guān)閉。
編譯 & 運(yùn)行
針對(duì)這樣一套多操作系統(tǒng)的異構(gòu)系統(tǒng),我們把它命名成pomegranate(石榴,喻意多子,多系統(tǒng)),單獨(dú)放在github和gitee上,可以按照倉(cāng)庫(kù)中的方式進(jìn)行編譯,并使用起來(lái):
https://github.com/RT-Thread/rtthread-pomegranate
假設(shè)在Ubuntu 18.04上,來(lái)編譯和使用,需要先把pomegranate clone到本地,例如使用github:
git clone --recursive https://github.com/RT-Thread/rtthread-pomegranate
然后運(yùn)行下面的腳本,先把需要的標(biāo)準(zhǔn)包下載下來(lái),并展開:
。/dn_prepare.sh
這個(gè)腳本會(huì)自動(dòng)下載需要用到的代碼,例如Linux,u-boot,qemu等,以及工具鏈(針對(duì)Linux的工具鏈,針對(duì)RT-Thread的工具鏈等),并對(duì)需要打補(bǔ)丁的代碼進(jìn)行打補(bǔ)丁。
然后編譯只需要執(zhí)行下面的shell腳本:
。/build.sh
執(zhí)行build.sh時(shí),它會(huì)分別對(duì)涉及到軟件包進(jìn)行編譯,例如opensbi,u-boot,Linux,open-amp,RT-Thread等,編譯無(wú)誤會(huì)生成相應(yīng)的程序文件,及把應(yīng)用程序復(fù)制到Linux的rootfs中。
其中對(duì)于一些可以單獨(dú)運(yùn)行的軟件,例如opensbi、u-boot、Linux、RT-Thread等,在各自分別的目錄下有一份run.sh,執(zhí)行即可使用qemu模擬器來(lái)模擬運(yùn)行。
。/run.sh
這份QEMU做了簡(jiǎn)單的改造,模擬出來(lái)兩份串口分別給Linux和RT-Thread使用。RT-Thread進(jìn)行簡(jiǎn)單的修改,可以讓它運(yùn)行在S-Mode下,并支持運(yùn)行在任意核上。OpenAMP上支持RISC-V方式的交叉編譯等。這部分代碼后續(xù)都會(huì)推進(jìn)到各自的upstream端。
未來(lái)展望
異構(gòu)多核處理器并不是一個(gè)新事物,例如在ARM芯片上已經(jīng)存在大量的Cortex-A核+Cortex-M/R核芯片,并應(yīng)用于各類領(lǐng)域,如手機(jī)基帶處理器,實(shí)時(shí)工業(yè)控制處理器,車載MPU安全處理器。
在一顆芯片上同時(shí)具備ARM核 + RISC-V核的芯片也逐步出現(xiàn),OpenAMP是搭建起異構(gòu)系統(tǒng)間軟通信的一座橋梁,未來(lái)可能還不僅限于此,會(huì)讓Cortex-A + Cortex-M/R或 RISC-V處理器在使用上更便利,甚至感受不到異構(gòu)的存在,在多系統(tǒng)間融合,甚至程序的無(wú)縫遷移。
編輯:jq
-
處理器
+關(guān)注
關(guān)注
68文章
19804瀏覽量
233525 -
芯片
+關(guān)注
關(guān)注
459文章
52169瀏覽量
436104 -
串口
+關(guān)注
關(guān)注
14文章
1582瀏覽量
78635
原文標(biāo)題:RV64 異構(gòu)多核處理器下實(shí)現(xiàn)RT-Thread和Linux 同時(shí)運(yùn)行
文章出處:【微信號(hào):RTThread,微信公眾號(hào):RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
人形機(jī)器人敏捷開發(fā)新路徑:RT-Thread以軟件底座破解復(fù)雜系統(tǒng)難題 | 新聞速遞

RT-Thread 上如何實(shí)現(xiàn) SLAAC?
如何將RT-Thread移植到NXP MCUXPressoIDE上

RT-Thread上CAN實(shí)踐

混合部署 | 在迅為RK3568上同時(shí)部署RT-Thread和Linux系統(tǒng)
開源共生 商業(yè)共贏 | RT-Thread 2024開發(fā)者大會(huì)報(bào)名啟動(dòng)!

混合部署 | 在迅為RK3568上同時(shí)部署RT-Thread和Linux系統(tǒng)
混合部署 | 在RK3568上同時(shí)部署RT-Thread和Linux系統(tǒng)-迅為電子

RV64之64位地址指令
瑞薩電子全球VP蒞臨RT-Thread指導(dǎo)交流

【QEMU系列】不用開發(fā)板運(yùn)行RT-Thread指南-ARM架構(gòu)

2024 RT-Thread全球巡回 線下培訓(xùn)火熱來(lái)襲!

RT-Thread 新里程碑達(dá)成——GitHub Star 破萬(wàn)!

基于 RT-Thread專業(yè)版的EtherCAT主站方案

杭州站RT-Thread混合部署Workshop圓滿落幕!

評(píng)論