?Linux和QNX两大操作系统在智驾系统上的提升策略支持内核

智能驾驶底层软件的核心是其运行的操作系统,该系统主要运行在智能驾驶域控制器上,支持自动驾驶所需的高性能计算和高带宽通信异构芯片。考虑到智驾系统本身对安全性,实时性和可靠性的要求较高,因此,这类需求也会同步加载到其底层的操作系统性能和计算能力上。比如为了满足融合感知和决策计算的要求,需要操作系统具备强大的计算能力;而为了满足多传感器数据的实时访问和处理,又需要强大的数据吞吐量;最后,为了满足各种算法模型的需求,高生态兼容性和扩展性也是必须的要求。

Linux和QNX的使用区别

当前,业内关于智能驾驶操作系统内核主要有两条开发路径(当然排除一些自研类,如华为的AOS)。一种是基于纯Linux原生代码嫁接开发的操作系统。这一类还有衍生版本,那就是继承了Linux丰富的开源生态,基于开源强大的Linux宏内核,着力增强其安全性和实时性,针对功能安全级别ASILB而开发的增强型安全Linux操作系统。

另一种也是行业内比较推崇的QNX操作系统,该操作系统主要是BlackberryLimited提供的商用实时操作系统,它是一个类Unix操作系统。该操作系统中使用的内核是微内核。

整体上,Linux和QNX的整体区别如下:

Linux的目标系统类型是嵌入式系统、移动设备、个人计算机、服务器、大型计算机和超级计算机。Linux支持的计算机架构有IA-32、x86-64、ARM、PowerPC和SPARC。它的内核类型是Monolithic。它的原生API是LINUX/POSIX。它具有GNUGPLv2(内核)的首选许可证。通过其子系统支持的非本机API是Mono、Java、Win16和Win32。Linux支持的文件系统有ext2、ext3、ext4、btrfs、ReiserFS、FAT、ISO9660、UDF和NFS。

QNX的目标系统类型是汽车、医疗、智能手机、消费、工业、嵌入式系统和安全。QNX支持的计算机架构有x86、SH-4、PowerPC、ARM和MIPS。它的内核类型是微内核。它的原生API是POSIX和Java。它具有专有的首选许可,其子系统不支持非本机API。QNX支持的文件系统有QNX4FS、QNX6、ext2、FAT、ISO9660、Joliet、NFS、CIFS、ETFS、UDF、HFS、HFS+和NTFS。

这点上QNX则主要支持Cortex-A系列(ARMv7或ARMv8及后续),且不规划支持Cortex-M及R系列(特别是没有MMU低主频的MCU等)支持X86系列。这点上QNX相较于Linux来说略逊一些。

可以说,QNX是一个符合Posix标准的商业实时操作系统。Linux是一个未正式兼容Posix的通用开源操作系统内核。实际上,对于开发人员来说,两者都感觉像是Unix。但是,考虑到智驾系统开发的不同需求,两者的应用场景也不相同。

此外,QNX操作系统通过莱茵认证的基础功能安全认证IEC61508SIL3,道路车辆功能安全最高等级ISO26262AISLD标准,医疗行业IEC62304及铁路EN50128认证功能安全认证,认证范围包括工具链TCL3认证、Neutrino微内核、APS自适应分区调度、libc、libm和libsupc++库等。

因此,从如上几个方面的对比中可以看出,Linux在适配自动驾驶汽车上还是存在一定的劣势。从至少满足功能安全ASILB的角度出发,QNX是能够满足智驾系统功能安全等级的,Linux却无法满足性能指标。

Linux和QNX在智驾领域的使用现状

智能汽车开发使用Linux的原因主要是基于如下原因考虑:

此外,相当重要的一点是Linux内部自带的防火墙、入侵检测和安全认证等工具也能在很多情况下满足对网络安全性的需求。在处理器类别支持度上,Linux可以支持Cortex-A&M及X86系列,其支持度还是相对较为全面。

基于如上的原因,当前智能驾驶业界内部使用较为广泛的还是Linux系统。

Linux在智驾设计中的安全缺陷

1、虚拟化的功能安全性

Linux采用的是OpenSource/GPL2/3;Monolithickernel。

2、操作系统本身安全性

此外,从操作系统功能安全性来说,Linux这类操作系统相当于基于宏内核架构设计而成,其硬实时性问题及开源版本分支维护问题都相当明显,如果不经过深度定制和裁减,不可能满足功能安全中的暴露度、严重度、可控性要求。然而,深度定制对团队要求却极高,这点上,对于自动驾驶研发团队来说几乎是不太可能。

