如何进行内核移植和配置?全解中兴SafetyLinux在黑芝麻智能华山二号A1000上的适配|主讲实录
导读:

11月14日下午两点,黑芝麻智能A1000芯片基础软件开发在线研讨会在智猩猩顺利完结直播。研讨会由黑芝麻智能技术应用经理李坤、中兴通讯汽车电子基础软件规划架构师&车用操作系统及基础软件规划负责人李玉鹏两位技术专家主讲,主题分别为《视觉感知数据流在A1000平台上的基础软件开发》,以及中兴车用操作系统SafetyLinux在A1000平台上的适配》

本文是中兴通讯汽车电子基础软件规划架构师&车用操作系统及基础软件规划负责人李玉鹏的主讲实录整理。如果对此次在线研讨会的直播回放以及Q&A有需求,可以点击阅读原文前去观看。

如何进行内核移植和配置?全解中兴SafetyLinux在黑芝麻智能华山二号A1000上的适配|主讲实录

李玉鹏:大家下午好,我是李玉鹏,来自中兴通讯汽车电子,负责车用操作系统及基础软件规划。今天分享的主题是中兴通讯车用操作系统SafetyLinux在黑芝麻智能华山二号A1000平台上的适配。

在这里特别感谢智猩猩和黑芝麻智能提供的交流平台,也希望能和线上的各位朋友一起推动智能驾驶的基础软硬件平台及其生态建设。

我将从以下三个方面进行今天的分享:

1、中兴车用操作系统SafetyLinux与黑芝麻智能A1000芯片的适配
2、中兴车用操作系统SafetyLinux和黑芝麻智能A1000芯片的智驾合作案例
3、中兴车用操作系统的产品规划及解决方案

一、中兴车用操作系统SafetyLinux与黑芝麻智能A1000芯片的匹配

首先,简单说明下我们为什么要做这个适配工作。大家知道,其实黑芝麻智能A1000芯片配套有对应的SDK和相应的材料,而SDK的默认目标硬件是黑芝麻智能配套提供的评估板。但在实际的应用环境中,不同的域控会有不同的要求和配置,同时对底层的操作系统、软件也有对应的要求,这也就需要有第三方的操作系统能够适配黑芝麻智能A1000平台。

中兴SafetyLinux跟黑芝麻智能的A1000芯片做了适配对接。那么相应的适配需要做哪些工作呢?

在介绍具体的适配工作之前,我们先来看一下黑芝麻智能A1000芯片SDK的主要内容,这也是SafetyLinux适配A1000芯片的基础和前提。

如何进行内核移植和配置?全解中兴SafetyLinux在黑芝麻智能华山二号A1000上的适配|主讲实录

从黑芝麻智能释放的材料可以看到,其A1000的SDK包含一个Linux内核。基于这个内核可以进行A1000 SoC芯片片内驱动,以及部分内核功能和定制化用户态组件的开发等。

另外,SDK里也包含了与黑芝麻智能A1000芯片紧密相关的文件系统,其中包括必备的根文件系统、黑芝麻智能软件开发组件,以及黑芝麻智能定制的其他功能组件。这些组件还是比较丰富的。

除此之外,SDK里还有一些其他资料,也是我们做黑芝麻智能A1000芯片适配所必须的。比如Linux内核源码、配套开发工具包、二进制固件、样例代码、工程模板,以及配套的开发文档等随机资料。

总体来说,黑芝麻智能A1000芯片的SDK提供的材料还是比较丰富和全面的,结合黑芝麻智能A1000芯片的SDK和评估板,对于第三方的应用开发,或者第三方OS的移植都有很好的帮助和指导作用。

下面我来介绍下中兴SafetyLinux适配黑芝麻智能A1000的具体工作。主要包含以下几部分:

1、适配分析

如何进行内核移植和配置?全解中兴SafetyLinux在黑芝麻智能华山二号A1000上的适配|主讲实录

首先,需要明确黑芝麻智能A1000芯片SDK的Linux内核版本。对比中兴SafetyLinux内核,找出两个内核以及BSP驱动代码修改或者变化点,为后续内核移植和补丁的制作做好准备。

