openEuler Embedded 系统 & 实时性
- 1 介绍
- 1.1 概述
- 1.2 openEuler 23.09 Embedded
- 1.3 openEuler 重要节点
- 1.4 系统构建工具
- 1.5 openEuler Embedded 诞生的需求背景
- 运动控制系统实时性需求高
- 嵌入式OS主要供应商来自老美,市场碎片化严重
- 1.6 总体架构
- 1.7 openEuler Embedded 运行模式
- 1.8 openEuler Embedded 混合关键性系统技术架构
- 1.9 实时性:UniProton 整体架构和能力
- 1.10 openEuler 对 Linux Kernel 的持续贡献
- 1.11 系统整体功能描述
- 2 系统剪裁工具【Yocto】
- 3 实时性
- 实时内核UniProton及其混合关键性部署的实践(演讲稿)
- 参考
1 介绍
1.1 概述
openEuler 诞生于华为,华为捐赠给了开放原子开源基金会。
openEuler 是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,是面向数字基础设施的开源操作系统。
2019年12月,华为作为创始企业发起了openEuler开源社区,并将EulerOS相关的能力贡献到openEuler社区。
2022年03月,首个社区共建的全场景【含Embedded】版本 openEuler22.03 LTS 正式发布。
到23年年底支持指令集和芯片如下:
-
指令集:已支持 X86、ARM、SW64、RISC-V、LoongArch 多处理器架构,逐步扩展 PowerPC 等更多芯片架构支持,持续完善多样性算力生态体验。
-
已支持芯片:海思工业芯片Hi3093 、瑞芯微RK3568、芯驰D9系列、树莓派、x86、 STM32F407ZGT6
-
支持中:地平线、中科院RISC-V、瑞芯微RK3588、飞腾E2000
1.2 openEuler 23.09 Embedded
openEuler 23.09 Embedded 支持嵌入式虚拟化弹性底座,提供 Jailhouse 虚拟化方案、openAMP 轻量化混合部署方案,用户可以根据自己的使用场景选择最优的部署方案。同时支持 ROS humble 版本,集成 ros-core、rosbase、SLAM 等核心软件包,满足 ROS2 运行时要求。
-
南向生态:openEuler Embedded Linux 当前主要支持 ARM64、x86-64 两种芯片架构,支持 RK3568、Hi3093、树莓派 4B、x86-64 工控机等具体硬件,23.09 版本新增支持 RK3399、RK3588 芯片。初步支持 ARM32、RISC-V 两种架构具体通过 QEMU 仿真来体现。
-
嵌入式弹性虚拟化底座:openEuler Embedded 的融合弹性底座是为了在多核片上系统(SoC,System On Chip)上实现多个操作系统/运行时共同运行的一系列技术的集合,包含了裸金属、嵌入式虚拟化、轻量级容器、LibOS、可信执行环境(TEE)、异构等多种实现形态。
-
混合关键性部署框架:构建在融合弹性底座之上,通过一套统一的框架屏蔽下层融合弹性底座形态的不同,从而实现 Linux 和其他 OS 运行时便捷地混合部署。
-
北向生态:350+ 嵌入式领域常用软件包的构建;支持 ROS2 humble 版本,集成 ros-core、ros-base、SLAM 等核心包,并提供 ROS SDK,简化嵌入式 ROS 开发;基于 Linux 5.10 内核提供软实时能力,软实时中断响应时延微秒级;集成 OpenHarmony 的分布式软总线和 hichain 点对点认证模块,实现欧拉嵌入式设备之间互联互通、欧拉嵌入式设备和 OpenHarmony 设备之间互联互通。
-
硬实时系统(UniProton):是一款实时操作系统,具备极致的低时延和灵活的混合关键性部署特性,可以适用于工业控制场景,既支持微控制器 MCU,也支持算力强的多核 CPU。
1.3 openEuler 重要节点
-
2019年12月31日,华为作为创始企业发起了openEuler开源社区,并将EulerOS相关的能力贡献到openEuler社区,后续EulerOS将基于openEuler进行演进。
-
2020年03月,openEuler 20.03 LTS 发布,作为首个LTS(长期支持)版本,它基于Linux Kernel 5.10,提供了长达4年的社区支持。
-
2020年09月,2020.09创新版本;
-
2021年03月,2021.03创新版本;
-
2021年09月,2021.09创新版本;
-
2022年03月,2022.03全场景LTS版本;
-
2022年09月,2022.09创新版本;
1.4 系统构建工具
-
OBS:服务器 OS
-
Yocto:嵌入式 OS
-
EulerMaker:Euler 全场景 OS,替代 OBS 和 Yocto,目前已经替代 OBS,还没有替代 Yocto。
1.5 openEuler Embedded 诞生的需求背景
运动控制系统实时性需求高
嵌入式OS主要供应商来自老美,市场碎片化严重
1.6 总体架构
1.7 openEuler Embedded 运行模式
1.8 openEuler Embedded 混合关键性系统技术架构
1.9 实时性:UniProton 整体架构和能力
1.10 openEuler 对 Linux Kernel 的持续贡献
- openEuler 内核研发团队持续贡献 Linux Kernel 上游社区,回馈主要集中在:芯片架构、ACPI、内存管理、文件系统、Media、内核文档、针对整个内核质量加固的 bug fix 及代码重构等内容。十余年来总计向社区贡献 17,000+ 补丁。
- 在 Linux Kernel 5.10 和 5.14 版本中,openEuler 内核研发团队代码贡献量排名全球第一。坚持内核创新,持续贡献上游社区。
1.11 系统整体功能描述
- 轻量化能力:开放 yocto 小型化构建裁剪框架,支撑 OS 镜像轻量化定制,提供 OS 镜像 < 5M,以及 < 5S 快速启动等能力。
- 多硬件支持:新增支持树莓派作为嵌入式场景通用硬件。
- 软实时内核:基于 Linux 5.10 内核提供软实时能力,软实时中断响应时延微秒级。
- 混合关键性部署:实现 SOC 内实时和非实时多平面混合部署,并支持 Zephyr 实时内核。
- 分布式软总线基础能力:集成鸿蒙的分布式软总线,实现欧拉嵌入式设备之间互联互通。
- 嵌入式软件包支持:新增 80+ 嵌入式领域常用软件包的构建。
2 系统剪裁工具【Yocto】
yocto-meta-openeuler是用于构建openEuler Embedded所需要的一系列工具、构建配方的集合。
跑 embedded 版本,普遍使用Yocto做定制修改,可以理解成 oebuild.
如果他们雪球计划(做南向兼容的小组)在openEuler-meta-yocto中还没人做,就要用Yocto工具手动编译 openEuler_embedded 内核,然后一步步驱动移植,最终生成一个完整的.wic或者.sdcard镜像。
openEuler Embedded使用与开发手册¶
3 实时性
当前国内主流方案为基于 Preempt-RT 补丁的 linux 系统,其最大中断延迟约60us(Intel I5 4核),可支撑1ms的EtherCAT通信周期
openEuler Embedded 操作系统内核实时性优化,中断延迟测试(中断平均延迟小
于1 μs ,最大中断时延10 μs ),可支撑250 μs的EtherCAT通信周期。
- 智能工业机器人操作系统及应用探索
实时内核UniProton及其混合关键性部署的实践(演讲稿)
openEuler–实时内核UniProton及其混合关键性部署的实践
华为嵌入式实时操作系统领域专家 余德钊
余德钊从运动控制系统和全球嵌入式OS实际情况出发,介绍了华为开发openEuler Embedded的背景:2019年发布第一个版本,经过几年发展,目前已经成为一个面向全场景的开源社区,在云计算、服务器和嵌入式领域都有应用。openEuler Embedded是将openEuler与嵌入式应用场景融合的一个以Linux为中心的综合嵌入式系统软件平台,其适用于任何需要Linux的嵌入式系统。余德钊介绍的UniProton是一款硬实时操作系统,具备极致的us级低时延和灵活的混合关键性部署特性,可以高效地与以openEuler Embedded为代表的通用OS混合部署,适用于工业控制场景,既能支持微控制器MCU,也支持算力强的多核CPU。
余德钊表示,多OS混合部署要解决如下几个问题:多OS统一构建、高效的基础通信机制、提供服务化部署。华为针对这些问题也做了很多工作,现在openEuler Embedded 能够接纳不同的RTOS,更好地帮助基础设施进行改造。
参考
1、华为–EulerOS
2、官网–openEuler
3、Euler 欧拉系统介绍
4、openEuler–实时内核UniProton及其混合关键性部署的实践
5、DP读书:开源软件的影响力(小白向)解读Embedded_SIG介绍以及代码架构解析
6、openEuler–构建系统
7、智能工业机器人操作系统及应用探索
8、1智能机器人操作系统及机器人视觉
9、2智能机器人二次开发接口
10、使用OpenEuler官方光盘映像中分离出的rootfs,在rk3588开发板上启动,最终卡在[FAILED] Failed to start System Logging Service无法进入文件系统,求教一下是什么原因?
11、openEuler Embedded使用与开发手册¶
12、openEuler镜像的构建
13、openEuler 22.03 LTS SP3 技术白皮书
14、openEuler 24.03 LTS 特性
15、openEuler 22.03-LTS 技术白皮书
16、22.03_LTS_SP2 EulerMaker用户指南
17、EulerMaker:构建 openEuler 全场景生态
18、树莓派第一次开机