乐于分享
好东西不私藏

汽车中央域控制器的系统设计、软件设计以及开发环境搭建

汽车中央域控制器的系统设计、软件设计以及开发环境搭建

 引 言

今天推荐一本书:《汽车域控制器软件开发实践》,本书由一线汽车软件专家撰写,全景拆解域控制器开发全流程,覆盖硬件基础、基础软件、系统设计、实时/自适应应用开发、系统集成、实践案例,为域控制器开发提供全链路技术指南。 

通过以下链接可直接购买:

 正 文:

本文将详细讲解中央域控制器(CDCM)的系统设计、软件设计以及开发环境搭建,为后续开发工作奠定基础。

#01

系统设计

本节将讲解中央域控制器的系统设计工作,包括硬件模块的组成,以及与整车线束连接的电源、I/O、通信等引脚的定义,旨在为读者呈现中央域控制器的整体架构与硬件接口特性。

1.1 硬件模块

中央域控制器的硬件模块组成如图 5-1 所示。

1. 电源模块

中央域控制器通过 B+ 引脚接到整车蓄电池,将蓄电池输入的宽范围电压(如 9 ~ 16V)转换为 ECU 内部芯片所需的稳定电压(如 5V 、3.3V 等),为整个 ECU 供电。它通过滤波、稳压等措施处理输入电源,抑制电源噪声和纹波,且具备过电压、欠电压、过电流、过热等多重保护机制,防止异常工况损坏 ECU。

图 5-1 中央域控制器的硬件模块组成

中央域控制器通过 KL15 引脚接入整车 ON 挡电源,作为 ECU 的休眠和唤醒信号。当KL15 为高电平时,中央域控制器正常工作;当 KL15 为低电平时,同时 CAN 总线也满足休眠条件时,中央域控制器会进入休眠模式。

2. 通信模块

(1) CAN 通信

中央域控制器配备 6 个 CAN 接口:CAN1 ~ CAN6。各接口分别连接整车不同的功能域,实现与各域内其他 ECU 的通信。其中, CAN1 连接车身域 ECU ,CAN2 连接动力域 ECU, CAN3 连接底盘域 ECU ,CAN4 连接座舱域 ECU ,CAN5 连接智能驾驶域 ECU ,CAN6 连接诊断仪。总线默认传输速率为 500kbit/s,且每路 CAN 均支持中央域控制器的唤醒功能。

(2) LIN 通信

中央域控制器设有 LIN1 和 LIN2 两个接口,其中 LIN1 连接多功能方向盘,LIN2 连接组合开关,两者传输速率均为 19.2kbit/s,且每路 LIN 同样具备唤醒功能。

(3) 以太网交换机

以太网交换机包含 100Base-T1 和 100Base-Tx 等多种以太网接口。中央域控制器配置 3路 100Base-T1 接口,分别连接智能座舱域控制器、智能驾驶域控制器及动力底盘域控制器;一路 100Base-Tx 接口连接诊断仪,作为以太网诊断的通信通道。

3. 处理器模块

中央域控制器集成了两个 MCU 和一个 MPU:MCU 负责运行高实时性的控制任务,MPU 则承担需高算力支持的复杂任务。各处理器模块通过核间交互协同工作,既确保了实时控制的精准性,又满足了复杂任务的运算需求,最终实现中央域控制器的整体功能,并促进各功能间的高效协作。

4. ADC 模块和 I/O 接口

中央域控制器配备 ADC1 ~ ADC4 共 4 个 ADC 接口,用于将模拟信号转换为数字信号,并分别采集制动踏板、加速踏板、电池温度传感器及电机温度传感器的信号。同时,中央域控制器包含多个 I/O 接口,用于驱动灯光、门锁、雨刮等执行器,以控制汽车上各类执行器的动作。

5. 存储模块

中央域控制器包含 QFlash 存储器和 eMMC 存储器:QFlash 存储器用于存储 MCU 的程序与数据,eMMC 存储器则用于存储 MPU 的系统镜像及文件系统数据。其中, QFlash 为NOR 型 Flash ,eMMC 为 NAND 型 Flash,它们具备存储容量大的特点,在汽车域控制器中应用广泛。

此外,中央域控制器还配备 EEPROM 存储器。这类存储器虽容量较小,但具有擦除次数可达百万次的特性,因此适用于 MCU 中存储容量需求小但读写频率高的数据,如诊断数据等。

1.2 功能概述