其次,要明确内核的配置,也就是黑芝麻智能A1000 SDK对一些驱动开发完成之后,需要做内核的配置修改,从而使BSP驱动生效,这也是我们做黑芝麻智能A1000硬件平台上OS移植时需要重点关注的。

接下来,需要对SDK里SOC芯片的片内片外驱动所对应的设备树配置进行区分。比如基于片内的设备树,需要准备中兴SafetyLinux以及目标域控单板的设备树应该怎么配。这里简单说下,区分片内片外设备树的主要考虑是片内的 SoC驱动对应的设备树基本上和黑芝麻智能A1000紧密相关,无论域控的功能怎么设计,这些驱动都要去集成。

但是片外像智能摄像头、激光雷达或者其他的智能外设,它的驱动及设备树配置往往是根据域控的要求来配的。比如你的一款域控里面没有配激光雷达,那么对应的设备树配置可能不需要。如果你的摄像头的个数不一样,或者摄像头类型也不一样,对应的设备树配置也会有差异。这也是我们要区分片内片外驱动对应设备树的一个考虑。

最后,还要对SDK编译生成物的情况进行分析。不同芯片内核编译完之后,生成镜像也有所不同,包括对应的设备树的dtb、ko库等也是不一样的。变化或者差异的分析、明确也是为后面真正做内核移植、适配和编译提供必要的支撑。这也是我们做任何一项复杂工作的基本方法。

2、内核移植

接下来我们看第二步,也是最核心的,即中兴SafetyLinux适配黑芝麻智能A1000时的内核移植工作。

如何进行内核移植和配置?全解中兴SafetyLinux在黑芝麻智能华山二号A1000上的适配|主讲实录

首先,基于前面的差异分析,明确黑芝麻智能A1000 SDK里面Linux内核版本和SafetyLinux内核版本的差异,然后形成一个详细、全面的差异清单。

然后,基于这个清单把黑芝麻智能A1000对应SafetyLinux内核的修改项清单,生成针对SafetyLinux内核或片内驱动的补丁。这里的补丁主要是指变动代码或变动代码包的统称,与我们通常理解的补丁并不完全一样。通过补丁的方式,我们可以很容易把黑芝麻智能A1000 SDK里面的变化或特有的特性,融合到中兴SafetyLinux项目框架(yocto框架)里面去。

接下来也是很关键的一步,要解决这些内核和片内驱动,以及补丁合入中兴SafetyLinux时引起的可能问题。这类问题主要是因为黑芝麻智能A1000 SDK里面的内核和中兴SafetyLinux内核的版本可能存在差异,分支可能也不一样。比如黑芝麻智能可能基于SDK做了一些特性或者增强改进,中兴相应的也在SafetyLinux里面做了一些增强改进,这些增强改进要有机融合在一起,才能形成一个比较好的移植后的版本。所以这类问题的解决还是比较关键的。特别是在合成之后,还要经过内核的初步编译,这里可能也会出现一些异常。这些异常可能也是由各种各样的原因导致的,这里就需要OS内核研发团队工程师去做手动处理,逐条分析。分析过程要慎之又慎,因为差异可能会比较多,或者差异涉及的范围比较广,需要OS内核专家逐一分析逐一解决。有时候可能还需要从OS大版本的特性整体考虑和提供差异的解决方案,同时还要兼顾逻辑和性能方面的诉求。

所以内核移植是整个适配工作关键的一步。当然,中兴OS内核团队有多年的开发经验,在内核移植方面也是驾轻就熟,后面我也会通过一个成功案例来详细介绍。

内核移植完成之后,内核和片内的一些驱动代码和基本变更特性就合入到中兴SafetyLinux里面了。

3、内核配置及版本构建

如何进行内核移植和配置?全解中兴SafetyLinux在黑芝麻智能华山二号A1000上的适配|主讲实录

第三步就是内核的配置以及版本的构建。

首先需要进行板级或者片外驱动补丁的制作,也包括黑芝麻智能做的功能增强或功能特性的补丁。这里所说的补丁就是把变化或者新增的功能合进来,当然也包括系统引导补丁等。

