RM新时代|官方理财平台

OERV-RTOS: UniProton 適配 Milk-V Duo,加速歐拉 RISC-V 生態(tài)

以下文章來(lái)源于OERV,作者OERV-RTOS

OERV 的實(shí)時(shí)操作系統小組(OERV-RTOS) 完成了 RISC-V 開(kāi)發(fā)板 Milk-V Duo 小核的初步支持并與大核 Linux 一起進(jìn)行部署通信驗證。這是 UniProton 首次在 RISC-V 實(shí)體開(kāi)發(fā)板上進(jìn)行 Linux + RTOS 的部署嘗試,此次部署基于 MailBox 驅動(dòng)的簡(jiǎn)易自定義協(xié)議,為后續在 Milk-V Duo 上進(jìn)行基于 MICA 項目的混合關(guān)鍵性系統部署奠定了通信基礎。

OERV 團隊倉庫下的 duo-buildrootsdk 倉庫是 UniProton RISC-V 的第一個(gè)長(cháng)期維護下游倉庫,由 OERV-RTOS 進(jìn)行維護開(kāi)發(fā)。Milk-V Duo 是一款 RISC-V 的多核異構處理器,并且擁有較完善的社區生態(tài)和非常龐大的 RISC-V 開(kāi)發(fā)者群體。

下方是 OERV-RTOS 的工作路線(xiàn)框架圖:

在 Milk-V DUO 上運行 UniProton

OERV-RTOS 小組為 UniProton 在 RISC-V 架構的 PLIC 驅動(dòng) 和 CLINT 驅動(dòng)提供了 C906L 的支持方案,使其能夠正常將 UniProton 引導到內存并加載小核運行。

同時(shí),小組在 Milk-V Duo 官方 SDK 的基礎上,融合了原 UniProton 構建系統,并引導了支持板載驅動(dòng)的 UniProton-RISCV,同時(shí)通過(guò)了一系列官方測試。為了完成這一目標,小組對 UniProton 的構建系統進(jìn)行了針對 RISC-V 的調整,添加了一鍵化構建腳本來(lái)支持工具鏈的自動(dòng)下載,實(shí)現了一鍵構建帶有 Uniproton 的 libmilkvduol.a 靜態(tài)庫的功能。此外,小組還將 UniProton 的用戶(hù)接口(uapi)移植到了 duo-buildroot 小核構建系統,確保小核驅動(dòng)部分可以使用 UniProton uapi,并對 duo-buildroot 系統進(jìn)行了一定程度適配。

在板載驅動(dòng)支持方面,OERV-RTOS 小組重構了原裸機驅動(dòng)層實(shí)現,使用 UniProton 原生 API 來(lái)提供如硬件抽象(HAL)、時(shí)間獲取和延時(shí)等相關(guān)功能。小組還為 Milk-V Duo 增加了內核層小核啟動(dòng)階段的代碼,在 Milk-V Duo 上正常運行啟動(dòng)流程、硬件特性與內核配置等初始化過(guò)程。

?

如上圖,UniProton 成功和 Linux 一同部署到 Milk-V Duo 上面,讓 UniProton 默認啟動(dòng)一個(gè)線(xiàn)程,持續打印字符串,和 Linux 使用同一個(gè)串口。

基于 RISC-V 的 MICA 框架

Linux + RTOS 的部署仍然是當前為 Linux 提供高實(shí)時(shí)性支持的一個(gè)重要的方式,同時(shí)也是實(shí)現Linux 和 RTOS 雙方應用落地的主要途徑。OERV-RTOS 小組目前正在全力推進(jìn) openEuler 社區的 MICA 項目的 RISC-V 支持和部署,對該項目的 RISC-V 的支持部署做出了相應的路線(xiàn)規劃。具體規劃路徑如下:

?

在現在的工作的基礎上, 團隊將進(jìn)一步完善 UniProton 和 openEuler 在對 RISC-V 的支持和應用能力,并施行基于 MICA 項目的多操作系統部署策略??紤]到 RISC-V 處理器架構的特性,RTOS 小組將應用 rv64ilp32 工具鏈以?xún)?yōu)化 UniProton 的空間占用和性能表現。整體規劃涵蓋了 MilkvDuo 的小核與大核兩大部分。

對于 Milk-V Duo 的小核,工作重點(diǎn)包括開(kāi)發(fā)與優(yōu)化 UniProton 的相關(guān)文檔,支持 MICA 部署,評估與 UniProton 混合部署 RTOS 時(shí)的實(shí)時(shí)性能,以及提供 shell 和 gdb_stub 支持。此外,還將優(yōu)化 UniProton 單獨部署時(shí)的各個(gè)組件。

對于大核方面,團隊計劃在 Milk-V Duo 上運行 openEuler 24.03LTS,并安裝MICA所需的依賴(lài),根據板載的實(shí)際情況,編寫(xiě)必要的字符設備模塊,提供關(guān)鍵的字符設備驅動(dòng)文件 /dev/mcs,用于支持與Linux用戶(hù)進(jìn)程的通信互動(dòng),從而實(shí)現對小核生命周期的管理和通信。

開(kāi)發(fā)者說(shuō)

OERV-RTOS 小組由羅君[1]組建,致力于 RISC-V 下 Linux + RTOS 多核異構部署,完善 oe 嵌入式分支在 RISC-V 上面的空缺,目前正在全力推動(dòng) MICA RISC-V 支持 和 UniProton RISC-V 的生態(tài)建設。羅君分享了他的展望:

"OERV-RTOS 小組在各個(gè)方面都在不斷地完善,已經(jīng)有更多感興趣的小伙伴投入到了 UniProton 項目 和 MICA 項目相關(guān)的工作中。同時(shí),在 UniProton RISC-V 和 MICA RISC-V 方面我們也制定了詳細的 RoadMap ,很快我們就能夠看到 openEuler + UniProton 基于 MICA 在開(kāi)發(fā)板上的部署。相信在不久的未來(lái), openEuler + UniProton 能夠基于 RISC-V 特性找到具有獨特優(yōu)勢的應用落地場(chǎng)景!"

結語(yǔ)

OERV 將持續投入 UniProton RISC-V + openEuler RISC-V 方向的支持,進(jìn)一步完善 UniProton 的生態(tài),實(shí)現 openEuler + UniProton 的應用落地。對 openEuler RISC-V 生態(tài)建設感興趣的伙伴們,可以添加下面的微信,加入我們 openEuler RISC-V 開(kāi)發(fā)群聊做進(jìn)一步了解。

[1] . 羅君,中科院軟件所實(shí)習生,歐拉開(kāi)源社區 RISC-V SIG貢獻者,目前在四川大學(xué)讀大三,當前主要在為 UniProton 和 MICA 等項目做 RISC-V 方面的支持,kernel 愛(ài)好者,Verilog 愛(ài)好者,沙盒游戲玩家。

?

分享到 :
RM新时代|官方理财平台