中央域控制器整合了车身控制、动力底盘控制及网联终端等整车核心功能,通过将这些原本分散于多个 ECU 的功能集成于单一域控制器中,能够有效减少 ECU 的数量。这一整合不仅直接降低了整车的硬件采购成本与线束布置成本,还因功能模块的集中化管理,显著加快了车辆功能的迭代更新速度。

1. 车身控制

车身控制用于对汽车车身域的各类执行器进行控制。当用户操作车身域的开关、按键、旋钮等部件时,可驱动车身域的灯光、车窗、门锁、雨刮、座椅等执行器完成相应动作。车身控制具体包含以下功能。

1)灯光控制功能:实现对近光灯、远光灯及位置灯的控制。

2)车窗控制功能:实现遥控钥匙升降车窗、中控升降车窗。

3)门锁控制功能:实现机械钥匙解 / 闭锁、遥控钥匙解 / 闭锁、中控解 / 闭锁功能。

4)雨刮控制功能:实现雨刮挡位控制、自动雨刮及雨刮洗涤控制。

5)座椅控制功能:包括座椅按摩、座椅通风及座椅加热功能。

2. 动力底盘控制

动力底盘控制负责对动力域和底盘域的各类传感器信号、总线输入信号进行处理,这些信号将用于控制电机、电池及变速器,进而实现对车辆速度、电源及挡位的调控。动力底盘控制具体包括以下功能。

1)挡位控制:接收换挡器的硬线信号,执行换挡逻辑,并向变速器发出换挡控制指令。

2)能量回收:车辆行驶时,当挡位处于 D 挡(R 挡无回收)且车速较高的工况下,若驾驶员松开加速踏板,系统会控制电机适度回收部分动能,将其转化为电能存储回电池。

3)蠕行控制:当车辆挡位切换至 D/R 挡,且加速踏板、制动踏板及巡航功能均未激活时,车速最终会稳定在较低水平并匀速行驶。

4)防溜坡控制:该功能辅助驾驶员进行坡道起步,当驾驶员将挡位切换至 D/R 挡、松开制动踏板准备起步时,系统会协助阻止车辆下溜,使驾驶员能够从容完成加速起步操作。

5)高压上下电:包括钥匙控制高压上下电、充电控制高压上下电,以及紧急情况下的高压下电;若充电前电池管理系统有热管理请求,则还需控制电池进行预热。

6)驱动行驶控制:车辆上高压后,当挡位切换为 D 挡或 R 挡,驾驶员踩下加速踏板时,车辆便会启动并开始行驶。

3. 网联终端

网联终端是实现车辆网联功能的核心载体,远程控制、远程 OTA 刷写、数据上传、预约充电等功能均需依托网联终端实现。网联终端与车企云平台建立连接时,需先通过握手鉴权等流程确定双方通信的加密算法,后续与云平台的所有通信均基于加密报文进行,以保障信息安全。连接建立后,云平台可实时监控车辆位置并接收车辆数据,从而支撑各项远程功能的实现。网联终端具体包括以下功能。

1)远程控制:用户通过手机 App 远程操作车辆,可实现车门解 / 闭锁、灯光开关、空调启停及温度调节等功能。

2)远程 OTA 刷写:主机厂通过 OTA 功能向用户推送软件更新包,用户可借此完成车辆升级,优化车辆各项功能与性能。

3)数据上传:将整车运行过程中产生的行驶数据打包后,同步上传至主机厂云平台及国家监管平台,不仅可实时监控车辆运行数据,还能通过对行驶数据的分析,助力主机厂优化车辆能耗、开展预测性故障诊断等,从而持续提升车辆性能。

#02

软件设计

本节讲解中央域控制器的软件设计,我们按照模块化的设计方法,将 5.1.2 小节的功能拆解为车身控制软件、动力底盘控制软件和网联终端软件。其中车身控制软件和动力底盘控制软件分别部署在处理器模块的两个 MCU 上,网联终端软件模块部署在处理器模块的 MPU 上。

2.1 车身控制软件设计

车身控制软件采用分层架构,分为应用层、RTE(运行时环境)层、基础软件层及MCAL。其中,应用层软件采用组件化设计方法,通过多个独立组件实现车身控制逻辑,各组件借助 RTE 接口获取整车挡位、车速等输入信号;基础软件层提供通信、诊断、路由、存储等基础服务;MCAL 则负责提供 CAN 、LIN 等通信模块的驱动程序,以及控制门锁、雨刮电机等执行器的 I/O 驱动程序。车身控制软件的分层设计如图 5-2 所示。

图 5-2 车身控制软件分层设计

(1)应用层

