座舱域的通信方案
座舱域控器作为整车的几大域控器之一,提供驾驶娱乐的功能。比如中控、副驾、仪表、HUD等。
就座舱来说,座舱域控制器以及MCU,加上一系列的硬件外设。以及再此硬件之上的软件系统,构成了整个座舱系统。
同时,通过车载网络线束与其他域相连(比如车身域、动力域等等),实现域间的互联控制。
单从座舱域软件来说,一般情况下包括中控系统、仪表系统、MCU等。比如基于高通Qnx+hypervisor下,可以是:
- 仪表:Qnx
- 中控:Android(基于高通Hyperviser)
- MCU一般使用基于AutoSar架构的软件,单独的芯片通过串行通信或网络通信与座舱域控器连接。
座舱域仪表与中控通信
这里指,座舱域中不同软件域间如何进行通信,如Android系统(中控)与Qnx系统(仪表)如何进行信息交互,考虑下面的场景:
- Android上的导航应用如何将导航信息告知仪表?
- Qnx如何将仪表上的报警信息告知Android系统?
- Android(中控)和Qnx(仪表)如何同步时间?
可以考虑三种方式:
- 共享分区:Qnx与Android拥有共享分区,两个系统都可以访问这个分区,实现文件的读写交互操作。
- HAB:Qnx通过HAB将硬件虚拟化给Android访问,可以借助可以机制来达到通信的目的。
- RPC:现在有很多流行的RPC中间件,比如Android14开始自带了GRpc实现域间通信。通过 RPC的方式,Qnx和Android可以实现域间通信。
座舱域域间通信
这里指,座舱域中Soc与MCU间的通信。座舱中MCU作为通信控制器,完成CAN/LIN通信、其他几大域间的通信、诊断通信等等。Soc通过MCU与其他几大域控制器进行通信,另外Soc的电源输入一般是MCU控制的。
串行通信
一般来说,MCU和Soc间可以使用一些串行通信的,通过物理连接、同步时钟。
- MCU,比如基于AutoSar架构,BSW中提供通信协议封装库,SWC的各个功能模块通过协议库发送消息给SOC。
- SOC,比如Qnx系统中利用通信协议库,解析MCU发送的消息,并派发个功能模块进行相应功能。
网络通信
MCU和SOC间,也可以通信网络进行通信。比如通过网线连接到Switch上,就可以进行网络通信(Socket)。
PS:
这里只说了座舱域内的通信,如果整车通信考虑,还有如域间通信、云端通信、诊断通信等等。受限于某些原因。其实整车的网络拓扑,可以理解为通过不同的线束将各个域控制器连接起来,每个域控制器下又通过不同线束连接各个设备。然后利用不同的通信协议,实现车内/外的互联。
这里只做基础通用的说明,不涉及具体技术与实现。