​Linux和QNX两大操作系统在智驾系统上的提升策略

article/2025/1/16 2:34:24

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

Linux和QNX的使用区别

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

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

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

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

QNX的目标系统类型是汽车、医疗、智能手机、消费、工业、嵌入式系统和安全。QNX 支持的计算机架构有 x86、SH-4、PowerPC、ARM 和 MIPS。它的内核类型是微内核。它的原生 API 是 POSIX 和 Java。它具有专有的首选许可,其子系统不支持非本机 API。QNX 支持的文件系统有 QNX4FS、QNX6、ext2、FAT、ISO 9660、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,道路车辆功能安全最高等级ISO 26262 AISL D标准,医疗行业IEC62304及铁路EN50128认证功能安全认证,认证范围包括工具链TCL3认证、Neutrino微内核、APS自适应分区调度、libc、libm和libsupc++库等。

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

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

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

Linux有多种程序语言与开发工具。如gcc、cc、C++、Perl、Fortran77等。对于不同的开发平台的接口和软件适配度将更好。由于Linux内核大部分是用C语言编写,并采用可移植Unix标准应用程序接口,支持i386、Alpha、AMD、Sparc等系统平台,因此,可以很好的支持车载智能汽车等相关嵌入式设备的控制。

同时,Linux是一个真正多任务多用户的操作系统,开发人员可以对自己需要的资源配置需求的权限,这种方式允许多应用程序同一时间调用操作系统资源且互不影响。并且,由于Linux内的源代码是以标准的32位计算机来做的最佳设计,因此基本可以确保其系统的稳定性,不易宕机。

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

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

操作系统厂家
Linux蔚来、小鹏、上汽大通、一汽红旗、华人运通、广汽、宏景智驾
QNX滴滴、德赛西威、魔视智能、国外部分OEM

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

相对于互联网行业,自动驾驶领域内特别关注的指标还有功能安全。而Linux在功能安全上还显得相当稚嫩。主要体现在如下几方面:

  1. 虚拟化的功能安全性

Linux采用的是Open Source/GPL2/3; Monolithic kernel。

首先,GPL是可以允许将使用的产品最大化的授权给用户,确保用户可以获得自由运行、复制、研究和改进的分发产品。因此,对于Linux这类开源产品来说,允许开发社区工程师任意注入不稳定或存在一定bug的程序代码,可能导致系统的突然崩溃,自然无法满足功能安全需求。

2、操作系统本身安全性

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

3、图形功能安全

Linux的图形处理功能主要是指图像处理软件模块基本是没有相关的功能安全认证的。因此,利用Linux在进行图像解析及处理过程中也无法保证其功能安全。

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

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

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

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

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

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

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