车身控制软件的应用层负责实现车身控制的功能逻辑。软件架构师会将功能需求进行拆解,并设计为独立的组件(见图 5-2),并在每个组件内部完成相应的控制逻辑设计。

(2) RTE 层

车身控制软件的 RTE 层为应用层软件提供两类接口:一是用于获取车速、挡位等信号的输入接口;二是用于对灯光、门锁、雨刮等执行器进行控制的输出接口。

(3) 基础软件层

车身控制软件通过基础软件层实现系统的核心基础服务,具体分为 3 类:

  • 管理类:基础软件管理(BswM)、通信管理(ComM)、非易失性存储管理(NvM)。

  • 通信类:通信服务(Com)、CAN 接口(CanIf)、PDU 路由(PduR)。

  • 诊断类:诊断事件管理(Dem)、诊断通信管理(Dcm)。

(4) MCAL

MCAL 提供 3 类驱动。

  • 通信驱动:CAN 驱动、LIN 驱动。

  • I/O 驱动:ADC(模数转换)驱动、Port 驱动、DIO 驱动、PWM(脉宽调制)驱动。

  • 系统驱动:MCU 驱动、看门狗(WDG)驱动。

2.2 动力底盘控制软件设计

与车身控制软件相比,动力底盘控制软件更为复杂。该域的诸多功能除了需要实现核心控制逻辑外,还需结合车辆实际运行工况进行大量实车标定,以达成最佳控制效果。动力底盘控制功能的软件分层设计如图 5-3 所示。

图 5-3 动力底盘控制软件的分层设计

(1) 应用层

动力底盘控制软件的应用层负责实现动力底盘控制逻辑。软件架构师同样需要将功能需求进行拆解,并设计为多个独立的组件,并在每个组件内部完成对应功能的逻辑设计。在中央域控制器中,动力底盘控制应用层的组件具体包括:挡位控制组件、能量回收组件、蠕行控制组件、防溜坡控制组件、高压上下电组件、驱动行驶控制组件等。

(2) RTE 层

动力底盘控制软件的 RTE 层为应用层提供获取车速、整车挡位、电机转速、电机温度及电池温度等信号的接口。动力底盘控制软件所采用的基础软件及 MCAL 驱动,与车身控制软件的相关配置类似,此处不再展开叙述。

2.3 网联终端软件设计

网联终端软件采用分层架构,划分为应用层、中间件层、操作系统层及驱动层。其中,应用层的软件负责实现网联终端所需的功能,中间件层采用 AUTOSAR AP 定义的标准软件模块,操作系统层一般使用 Linux 系统,驱动层则负责实现以太网、实时时钟、存储器、以太网交换机等底层硬件的驱动。网联终端的软件架构如图 5-4 所示。

图 5-4 网联终端的软件架构

1. 应用层

网联终端软件的应用层包含以下功能。

1)车云连接:负责实现与云平台的握手认证及加密通信,保障车端数据的信息安全。

2)OTA 升级:接收车云平台下发的 OTA 升级指令后,从平台下载升级包;升级包经安全校验通过后,将分发并安装至车辆各 ECU。

3)远程控制:接收车云平台的远程控制指令,执行对车辆的远程操控,并将控制结果反馈至车云平台。

4)预约充电:支持车主自主设定充电起始时间,当到达设定时间时,网联终端可唤醒车辆并控制其启动充电流程。

5)数据上传:采集车辆运行数据后,按法规及主机厂要求的格式打包,并传输至车云平台。

2. 中间件层

网联终端软件的中间件层采用 AUTOSAR AP 的软件标准,为应用层提供一系列标准化服务,所涉及的组件如下。

1)执行管理组件:控制应用软件的启动顺序及其启动依赖性问题。

2)健康管理组件:监控应用软件的运行状态,若发生运行崩溃,将重新启动崩溃的应用软件,确保网联终端软件功能的完整性。

3)日志和跟踪组件:记录应用软件的运行日志,以对应用软件进行故障排查和运行行为追溯。

其他组件的功能见名知意,不再赘述。

3. 操作系统层

操作系统作为网联终端软件的运行载体,为应用软件及 AUTOSAR AP 软件组件提供运行支撑,并通过系统调用接口实现应用软件之间、应用软件与 AUTOSAR AP 软件组件之间的通信交互。

4. 驱动层

驱动层提供以太网、实时时钟、存储器等硬件设备的驱动程序。应用软件及 AUTOSAR AP 软件组件通过调用这些驱动程序,实现对中央域控制器硬件设备的访问与控制。

#03

开发环境搭建

