科技 > 操作系统 > 鸿蒙系统

OERV-RTOS: UniProton 适配 Milk-V Duo,加速 openEuler RISC-V 生态

173人参与 2024-08-04 鸿蒙系统

oerv 的实时操作系统小组(oerv-rtos) 完成了 risc-v 开发板 milk-v duo 小核的初步支持并与大核 linux 一起进行部署通信验证。这是 uniproton 首次在 risc-v 实体开发板上进行 linux + rtos 的部署尝试,此次部署基于 mailbox 驱动的简易自定义协议,为后续在 milk-v duo 上进行基于mica 项目的混合关键性系统部署奠定了通信基础。

oerv 团队仓库下的 duo-buildrootsdk 仓库是 uniproton risc-v 的第一个长期维护下游仓库,由 oerv-rtos 进行维护开发。milk-v duo 是一款 risc-v 的多核异构芯片,并且拥有较完善的社区生态和非常庞大的 risc-v 开发者群体。

下方是 oerv-rtos 的工作路线框架图:

在 milk-v duo 上运行 uniproton

oerv-rtos 小组为 uniproton 在 risc-v 架构的 plic 驱动 和 clint 驱动提供了 c906l 的支持方案,使其能够正常将 uniproton 引导到内存并加载小核运行。

同时,小组在 milk-v duo 官方 sdk 的基础上,融合了原 uniproton 构建系统,并引导了支持板载驱动的 uniproton-riscv,同时通过了一系列官方测试。为了完成这一目标,小组对 uniproton 的构建系统进行了针对 risc-v 的调整,添加了一键化构建脚本来支持工具链的自动下载,实现了一键构建带有 uniproton 的 libmilkvduol.a 静态库的功能。此外,小组还将 uniproton 的用户接口(uapi)移植到了 duo-buildroot 小核构建系统,确保小核驱动部分可以使用 uniproton uapi,并对 duo-buildroot 系统进行了一定程度适配。

在板载驱动支持方面,oerv-rtos 小组重构了原裸机驱动层实现,使用 uniproton 原生 api 来提供如硬件抽象(hal)、时间获取和延时等相关功能。小组还为 milk-v duo 增加了内核层小核启动阶段的代码,在 milk-v duo 上正常运行启动流程、硬件特性与内核配置等初始化过程。

如上图,uniproton 成功和 linux 一同部署到 milk-v duo 上面,让 uniproton 默认启动一个线程,持续打印字符串,和 linux 使用同一个串口。

基于 risc-v 的 mica 框架

linux + rtos 的部署仍然是当前为 linux 提供高实时性支持的一个重要的方式,同时也是实现linux 和 rtos 双方应用落地的主要途径。oerv-rtos 小组目前正在全力推进 openatom openeuler(简称"openeuler") 社区的 mica 项目的 risc-v 支持和部署,对该项目的 risc-v 的支持部署做出了相应的路线规划。具体规划路径如下:

在现在的工作的基础上, 团队将进一步完善 uniproton 和 openeuler 在对 risc-v 的支持和应用能力,并施行基于 mica 项目的多操作系统部署策略。考虑到 risc-v 芯片架构的特性,rtos 小组将应用 rv64ilp32 工具链以优化 uniproton 的空间占用和性能表现。整体规划涵盖了 milkvduo 的小核与大核两大部分。

对于 milk-v duo 的小核,工作重点包括开发与优化 uniproton 的相关文档,支持 mica 部署,评估与 uniproton 混合部署 rtos 时的实时性能,以及提供 shell 和 gdb_stub 支持。此外,还将优化 uniproton 单独部署时的各个组件。

对于大核方面,团队计划在 milk-v duo 上运行 openeuler 24.03lts,并安装mica所需的依赖,根据板载的实际情况,编写必要的字符设备模块,提供关键的字符设备驱动文件 /dev/mcs,用于支持与linux用户进程的通信互动,从而实现对小核生命周期的管理和通信。

开发者说

oerv-rtos 小组由罗君[1]组建,致力于 risc-v 下 linux + rtos 多核异构部署,完善 oe 嵌入式分支在 risc-v 上面的空缺,目前正在全力推动 mica risc-v 支持 和 uniproton risc-v 的生态建设。罗君分享了他的展望:

"oerv-rtos 小组在各个方面都在不断地完善,已经有更多感兴趣的小伙伴投入到了 uniproton 项目 和 mica项目相关的工作中。同时,在 uniproton risc-v 和 mica risc-v 方面我们也制定了详细的 roadmap ,很快我们就能够看到 openeuler + uniproton 基于 mica 在开发板上的部署。相信在不久的未来, openeuler + uniproton 能够基于 risc-v 特性找到具有独特优势的应用落地场景!"

结语

oerv 将持续投入 uniproton risc-v + openeuler risc-v 方向的支持,进一步完善 uniproton 的生态,实现 openeuler + uniproton 的应用落地。对 openeuler risc-v 生态建设感兴趣的伙伴们,可以添加下面的微信,加入我们 openeuler risc-v 开发群聊做进一步了解。

[1] . 罗君,中科院软件所实习生,openeuler 社区 risc-v sig贡献者,目前在四川大学读大三,当前主要在为 uniproton 和 mica 等项目做 risc-v 方面的支持,kernel 爱好者,verilog 爱好者,沙盒游戏玩家。



(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

openEuler 24.03 LTS 特性解读 | 动态复合页

08-04

openEuler 成立 SIG-Intelligence:打造智能体应用与工具链的创新引擎,引领AI技术前沿探索

08-04

毕昇 JDK:“传奇再现”华为如何打造 ARM 上最好用的 JDK?

08-04

【成都Meetup议题征集】openEuler G11N & doc SIG 邀您探索语言与文字的力量

08-04

Kunpeng BoostKit 使能套件:大数据场景如何实现“大鹏一日同风起”倍级性能提升?

08-04

新突破!openEuler UniProton 实时操作系统成功适配 RISC-V 架构

08-04

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论