概要
2023年智驾行业发生很大变化,多数供应商开始重拾L2赛道,逐步减少L4的demo项目,产品多数为单/多Soc加单Mcu为主的L2级量产落地域控。本文以此类产品Mcu端的主要开发内容进行介绍。
名词解释
按照全流程项目开发顺序大致可以分为以下步骤:
- DV软件:设计验证软件
- 产线测试软件:为验证产线case达标的软件
- 量产软件:客户定制的ADAS域控项目交付软件
- PV软件:产品验证软件
整体流程
ADAS域控制器的基础软件开发的技术范畴与其他域并无很大区别,均以AutoSar CP做底层软件平台。主要包含硬件抽象层驱动开发以及OS开发,通讯开发如Can, Eth, Spi片间通讯等。以及诊断开发如UDSonCAN和UDSonSpi,以及功能安全开发。
工作在Tier1的基础软件开发工程师会在系统工程师与客户沟通协商后会获取三份需求,DV/PV软件需求,产线测试软件需求以及量产软件需求。一般来说,DV软件的开发过程会持续4个月,并且点亮开发板以后进行的开发都是可以应用于量产软件作为base的,所以实际上三份需求对应了开发工作的三个阶段:
DV阶段:
系统工程师根据硬件同事提供的Mcu选型方案,设计好整体功能实现的方案并与软件开发工程师讨论实现细节,调整需求实现。软件工程师会依次完成如下开发内容:
- Bring up(或称Base setup):基于以往项目设立适合分布式开发的git并设置好各工程师的仓库,移植或设置好开发环境,使base软件可以通过编译;
- Boot刷写开发:配置驱动,并基于以往项目完成27、31等服务的开发;
- 驱动配置:基于硬件原理图完成Port、Dio、Adc的配置并完成硬件抽象层Ad采集等基本功能的驱动开发;
- 部分诊断开发:根据上位机需求的观测量,进行一些诊断的开发,如10、22服务等,使测试项报错或者采集的Ad数据可写在指定DID并呈现在上位机的可视化界面中;
- 通讯开发:部分移植或进行无复杂协议栈的片间通讯开发。例如导入一路dbc,实现一路can通讯,以及Soc联调后调通一路Spi等;
- 测试帧开发:一般情况,DV软件会设置简单的Spi的测试case,例如一个测试帧的发送和接收,一个计数器等;
- 电源管理:实现软件的上下电逻辑,设计功能实现的必要delay;
- CDD开发:复杂驱动开发,包括使用的PMIC和必要片间通讯协议(针对不设置BSW层的DV软件)
产测阶段:
链路调通的DV软件可被移植作为产测软件的base,在多数情况下不会新增很多内容。一般来说,会新增2E服务,写入产测软件版本号等类似需求。同时,由于产测软件是预留给产线生产下线的过程做验证测试的软件,会合并在量产软件中,所以最开始memmap会单独预留产测软件的起始地址。
量产阶段:
以DV软件完成的基本通讯和boot刷写作为base,在DV软件提供的硬件抽象层加入符合量产软件需要的额外Port以及Dio,同时可能需要调整部分架构,并基于配置工具引入完整协议栈进行通讯开发。经过联调的Spi可以与Soc端实现大数据通讯,根据需求配置以太网通讯。如果DV软件已完成平台化需求和功能实现,则量产项目前期准备工作可大大减少,量产软件开发内容大致如下:
- 底层软件开发:使用配置工具完成协议栈配置、诊断配置、OS配置等;
- 应用层软件开发:Spi应用层功能实现、功能安全开发、诊断调查表功能实现等
技术细节
按照项目交付顺序,PM首先会根据以往项目经验以及客户预期交付时间节点需求,布置一个由交付时间逆推的开发时间节点,其中包括一般产品线所需要的硬件、软件、算法等部门的各个交付大节点。因此风险评估会给到每个部门不同的节点交付压力。例如硬件部门需要走在最前面,对应的设计冻结节点就会远早于基础软件。底层软件的节点也会在算法和平台之前。
针对Mcu开发的第一个节点会是安排DV软件先在少数家里工厂生产出来的A0样板进行摸底试验,主要是验证物理层和链路层是否符合设计要求,实验内容简单,实际项目中,可能开发板并没有完整贴片,甚至可能连can controller都没有,或者部分飞线。可以简单进行比如spi可以通讯,ad采样的验证。随之而来的是优化(如A1样、B0样、B1样)和实验(如常稳、高低温实验等)的同步进行直到DV的全部实验通过,并保留各阶段的试验样件。
客观来说,DV软件是完全对内的验证软件,并不需要交付客户,所以几乎完全是针对供应商开发需求而设计的,针对公司本身业务进行合理设计可以节省验证和开发的成本。产测软件也是对内的测试软件,但是因为部分供应商可能需要借助外部工厂进行生产,所以定制化需求相比DV来讲可能更大些。而量产软件(或称APP软件)是未来直接安装在汽车上的控制器总成中交付的软件,是符合客户全部需求的完全对客户交付的软件,因此毫无疑问的最复杂,在开发过程中需要符合ASPICE流程,功能实现的过程中需要不断进行单元测试和系统测试。有些产测软件的需求可能包含于量产软件中,所以需要设计从产测跳转到APP的功能,也可能涉及在产测软件写入,在量产软件读对应DID。
小结
汽车行业对于成本非常的敏感,不同Tier1给出的方案并不会有很大偏差,竞品差异体现在Soc端的芯片选择。博主针对一年半的从业经验,总结了交付给某OEM的客户项目ADAS域控制器开发流程,仅供参考。