3、图形功能安全

此外,Linux源码多达2500万行,一般智驾系统公司的项目开发团队不具备裁剪Linux的能力,整体鉴定难度较大,同时对软件架构师的要求较高,需要对Linux系统进行软件安全分析及设计过程难度就会加大。

目前业内没有一家使用Linux操作系统通过了功能安全认证,开发Linux系统要达到ASILB是行业的难点。主要体现在如下几点:

1、缺失流程文档

首先,Linux系统软件缺乏需求和架构文档,需求、架构和设计代码一致性无法追溯。同时,软件缺失安全分析,包括FMEA分析,没有识别失效模式。Linux的软件监控过程没有进行合理的ASIL分解,需要额外考虑独立性。

2、硬实时性无法完全保证

Linux系统开发过程中难以保证硬实时性,代码移植的代价较大,实时内核无法在Linux上无法表现出优越性,Linux核内软件也无法满足安全性。

3、测试工作量较大

Linux整体编码规则不合符ISO26262,特别是针对功能安全这块需要做一定程度的裁减。代码工作量相对较大,单元测试的工作量也比较大。

改进Linux缺陷在智驾系统的设计方法

当然市场上也有一些厂家、tier1或者tier2考虑对Linux系统进行一定程度的改良。实施对LinuxGuestOS进行功能开发和安全增强的策略。

总结起来,对于Linux采取的安全方法无非就是针对其基线选型、需求定义、裁减/配置、安全分析等作出不同的应对策略。

其次,重要的部分包括需求定义。如产品需求到Linux内存分配过程中都需要优化任务调度、进程管理以及内存管理,并有效定义目标ASIL等级、Failsafe、FTTI等。同时,恰当的选定SOC,具备Safetymanual。外部安全机制(比如程序流监控、数据流监控、冗余计算、冗余存储等)这些方面的有效实施也是非常重要的。需要采用高效的检查方法对需求进行验证。当然基于需求进行精炼并提取有效的数据流和控制流进行分析验证也是Linux安全分析中比较重要的一环。

总体说来,这类改造在一定程度上可能导致系统软件改造后无法继续表现出常规Linux的优越性。且在一定程度上会存在缩水打包Linux的软件包的情况,该软件包可以在任意硬件上执行而没有任何限制,也可以用于对Safety要求较高的应用程序限制。

如上图所表示的典型智驾系统中使用Linux作为操作系统在核间通信的整体过程描述。Linux的功能安全策略主要是通过在核内或核间诊断,检测Linux核内空间的软件错误。然后,通过搜集核间和用户空间内软件错误,实现完整的诊断过程。此外,在安全岛上软件测试库和主CPU核实现连续监控潜在硬件错误,这些硬件错误可能是在上电期间或者运行期间出现的,且报出错误给到相应的诊断模块。同时,安全岛诊断模块和安全主CPU核诊断过程模块可以报告软件错误给到MCU诊断模块。

QNX应用在智驾系统的优势分析

通常情况下,自动驾驶系统的功能安全等级是否能达成,从底向上可以分解为硬件驱动层、硬件抽象层、操作系统层面、实时调度层、核间通讯层、应用软件层。QNX作为另一种在智驾领域使用的操作系统,其采用的Hypervisor虚拟化技术则是通过TUV莱茵认证的道路车辆功能安全最高等级ISO26262ASILD标准,认证范围包括工具链TCL3认证、Hypervisor及OS内核、APS、Libc、libm、libsupc++、vdev及SMMU等。

下图表示了整个软件架构的功能安全目标达成情况。

其中,大部分软件模块通过一定的手段均能满足功能安全目标,该操作系统参照Linux的基础架构进行开发,则无法满足功能安全需求。因为无论是从功能安全对操作系统的基础要求还是增值要求来看,都无法满足相应的性能指标要求。

而另一方面,面向仪表板的QNX平台是基于BlackBerryQNX针对汽车仪表板参考硬件的高度优化的基于OpenGL的图形框架构建,并由领先的集群UI框架提供支持。更重要的是,QNX仪器集群平台还提供ISO26262ASILB预认证图形监视器子系统。配合BlackBerryQNX的ISO26262ASILD预认证RTOS和工具链。

QNX作为ISO/SAE21434网络信息安全全球标准制定组成成员(基础软件组,惟一的操作系统供应商),将在标准2021年正式发布后,通过ISO/SAE21434CAL4最高网络信息安全等级。网络信息安全模块包括QNXSDP7.0,Certicom(Onstar用),larvis,黑莓CybersecurityService等。

