基于环境隔离子系统的车载系统
技术领域
本发明属于车载系统电子电气架构技术领域,尤其涉及一种基于环境隔离子系统的车载系统。
背景技术
电子控制单元(Electronic Control Unit,ECU)是汽车电子系统中用来控制电气系统、电子系统及汽车子系统的嵌入式系统。
现代汽车使用各种各样的电子控制单元,如发动机控制器(ECM或ECU)、动力总成控制器(PCM)、传动系统控制器(TCM)、制动控制器(BCM或EBCM)、中央控制器(CCM)、中央计时器(CTM)、通用电子器(GEM)、车身控制器(BCM)、悬挂控制器(SCM)等。所有的系统组合在一起,有时候被称作车载电脑。技术上来讲,这不是单个计算机,而是很多个计算机组成的。有时一个组件包含几个单独的控制器,例如动力总成控制器通常包含发动机控制器及传动系统控制器。
随着汽车功能的不断增加,ECU的数量剧增,高端车型里的 ECU 平均达到 50-70个,个别车型ECU数量超过100,使得车辆的电子系统复杂度超出极限。同时,由于ECU 数量的激增,对汽车线束长度、传输速度等方面都有这更高的要求,这都将为汽车的研发、生产、安全等多方面带来挑战。
随之而来的是以域控制单元(Domain Control Unit,DCU)为核心的域集中架构被引入。即将汽车电子部件功能将整车划分为动力总成,智能座舱和自动驾驶等几个区域,利用处理能力更强的控制器芯片相对集中地控制每个域,以取代目前分布式电子电气架构。
域控制单元概念是由Bosch和Continental等一级供应商提出的,旨在解决信息安全和ECU开发瓶颈的问题。DCU具有强大的硬件计算能力和各种软件接口,可以使系统集成度更高,从而可以集成更多核心功能模块,从而降低对功能感知和执行硬件的要求。此外,用于数据交互的标准化接口帮助这些组件转变为标准组件,从而减少研发或制造方面的支出。换句话说,与外围部件仅扮演自己的角色不同,中央域控制单元着眼于整个系统。
在集中模式下可以有效改善ECU过多导致的研发、生成、安全等方面的诸多成本问题,但也会存在单点失效扩散风险大幅提高的问题。现行分布式架构的ECU天然存在一定的系统隔离效果,很大程度上可以抑制问题的扩散。
WebAssembly(WASM)是基于堆栈的虚拟机的二进制指令格式。WSAM被设计为编程语言可以生成的可移植编译目标对象,从而可以在Web上为客户端和服务器应用程序进行部署。其设计的初衷决定了其可以用做轻量级的环境隔离的沙箱系统。目前已经广泛应用在无服务器计算、区块链智能合约、边缘计算等领域。
WASM有着高效快捷的特性,其堆栈机被设计为以目标文件大小紧凑和加载时间高效的二进制格式进行编码。WASM旨在通过利用广泛平台上可用的通用硬件功能,以接近原生应用的速度执行。作为一种内存安全的沙盒执行环境,该环境甚至可以在现有JavaScript虚拟机内部实现。当嵌入到Web中时,WASM将强制执行浏览器的同源和权限安全策略。在移植到其他平台环境下也可以很方便的整合平台原有的安全策略。
发明内容
为解决现有技术中存在的不足,本发明的目的在于,提供一种基于环境隔离子系统的车载系统,基于软件环境隔离技术,在保证多种车身应用分享计算资源的同时不会形成干扰;即使在单个应用失效情况下,其影响范围也仅需自身功能范畴以内。
为实现本发明的目的,本发明所采用的技术方案是:
一种基于环境隔离子系统的车载系统,所述系统包括运行时环境和目标平台;
目标平台为嵌入式设备,在其中运行WASM应用;
运行时环境包括核心部分,解释器,编译器,内置扩展库;
核心部分,用于运行WASM应用和加载内置扩展库;具体地,将WASM模块解码格式化并将转换为内部表示形式,对内部指令序列进行类型检查;完成检查后对模块实例化然后调用;
解释器,对WASM规范格式进行语法解读,转化成相应的命令并执行命令返回结果;
编译器,负责WASM规范格式的中间代码的进一步编译,得到机器代码;
内置扩展库,为功能扩展接口,运行时针对不同目标平台做代码实现。
进一步地,所述模块实例化具体为,执行模块主体,并为其定义所有导入;初始化全局变量,内存和表,并调用模块的启动函数,返回模块导出的实例。
进一步地,所述模块调用具体为,调用导出函数启动WASMy计算,给定必需的参数,该函数将执行相应的函数并返回其结果。
进一步地,所述编译器为提前编译模式,利用外部编译器,将中间代码在运行前编译为目标平台的机器代码。
进一步地,所述内置扩展库包括文件系统接口和网络通信接口;
文件系统接口,通过配置或在启动阶段传入授权文件、目录列表的参数,在运行阶段登记可供访问的文件列表;
网络通信接口,将WASM程序内嵌入到启动代理程序,在代理中打开接口,将外部打开的接口文件描述符传递进WASM程序。
进一步地,所述系统还包括工具链,将源代码生成出中间代码以及机器代码,并自动化的发布到运行这些代码的机器环境中。
进一步地,所述工具链按用途可以分为编译工具、部署工具和调试工具。
进一步地,所述编译工具,基于IDE开发环境软件开发插件,将源代码编译生成出中间代码。
进一步地,所述部署工具,在远程机器和云端上部署编译后的产物;
开发阶段,在实验机器上部署服务网关,以响应工具发出的更新指令,服务网关根据需要对WASM文件做AoT编译,以获得机器代码;
正式生产环境,在云端设置无服务器应用,响应更新指令;云端会先保存工具上传的编译产物,然后再根据需要做提前编译。
进一步地,所述调试工具,用于启动编译后的WASM文件或者目标平台的机器代码;
在本地提供一个仿真环境实现单步调试,在远端以日志输出的形式将调试信息回传到本地显示。
本发明的有益效果在于,与现有技术相比,本发明在域控制器DCU可以大幅降低成本,同时可以保持分布式ECU模式的健壮性。功能安全性在车载领域是最高优先级的准则,本发明可以使得兼顾成本和安全性。
本发明可以在开发效率得到极大的提升,由分散单一化的设备集中成通用性系统。依托工具链可以在相对简单的环境中完成原先需要大量设备才能实践的集成开发测试。利用本发明,在生产环境需要对车辆系统中的软件部分进行升级的时候,大多数场景都不需要车辆到服务网点人工操作,可以通过联网后自动升级。极大的降低售后维护的成本。
附图说明
图1是基于环境隔离子系统的车载系统运作方式示意图;
图2是运行时环境的数据流程示意图;
图3是WASM程序采用启动代理程序打开接口的流程示意图。
具体实施方式
下面结合附图和实施例对本发明的技术方案作进一步的说明。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本申请的保护范围。
如图1所示,本发明所述的基于环境隔离子系统的车载系统,在车载系统中应用环境隔离的方式,需要提供类似WASM沙箱的运行时环境并移植到目标平台中。此外还需要有一套工具链,帮助研发人员将开发的源代码生成WASM二进制目标对象,并部署到目标平台中。
本发明所述的基于环境隔离子系统的车载系统,包括运行时环境、工具链、目标平台。
目标平台为嵌入式设备,在其中运行WASM应用。
WASM作为一种标准,其运行时环境的实现需要兼容相关的约定,同时考虑车载系统的实际应用场景,需要做相应的优化,例如AoT编译。运行时环境依据用户可以分为核心部分,解释器,编译器,内置扩展库等部分。
运行时环境的数据流程如图2所示。
核心部分,负责WASM应用本身和扩展库的加载,所需要系统资源的配置管理例如:内存堆栈上限的设定、环境变量、文件系统授权等,硬件平台差异化的处理。
WASM模块以二进制格式分发。运行时,核心部分将其解码格式化并将其转换为模块的内部表示形式。在实际环境中WASM可以是规范定义的标准形式,此表示是通过抽象语法建模的,但是也可以实现为直接编译后机器代码。
解码模块必须有效,需要验证格式正确性,以确保模块有意义且安全。特别是,它对功能及其内部的指令序列进行类型检查,以确保例如始终使用操作数堆栈。
完成检查后即可以对模块实例化然后调用。模块实例是模块的动态表示,具有其自己的状态和执行堆栈。实例化将执行模块主体本身,并为其定义所有导入。它将初始化全局变量,内存和表,并调用模块的启动函数(如果已定义)。 它返回模块导出的实例。
一旦实例化,就可以进行实例调用,通过在模块实例上调用导出的函数来启动进一步的WASMy计算。 给定必需的参数,该函数将执行相应的函数并返回其结果。
解释器,是针对标准的WASM规范格式的表达进行解读语法,转化成相应的命令并执行命令返回结果的程序。
解释器的实现需要覆盖规范定义的文件格式、类型的定义、指令集以及语法规则。解释器的缺点在于效率较低,通常考虑在开发环境中使用。
编译器,负责WASM规范格式的中间代码(bytecode)文件(通常是以.wasm为扩展名的文件)进一步编译,从而得到机器代码。运行机器代码的效率将远远高于解释器的执行效率。而根据编译的时机,可以分为即时编译(Just-in-Time,JIT)和提前编译(Ahead-of-Time,AoT)两种模式。
即时编译(JIT),也称为动态翻译或运行时编译,是一种执行计算机代码的方法,该程序涉及在程序执行期间(在运行时)而不是在执行之前进行编译。它由字节码转换为机器代码组成,然后直接执行。实施JIT编译器的系统会连续分析正在执行的代码,并识别其中从编译或重新编译获得的加速将超过编译该代码的开销的代码部分。
提前编译(AOT),是指在程序执行之前(通常是在构建时)将(通常)高级编程语言编译为(通常)低级语言,以减少运行时需要执行的时间。在这里我们将中间代码字节码在运行前编译为目标平台的机器代码,提升运行时效率。不同于JIT模式可以在运行时内部操作完成编译过程,AoT模式需要在运行前利用外部AoT编译器生成目标平台的机器代码文件,例如.so文件。内部执行环境,需要能加载并解码输入的机器代码,并在运行时中正确执行指令。
内置扩展库,WASM定义的是遵循最小授权的安全沙箱模型,原生只提供经过裁剪后没有错误传播风险的应用程序接口。而更多的功能的系统调用通常以内部扩展库(WebAssembly System Interface,WASI)的形式出现,通常最重要扩展包括文件系统访问及网络通信能力。WASI作为一种协议规范除本身约定的一系列扩展接口外,还可以参考其范式做自定义功能的扩展。
WASI本身只是一种接口规范,运行时还需要针对不同硬件平台做各自的代码实现。WASM程序才能正常使用这些扩展接口。
文件系统接口,需要提供授权访问列表的控制能力。也即通过配置或在启动阶段传入授权文件、目录列表的参数,在运行阶段登记可供访问的文件列表。在WASM程序打开文件操作时候,鉴定其操作的指定文件是否存在已授权列表。
网络通信接口,由于安全考虑限制了WASM程序打开socket的能力,只能操作已经存在的socket。这就需要有额外的机制将外部打开的socket的文件描述符传递进WASM程序。例如,如图3所示,将WASM的运行时内嵌入到启动代理程序,在代理中打开socket(接口)。
本发明所述的基于环境隔离子系统的车载系统,还包括工具链,工具链负责将源代码方便的生成出中间代码(bytecode)以及机器代码,并自动化的发布到运行这些代码机器环境中。工具链按用途可以分为编译工具、部署工具和调试工具。
编译工具,负责将源代码编译生成出中间代码,并基于IDE开发环境软件开发插件,实现便捷触发编译。其本质是命令行形式编译动作集成在插件中,通过配置参数实现定制化操作。
部署工具,实现在远程机器和云端上部署编译后的产物,在开发阶段可以在实验机器上部署服务网关,以响应工具发出的更新指令,服务网关会根据需要对WASM文件做AoT编译,以获得机器代码的产物。在正式生产环境可以先在云端设置无服务器应用,响应更新指令。云端会先保存工具上传的编译产物,然后再根据需要做AoT编译。
调试工具,用于启动编译后的WASM文件或者目标平台的机器代码。对于在本地可以提供一个仿真环境实现单步调试。在远端可以考虑以日志输出的形式将调试信息回传到本地显示。
工具链的优势是可以在IDE环境中实现从编译到部署再到调试的一键达成,可以方便开发环节提升效率,并在生产环境的大规模部署提供便利。
本发明的有益效果在于,与现有技术相比,本发明在域控制器DCU可以大幅降低成本,同时可以保持分布式ECU模式的健壮性。功能安全性在车载领域是最高优先级的准则,本发明可以使得兼顾成本和安全性。
本发明可以在开发效率得到极大的提升,由分散单一化的设备集中成通用性系统。依托工具链可以在相对简单的环境中完成原先需要大量设备才能实践的集成开发测试。利用本发明,在生产环境需要对车辆系统中的软件部分进行升级的时候,大多数场景都不需要车辆到服务网点人工操作,可以通过联网后自动升级。极大的降低售后维护的成本。
本发明申请人结合说明书附图对本发明的实施示例做了详细的说明与描述,但是本领域技术人员应该理解,以上实施示例仅为本发明的优选实施方案,详尽的说明只是为了帮助读者更好地理解本发明精神,而并非对本发明保护范围的限制,相反,任何基于本发明的发明精神所作的任何改进或修饰都应当落在本发明的保护范围之内。