前言
2020年,国内汽车电子圈刮起一股 "软件定义汽车(Software Define Vehicle)" 热潮,各种 "软件定义汽车" 背景下的文章、会议等层出不穷,但经过笔者一番调查发现SDV这个概念在国外并没有这么热!很奇怪的是, "软件定义汽车" 在国内这么热,但是以下问题却很难找到答案:
到底什么是软件定义汽车?
到底是软件定义架构还是架构定义软件?
带着这些疑问,最近对 "软件定义汽车" 进行了深入的研究,如有不对之处,望不吝赐教!
一、软件定义汽车哪来的?
可能有的朋友会好奇,这个系列是软件为汽车赋能,又为啥要谈软件定义汽车?我们先往下看!
第1个问题:软件定义汽车哪来的?
百度百科指出:软件定义汽车是由其自动驾驶事业部总经理于2016年提出的概念。
真的是这样吗?
不是的:一开始的时候(自2000年起),出现较多的是软件定义无线电 Software-defined Radio (SDR)、软件定义功能 Software-defined Functions (SDF)等概念。
笔者查阅文献发现,早在2007年4月份的IEEE会议论文集中就明确提出了 "软件定义汽车 Software Define Vehicle (SDV)" 的概念。当然,笔者认为,软件定义汽车的概念应该是早在2007年4月之前就有了。除了SDV外,还有另外一种 "软件定义汽车" 的概念,即"Software Define Car (SDC)" ,SDC笔者最早是在2013的一个外国网友的博客中看到的。
虽然 "软件定义汽车 (SDV)" 的概念较早的被提出,但是在之后的一段时间内,并没有什么热度,反而热度较高的是 "软件定义网络 (SDN)" ,其中有很多与汽车相关:如软件定义车辆网络 (SDVN)、软件定义网络架构 (SDNA)等等。
在IT界流传着这样一种说法:IT世界中的所有事物都可以被标记为 "软件定义的"。有软件定义的网络、软件定义的存储、软件定义的计算、软件定义的数据中心等等。
因此,笔者认为 "软件定义汽车" 应该是在2007年之前源自IT界 !并不是在2016年才被提出!
二、到底什么是软件定义汽车?
第2个问题:到底什么软件定义汽车?
为了搞清楚这个问题,我们将 "软件定义汽车" 拆成三段:
1)软件
2)定义
3)汽车
至此,延伸出以下问题:

先来看本节第一个问题:什么软件来定义汽车?
在汽车领域,软件主要分以下几类(这里,开发类的软件工具不在讨论范围之内):

图1 汽车电子相关的软件
需要说明的是,其他软件如板载支持包(BSP)、Boot等软件因为与硬件相关度很大暂不在讨论范围内。
上图中的虚拟化技术,笔者曾看到:有人说hypervisor是一种软件虚拟化,笔者认为hypervisor是虚拟化硬件的,所以准确点说应该是:
hypervisor是一种硬件虚拟化技术,这种技术是一种软件。
除了hypervisor之外,还有一种叫做container的虚拟化技术,它是用来虚拟化OS的,因此可以称为是一种软件虚拟化技术。
那么本节中的第2个问题:软件定义汽车的什么?
在讨论软件定义汽车的什么之前,我们先暂定 "软件定义汽车" 中的 "软件" 是代表汽车相关的所有软件及软件技术。
汽车包含非常多的东西,有网络、架构、功能、软件、线束、硬件、乃至螺丝、车架、轮胎等等。
那么软件能定义汽车的什么呢?螺丝、车架?不沾边。
笔者认为,软件定义汽车更多的是指定义汽车功能
因为有了仪表显示功能,我们可以看到续航、车速等
因为有了电池管理功能,我们可以为汽车充放电
因为有了自动驾驶功能,我们可以手离开方向盘等等
但是返回来看本节中的第1个问题:什么软件定义汽车?所有的软件都是在定义这些功能吗?不是的,就像有的朋友会说,之前就没有基础软件,应用软件跟基础软件是在一起的,都是应用软件。所以,笔者认为能够定义汽车功能的是应用软件。
至此,我们初步回答了本节的第3个问题:应用软件定义汽车功能!(连载文章,请关注下一篇)