背景:混合关键性系统
在嵌入式场景中,虽然 linux 已经得到了广泛应用,但并不能覆盖所有需求,例如高实时、高可靠、高安全的场合。这些场合往往是实时操作系统的用武之地。有些应用场景需要 linux 的管理能力、丰富的生态又需要实时操作系统的高实时、高可靠、高安全,那么一种典型的设计是采用一颗性能较强的处理器运行 linux 负责富功能,一颗微控制器/ dsp /实时处理器运行实时操作系统负责实时控制或者信号处理,两者之间通过 i/o、网络或片外总线的形式通信。这种方式存在的问题是,硬件上需要两套系统、集成度不高,通信受限与片外物理机制的限制如速度、时延等,软件上 linux 和实时操作系统两者之间是割裂的,在灵活性上、可维护性上存在改进空间。
受益于硬件技术的快速发展,嵌入式系统的硬件能力越来越强大,如单核能力不断提升、单核到多核、异构多核乃至众核的演进,虚拟化技术和可信执行环境(tee)技术的发展和应用,未来先进封装技术会带来更高的集成度等等,使得在一个片上系统中(soc)部署多个 os 具备了坚实的物理基础。
同时,受应用需求的推动,如物联网化、智能化、功能安全与信息安全等等,整个嵌入式软件系统也越发复杂,全部由单一 os 承载所有功能所面临的挑战越来越大。解决方式之一就是不同系统负责各自所擅长的功能,如 windows 的 ui、linux 的网络通信与管理、实时操作系统的高实时与高可靠等,而且还要易于开发、部署、扩展,实现的形式可以是容器、虚拟化等。
面对上述硬件和应用的变化,结合自身原有的特点,嵌入式系统未来演进的方向之一就是「混合关键性系统(mcs,mixed criticality system)」, 这可以从典型的嵌入式系统——汽车电子的最近发展趋势略见一斑。
「图 1」 openeuler embedded 中的混合关键性系统大致架构
从 openeuler embedded 的角度,混合关键性系统的大致架构如图 1 所示,所面向的硬件是具有同构或异构多核的片上系统,从应用的角度看会同时部署多个 os /运行时,例如 linux 负责系统管理与服务、1 个实时操作系统负责实时控制、1 个实时操作系统负责系统可靠、1 个裸金属运行时运行专用算法,全系统的功能是由各个 os /运行时协同完成。中间的「混合部署框架」和「嵌入式虚拟化」是具体的支撑技术。关键性(criticality)狭义上主要是指功能安全等级,参考泛功能安全标准 iec-61508,linux 可以达到 sil1 或 sil2 级别,实时操作系统可以达到最高等级 sil3;广义上,关键性可以扩展至实时等级、功耗等级、信息安全等级等目标。
在这样的系统中,需要解决如下几个问题:
「高效地混合部署问题」:如何高效地实现多 os 协同开发、集成构建、独立部署、独立升级。
「高效地通信与协作问题」:系统的整体功能由各个域协同完成,因此如何高效地实现不同域之间高效、可扩展、实时、安全的通信。
「高效地隔离与保护问题」:如何高效地实现多个域之间的强隔离与保护,使得出故障时彼此不互相影响,以及较小的可信基(trust compute base)。
「高效地资源共享与调度问题」:如何在满足不同目标约束下(实时、功能安全、性能、功耗),高效地管理调度资源,从而提升硬件资源利用率。
对于上述问题,openeuler embedded 的当前思路是「混合关键性系统 = 部署 + 隔离 + 调度」,即首先实现多 os 的混合部署,再实现多 os 之间的隔离与保护,最后通过混合关键性调度提升资源利用率,具体可以映射到「混合部署框架」和「嵌入式虚拟化」。混合部署框架解决「高效地混合部署问题」和「高效地通信与协作问题」,嵌入式虚拟化解决「高效地隔离与保护问题」和「高效地资源共享与调度问题」。
多 os 混合部署框架
openeuler embedded 中多 os 混合部署框架的架构图如下所示,引入了开源框架 openamp[1]作为基础,并结合自身需要进一步创新。
「图 2」 多 os 混合部署框架的基础架构
在上述架构中,libmetal 提供屏蔽了不同系统实现的细节提供了统一的抽象,virtio queue 相当于网络协议中的 mac 层提供高效的底层通信机制,rpmsg 相当于网络协议中的传输层提供了基于端点(endpoint)与通道(channel)抽象的通信机制,remoteproc 提供生命周期管理功能包括初始化、启动、暂停、结束等。
在 openeuler embedded 22.03 中,集成了 openamp 相关支持,并与 openeuler 的 sig zephyr[2] 合作实现了 openeuler embedded 与实时操作系统 zephyr[3] 在 qemu 平台上的混合部署,具体可以参考
多 os 混合部署 demo[4]
在此基础上,openeuler embedded 的混合部署框架还会继续演进,包括对接更多的实时操作系统,如国产开源实时操作系统 rt-thread[5],实现如图 3 所示的多 os 服务化部署并适时引入基于虚拟化技术的嵌入式弹性底座。
「图 3」 多 os 服务化部署架构
在上述多 os 服务化部署架构中,openeuler embedded 是中心,主要对其他 os 提供管理、网络、文件系统等通用服务,其他 os 可以专注于其所擅长的领域,并通过 shell、log 和 debug 等通道与 linux 丰富而强大维测体对接从而简化开发工作。
原文标题:embedded sig | 多 os 混合部署框架
文章出处:【微信公众号:openeuler】欢迎添加关注!文章转载请注明出处。
关于Viking光颉科技的相关介绍(一)
无线充电技术已成MWC 2018新机标配 未来应用前景无限!
无人零售业务经营规范首度征求意见
华为公司打造全球首个5G视频彩铃在云南试点成功
哪款蓝牙耳机防水效果好?适合运动佩戴的蓝牙耳机推荐
多OS混合部署框架的基础架构
头部协作机器人品牌的破局与重构
研华发布支持宽温工作的超薄Mini-ITX主板AIMB-217
Waymo发布全新自动驾驶系统,探测距离可达500米
新能源自动化转型之路—高端制造+新能源+工业4.0
固定翼无人机结构组成及原理
现在的指纹触控识别技术是否已足够的安全
如何借助AI获得优势
鸿海集团快攻VR 注资日企
迪赛康的TDR手持探头测试应用方案
国家智能传感器创新中心招蜂引蝶,mCube签约落户上海嘉定
LC振荡电路设计
碳基芯片能否取代硅基芯片?
第四屏之无纸时代
电机驱动器 PCB 布局准则你知道多少