补丁制作完成之后,需要在内核中做对应的编译和配置,将补丁配置到内核中,使变化的补丁生效。这里的补丁可能也包含一些默认的配置,比如RT功能配置、初始化配置等。

这些配置都完成以后,就可以基于yocto框架进行中兴SafetyLinux适配黑芝麻智能A1000之后的完整版本的编译和构建。构建之后还需要进行版本的初步测试、关键功能流程的验证等工作。当然,在测试和验证过程中也可能会发现各种各样的问题,需要我们重新进行回归、测试和版本发布。

这一步做完,中兴SafetyLinux适配黑芝麻智能A1000的硬件环境基本的工作就做完了。当然,后面可能会有一些性能方面的专项提优、安全方面的专项增强以及信息安全方面的补丁和增强都要专门考虑,这个需要结合整个技术软件平台上面的业务系统一起开展。

到这里,中兴SafetyLinux适配黑芝麻智能A1000平台的基础工作就做完了。

二、中兴车用操作系统与黑芝麻智能A1000合作案例

接下来,我会结合中兴SafetyLinux和黑芝麻智能A1000硬件平台的合作案例,来介绍我们移植的具体操作,以及取得的成果和进展。

中兴SafetyLinux和黑芝麻智能A1000在L2+自动驾驶场景下有一个很好的合作案例。

如何进行内核移植和配置?全解中兴SafetyLinux在黑芝麻智能华山二号A1000上的适配|主讲实录

上面这张图展示的就是我们的合作方案架构。可以看到,架构底层是单颗黑芝麻智能A1000 SoC芯片,同时搭载了高性能MCU,来做智驾L2+的行车NOA和停车位的泊车功能。智能外设采用了5R10V的配置,此外还有其他的关联部件和外设。

在黑芝麻智能A1000 SoC芯片(A核)上部署的是中兴SafetyLinux操作系统,采用的是LTS长效演进分支5.10的大版本,支持RT补丁,同时融合了中兴针对车辆场景在计算、内存、存储、文件系统、网络、维测、容器等方面的增强功能在里面。

在方案架构的基础软件层,包含了AUTOSAR AP/CP、DDS、SOA功能框架和功能安全监控框架等。

应用层则包含了第三方和OEM合作伙伴一起实现的智能驾驶的业务应用,比如前面提到的行车、泊车辅助等。

以上是中兴SafetyLinux和黑芝麻智能A1000整体合作方案的简单介绍。

如何进行内核移植和配置?全解中兴SafetyLinux在黑芝麻智能华山二号A1000上的适配|主讲实录

在这个方案里,最核心的功能之一是底层智能外设的驱动适配。从上图也可以看到,主要的外设是摄像头,当然也包括雷达、GNSS、IMU等设备没有体现出来,这些也是整个系统需要接入进来的。此外,NorFlash、eMMC和以太网的驱动也要去集成。

在摄像头的驱动集成里,除了摄像头本身,板端摄像头对应的解串器的集成和适配,以及对应设备树的配置,也是我们重点要做的工作。除此之外,刚才提到的GNSS、IMU时间同步的外设和流程集成支持,以及安全启动框架ATF和uboot的集成。还有其他外设的集成,比如毫米波雷达等,但是这个集成可能是在不同的SoC或MCU上进行。以上就是整个案例中智能外设的集成和适配配置。

如何进行内核移植和配置?全解中兴SafetyLinux在黑芝麻智能华山二号A1000上的适配|主讲实录

除了底层的驱动之外,还有黑芝麻智能ISP 、AI框架和第三方组件的集成,这个也是必须的。因为作为底层的基础软硬件平台,要为上层的应用以及基础软件框架提供必要的支撑。

黑芝麻智能ISP和AI框架主要包括图像变换加速库、视频编码库、深度学习库、相机ISP处理库、IPC通信库、显示库、GPU驱动库等,当然也包含黑芝麻智能AI算子库的集成。这些库有些也是黑芝麻智能核心的自主知识产权,对外以库的形式发布。

在和中兴的SafetyLinux集成过程中,为了保证内核代码和程序的一致性,我们也请黑芝麻智能基于中兴的OS工具链对这些库进行编译,这一点得到了黑芝麻智能很好的支持和配合。