那么QNX有那么多好处,如果当前开发团队考虑更换Linux为QNX的话需要考虑哪些方面对对安全的何影响呢?

1、内存保护如何实现?

Linux也支持进程、线程设计,其保护策略和QNX一样的,但没有经过功能安全认证。因此,需要做应用层“冗余存储+校验”来实现安全保护,这一过程可能导致内存、算力均可能翻倍。同时,需要确认是否可以有硬件MPU(合理的OS被调用)以保证安全。

2、功能模块分区设计如何实现?

Linux需要确认进程和线程的优先级是否可以配置,线程对应用层有接口,进程设计需求有应用层配置和接口设计。

3、软件架构设计是否需要重新调整?

对于操作系统的切换过程,实际上应用层是不需要重构的,但是BSP部分则需要根据QNX做相应的性能调整。

4、任务调度或线程轮巡是否受影响?

由于Linux的任务调度是没有经过功能安全认证的,其看门狗监控任务的执行周期也需要做进一步的优化。同时,也需要加强消息队列的保护措施,如在进程之间的通讯采用“读”共享内存和写权限禁用的方式,制定相应的保护措施。

THE END
1.《操作系统设计与实现:基于LoongArch架构》:带领学生全面剖析操作经过几年的实践,周庆国教授及带领的教学团队在基于LoongArch架构的教学版操作系统MaQueOS为主线进行的教学成果及经验上,成功编著了《操作系统设计与实现:基于LoongArch架构》一书。该书能带领学生全面剖析一个具备基本功能的操作系统内核的设计与https://mp.weixin.qq.com/s?__biz=MzA4MjU5NzkyNA==&mid=2688790552&idx=8&sn=3e6f2ee51c56d8d72aef14f611f5f8c9&chksm=bb97284ffe769772df2fec001ae5a84f65c59ec440b9583b1296ec6fe7c335eefc2edc50ed51&scene=27
2.操作系统设计与实现(豆瓣)大学计算机教育国外著名教材系列(影印版)(共42册), 这套丛书还有 《UNIX网络编程卷2》《计算复杂性》《自动机理论语言和计算导论(第2版影印版)》《数据结构》《分布式系统原理与范型》 等。 喜欢读"操作系统设计与实现"的人也喜欢的电子书· ··· 支持Webhttps://book.douban.com/subject/3108799/
3.操作系统设计与实现(第3版下册)中文PDF版21.8MB电子书下载《操作系统设计与实现(第3版 下册)》是关于操作系统的权威教材,详细探讨了操作系统的基本原理,包括进程、进程间通信、信号量、管程、消息传递、调度算法、输入/输出、死锁、设备驱动程序、存储管理、调页算法、文件系统设计、安全和保护机制等。大多数关于操作系统的图书均重理论而轻实践,而《操作系统设计与实现(第3https://www.jb51.net/books/483826.html
4.操作系统设计与实现第二版中文.pdf操作系统设计与实现(Minix系统中文版).7z 浏览:2 本书是一本操作系统教程,主要写了minix系统的设计和实现以及编译方法 ESP8266 官方全部开发文档资料打包下载 2021最新版 浏览:33 5星 · 资源好评率100% 10. **20b-esp8266_rtos_sdk_api_reference.pdf**:ESP8266实时操作系统(RTOS) SDK API参考文档,包含了EShttps://download.csdn.net/detail/zhilin_tang/7700045
5.《操作系统设计与实现(第三版)(上册)》(AndrewS.Tanenbaum(美当当网图书频道在线销售正版《操作系统设计与实现(第三版)(上册)》,作者:Andrew S. Tanenbaum(美)安德鲁 S. 塔嫩鲍姆 等著,出版社:电子工业出版社。最新《操作系统设计与实现(第三版)(上册)》简介、书评、试读、价格、图片等相关信息,尽在DangDang.com,网购http://product.dangdang.com/23727594.html
6.操作系统设计与实现(第一章引论操作系统概念)《Operating Systems: Design andImplementation Second Edition操作系统设计与实现 (第二版)安德鲁.坦尼鲍姆(Andrew S. Tanenbaum)阿尔伯特.伍德豪尔(Albert S. Woodhull)》 典型的操作系统由四部分构成:进程管理,I/O设备管理,存储器管理和文件管理。 第一章 引论 https://www.jianshu.com/p/3d270296e576
7.操作系统设计与实现:第3版操作系统设计与实现 作者:陈文智 ISBN:9787040467529 出版社:高等教育出版社 出版年:2017 现代操作系统(原书第3版) 作者:(荷)塔嫩鲍姆(Tanenbaum,A.S.)著 出版社:机械工业出版社 出版年:2009 Operating Systems:Design and Implementation 3rd = 操作系统:设计与实现 第三版(影印版) 作者:S.Tanenbaum,Andrehttps://www.las.ac.cn/front/book/detail?id=f5d81099a262db34c86eb97b5587da07
8.操作系统原理实现与实践作者似乎要表达一个意思:一个操作系统,是由它的设计者和用户共同决定的,之前和深信服面试官聊,说到为什么深信服是以用户为中心,面试官说,设计者们只能设计一个框架,细节还需要由用户来填充,这本书就体现了这一点。 作者似乎还想表达一点,操作系统,是附着在计算机硬件上的,所以操作系统的任务是更好地利用硬件,所以https://zhuanlan.zhihu.com/p/658808396
9.操作系统的设计与实现20240406002241.pdf操作系统的设计与实现.pdf,操作系统的设计与实现 一、引言 操作系统是计算机系统的核心部分,负责管理和控制计算机系统的硬 件和软件资源。它负责分配任务、管理内存、处理文件系统、控制设 备驱动程序等。本文将介绍操作系统的设计和实现。 二、操作系统设计 1、需求分析:https://max.book118.com/html/2024/0406/5111140131011134.shtm
10.一个64位操作系统的设计与实现至于软件方面,只要熟练运用汇编语言和C语言就足够编写操作系统了。 汇编语言主要用于控制和配置处理器,例如引导启动处理器、配置处理器运行状态、进程切换、中断和异常处理程序、设备I/O端口操作等必须操作寄存器的工作,或者是对性能要求极为苛刻的场景,这些工作C语言几乎无法实现。 https://www.ituring.com.cn/book/tupubarticle/26322
11.操作系统设计与实现pdf下载操作系统设计与实现第三版p软件介绍软件截图相关文章网友评论下载地址 小编为您推荐:操作系统设计与实现操作系统操作系统设计与实现第三版pdf高清版是计算机科学届非常有名的教材,在这里用户可以通过这本辅导教材,学习详细的操作系统基础知识,以及作者对于操作系统的不同见解,计算机专业的学生必备教材,欢迎有需要的用户来IT猫扑下载! 作者介绍 Andrewhttps://www.itmop.com/downinfo/340861.html
12.操作系统底层架构与内核设计及实现原理51CTO博客这是一段进行相加的操作,程序启动,在经过编译解析后会由操作系统把硬盘中的程序复制到内存中,示例中的程序是将123和456执行相加操作,并将结果输出到显示器上。由于使用机器语言难以描述,所以这是经过翻译后的结果,实际上每个指令和数据都可能分布在不同的地址上,但为了方便说明,把组成一条指令的内存和数据放在了一https://blog.51cto.com/u_11837698/6237152
13.基于Linux操作系统和ARM926EJ系统以CMOS图像通道为诊断网像的传输通道,将采集的超声图像信息送人系统总线,在嵌入式Linux操作系统平台上,实现了诊断图像的实时显示和静态图像的大容量非易失性存储,所实现的诊断系统不仅功能强大、扩展容易,而且还兼顾了小型化的需求。 2、 系统构架 本文设计的便携式超声诊断仪系统结构如图l所示。用户通过输入设备https://m.elecfans.com/article/1179009.html
14.基于Petalinux的Socket网络通信系统设计与实现AET基于Petalinux的Socket网络通信系统设计与实现 摘要:介绍了一款针对MicroBlaze软核处理器特别开发的嵌入式操作系统Petalinux,成功地实现了其在ML402开发板上的移植,并且在该系统上实现了基于TCP/IP协议的套接字接口Socket的网络通信。 关键词:FPGA;MicroBlaze软核处理器;Petalinux移植;Socket网络通信http://www.chinaaet.com/article/188921
15.网络工程专业人才培养方案(2022)3. 工程基础知识。掌握从事网络工程专业所需的数字电路与逻辑设计、计算机组成原理、程序设计、算法与数据结构、软件工程概论、数据库原理与技术等基础知识。 4. 网络工程专业知识。掌握从事网络工程专业所需的计算机网络原理与技术、操作系统、信息安全导论、物联网技术基础、网络安全技术、网络互连技术、无线网络技术、网https://www.csust.edu.cn/jtxy/info/1148/20900.htm