汽车基础软件漫谈——第二回:汽车基础软件的定义

发布于 2022-04-02 21:18:05

汽车基础软件,又称为底层软件,虽然现在经常被提到,大家似乎都很熟悉了,但仔细考究就会发现,目前并没有一个被行业各方都认同的统一的定义。就连专注于汽车基础软件的AUTOSAR标准,给出的定义也非常鸡肋:

The Basic Software (BSW) provides the infrastructural (schematic dependent and schematic independent) functionalities of an “Electronic Control Unit”.

AUTOSAR_logo.png

无非就是把Basic一词换成了Infrastructure,没有实质内容(此处仅指概念上,AUTOSAR标准所定义的内容当然是非常多的)。所以目前每个开发组织对于基础软件的理解细究起来其实并不完全相同。一个非常典型的例证就是实际开发过程中底软团队和应用层开发团队之间经常就某个功能应该由谁来开发而争个不休,比如对某个开关信号的Debounce操作。

其实,AUTOSAR标准所定义的基础软件是各家会员单位基于自己对基础软件的理解相互沟通妥协后的结果,是各家会员单位具有普遍共识的部分。除此以外,还有大量的基础软件模块并没有被标准化。

以最常见的MCU驱动(Mcal)为例,AUTOSAR标准中仅对GPT、Watchdog、Flash、CAN、SPI、ADC、Port等MCU外设驱动进行了标准化,如下图中橙色部分所示。而MCU其它常见的外设,如I2C、MSC、DMA、UART、MPU、EMM、GTM等许多模块并没有被标准化,如下图中灰色部分所示。
Mcal.png

BMW和Bosch分别是九大核心成员中OEM和Tier1的代表。我们来看下他们对于基础软件的理解。

BMW尽管是一家OEM,但其软件开发能力却毫不逊色,这也是为什么它能牵头推动AUTOSAR标准的制定。BMW在集团范围内定义了名为BSP(BMW Software Platform)的标准软件平台,这个平台主要包括BMW AUTOSAR Core(简称BAC)和adaptive BMW AUTOSAR Core(简称aBAC)。在这里面,除了常规的AUTOSAR标准中所定义的内容,还包含有用于软件更新的Bootloader、信息安全增强软件包、以太网诊断扩展包等众多独门秘技。这些内容以企标或软件模块的形式传递给供应商,由供应商进行实现或集成。
65af7989876fcfa50f31f8e1348cd5e7.png

Bosch作为汽车电子领域常年排名世界第一的零部件供应商,一直在引领着汽车技术的进步,在汽车基础软件方面其实也毫不例外,只是从来没有专门拿出来说而已。Bosch早在2005年左右就已经形成自己较为成熟的基础软件,当时称为Core Software,它主要包含Base System和Diagnosis System 两大部分,其中前者主要包含硬件相关功能组件,如OS、启动管理、复位管理,刷新用Bootloader、硬件封装模块、服务函数库、标定与测量驱动等,而后者主要包含常规通信、诊断通信、故障管理、网络管理、网关等功能组件。如今AUTOSAR标准中所提及的复杂驱动当时并不属于Core Software,后来,随着软件架构的不断发展,Bosch对于基础软件范围的定义也持续进化。如今,Bosch的汽车基础软件虽然也大多采用了AUTOSAR标准,但在标准之外,仍然存在远超标准内容的功能组件,尤其是在功能安全、信息安全、外设驱动、Ethernet等关键核心功能领域。
bf2310e6e3ad662f9fb1b525d67ed7a8.png

由此可见,对于基础软件的具体内涵,目前各家都有自己的定义,AUTOSAR所定义的内容更多的只是各家的共性部分。如果非要给基础软件下一个定义的话,倒是可以参考国内AUTOSEMO组织在《中国汽车基础软件发展白皮书1.0》中的描述:

汽车基础软件是用于实现汽车系统软硬件解耦,且与用户应用功能无关,但为应用功能提供一系列服务的支撑软件集合。

对于不熟悉汽车基础软件的人而言,这种定义可能还是过于抽象。如果要用一种形象的方式解释什么是基础软件,笔者认为可以将基础软件比作人体的神经系统,相对应地,控制器硬件可以理解为身体,而应用软件可以理解为大脑。

以AUTOSAR架构为例:

  • 系统技术栈部分可以理解为负责控制新陈代谢的神经
  • 存储技术栈可以理解为负责记忆的神经
  • 通信技术栈可以理解为我们的听觉和语言神经
  • IO和复杂驱动技术栈可以理解为负责感觉和运动的神经。

神经系统.png

举个例子,应用软件准确计算出了某个结果,希望驱动某个执行器开启或关闭但控制器却没有发出用于控制执行器的物理信号,而此时控制器硬件没有任何问题,这很像一个人想活动四肢,但却因为神经系统出现问题而动弹不得。

下图是本人总结的传统汽车基础软件全景图。其中橙色的模块是AUTOSAR标砖已涵盖的模块,而灰色的模块则是AUTOSAR尚未涉及的模块或功能包。需要说明的是,归入复杂驱动中软件从严格意义上来说,并不都属于复杂驱动,只是它们尚未被标准化,而暂时寄存在这里而已,如Hypervisor、功能安全、信息安全、高级以太网驱动、硬件加速模块驱动等。

BSW全景图.png

那这些尚未被AUTOSAR标准化的内容占比有多少呢?不同的组织或许有不同的答案,如果对标Bosch,占比则不低于50%!

综上所述,汽车基础软件没有严格的定义,但可以明确的是,AUTOSAR不等于基础软件,基础软件的范畴要远超AUTOSAR标准中所定义的内容,二者不能划等号,它们的关系更像是早餐与豆浆油条的关系。AUTOSAR只是标准化了各家会员单位的共识部分,各家的还有很多“独门秘籍”并没有拿出来标准化。
类比豆浆油条.png

对于组织而言,按照AUTOSAR标准只能开发出或采购到自家产品所需的部分基础软件模块,一定还有需要额外自行开发的基础软件;在实际项目中,必须明确基础软件的具体范围,而不能描述的过于笼统或者简单的与AUTOSAR划等号。否则,我们的项目将每天都有很多“意外”,很难“On Time,On Spec,On Cost”地交付。

对于个人而言,基础软件除了AUTOSAR以外,还有众多待研究和开发的地方,而这些尚未标准化的内容往往是具有更高价值的功能,因此我们有充足的个人职业发展空间,而不会让自己局限为一个简单的所谓的“工具人”,除非我们自我设限。

或许在接下来我们了解了汽车基础软件的发展历史后,我们会更加充满信心。

汽车基础软件漫谈——第三回:汽车基础软件的起源与演进

早餐vs豆浆油条.jpg

0 条评论

发布
问题