在第三方库的集成方面,包括基础软件库、基础软件框架需要的第三方库,融合感知、规划控制以及泊车业务涉及到的相关第三方库。

这些第三方库,在中兴SafetyLinux集成的时候都会做安全治理。所谓安全治理,就是对第三方库,尤其是开源库的安全漏洞进行扫描,然后对必要的库进行打补丁或者进行安全加固的修改。在修改的基础上再做通用化或者基本的集成测试,这是中兴SafrtyLinux需要做的一些事情,来保证集成的库在整个操作系统平台上能够得到正确的应用,不会存在安全漏洞或者基层功能的bug,从而为上层应用开发提供比较好的支持。

如何进行内核移植和配置?全解中兴SafetyLinux在黑芝麻智能华山二号A1000上的适配|主讲实录

这一页是中兴SafetyLinux和黑芝麻智能A1000在智驾合作案例中取得的一些效果,特别是摄像头出图效果的展示。

上面这一列是摄像头的驱动集成之后,通过摄像头的出图效果来判断功能、驱动和相关组件的集成结果是否正常。

从这个图上能看到我们在周视摄像头和环视摄像头上都有比较好的出图效果。当然在不同的外部环境下,比如在室外比较好光照情况下,或者室内比较阴暗的场景下,周视和环视也都有比较好的出图效果。

这里在摄像头的初始结果里面,一些裁剪或者畸变校正等处理也是基于黑芝麻智能提供的软件组件来实现的。从这张图片我们能够看到也都做到了比较好的集成,并取得了比较好的效果。

下面一排是更上层的应用。我们基于YOLOv5模型样例,来做AI感知和推理的效果验证与测试。从摄像头的图像和交通视频流的图像识别大家可以看到,无论是普通的物体或者道路上的车辆都能做很好的识别。

这也说明了中兴SafetyLinux和黑芝麻智能A1000的基础软件平台,对上层组件的集成和业务的支持都取得较好的成果,能够很好地支撑上层应用的开发。

三、中兴车用操作系统产品规划及解决方案

如何进行内核移植和配置?全解中兴SafetyLinux在黑芝麻智能华山二号A1000上的适配|主讲实录

这里再简单介绍下中兴的车用操作系统。

今天我们主要介绍的是中兴的SafetyLinux。其实中兴在底层OS方面有比较完整的布局,包括微内核操作系统,SafetyLinux系统,还有虚拟化Hypervisor以及配套的工具链。通过这三种产品的组合,我们能够比较好的形成智能驾驶、智能座舱和智能车控的OS解决方案,也为车端典型场景应用提供比较好的底层支撑。

此外,中兴的微内核操作系统也和黑智能智能A1000平台做了很好的生态适配对接,目前已做到AI感知推理全流程的打通,并取得了较好的效果。这也得益于黑芝麻智能团队和硬件平台对中兴很好的支持。

如何进行内核移植和配置?全解中兴SafetyLinux在黑芝麻智能华山二号A1000上的适配|主讲实录

最后我再简单补充一点,就是中兴对于智能驾驶操作系统解决方案的理解。

其实除了中兴SafetyLinux与黑芝麻智能A1000共同打造的智能驾驶解决方案,我们还有其他的智能驾驶操作系统解决方案。

比如上图右侧展示的组合监控方案。该方案主要是从SafetyLinux功能安全增强的角度来考虑的。因为中兴微内核操作系统已经通过了ISO26262 ASIL-D的管理流程和产品认证,能够提供比较好的功能安全认证的基础条件,而通过这种组合监控可以进一步提升整个智驾解决方案的功能安全特性。

在长远的方案发展层面,中兴也有自己的思路。我们分析将来会基于增强的微内核来做智能驾驶底层OS的承载,主要是考虑将来高阶自动驾驶下对公共安全要求必将大大提升。中兴微内核操作系统本身可以做到ASIL-D的功能安全要求,这样它就有条件为整个智能驾驶底层OS方案或整个智驾方案,提供一个比较好的或者有条件做到高功能安全等级的要求,这也是中兴对智能驾驶演进的基本思路。

今天的分享就是这些,谢谢大家。