总体介绍

openEuler Embedded是基于openEuler社区面向嵌入式场景的Linux版本,旨在成为一个高质量的以Linux为中心的嵌入式系统软件平台 其总体架构如下图所示:

../_images/openeuler_architecture.png

openEuler Embedded总体架构

  • 以Linux为中心

openEuler Embedded的中心是Linux,采用了与openEuler其他场景相同的Linux 5.10内核,该版本内核最长支持周期为6年。 在软件包层面也与内核一样和所有场景共代码、共演进,当前已经支持80+嵌入式场景核心软件包,远期目标是支持openEuler社区所有 软件包。

同时针对嵌入式场景的需求,openEuler Embedded会在内核特性、系统配置、软件包组合、镜像裁剪、安全加固、轻量化等方面 进行创新,包括但不限于: 基于Preempt-RT补丁提供软实时能力、最小OS镜像<5M、小于<5S的快速启动能力 等。

  • 混合部署框架

在嵌入式场景中,虽然Linux已经得到了广泛应用,但并不能覆盖所有需求,例如需要高实时、高可靠、高安全的场合。这些场合往往是以实时操作系统 为代表的专用系统的用武之地。在既需要Linux的管理能力、丰富的生态又需要实时操作系统的高实时特性的场合,传统的设计是一颗性能较强的处理器运行Linux, 一颗微控制器/DSP/实时处理器运行实时操作系统,两者之间通过I/O、网络或片外总线通信。现在随着硬件技术的快速发展,片上系统的集成度越来 越高,同时集成多核、乃至异构多核已经很常见,这就为在软件上同时部署多个OS的提供了物质基础。

openEuler Embedded的混合部署框架就是为了实现在一颗片上系统中同时部署多个OS而设计的,目的是通过一套框架实现Linux和其他OS的便捷地混合部署,依托硬件 上的多核能力使得通用的Linux和专用的实时操作系统有效互补,从而达到全系统兼具两者的特点,并能够灵活开发、灵活部署。

  • 嵌入式虚拟化

混合部署框架虽然可以解决Linux和实时操作系统的混合部署, 但也存在着Linux和实时操作系统未实现强隔离,静态部署资源利用率低等问题。嵌入式虚拟化 是解决这些的问题的途径之一。由于嵌入式场景的诸多约束,嵌入式虚拟化与以服务器、云计算为代表的通用虚拟化有着显著的不同,openEuler Embedded 正就嵌入式虚拟化相关技术积极布局,未来将推出相应的解决方案,有力支撑以混合关键性系统为代表的相关应用。

  • 分布式软总线

欧拉和鸿蒙两大社区正积极合作,通过在openEuler Embedded中引入分布式软总线技术,使得鸿蒙设备和欧拉设备能够彼此互联互通,打通鸿蒙和欧拉两大 生态。鸿蒙主要面向有强交互等需求的智能终端、物联网终端和工业终端,欧拉主要面向有高可靠、高性能等需求的服务器、边缘计算、云、嵌入式设备,二者各有 侧重,通过以分布式软总线为代表的技术相互联通,可以实现”1+1>2“的效果。

  • 工具体系

由于嵌入式系统资源受限,无法像通用系统那样方便地进行开发工作,非常依赖工具体系的支持。除了嵌入式Linux外,openEuler Embedded的发布件中还包含能有力 支持嵌入式开发工作的SDK(Software Development Kit), 同时近期也会集成与openEuler Embedded配套嵌入式系统仿真方案,未来还计划集成图形化的IDE (Integrated Development Environment), 最终形成一套相对完整的开发工具体系。

  • DFX体系

还是由于嵌入式系统资源受限,无法像通用系统那样方便地进行优化和调试。openEuler Embedded的DFX(Design For X)为一个包含了针对嵌入式Linux的调试机制、性能 优化机制和维测机制在完善体系,旨在帮助开发者高效地完成相关工作。

  • 统一构建系统

openEuler Embedded采用的面向嵌入式系统Yocto构建体系,而非openEuler服务器场景的OBS构建体系。虽然实现了内核和软件包在代码层面 的共享,但在具体构建上有着巨大的差异,需要专门编写相应的构建文件,这也意味当前openEuler体系中众多软件包的构建规则不能直接应用于嵌 入式场景。当前openEuler Embedded已经实现了80+软件包的支持,未来为了实现所有软件包的支持,显然不能把所有的软件包的构建在Yocto下 重新实现一遍。

因此,openEuler Embedded正在与其他场景共同努力,希望打造一套支持全场景的统一构建系统,包括统一的软件包描述、面向构建的领域专用语言 和统一的执行引擎。一些初步的构想可以参考 基于Yocto的openEuler Embedded构建实践

  • 南向生态

openEuler Embedded初步支持了在嵌入式系统广泛使用的ARM架构,包括arm32和arm64,并通过QEMU和树莓派4B两个平台承载。未来,openEuler Embedded将 支持更多的ARM架构平台,并逐步支持RISC-V、X86、龙芯等架构,不断丰富南向生态。

  • 北向生态

openEuler Embedded的北向生态正在起步中,将会与openEuler的相关SIG组与社区伙伴合作不断完善,重点聚焦在工控、机器人、能源等场景。