本节讲解中央域控制器的开发环境搭建,由于中央域控制器的处理器包含 MCU 和MPU 两种类型,因此需要分别搭建 MCU 与 MPU 的开发环境。

3.1 MCU 开发环境搭建

中央域控制器的车身控制软件模块与动力底盘控制软件模块均部署在 MCU 上。开发这两个软件模块需用到 Simulink 和 S32 Design Studio 集成开发环境。其中, Simulink 用于开发车身控制及动力底盘控制的应用软件模型并生成应用代码(参见 3.1.2 小节);S32 Design Studio 集成开发环境则负责集成和编译应用层代码、基础软件及 MCAL 驱动,最终构建出可执行程序。

1. Simulink 工程创建

车身控制软件模块与动力底盘控制软件模块的 Simulink 工程由两部分工作构成:一是顶层架构设计,二是功能逻辑设计。顶层架构设计由软件架构工程师负责,过程中需将待开发功能拆解为独立的应用组件,同时设计每个组件的端口(用于组件间及组件与基础软件模块间的通信交互),并为每个组件关联对应需求。这些经划分的组件是开发团队协作开发的基础。

下面演示如何在 Simulink 中创建 AUTOSAR 软件架构工程:首先在 Matlab 中打开 Simulink,选择“新建”选项卡,找到 AUTOSAR Blockset 选项后,单击 Software Architecture 选项即可创建 AUTOSAR 软件架构工程,如图 5-5 所示。

图 5-5 创建 AUTOSAR 软件架构工程

创建好 AUTOSAR 软件架构工程后,即可开始设计组件。在 COMPONENT 选项卡中,选择一个 Component 组件,将鼠标移至该组件的边缘位置,为其创建输入或输出端口。所有端口创建完成后,将鼠标放在组件的上边缘位置,为该组件链接 Simulink 模型。此模型用于实现该组件的功能逻辑,如图 5-6 所示。

2. 软件集成环境搭建

接下来搭建车身控制软件模块和动力底盘控制软件模块的集成开发环境。 S32 Design Studio 是恩智浦 S32 系列芯片的集成开发环境,集成了代码编辑器、编译器及链接器,可用于完成车身控制软件模块和动力底盘控制软件模块的开发与运行调试。

图 5-6 创建 Component 组件以及链接 Simulink 模型

打开 S32 Design Studio 后, 单击左上角的 File 菜单, 通过 New 命令创建新的应用工程(这里同时要通过子菜单选择目标芯片的集成开发环境),即可完成集成工程的创建,如图 5-7 所示。

下面还需为 S32 Design Studio 安装扩展组件。针对车身控制软件模块和动力底盘控制软件模块的开发,我们需安装 GCC 、S32 Design Studio Platform Package 、S32 Design Studio Platform Tools Package 等扩展工具包。图 5-8 所示为 S32 Design Studio 中用于安装扩展工具包的菜单项,单击该菜单项即可进入扩展工具安装界面。

3.2 MPU 开发环境搭建

网联终端软件模块运行于嵌入式 Linux 系统。以Ubuntu 操作系统作为编译主机,需在其上安装代码编辑工具 VS Code 及交叉编译工具 ARM-GNU-GCC 。Ubuntu 操作系统可安装在虚拟机中,此处选用 VMware 虚拟机,读者可自行下载安装。虚拟机镜像建议选择Ubuntu 22 版本,可从 Ubuntu 官网获取,下载完成后在 VMware 中安装即可。

图 5-7 创建 S32 Design Studio 集成工程

图 5-8 S32 Design Studio 的安装扩展工具包

交叉编译工具采用最新版本的 ARM-GNU-GCC,在虚拟机的 Ubuntu 操作系统上,可通过 wget 命令从官网下载工具链安装包,指令如下:

Wget https://releases.linaro.org/components/toolchain/binaries/latest-7/gcc-linaro -7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz

下载完成后,执行解压命令将 ARM-GNU-GCC 解压至系统目录,最后将其添加到环境变量中。在 Ubuntu 终端输入指令 $CC –version,若能正确输出如下版本信息,则表明ARM-GNU-GCC 已成功安装到系统中。

aarch64-fsl-linux-gcc (GCC) 9.2.0Copyright (C) 2019 Free Software Foundation, Inc.This is free software; see the source for copying conditions. There is NOwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

#04

小 结

本文主要讲解中央域控制器的系统设计与软件设计,同时详细介绍了 MCU 与 MPU 的开发环境搭建。完成上述准备工作后,读者即可开始后续的实战开发。

/ END /