比如ELISA项目(https://elisa/tech/)一直在致力于如何将Linux系统认证成ASILB; ,且该项目目前正在进行中。SIL2 LinuxMP项目(http://http://sil2.osadl.org)也已经开发结束,很多其他项目也有参考该项目内的成果,包含开发工具相关的内容,但没有认证成B。另外,像博世V2x项目也做过类似的研究,但是也没有完成相应的认证。

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

首先,基线选型一般选择开源社区LTS版本作为基线来源,参考业界主流的版本基线如:redhat/windriver,并根据目标芯片的BSP支持情况作为参考,重大功能更新、漏洞更新都需要实时的进行。同时,采用分析+评审的方法对选型的结果进行验证。

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

最后,涉及裁减配置两方面内容还有通过高效的配置工具(如OSADL Minimization tool)针对需求分析的Strace信息对内核进行裁减,依据最佳时间或产品的特性对内核进行配置,最后基于检查加分析的方法对内核进行配置和验证。

除开以上罗列的措施要素外,也可以将Linux当做软件组件来进行软件组件鉴定(ASIL B)的方法,但是这类鉴定对于超大型软件代码的鉴定不太适用,且相关的标准也还在制定过程中。

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

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

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

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

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

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

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

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

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

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

2、功能模块分区设计如何实现?
Linux需要确认进程和线程的优先级是否可以配置,线程对应用层有接口,进程设计需求有应用层配置和接口设计。

3、软件架构设计是否需要重新调整?
对于操作系统的切换过程,实际上应用层是不需要重构的,但是BSP部分则需要根据QNX做相应的性能调整。

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

5、文件系统和时间管理策略?
最后,所有的任务都可以以引用文件的形式实现。系统时间管理:时钟、系统时间、定时器等是否完全与功能安全不相关也需要做一定程度的验证分析。

总结

智能驾驶操作系统的内核是基于标准的POSIX接口,兼容Adaptive AUTOSAR等国际主流系统软件中间件,满足智能驾驶不同应用所需的功能安全和信息安全要求。考虑当前主流的智驾操作系统能力,我们可以根据自身研发能力制定不同的策略要求,增值不同的研发手段。最终目的是应用智驾系统SOC异构硬件的单元架构和承载功能满足功能安全的不同要求:AI单元内核系统支持QM ~ ASIL B,计算单元内核系统支持QM ~ ASIL D,控制单元内核系统需要支持ASIL D安全级别。


http://chatgpt.dhexx.cn/article/Cunh7d3C.shtml

相关文章

QNX实时操作系统简介

目录 什么是QNX?QNX的特点 什么是QNX? QNX是一种实时操作系统; QNX是微内核架构;其核心仅提供4种服务(大部分功能都剥离了出去),分别为:进程调度、进程间通信、底层网络通信和中断处…

qnx 镜像文件_一种基于Hypervisor的QNX操作系统启动方法及装置与流程

本发明涉及计算机领域,尤其涉及一种基于Hypervisor的QNX操作系统启动方法及装置。 背景技术: 基于Hypervisor的QNX是一种商用的遵从POSIX规范,常用用在汽车及路由器上,QNX是一种嵌入式实时操作系统,一般对系统启动速度…

QNX操作系统和QNX Hypervisor简介

概述 QNX操作系统和QNX Hypervisor是由QNX Software Systems开发的两个重要的嵌入式技术。它们在嵌入式系统领域具有广泛的应用和卓越的表现。 QNX OS是一个实时操作系统,主要用于嵌入式系统和实时应用程序。它具有可靠性、安全性和高性能的特点。QNX OS支持多处理…

如何查找中文-英文文献 ?

查找外文文献 1、DPLP 计算机类的文献可以在德国的DPLP网站上根据需要直接获得所需文章的相关信息。 http://dblp.org/ 进入DPLP的主页后,在搜索框键入所要搜索的内容。 例如查找文章"A self-Organizing approach to background subtraction for visual surveillan…

如何寻找计算机领域的英文文献?

大家一定或多或少都有文献检索的经验吧,中文文献还好,我们总归是对自己的的母语比较熟悉,通过关键词或其他检索条件,总能得心应手地找到自己需要的文献。相较于中文文献,对外文文献的检索就显得难度增加了不少&#xf…

在哪里可以搜索英文文献?

15天读了100篇英文文献,秘诀在此! 如何段时间内阅读大量英文文献,相信很多人阅读英文文献最头疼的就是翻译问题了,没有好用的翻译工具,连检索英文文献都要费好大的劲,现在不用发愁啦,科研人经过…

检索下载中/英文论文的方法

目录 一、中文文献下载 1.本校的图书馆 2、百度学术百度学术https://xueshu.baidu.com/ 3.掌桥科研 二、英文文献下载方法 1.首推SCI-HUB 2、百度学术 3、semanticscholarsemanticscholarhttps://www.semanticscholar.org/ 4.必应搜索 5、其他搜索引擎 三、后记 一、中…

英文文献检索与下载

存档仅自用 谷歌学术镜像网站:谷歌学术镜像_Google镜像站主要提供谷歌学术搜索Google Scholar镜像和谷歌网页搜索镜像的导航站,实时更新最新镜像网站http://scholar.scqylaw.com/ 复制文献DOI号到此sci-hub文献检索sci-hub文献检索:提供sci-hub链接生成及论文搜索…

怎么查找和自己专业有关的英文文献?

参考文献是论文重要的组成部分,如何找到一篇适合自己论文参考文献更是重中之重,中文参考文献还好说,一眼过去可以了解大致内容,从而判断是否合适。而英文就不同了,相较于中文文献来说,英文文献找起来就比较…

移植tslib库 [五一勋章]

​​​​​​ 移植tslib库 tslib 为触摸屏驱动和应用层之间的适配层,它把应用程序中读取触摸屏 struct input_event 类型数据(这是输入设备上报给应用层的原始数据)并进行解析的操作过程进行了封装,向使用者提供了封装好的 API …

buildroot配置QT5和tslib

buildroot 移植参考文章 buildroot配置安装qt5 在buildroot下面,打开配置界面 make menuconfig 选择target packages项 找到QT5 勾选 进入QT5选项,勾选gui module 和 widgets module。 buildroot编译安装tslib 执行make menuconfig Target pack…

tslib的安装

tslib是嵌入式开发中使用qt开发之前需要搭建的一个必须的环境,通过tslib,你编写的qt程序才能通过触摸屏进行操作,而tslib进行进行你的qt程序和硬件之间的接口,因此, 学会如何搭建tslib是进行嵌入式开发的一个重要的环…

Linux·触摸板库tslib的编译和配置

作为基本输入设备,触摸板几乎是交互式嵌入式系统的标配。当我们知道了可以通过设备节点读取触摸板数据后,我们需要进一步优化这些直接获取的原生数据,比如去抖、消噪、校准等。 优化触摸板的 raw (原生)数据是一项十分…

嵌入式开发之tslib-1.4移植

目录 前言 一、下载tslib 二、编译和安装 1.编写编译脚本 2.编译时遇到的问题 三、移植到目标机 1.tslib文件移植 2.修改ts.conf内容 3.配置环境变量 4.测试 总结 前言 tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能…

QT tslib安装编译

1.下载源码 git clone https://github.com/libts/tslib.git 2.安装其他工具 sudo apt-get install automake sudo apt-get install autogen autoconf sudo apt install automake libtool m4 autoconf 3.进入目录,配置 ubuntuubuntu:~/Downloads/tslib$ ./auto…

QT和tslib的移植

QT(5.12.9)和tslib(1.4)的移植 前提条件: 添加交叉编译工具链到环境变量中 vim ~/.bashrc export PATHtoolchain_absolute_dir:$PATH # 保存退出source ~/.bashrc# 验证 echo $PATHTSlib移植 1、tslib源码获取 # …

tslib-1.21 ts_setup详解

几个月前买了Imx6ull的开发板,跟着韦东山老师的课程,把linux应用,驱动基础学完了,紧跟着课程又完成了第一个linux项目-电子量产工具。 虽然做完了项目,但毕竟不是完全靠自己编写的,所以决定重头看一下项目的…

tslib库编译与移植

tslib库编译与移植 1.tslib库简介 tslib 是电阻式触摸屏用于校准的一个软件库,是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。 2…

tslib安装以及使用

tslib的一些小问题:https://blog.csdn.net/xiaodingqq/article/details/80807362 1.先在网上下载 tslib-1.4.tar.gz压缩包 2.然后在ubuntu编译: tar xzf tslib-1.4.tar.gzcd tslib./autogen.sh      mkdir tmp          //创建安…

使用 tslib 库

tslib 是专门为触摸屏设备所开发的 Linux 应用层函数库,并且是开源。 tslib 为触摸屏驱动和应用层之间的适配层, 它把应用程序中读取触摸屏 struct input_event 类型数据(这是输入设备上报给应用层的原始数据)并进行解析的操作过程…