内容提要
引言
1. AUTOSAR架构
1.1 自适应平台(AUTOSAR AP)
1.2 经典平台(AUTOSAR CP)
1.2.1 基础软件(BSW)
1.2.2 运行时环境(RTE)
1.2.3 应用软件(ASW)
1.2.4 功能库(Library)
1.3 AUTOSAR软件开发流程简介
2. Non-AUTOSAR软件
2.1 软件开发套件(SDK)
2.2 中间件(Middleware)
2.2.1 CAN协议栈
2.2.2 LIN协议栈
2.2.3 UDS协议栈
2.2.4 XCP协议栈
2.2.5 TCP/IP协议栈
2.2.6 以太网音视频桥(AVB)协议栈
2.2.7 时间敏感网络(TSN)协议栈
2.2.8 电机驱动库(Motor Control Library)
3. 操作系统(OS)
3.1 AUTOSAR OS
3.1.1 OSEK OS
3.2 Non-AUTOSAR OS
3.2.1 FreeRTOS
3.2.2 其他RTOS
4. 启动及信息安全软件(Security SW)
4.1 安全启动固件(Secure Boot Firmware)
4.2 硬件安全模块固件(HSM Firmware)
4.3 启动加载程序(bootloader)
4.4 远程固件更新程序(FOTA)
5. 功能安全软件(FuSa SW)
5.1 功能安全外设驱动(SPD)
5.2 功能安全库(Safety Library)
6. 软件开发工具链(Toolchain)
6.1 集成开发环境(IDE)
6.1.1 基于GNU工具链 + Eclipse/VSCode IDE
6.1.2 IAR IDE
6.1.3 GHS MULTI IDE
6.1.4 Keil MDK IDE
6.2 调试器和量产工具(离线/批量Flash编程器)
6.3 图形化配置工具
6.3.1 SDK配置工具
6.3.2 MCAL配置工具
6.3.3 中间件软件配置工具
6.4 电机调试和参数标定可视化工具
总结
引言
随着当今汽车产业的电动化(Electrification)、自动驾驶(Automous Drive)和网联化(Connected)技术升级和应用普及,现代汽车集成的智能传感器、智能执行器数量成倍增加,对汽车总线网络带宽的需求越来越大、对CPU内核的运算处理能力要求越来越高,对功能安全和信息安全的关注越来越多。车规MCU作为实现这些汽车功能电控单元(ECU)、域控制器(DCU)、区域控制器(ZCU)的核心芯片,其软件开发生态是客户高效快速且可靠的开发各类汽车功能应用软件的基础,是一颗车规MCU芯片能否成功的关键所在,其重要性日益凸显。
因此,本文将结合笔者在车规MCU芯片行业的多年从业经验和对汽车电子产业及市场的洞察,给大家详细介绍一下车规MCU的软件开发生态,希望对当前正在进行的中国车规MCU国产化替代上下游整车厂(Car OEM)、零部件供应商(Tier-1)和国产芯片公司以及相关第三方软件/方案和工具链开发公司有所帮助和启发。
1. AUTOSAR架构
AUTOSAR(AUTomotive Open System ARchitecture)是一种开放的汽车电子系统架构,旨在提供一种标准化的方法来开发和管理汽车电子系统的软件。AUTOSAR架构的目标是实现汽车电子系统的模块化、可重用和可扩展,以提高开发效率和系统的可靠性。
AUTOSAR架构由三个主要的层次组成:应用层(Application Layer)、运行时环境层(Runtime Environment)和基础设施层(BSW)。
应用层是汽车电子系统的最高层,包括应用软件组件和应用软件功能。应用层定义了汽车电子系统的功能和行为,并提供了与其他系统和组件的接口。
运行时环境层提供了AUTOSAR系统的运行时支持。它包括操作系统、通信协议栈、服务和管理功能。运行时环境层负责管理系统资源、调度任务、处理通信和数据传输等。
基础软件层,也称作基础设施层,提供了AUTOSAR系统的基础设施支持。它包括通信总线、诊断和调试功能、存储管理和配置管理等。基础设施层提供了系统的硬件和软件基础设施,以支持系统的功能和性能。
AUTOSAR架构的优势在于提供了一种标准化的方法来开发和管理汽车电子系统的软件。它提供了模块化、可重用和可扩展的设计,使开发人员能够更高效地开发和维护汽车电子系统。此外,AUTOSAR架构还提供了一种标准化的接口和通信协议,使不同的汽车电子系统能够互相通信和协作。
1.1 自适应平台(AUTOSAR AP)
AUTOSAR自适应平台(AUTOSAR Adaptive Platform,简称AUTOSAR AP)是AUTOSAR架构的一种扩展,专门用于支持高度自动化和自动驾驶功能的汽车电子系统。AUTOSAR AP提供了一种灵活的软件架构,可以适应不同的硬件平台和应用场景。
AUTOSAR AP的核心特点包括:
- 面向服务的架构:AUTOSAR AP采用面向服务的架构,将汽车电子系统划分为不同的服务,每个服务都有明确定义的接口和功能。这种架构使得不同的服务可以独立开发、测试和部署,提高了系统的灵活性和可重用性。
- 灵活的通信机制:AUTOSAR AP支持多种通信机制,包括以太网、CAN-FD和FlexRay等。这些通信机制可以根据具体的应用需求进行灵活配置,以满足不同的实时性和带宽要求。
- 安全和可靠性:AUTOSAR AP提供了丰富的安全和可靠性功能,包括故障检测和处理、数据完整性保护、安全通信和认证等。这些功能可以帮助汽车电子系统抵御各种安全威胁和故障情况,提高系统的可靠性和安全性。
- 自动驾驶支持:AUTOSAR AP专门为自动驾驶功能提供了支持,包括传感器数据处理、环境感知、路径规划和控制等。这些功能可以帮助汽车电子系统实现高度自动化和自动驾驶功能,提高驾驶安全性和舒适性。
AUTOSAR AP是一种专门用于支持高度自动化和自动驾驶功能的汽车电子系统架构,具有灵活的软件架构、多样化的通信机制、丰富的安全和可靠性功能,以及专门的自动驾驶支持。AUTOSAR AP运行硬件通常为MPU或者CPU/AI芯片,而非传统的车规MCU芯片,因此不是本文介绍的重点,也不再展开。
1.2 经典平台(AUTOSAR CP)
AUTOSAR经典平台(AUTOSAR CP)是AUTOSAR软件架构的一种实现,旨在提供一种标准化的方法来开发和管理汽车电子系统的软件。AUTOSAR CP定义了汽车电子系统的软件组件、运行时环境和通信机制,以实现模块化、可重用和可扩展的系统开发。
在AUTOSAR CP中,软件组件被分为应用软件组件(SWC)和基础软件组件(BSW)。SWC是实现特定功能的软件模块,例如引擎控制、制动系统等。BSW是提供基础功能和服务的软件模块,例如通信协议栈、操作系统等。
运行时环境层提供了AUTOSAR系统的运行时支持,包括任务管理、内存管理、通信管理等功能。运行时环境层负责调度和管理软件组件的执行,并提供了通信机制,使软件组件能够相互交互。
通信机制在AUTOSAR CP中使用基于事件的触发机制,软件组件之间通过事件触发和接收来进行通信。这种事件触发机制可以实现松耦合的组件间通信,提高系统的可扩展性和灵活性。
总的来说,AUTOSAR CP提供了一种标准化的软件架构,使汽车电子系统的开发和管理更加高效和可靠。它促进了软件的模块化和可重用性,提高了系统的可扩展性和灵活性。
1.2.1 基础软件(BSW)
AUTOSAR CP基础软件(BSW)是AUTOSAR架构中的一个重要组成部分,它提供了一系列的基础软件模块,用于管理和控制汽车电子系统的各种功能和服务。BSW的功能和意义如下:
- 标准化接口:BSW定义了标准化的接口和协议,使不同供应商开发的软件模块可以互相交互和协作。这样一来,汽车制造商可以更容易地集成不同的软件组件,提高开发效率和系统的可重用性。
- 功能模块:BSW提供了一系列的功能模块,包括诊断、通信、网络管理、电源管理、操作系统等。这些功能模块可以满足汽车电子系统的各种需求,如故障诊断、通信协议支持、电源管理等。
- 可配置性:BSW允许汽车制造商根据具体的需求进行配置和定制。通过配置不同的模块和参数,可以实现不同的功能和性能要求,提高系统的灵活性和可扩展性。
- 故障管理:BSW提供了故障管理功能,可以监测和处理系统中的故障。它可以记录和报告故障信息,帮助诊断和修复问题,提高系统的可靠性和安全性。
- 软件更新和维护:BSW支持软件的在线更新和维护。通过远程诊断和配置,可以对系统进行升级和修复,减少维护成本和停机时间。
AUTOSAR CP基础软件的功能和意义在于提供一种标准化的方法来开发和管理汽车电子系统的软件,提高开发效率、系统的可重用性和可靠性,同时降低维护成本和停机时间。
1.2.1.1 微控制器抽象层(MCAL)
AUTOSAR CP的微控制器抽象层(MCAL)是AUTOSAR软件架构中的一个重要组成部分,它提供了对底层硬件的抽象和访问接口,以实现软件与硬件之间的解耦和可移植性。
MCAL的功能主要包括以下几个方面:
- 时钟和复位管理:MCAL提供了对微控制器时钟和复位控制的接口,包括时钟源选择、时钟分频、复位源选择等功能。
- GPIO控制:MCAL提供了对通用输入输出引脚的控制接口,包括引脚模式设置、引脚电平读写、引脚中断配置等功能。
- ADC/DAC控制:MCAL提供了对模数/数模转换器的控制接口,包括采样率设置、通道选择、数据转换等功能。
- PWM控制:MCAL提供了对脉冲宽度调制器的控制接口,用于控制电机驱动、LED亮度调节等功能。
- 定时器和计数器控制:MCAL提供了对定时器和计数器的控制接口,用于实现定时中断、周期性任务等功能。
- 中断管理:MCAL提供了对中断控制器的接口,用于配置和处理中断请求。
- 通信接口控制:MCAL提供了对串行通信接口(如UART、SPI、I2C等)的控制接口,用于实现与外部设备的数据交换。
- Flash和EEPROM控制:MCAL提供了对闪存和EEPROM的控制接口,用于存储和读取数据。
通过MCAL的抽象接口,应用软件可以独立于具体的微控制器硬件实现,实现可移植性和可重用性,简化了软件开发和维护的工作。
1.2.1.2 服务层(Service Lay**er)
AUTOSAR CP的服务层(Service Layer)是AUTOSAR架构中的一个重要组成部分,它提供了一系列的服务和功能,以支持汽车电子应用的开发和运行。服务层的主要功能包括:
- 通信服务:服务层提供了通信协议栈,用于实现不同ECU之间的通信。它支持多种通信协议,如CAN、FlexRay、Ethernet等,并提供了数据传输和消息处理的功能。
- 诊断服务:服务层提供了诊断功能,用于检测和诊断车辆系统的故障。它支持故障码的生成和解析,以及故障诊断的通信协议,如UDS、ISO-TP等。
- 内存管理服务:服务层提供了内存管理功能,用于管理ECU的内存资源。它支持内存分配和释放,以及内存保护和安全性的控制。
- 定时服务:服务层提供了定时功能,用于实现任务的调度和时间触发的事件处理。它支持周期性任务和事件触发任务的管理,以及时间同步和时钟管理的功能。
- 电源管理服务:服务层提供了电源管理功能,用于管理ECU的电源供应和功耗控制。它支持电源状态的管理和切换,以及低功耗模式的管理。
- 安全服务:服务层提供了安全功能,用于保护车辆系统的数据和通信安全。它支持加密和解密算法,以及身份验证和访问控制的功能。
- 识别和配置服务:服务层提供了识别和配置功能,用于识别和配置连接到ECU的外部设备和传感器。它支持设备的自动识别和配置,以及设备的状态监测和管理。
通过提供这些服务和功能,AUTOSAR CP的服务层可以帮助开发人员更方便地开发和集成汽车电子应用,提高系统的可靠性和安全性,同时降低开发和维护成本。
1.2.1.3 ECU抽象层(ECU Abstraction Layer)
AUTOSAR CP的ECU抽象层(ECU Abstraction Layer)是AUTOSAR架构中的一个重要组件,它提供了一种标准化的方式来访问ECU硬件和软件资源,以实现应用程序与底层硬件之间的解耦和可移植性。
ECU抽象层的功能包括:
- 硬件抽象:ECU抽象层提供了对底层硬件资源的抽象,包括处理器、存储器、外设等。它定义了统一的接口和操作方法,使得应用程序可以独立于具体的硬件平台进行开发和移植。
- 通信抽象:ECU抽象层提供了统一的通信接口,使得应用程序可以通过标准化的方式与其他ECU进行通信,包括CAN、LIN、FlexRay等总线协议。
- 时钟和定时器抽象:ECU抽象层提供了对时钟和定时器的抽象,使得应用程序可以独立于具体的时钟和定时器硬件进行开发和移植。
- 电源管理抽象:ECU抽象层提供了对电源管理的抽象,包括电源状态管理、低功耗模式管理等,以实现对电源的有效管理和节能。
- 诊断和故障管理抽象:ECU抽象层提供了对诊断和故障管理的抽象,包括故障检测、故障处理、故障存储等,以实现对ECU的自诊断和故障管理能力。
通过ECU抽象层,应用程序可以以一种统一的方式访问和控制底层硬件资源,从而实现应用程序的可移植性和可重用性。同时,ECU抽象层还提供了一些标准化的接口和功能,以简化开发过程并提高系统的可靠性和可维护性。
1.2.1.4 复杂驱动(CDD)
AUTOSAR CP的复杂驱动(CDD)是为了实现复杂的传感器评估和执行器控制而设计的。它通过直接访问微控制器来实现,使用特定的中断和/或复杂的微控制器外设、外部设备通信收发器、ASIC等,以满足特殊的功能和时序要求。此外,CDD还可以用于实现增强的服务/协议或封装非AUTOSAR系统的传统功能。CDD的实现可能与应用、微控制器和ECU有关。最后,CDD可以作为引入现有或新概念到AUTOSAR软件架构中的迁移机制。
在将CDD集成到AUTOSAR架构中时,设计人员应考虑以下几点:
- 提供用户手册,以便于集成和向客户提供信息。
- 描述CDD的功能操作,包括初始化、正常运行、关闭、故障操作等。
- 描述与其他BSW模块、SchM和Rte的关系和需求,例如从NvM获取的内存块、配置的临界区等。
- 描述接口,包括服务的名称、描述、可重入性、参数名称、类型、范围、返回值名称、类型、范围等。
- 描述非功能需求,如时序和行为要求、资源使用情况、与其他BSW模块或SW-C的行为等。
- 描述Dem错误、可选的Det错误、调试变量等。
- 描述配置参数的名称、类型、范围、值。
- 描述内存映射需求,如Flash、RAM的使用情况。
- 描述使用限制和未解决的问题。
- 描述与其他模块的集成约束和要求。
- 提供示例。
CDD的实现需要遵守AUTOSAR的一些约束,包括:
- 遵守输入规范。
- 使用SchM或操作系统机制来保护关键资源。
- 可通过EcuM和BswM模块管理CDD的模式。
- 可使用内存映射机制来处理内存段。
- 可使用Det或Dem模块报告错误。
关于CDD的文件结构,建议至少提供以下文件:
- CDD_<MODULENAME>.c:CDD模块的代码文件。
- CDD_<MODULENAME>_Irq.c:中断函数的文件。
- CDD_<MODULENAME>_Callout.c:回调函数的文件。
- CDD_<MODULENAME>_Lcfg.c:链接时从配置生成的C对象的文件。
- CDD_<MODULENAME>_PBcfg.c:构建时从配置生成的C对象的文件。
1.2.2 运行时环境(RTE)
AUTOSAR CP运行时环境(RTE)是AUTOSAR架构中的核心组件,它实现了AUTOSAR虚拟功能总线(VFB)的接口,并提供了通信基础设施和访问基础软件组件(如操作系统)的服务。RTE的功能和意义如下:
- 通信基础设施:RTE负责管理应用软件组件之间的通信。它提供了消息传递机制和事件触发机制,使得应用软件组件可以相互发送和接收消息,实现数据的交换和共享。
- 访问基础软件组件:RTE提供了访问基础软件组件(如操作系统)的服务接口。应用软件组件可以通过RTE来调用操作系统的功能,如任务调度、资源管理等。这样,应用软件组件可以独立于具体的操作系统,提高了软件的可移植性和可重用性。
- 组件映射和调度:RTE负责将应用软件组件映射到具体的ECU上,并进行任务调度。它根据系统配置和约束,将应用软件组件分配到不同的ECU上,并确保系统按照预期的方式运行。
- 标准化接口:RTE定义了与AUTOSAR OS和应用软件组件之间的标准化接口。这些接口确保了不同组件之间的互操作性和兼容性,简化了系统的开发和集成过程。
RTE的意义在于提供了一种标准化的方法来开发和管理汽车电子系统的软件。它实现了模块化、可重用和可扩展的架构,提高了开发效率和系统的可靠性。同时,RTE还支持汽车通信协议的标准化,使得不同的汽车电子系统可以进行互联和通信。通过使用RTE,汽车制造商和供应商可以更加高效地开发和集成汽车电子系统,降低开发成本和时间。
1.2.3 应用软件(ASW)
AUTOSAR CP应用软件(ASW)是AUTOSAR架构中的一部分,它包括汽车电子系统的应用软件组件和功能。ASW的功能是实现汽车电子系统的各种功能和行为,例如发动机控制、制动系统、车身电子等。ASW的意义在于提供了一种标准化的方法来开发和管理汽车电子系统的软件,使得不同厂商和供应商的软件可以互相兼容和交互。通过使用ASW,汽车制造商可以更高效地开发和集成各种功能模块,提高开发效率和系统的可靠性。同时,ASW还提供了一种模块化和可重用的设计方法,使得软件的维护和更新更加容易。总之,ASW的功能和意义在于推动汽车电子系统的标准化和互操作性,提高开发效率和系统的可靠性。
1.2.4 功能库(Library)
1.3 AUTOSAR软件开发流程简介
AUTOSAR软件开发流程是指在AUTOSAR架构下进行软件开发的一系列步骤和方法。它包括以下几个主要阶段:
- 需求分析:在这个阶段,根据汽车电子系统的需求,定义和分析软件功能和性能要求。这包括确定软件组件、接口和模块的功能和规格要求。
- 架构设计:在这个阶段,根据需求分析的结果,设计AUTOSAR软件的整体架构。这包括定义软件组件的功能和接口,以及确定软件模块的分层结构和通信机制。
- 组件开发:在这个阶段,根据架构设计的要求,开发和实现各个软件组件。这包括编写和调试软件代码,以及进行单元测试和集成测试。
- 配置和集成:在这个阶段,将开发好的软件组件进行配置和集成。这包括将组件配置到目标硬件平台上,并进行组件之间的接口对接和功能测试。
- 验证:在这个阶段,对已集成的AUTOSAR软件进行验证。这包括对软件的功能和性能进行测试,以确保软件满足需求和质量标准。
- 发布和部署:在这个阶段,将经过验证和验证的AUTOSAR软件发布和部署到实际的汽车电子系统中。这包括将软件加载到目标硬件平台上,并进行系统级测试和调试。
AUTOSAR软件开发流程的目标是提高软件开发的效率和质量,实现软件的可重用性和可维护性。通过遵循这个流程,可以更好地管理软件开发过程,减少错误和风险,并提高汽车电子系统的性能和可靠性。
2.Non-AUTOSAR软件
虽然AUTOSAR是一个开发软件架构,在代码重用性、可维护性、开发效率和代码质量方面有诸多优势,但是使用AUTOSAR标准需要一定的授权费用且大多数AUTOSAR软件和配置工具都是商用付费软件,需要额外购买license授权。因此,只有量大的平台化项目,Car OEM和Tier-1才会完全采用AUTOSAR架构软件进行开发 , 以cover上百万的AUTOSAR软件费用。
对于项目预算有限、非平台化的小项目,非AUTOSAR(Non-AUTOSAR)软件开发是一个不错的选择。虽然很多大客户有自己在某个/多个应用开发方面多年积累的软件库可以使用,但是面对更新换代越来越快且越来越复杂的车规MCU硬件和日益复杂的应用功能软件需求,芯片厂商免费提供的车规MCU软件开发套件(SDK)将能够帮助客户减少熟悉新硬件底层的时间、复用中间件软件,让客户专注于应用层功能软件的开发和测试,提高软件开发效率,从而缩短项目开发周期。
2.1 软件开发套件(SDK)
车规MCU的软件开发套件(SDK)是为了支持开发人员在车规MCU上进行软件开发而设计的。它提供了一套完整的工具和库,用于开发、编译、调试和测试车规MCU上的应用程序。
车规MCU的SDK通常包括以下几个主要组件:
- 底层驱动层(LLD):提供了与硬件外设的接口,包括GPIO、UART、SPI、CAN等。开发人员可以使用驱动层来配置和控制这些外设。
- 硬件抽象层(HAL)或者外设抽象层(PAL): 将实现功能相同/相近的不同外设IP的底层驱动层(LLD)接口进行封装,对上层应用或者中间件软件提供统一的API接口以屏蔽不同硬件平台的外设IP寄存器/功能差异,方便跨平台驱动代码移植。
- 操作系统(OS):提供了多任务管理、任务调度、内存管理等功能,以支持多任务应用程序的开发。常见的车规MCU操作系统包括AUTOSAR OS和FreeRTOS等。
- 中间件(Middleware):提供了一些常用的功能模块,如通信协议栈、文件系统、加密库等。开发人员可以使用中间件来简化开发过程,提高开发效率。
- 工具链:包括编译器、调试器和仿真器等工具,用于编译、调试和测试应用程序。常见的车规MCU工具链包括IAR Embedded Workbench、Keil MDK等。
- 示例代码和文档:提供了一些示例代码和详细的文档,帮助开发人员快速上手和理解车规MCU的功能和使用方法。
车规MCU的SDK架构和功能可以根据具体的芯片厂商和应用需求而有所不同。开发人员可以根据自己的需求选择合适的SDK,并根据SDK提供的文档和示例代码进行开发。
2.2 中间件(Middleware)
汽车电子应用需要很多不同种类的中间件(Middleware)软件来实现高效可靠的数据传输、网络管理、参数标定/校准、错误诊断和高效专用控制算法,其中最重要的中间件包括:
2.2.1 CAN协议栈
汽车CAN协议栈是一种软件组件,用于实现汽车电子系统中的CAN总线通信功能。它包含了一系列的功能软件,用于处理CAN总线的物理层和数据链路层的通信协议。
汽车CAN协议栈的功能软件主要包括以下几个方面:
- 物理层驱动程序:负责与CAN总线物理层进行通信,包括发送和接收CAN消息,以及处理CAN总线的电气特性和信号传输。
- CAN消息处理:负责解析和封装CAN消息,包括标识符的解析、数据的封装和解封装等。
- 错误检测和处理:负责检测和处理CAN总线上的错误,包括位错误、帧错误、CRC错误等,以确保数据的可靠性和完整性。
- 时序控制:负责控制CAN消息的发送和接收时序,包括帧的发送间隔、帧的优先级等。
- 网络管理:负责管理CAN总线上的节点和网络拓扑,包括节点的加入和退出、节点的状态管理等。
- 诊断和故障处理:负责诊断CAN总线上的故障和错误,并提供相应的故障处理机制,以保证系统的可靠性和稳定性。
汽车CAN协议栈是实现汽车CAN总线通信功能的关键软件组件,它提供了一系列的功能软件,用于处理CAN总线的物理层和数据链路层的通信协议,以实现可靠和高效的汽车电子系统通信。
2.2.2 LIN协议栈
汽车LIN协议栈是用于实现LIN总线通信的软件组件集合。它包含了实现LIN协议的各个层次的功能软件,以便实现LIN总线的通信和控制。
汽车LIN协议栈通常包含以下功能软件:
- 物理层驱动:负责将MCU的串行通信模块输出的信号转换为LIN总线的电平信号,并提供LIN总线的电气特性要求的支持。
- LIN协议栈:实现了LIN协议的各个层次,包括帧封装、帧解析、错误检测和纠正、帧发送和接收等功能。
- LIN网络管理:负责管理LIN总线上的节点,包括节点的配置、识别、诊断和错误处理等。
- LIN应用层:根据具体的应用需求,实现了与LIN总线通信相关的应用功能,如车门控制、窗户控制、灯光控制等。
通过使用汽车LIN协议栈,开发人员可以方便地实现LIN总线通信功能,并根据具体的应用需求进行定制和扩展。
2.2.3 UDS协议栈
汽车UDS协议栈是一种用于汽车电子控制单元(ECU)之间进行诊断和通信的标准协议。UDS(Unified Diagnostic Services)协议定义了一组诊断服务和通信机制,用于在车辆中进行故障诊断、参数配置和编程等操作。
UDS协议栈通常包含以下功能软件:
- 通信层:负责处理UDS协议的通信,包括CAN总线通信、LIN总线通信等。
- 诊断服务:实现了UDS协议定义的各种诊断服务,如读取故障码、清除故障码、读取参数、编程等。
- 诊断会话管理:管理UDS协议中的会话,包括默认会话、扩展会话、安全访问会话等。
- 诊断报文处理:处理UDS协议中的诊断报文,包括解析报文、生成响应报文等。
- 安全访问:提供安全访问机制,确保只有授权的设备或用户可以进行诊断操作。
- 诊断数据管理:管理诊断数据,包括故障码存储、参数配置等。
- 诊断事件管理:处理诊断事件,如故障码触发、诊断请求等。
UDS协议栈的功能软件可以根据具体的应用需求进行定制和扩展,以满足不同车辆和ECU的诊断和通信需求。
2.2.4 XCP协议栈
汽车XCP协议栈是一种用于汽车电子控制单元(ECU)参数标定的软件协议。它基于AUTOSAR标准,并提供了一套功能软件来支持ECU的诊断、调试和参数配置等功能。
汽车XCP协议栈的功能软件包括以下几个方面:
- XCP通信层:提供了与ECU之间的通信接口,支持基于CAN、FlexRay、以太网等不同的物理层通信协议。
- XCP协议解析:负责解析和处理XCP协议消息,包括命令和响应消息的解析、参数传输和校验等。
- XCP数据采集和测量:支持对ECU内部的数据进行采集和测量,包括读取和写入ECU内部的变量、参数和寄存器等。
- XCP诊断和调试:提供了诊断和调试ECU的功能,包括读取和修改ECU的内部状态、执行诊断测试和故障码读取等。
- XCP参数配置:支持对ECU的参数进行配置和调整,包括校准和校验参数的设置和更新。
- XCP仿真和测试:提供了对ECU进行仿真和测试的功能,包括模拟ECU的行为和响应,以及生成和发送模拟的XCP消息。
2.2.5 TCP/IP协议栈
以太网TCP/IP协议栈是一组用于以太网通信的网络协议集合,它包含了多个功能软件模块,用于实现不同的网络功能。常见的以太网TCP/IP协议栈包含以下功能软件:
- 网络接口层(Network Interface Layer):负责与物理网络接口进行通信,包括驱动程序和硬件抽象层。
- 网络层(Network Layer):实现IP协议,负责数据包的路由和转发,包括IP地址分配和路由表管理。
- 传输层(Transport Layer):实现TCP和UDP协议,负责数据的可靠传输和错误检测,包括连接管理、流量控制和拥塞控制。
- 应用层(Application Layer):提供各种应用程序所需的协议和服务,包括HTTP、FTP、SMTP等。
- 网络配置和管理(Network Configuration and Management):提供网络配置和管理的功能,包括DHCP、DNS等。
- 安全性和加密(Security and Encryption):提供网络通信的安全性和加密功能,包括SSL/TLS、IPSec等。
以太网TCP/IP协议栈的功能软件模块可以根据具体的应用需求进行选择和配置,以满足不同的网络通信需求。
2.2.6 以太网音视频桥(AVB)协议栈
汽车以太网音视频桥(AVB)协议栈是一种用于实现车载音视频传输的协议栈。它基于IEEE 802.1 Audio Video Bridging (AVB)标准,提供了实时、可靠的音视频传输和同步功能。汽车以太网AVB协议栈包含以下功能软件:
- AVB协议:实现了AVB网络的基本协议功能,包括时钟同步、流量调度、流量控制等。
- IEEE 802.1AS时钟同步协议:用于实现网络中各个节点的时钟同步,确保音视频数据的同步传输。
- IEEE 802.1Qat流量调度协议:用于实现网络中各个节点的流量调度和优先级控制,确保音视频数据的实时传输。
- IEEE 802.1Qav流量控制协议:用于实现网络中各个节点的流量控制,确保音视频数据的可靠传输。
- IEEE 1722音视频传输协议:定义了音视频数据的封装和传输格式,确保音视频数据的正确解析和传输。
- IEEE 1733时钟同步协议:用于实现网络中各个节点的时钟同步,确保音视频数据的同步传输。
- Media Clock Server (MCS):提供了音视频数据的时钟同步服务,确保音视频数据的同步传输。
- Media Stream Reservation Protocol (MSRP):用于实现音视频数据的流量调度和优先级控制,确保音视频数据的实时传输。
- Stream Reservation Protocol (SRP):用于实现音视频数据的流量调度和优先级控制,确保音视频数据的实时传输。
Audio Video Transport Protocol (AVTP):用于实现音视频数据的封装和传输,确保音视频数据的正确解析和传输。
汽车以太网AVB协议栈提供了一套完整的功能软件,用于实现车载音视频数据的实时、可靠传输和同步。
2.2.7 时间敏感网络(TSN)协议栈
汽车时间敏感网络(TSN)协议栈是一种用于汽车领域的网络通信协议栈,旨在提供高可靠性、低延迟和实时性的通信。它基于以太网技术,并通过时间同步和流量调度等机制来满足汽车电子系统对实时通信的需求。
TSN协议栈包含以下功能软件:
- 时间同步:通过IEEE 802.1AS协议实现网络中各个节点的时间同步,确保数据在网络中的传输具有一致的时间参考。
- 流量调度:通过IEEE 802.1Qbv和IEEE 802.1Qbu协议实现对网络中不同流量的调度和优先级管理,确保高优先级的数据能够及时传输。
- 带宽保障:通过IEEE 802.1Qav协议实现对网络中不同流量的带宽分配和保障,确保实时数据的传输不受其他数据流的影响。
- 时钟同步:通过IEEE 802.1AS和IEEE 802.1AS-Rev协议实现网络中各个节点的时钟同步,确保数据在不同节点之间的时间一致性。
- 时钟分发:通过IEEE 802.1AS和IEEE 802.1AS-Rev协议实现网络中时钟的分发,确保各个节点能够获取到一致的时间参考。
- 优先级管理:通过IEEE 802.1Qbv协议实现对网络中不同数据流的优先级管理,确保高优先级的数据能够优先传输。
- 数据包过滤:通过IEEE 802.1Qci协议实现对网络中数据包的过滤和筛选,确保只有符合条件的数据包能够被传输。
TSN协议栈的功能软件可以根据具体的应用需求进行配置和定制,以满足不同汽车电子系统的实时通信需求。
2.2.8 电机驱动库(Motor Control Library)
汽车电机驱动库(Motor Control Library)是一种用于控制和驱动汽车电机的软件库。它包含了一系列功能算法和库函数,用于实现电机控制的各种功能和特性。
汽车电机驱动库通常包含以下功能算法和库函数软件:
- 电机控制算法:包括速度控制、位置控制、扭矩控制等算法,用于实现电机的精确控制和调节。
- 电机参数识别算法:用于识别电机的参数,如电感、电阻、转子惯量等,以便更好地进行控制和调节。
- 电机保护算法:包括过流保护、过温保护、过压保护等算法,用于保护电机和驱动器免受损坏。
- PWM生成算法:用于生成脉宽调制(PWM)信号,控制电机驱动器的输出功率。
- 传感器接口函数:用于与电机传感器(如编码器、霍尔传感器等)进行通信和数据交换。
- 通信接口函数:用于与外部控制器(如ECU)进行通信,实现与整车系统的集成。
- 故障诊断和故障处理函数:用于检测和处理电机和驱动器的故障,保证系统的安全和可靠性。
通过使用汽车电机驱动库,开发人员可以快速实现电机控制功能,提高开发效率和产品质量。同时,库函数软件的模块化设计也使得系统的维护和升级更加方便。
3. 操作系统(OS)
一方面,随着汽车功能的日益复杂,前后台调度的bare-metal软件架构已无法满足汽车应用需求,基于操作系统(OS-Operation System)的多任务调度和资源管理软件需求越来越多;另一方面:摩尔定理带来的车规MCU芯片硬件主频/算力不断提高,片内集成的存储器足够大,能够满足OS内核带来的额外实时性和存储器消耗。
车规MCU的通常集成的存储器都比较有限(Flash:几KB ~ 64MB, SRAM:几KB ~ 10MB),且不带内存管理单元(MMU),所以无法运行Windows和Linux这类大型桌面非实时操作系统。
车规MCU的应用属于典型的嵌入式实时应用,因此其使用的操作系统(OS-Operation System)必须是实时操作系统(RTOS - Real-Time Operation System)。
3.1 AUTOSAR OS
AUTOSAR OS(AUTomotive Open System ARchitecture Operating System)是AUTOSAR架构中的一个组件,用于管理和协调汽车电子系统中的软件任务和中断。它提供了以下功能特性:
- 任务和中断管理:AUTOSAR OS可以创建、启动、停止和删除任务,并处理中断请求。它可以根据任务的优先级和调度策略来调度任务的执行,确保任务按照预定的时间要求执行。
- 时钟和定时器管理:AUTOSAR OS可以管理系统时钟和定时器,提供精确的时间基准和定时功能,以支持任务和中断的时间触发。
- 通信和同步机制:AUTOSAR OS提供了多种通信和同步机制,如事件、信号量、邮箱和消息队列,用于任务之间的数据交换和同步。
- 内存管理:AUTOSAR OS提供了内存管理功能,包括动态内存分配和释放,以及内存保护和错误检测机制,确保系统的稳定性和安全性。
- 错误处理和故障管理:AUTOSAR OS具有错误处理和故障管理功能,可以检测和处理任务和中断的运行时错误,包括任务超时、堆栈溢出等。
- 电源管理:AUTOSAR OS可以管理系统的电源状态,包括进入和退出低功耗模式,以最大程度地减少能耗。
AUTOSAR OS是一个功能强大的操作系统,用于管理和协调汽车电子系统中的软件任务和中断,提供了丰富的功能特性,以满足汽车电子系统的实时性、可靠性和安全性要求。
3.1.1 OSEK OS
OSEK(Open Systems and their Interfaces for Electronics in Motor Vehicles)是一种开放的嵌入式实时操作系统(RTOS),专为汽车电子系统开发而设计。OSEK OS提供了一种标准化的方法来管理和调度汽车电子系统中的任务和资源。
OSEK(Open Systems and the corresponding Interfaces for Automotive Electronics)是一种用于汽车电子系统的开放式操作系统标准。OSEK OS具有以下任务调度和中断管理的特点:
- 任务调度:OSEK OS采用固定优先级的静态优先级调度算法。每个任务都被分配了一个固定的优先级,优先级高的任务具有更高的执行优先级。任务的调度是基于优先级的,优先级高的任务会抢占优先级低的任务,以确保高优先级任务的及时响应。
- 中断管理:OSEK OS提供了中断管理机制,可以处理硬件中断和软件中断。中断可以被分为两个级别:类别2中断和类别1中断。类别2中断是不可抢占的,只有在任务执行完毕后才能被处理。类别1中断是可抢占的,可以在任务执行过程中被触发并立即处理。
- 任务间通信:OSEK OS提供了一些机制来实现任务间的通信和同步。例如,事件标志可以用于任务之间的同步和通信,任务可以等待某个事件的发生。消息队列可以用于任务之间的消息传递,任务可以发送和接收消息。
- 资源管理:OSEK OS提供了资源管理机制,可以对共享资源进行保护和管理。资源可以是共享的全局变量、设备或其他系统资源。通过使用资源锁定机制,可以确保在任何给定时间只有一个任务可以访问共享资源,以避免竞争条件和数据一致性问题。
OSEK OS的任务调度和中断管理特点使得它适用于实时性要求较高的汽车电子系统,能够提供可靠的任务执行和中断处理能力。
OSEK OS的特点和价值在于:
- 实时性:OSEK OS是一个实时操作系统,能够满足汽车电子系统对实时性的要求。它提供了任务调度和优先级管理机制,确保任务按照预定的时间要求执行。
- 可扩展性:OSEK OS支持多任务并发执行,可以管理和调度多个任务。它提供了任务和资源的管理机制,使得系统可以灵活地扩展和配置。
- 可靠性:OSEK OS提供了错误检测和处理机制,能够及时发现和处理系统中的错误。它还提供了任务间通信和同步机制,确保系统的稳定性和可靠性。
- 可移植性:OSEK OS是一个开放的标准,可以在不同的硬件平台上实现和使用。它提供了一套统一的接口和规范,使得开发人员可以方便地移植和重用代码。
- 标准化:OSEK OS是一个国际标准,被广泛应用于汽车电子系统的开发。它提供了一种统一的开发方法和规范,促进了汽车电子系统的互操作性和可维护性。
综上所述,OSEK OS具有实时性、可扩展性、可靠性、可移植性和标准化等特点,为汽车电子系统的开发提供了一种可靠和高效的解决方案。
3.2 Non-AUTOSAR OS
3.2.1 FreeRTOS
FreeRTOS是一个开源的实时操作系统(RTOS),专为嵌入式系统设计而开发。它提供了一种轻量级的任务调度机制,能够有效地管理多个任务的执行。以下是FreeRTOS的核心任务调度机制、中断和资源管理的实现特点:
- 任务调度机制:FreeRTOS使用优先级抢占式调度算法,任务的执行顺序由任务的优先级决定。当有多个任务处于就绪状态时,优先级较高的任务会被立即执行,而优先级较低的任务则会被暂时挂起,等待执行机会。任务调度器会根据任务的优先级动态地进行任务切换,以实现任务的快速响应和高效利用系统资源。
- 中断管理:FreeRTOS提供了可重入的中断服务例程(ISR)机制,可以在中断服务例程中调用RTOS的API函数。这使得在中断处理过程中可以进行任务切换、事件通知等操作,提高了系统的实时性和可靠性。同时,FreeRTOS还提供了中断屏蔽机制,可以在中断处理过程中屏蔽其他中断的干扰,确保关键任务的实时性。
- 资源管理:FreeRTOS提供了多种同步和通信机制,如信号量、互斥锁、消息队列等,用于实现任务之间的同步和通信。这些机制可以有效地防止资源竞争和死锁的发生,保证任务的正确执行顺序和数据的一致性。此外,FreeRTOS还提供了内存管理功能,可以动态地分配和释放内存,提高系统的灵活性和资源利用率。
FreeRTOS通过其灵活的任务调度机制、可重入的中断管理和强大的资源管理功能,为嵌入式系统提供了一种可靠、高效的实时操作系统解决方案。它被广泛应用于汽车电子、工业控制、医疗设备等领域,为开发人员提供了方便、可靠的开发平台。
3.2.2 其他RTOS
在汽车领域,常用的RTOS除了以上介绍的AUTOSAR/OSEK OS和FreeRTOS之外,包括但不限于以下几种:
3.2.2.1 QNX OS
QNX是一种实时操作系统(RTOS),具有以下功能特性:
- 实时性:QNX操作系统是一个实时操作系统,提供可靠的实时性能。它能够在严格的时间约束下运行任务,并确保任务按时完成。
- 微内核架构:QNX采用微内核架构,将操作系统核心的功能模块化,以提高系统的可靠性和灵活性。这种架构允许模块之间的独立运行和更新,而不会影响整个系统。
- 分布式处理:QNX操作系统支持分布式处理,可以在多个处理器上运行任务,并通过网络进行通信和协调。这使得QNX适用于复杂的分布式系统和嵌入式网络应用。
- 实时调度:QNX操作系统提供了灵活的实时调度算法,可以根据任务的优先级和时间约束进行任务调度。它能够快速响应高优先级任务,并确保低优先级任务不会阻塞系统。
- 强大的网络支持:QNX操作系统具有强大的网络支持,包括TCP/IP协议栈、套接字接口和网络文件系统。这使得QNX可以轻松地与其他系统进行通信和数据交换。
- 安全性:QNX操作系统具有强大的安全功能,包括访问控制、数据加密和安全通信。它提供了多层次的安全机制,保护系统免受恶意攻击和未经授权的访问。
- 可靠性和容错性:QNX操作系统具有高度的可靠性和容错性。它能够检测和恢复系统错误,并提供故障隔离和容错机制,以确保系统的稳定性和可用性。
3.2.2.2 GHS INTEGRITY OS
GHS INTEGRITY OS是一种实时操作系统(RTOS),由Green Hills Software开发。它具有以下功能特性:
- 实时性:GHS INTEGRITY OS是一个实时操作系统,具有可靠的实时性能。它能够在严格的时间约束下运行任务,并确保任务按时完成。
- 可靠性:GHS INTEGRITY OS具有高度的可靠性和稳定性。它采用了分离的内核和应用程序空间,以防止应用程序中的错误对操作系统的影响。
- 安全性:GHS INTEGRITY OS提供了强大的安全功能,包括内存保护、访问控制和安全通信。它通过严格的权限管理和隔离机制,保护系统免受恶意攻击和未经授权的访问。
- 分布式处理:GHS INTEGRITY OS支持分布式处理,可以在多个处理器上运行任务,并通过网络进行通信和协调。这使得GHS INTEGRITY OS适用于复杂的分布式系统和嵌入式网络应用。
- 内存管理:GHS INTEGRITY OS具有高级的内存管理功能,包括动态内存分配和释放、内存保护和内存池管理。这使得开发人员可以有效地管理系统的内存资源。
- 设备驱动支持:GHS INTEGRITY OS提供了广泛的设备驱动支持,包括网络、存储、通信和外设设备。这使得开发人员可以轻松地与各种硬件设备进行交互和通信。
- 多任务支持:GHS INTEGRITY OS支持多任务并发执行,可以同时运行多个任务。它提供了任务调度、同步机制和通信机制,以实现任务之间的协作和交互。
3.2.2.3 Keil RTX5 OS
Keil RTX5 OS是一款为嵌入式系统开发的实时操作系统(RTOS),具有以下功能特性:
- 抢占式多任务处理:Keil RTX5允许多个任务同时运行,每个任务具有自己的优先级。RTX5调度器确保在必要时,高优先级任务可以抢占低优先级任务。
- 任务管理:RTX5提供了任务管理功能,包括任务的创建、删除和切换等。开发人员可以根据任务的需求和优先级来管理任务。
- 任务间通信:Keil RTX5提供了多种任务间通信机制,如消息队列和邮箱。这些机制可以实现任务之间的高效数据交换,避免了忙等或轮询的需要。
- 同步原语:RTX5支持各种同步原语,如信号量、互斥锁和事件标志。这些原语有助于协调对共享资源的访问,避免竞态条件的发生。
- 内存管理:Keil RTX5包含了一个内存管理系统,可以动态分配和释放内存块。这个功能在处理可变大小的数据结构或需要动态管理内存时非常有用。
- 定时器管理:RTX5内核包含了一个定时器管理模块,提供准确的定时服务。它允许任务基于时间延迟或周期性间隔进行调度。
- 低开销:Keil RTX5设计具有低内存和处理开销,适用于资源受限的嵌入式系统。
以上是一些常见的汽车领域使用的RTOS,每种RTOS都有其特定的优势和适用场景,根据具体的应用需求和系统要求选择合适的RTOS是非常重要的。
4. 启动及信息安全软件(Security SW)
4.1 安全启动固件(Secure Boot Firmware)
车规MCU的安全启动固件(Secure Boot Firmware)是一种用于保护汽车电子系统免受恶意软件和未经授权的代码修改的安全机制。其主要功能包括以下几个方面:
- 启动验证:安全启动固件通过验证启动代码的完整性和真实性来确保系统启动过程的安全性。它会对启动代码进行数字签名验证,以确保代码未被篡改或替换。
- 防止未授权代码执行:安全启动固件会对系统中的应用程序和固件进行验证,以确保只有经过授权的代码才能被执行。它会检查代码的数字签名,并与预先存储的信任锚点进行比对,以确定代码的合法性。
- 安全更新:安全启动固件还支持安全的固件更新过程。它可以验证更新包的完整性和真实性,并确保只有经过授权的更新包才能被加载和执行。
- 安全存储:安全启动固件还可以提供安全的存储机制,用于存储敏感数据,如加密密钥和证书。这些数据可以被安全地访问和使用,以保护系统的安全性。
通过使用安全启动固件,车规MCU可以提供更高的安全性和可靠性,防止恶意软件和未经授权的代码对汽车电子系统造成的潜在威胁。
4.2 硬件安全模块固件(HSM Firmware)
车规MCU的硬件安全模块固件(HSM Firmware)是指在车规MCU芯片中集成的用于实现硬件安全功能的固件软件。它主要用于保护车辆的安全性和防止恶意攻击。
车规MCU的硬件安全模块固件具有以下主要功能:
- 安全启动(Secure Boot):确保只有经过验证的软件和固件可以在车规MCU上运行,防止未经授权的软件和恶意代码的执行。
- 密钥管理:管理和存储加密算法所需的密钥,确保密钥的安全性和保密性。
- 安全通信:提供加密和认证机制,确保车辆内部和车辆与外部系统之间的通信安全。
- 安全存储:提供加密和防篡改机制,保护存储在车规MCU中的敏感数据和配置信息的安全性。
- 安全诊断:监测和检测可能存在的安全漏洞和攻击,并采取相应的安全措施进行应对和防护。
- 安全更新:支持安全的固件和软件更新机制,确保车规MCU的安全性能得到持续改进和更新。
通过集成硬件安全模块固件,车规MCU可以提供更高的安全性和可靠性,保护车辆免受恶意攻击和未经授权的访问。这对于确保车辆的安全性和数据的保密性至关重要。
4.3 启动加载程序(bootloader)
车规MCU的启动加载程序(bootloader)是一种用于在汽车电子控制单元(ECU)上加载和更新应用程序的软件。它具有以下主要功能和实现要点:
- 引导加载:启动加载程序负责在MCU上启动和加载应用程序。它通过读取存储器中的引导加载代码,并将其加载到MCU的内部存储器中执行,从而启动应用程序。
- 存储器管理:启动加载程序需要管理存储器的分区和使用。它负责将应用程序加载到正确的存储器区域,并确保存储器的正确初始化和擦除。
- 通信接口:启动加载程序通常通过车辆网络(如CAN和LIN总线)或其他通信接口与外部设备(如诊断工具或服务器)进行通信。它使用这些接口来接收新的应用程序固件,并将其写入MCU的存储器中。
- 安全性和完整性验证:启动加载程序需要验证新的应用程序固件的安全性和完整性,以确保它是合法的和未被篡改的。它可以使用数字签名、校验和或其他安全机制来验证固件的完整性。
- 错误处理和回滚:启动加载程序需要具备错误处理和回滚机制,以应对加载过程中可能出现的错误。它可以记录错误日志、提供错误提示或回滚到之前的应用程序版本。
- 可扩展性和灵活性:启动加载程序应具备良好的可扩展性和灵活性,以适应不同的MCU和应用程序需求。它应支持不同的存储器类型、通信接口和安全机制,并能够适应不同的应用程序大小和复杂度。
- 自动化和远程更新:启动加载程序可以支持自动化的固件更新过程,使得ECU的应用程序可以远程更新,而无需人工干预。这可以提高维护效率和系统可靠性。
总之,车规MCU的启动加载程序是一种关键的软件组件,它负责在汽车ECU上加载和更新应用程序。它需要具备存储器管理、通信接口、安全性验证、错误处理和回滚等功能,并具备可扩展性和灵活性,以适应不同的MCU和应用程序需求。
4.4 远程固件更新程序(FOTA)
)
车规MCU的远程固件更新程序(FOTA)是一种通过无线通信方式对车辆中的MCU进行固件升级的技术。它的主要功能包括:
- 远程升级:FOTA允许车辆制造商通过无线网络远程升级车辆中的MCU固件,无需将车辆带回到维修中心或进行物理接口连接。
- 功能增强:FOTA可以为车辆提供新的功能和特性,通过更新MCU固件来实现。这使得车辆制造商可以在车辆上市后通过软件更新来改进和增强车辆的功能。
- 故障修复:FOTA可以用于修复MCU固件中的错误和故障。一旦发现了问题,车辆制造商可以通过远程升级来修复这些问题,而无需将车辆带回到维修中心。
实现FOTA的要点包括:
- 安全性:FOTA需要确保固件的完整性和安全性。为了防止固件被篡改或恶意软件的注入,需要使用数字签名和加密等安全机制来保护固件的传输和存储过程。
- 网络通信:FOTA需要使用无线通信技术,如蜂窝网络(如4G、5G)或车载通信系统(如V2X)来进行固件的传输。这需要确保通信的稳定性和可靠性,以及对网络带宽和延迟的适应性。
- 可靠性和回滚机制:FOTA需要确保固件升级的可靠性,以避免升级过程中的中断或失败。同时,还需要提供回滚机制,以便在升级失败或出现问题时能够恢复到之前的固件版本。
- 用户体验:FOTA应该尽量减少对车辆使用者的干扰和影响。升级过程应该在车辆停放或不使用的时候进行,以避免对车辆的正常使用造成影响。
FOTA是车联网普及后,新一代功能域控制器(DCU)和区域控制器(ZCU)架构实现的一项重要的软件技术,可以为车辆制造商提供灵活的固件管理和更新方式,以提供更好的用户体验和车辆性能。
5.功能安全软件(FuSa SW)
5.1 功能安全外设驱动(SPD)
车规MCU的功能安全外设驱动(SPD)是为了满足汽车电子系统的功能安全要求而设计的。它负责驱动功能安全外设,确保其在发生故障时能够正确地执行安全功能。SPD的设计需要遵循ISO 26262功能安全标准,并根据系统的安全需求进行相应的验证和验证。
SPD的主要功能包括:
- 故障检测和诊断:SPD需要能够监测外设的故障状态,并及时进行诊断和报告。这可以通过使用故障检测机制和故障诊断算法来实现。
- 安全数据传输:SPD需要确保外设与其他系统组件之间的数据传输是安全可靠的。这可以通过使用安全通信协议和数据完整性校验机制来实现。
- 安全控制和监控:SPD需要能够对外设进行安全控制和监控,以确保其在发生故障时能够正确地执行安全功能。这可以通过使用安全控制算法和故障恢复机制来实现。
在设计SPD时,需要考虑以下几点:
- 遵循ISO 26262标准:SPD的设计需要符合ISO 26262的要求,包括安全生命周期的管理、安全需求的分析和验证、安全功能的实现和验证等。
- 故障检测和诊断:SPD需要能够准确地检测和诊断外设的故障状态,并及时进行报告和处理。这可以通过使用故障检测机制和故障诊断算法来实现。
- 安全数据传输:SPD需要确保外设与其他系统组件之间的数据传输是安全可靠的。这可以通过使用安全通信协议和数据完整性校验机制来实现。
- 安全控制和监控:SPD需要能够对外设进行安全控制和监控,以确保其在发生故障时能够正确地执行安全功能。这可以通过使用安全控制算法和故障恢复机制来实现。
车规MCU的功能安全外设驱动(SPD)是为了满足汽车电子系统的功能安全要求而设计的,它负责驱动功能安全外设,并确保其在发生故障时能够正确地执行安全功能。在设计SPD时,需要遵循ISO 26262标准,并考虑故障检测和诊断、安全数据传输、安全控制和监控等方面的要求。
5.2 功能安全库(Safety Library)
车规MCU的功能安全库(Safety Library)是为了满足汽车电子系统的功能安全要求而设计的软件模块集合。它提供了一系列的功能安全功能和算法,用于监测和控制系统的运行,以确保系统在发生故障时能够安全地进入故障状态或安全地恢复正常工作。
车规MCU的功能安全库的核心功能包括:
- 故障检测和诊断:功能安全库可以监测系统的各个部分是否正常工作,并在发现故障时进行诊断和报警。它可以检测硬件故障、软件错误和通信故障等,并提供相应的故障诊断信息。
- 故障容错和恢复:功能安全库可以通过冗余设计和错误处理算法来提高系统的容错性。它可以检测和纠正错误,或者在发生故障时切换到备用模式,以确保系统的可靠性和稳定性。
- 安全监控和保护:功能安全库可以监控系统的安全状态,并采取相应的措施来保护系统免受潜在的安全威胁。它可以检测和防止未经授权的访问、数据篡改和恶意攻击等。
- 安全通信和数据保护:功能安全库可以提供安全的通信协议和加密算法,以保护系统中传输的数据的机密性和完整性。它可以防止数据泄露、篡改和劫持等安全风险。
车规MCU的功能安全库是为了确保汽车电子系统在发生故障时能够安全地进入故障状态或安全地恢复正常工作而设计的软件模块集合。它提供了故障检测和诊断、故障容错和恢复、安全监控和保护、安全通信和数据保护等核心功能,以提高系统的可靠性和安全性。
6. 软件开发工具链(Toolchain)
6.1 集成开发环境(IDE)
集成开发环境(IDE)是一种集成了多个软件开发工具的平台,用于帮助开发人员进行软件开发和调试。IDE的主要作用包括:
- 代码编辑:IDE提供了一个编辑器,用于编写和编辑源代码。编辑器通常具有代码自动完成、语法高亮和错误检查等功能,以提高开发效率和代码质量。
- 编译和构建:IDE集成了编译器和构建工具,可以将源代码编译成可执行文件或库。IDE可以自动执行编译和构建过程,并提供错误和警告信息,帮助开发人员及时发现和修复问题。
- 调试:IDE提供了调试器,用于在开发过程中跟踪和调试程序的执行。调试器可以设置断点、单步执行、查看变量和内存状态等,帮助开发人员定位和解决程序中的错误。
- 版本控制:IDE通常集成了版本控制系统,如Git或SVN,用于管理和跟踪代码的版本和变更。开发人员可以方便地进行代码提交、分支管理和合并操作。
- 项目管理:IDE提供了项目管理功能,可以组织和管理多个源文件、库和依赖项。开发人员可以轻松地创建、导入和管理项目,以及配置项目的构建选项和依赖关系。
- 自动化工具:IDE还可以集成其他自动化工具,如静态代码分析工具、单元测试框架和性能分析工具,以帮助开发人员提高代码质量和性能。
集成开发环境(IDE)提供了一个集成的平台,使开发人员能够更高效地进行软件开发、调试和管理。它的目标是提供一个统一的界面和工具集,简化开发流程,提高开发效率和代码质量。
6.1.1 基于GNU工具链 + Eclipse/VSCode IDE
VSCode和Eclipse IDE都是常用的集成开发环境(IDE),用于编写和调试代码。它们各自有一些优势和劣势,下面是对它们进行的简要对比:
VSCode的优势:
- 轻量级:VSCode是一个轻量级的编辑器,启动速度快,占用系统资源少,适合于资源有限的环境。
- 插件生态丰富:VSCode拥有庞大的插件市场,可以根据需要安装各种插件,扩展功能和支持多种编程语言。
- 强大的调试功能:VSCode提供了强大的调试功能,可以方便地进行断点调试、变量监视等操作。
- 跨平台支持:VSCode支持多种操作系统,包括Windows、Linux和Mac OS,可以在不同平台上进行开发和调试。
Eclipse IDE的优势:
- 功能全面:Eclipse IDE是一个功能非常全面的IDE,内置了丰富的功能和工具,包括代码编辑、调试、版本控制等。
- 集成度高:Eclipse IDE集成了多种开发工具和框架,如Java开发工具、Web开发工具等,可以满足多种开发需求。
- 社区支持强大:Eclipse IDE有一个庞大的社区,提供了大量的教程、文档和插件,方便开发者学习和解决问题。
- 可扩展性强:Eclipse IDE支持插件的开发和集成,开发者可以根据需要自定义和扩展IDE的功能。
不足之处:
- VSCode的功能相对较简单,不如Eclipse IDE功能全面。
- Eclipse IDE启动速度较慢,占用系统资源较多。
- VSCode对于一些复杂的项目,可能需要借助插件来提供更多的功能和支持。
选择使用VSCode还是Eclipse IDE,主要取决于个人的偏好、项目需求和开发环境。如果对轻量级和快速启动有较高要求,且需要丰富的插件支持,可以选择VSCode。如果需要一个功能全面、集成度高的IDE,且对启动速度和系统资源占用没有太大要求,可以选择Eclipse IDE。
目前,VSCode的轻量化灵活设计以及丰富的扩展插件,对开发者的要求比Eclipse要低不少。越来越多的车规MCU厂商选择VSCode作为其应用软件开发IDE。
6.1.2 IAR IDE
IAR IDE(Integrated Development Environment)是由IAR Systems开发的一款集成开发环境,用于嵌入式系统的软件开发。它提供了一整套工具和功能,方便开发人员进行嵌入式软件的编写、调试和部署。
IAR IDE具有以下特点和功能:
- 编译器和调试器:IAR IDE内置了高度优化的编译器,支持多种嵌入式处理器架构。它还提供了强大的调试器,可以实时监控程序的执行状态,进行断点调试和变量查看等操作。
- 代码编辑器:IAR IDE提供了功能强大的代码编辑器,支持代码自动完成、语法高亮显示、代码折叠等功能,提高了开发效率。
- 项目管理:IAR IDE可以管理多个项目,方便开发人员进行项目的切换和管理。它还提供了项目模板和代码生成器,加快了项目的启动和开发过程。
- 集成开发环境:IAR IDE集成了多个工具和插件,如版本控制系统、性能分析器、代码覆盖率工具等,方便开发人员进行全面的软件开发和测试。
- 跨平台支持:IAR IDE支持多种操作系统,包括Windows、Linux和macOS,可以在不同的开发环境中使用。
6.1.3 GHS MULTI IDE
GHS MULTI IDE是一个集成开发环境,用于嵌入式系统的软件开发。
其主要功能特性包括:
- 支持多种编程语言:GHS MULTI IDE支持多种编程语言,包括C、C++和汇编语言。
- 代码编辑器:GHS MULTI IDE提供了一个强大的代码编辑器,支持自动补全、代码折叠、语法高亮等功能。
- 调试器:GHS MULTI IDE集成了一个强大的调试器,可以帮助开发人员快速定位和修复代码中的错误。
- 代码分析工具:GHS MULTI IDE提供了一系列代码分析工具,可以帮助开发人员检测代码中的潜在问题,如内存泄漏、未初始化的变量等。
- 版本控制:GHS MULTI IDE支持多种版本控制工具,如Git、SVN等。
- 代码生成器:GHS MULTI IDE可以生成可执行文件、库文件、静态链接库等。
- 支持多种开发板:GHS MULTI IDE支持多种开发板,包括ARM、MIPS、PowerPC等。
- 自定义配置:GHS MULTI IDE提供了自定义配置功能,可以根据项目的需求进行配置,从而提高开发效率。
6.1.4 Keil MDK IDE
Keil公司是一家业界领先的微控制器(MCU)软件开发工具的独立供应商。Keil公司由两家私人公司联合运营,分别是德国慕尼黑的Keil Elektronik GmbH和美国德克萨斯的Keil Software Inc。Keil公司制造和销售种类广泛的开发工具,包括ANSI C编译器、宏汇编程序、调试器、连接器、库管理器、固件和实时操作系统核心(real-time kernel)。有超过10万名微控制器开发人员在使用这种得到业界认可的解决方案。其Keil C51编译器自1988年引入市场以来成为事实上的行业标准,并支持超过500种8051变种。Keil公司在2005年被ARM公司收购。
Keil公司2005年由ARM公司收购。其两家公司分别更名为ARM Germany GmbH和ARM Inc。
Keil IDE是一种集成开发环境,由Keil Software公司开发。它是一种专门用于嵌入式系统开发的工具,广泛应用于汽车电子、工业控制、通信等领域。
Keil MDK IDE提供了一套完整的开发工具链,包括编译器、调试器、仿真器等。它支持多种编程语言,如C、C++和汇编语言,并且兼容多种嵌入式处理器架构,如ARM、8051等。
Keil MDK IDE具有以下特点:
- 用户友好的界面:Keil MDK IDE提供了直观的图形界面,使开发者可以方便地进行代码编写、调试和测试。它还提供了丰富的工具栏、菜单和快捷键,以提高开发效率。
- 强大的编译器:Keil MDK IDE内置了高度优化的编译器,能够生成高效的机器代码。它支持多种编译选项和优化级别,以满足不同应用的需求。
- 全面的调试功能:Keil MDK IDE提供了强大的调试功能,包括单步执行、断点调试、变量监视等。它支持多种调试接口,如JTAG、SWD等,以便与不同的目标硬件进行连接和调试。
- 丰富的仿真器支持:Keil MDK IDE支持多种仿真器,如Keil ULINK系列、J-Link等。这些仿真器能够与目标硬件进行连接,实现实时调试和仿真。
Keil MDK IDE是一款功能强大、易于使用的嵌入式系统开发工具,为开发者提供了一站式的解决方案,能够大大简化开发流程,提高开发效率。
6.2 调试器和量产工具(离线/批量Flash编程器)
MCU的调试器和量产工具的作用主要有以下几个方面:
- 调试器:MCU的调试器是一种硬件设备,用于与MCU进行通信,读取和写入MCU内部的寄存器、内存等信息,以便在开发过程中进行调试和测试。调试器可以帮助开发者快速定位程序中的问题,如程序崩溃、死循环、数据错误等。
- 量产工具:MCU的量产工具是一种软件工具,用于将开发完成的MCU程序烧录到芯片中,以便进行批量生产。量产工具可以自动化地进行烧录、测试、校准等操作,提高生产效率和产品质量。
- 调试功能:调试器和量产工具通常会提供一些调试功能,如单步执行、断点调试、变量监视等,以帮助开发者更好地调试和测试MCU程序。
- 支持多种接口和协议:调试器和量产工具通常支持多种接口和协议,如JTAG、SWD、ISP等,以适应不同的MCU芯片和开发环境。
- 支持多种操作系统:调试器和量产工具通常支持多种操作系统,如Windows、Linux、Mac OS等,以适应不同的开发环境和开发者需求。
总的来说,MCU的调试器和量产工具的作用是帮助开发者进行MCU程序的调试和测试,以及进行批量生产。调试器和量产工具可以提供多种功能和支持多种接口和协议,以适应不同的MCU芯片和开发环境。
6.3 图形化配置工具**
6.3.1 SDK配置工具
SDK配置和代码生成工具的作用主要有以下几个方面:
- 简化配置过程:SDK配置工具可以提供一个可视化的界面,让开发者通过简单的操作完成SDK的配置,避免繁琐的手动配置过程。
- 提高配置准确性:配置工具可以提供合理的默认配置选项,并进行参数校验,避免因配置错误而导致的问题。
- 快速生成代码:代码生成工具可以根据配置选项自动生成SDK相关的代码,减少手动编写代码的工作量,提高开发效率。
- 规范化代码结构:代码生成工具可以根据一定的规范和模板生成代码,保证代码结构的一致性和可维护性。
- 提供示例代码:配置和代码生成工具可以提供一些示例代码,帮助开发者快速上手和理解SDK的使用方式。
- 支持版本管理:配置和代码生成工具可以支持SDK的版本管理,方便开发者在不同版本之间切换和管理。
总的来说,SDK配置和代码生成工具的作用是简化配置过程、提高配置准确性、快速生成代码、规范化代码结构、提供示例代码和支持版本管理,从而提高开发效率、减少错误和提升代码质量。
6.3.2 MCAL配置工具
MCAL(Microcontroller Abstraction Layer)配置工具是用于配置和生成MCAL驱动程序的工具。它的工作原理主要包括以下几个步骤:
- 配置参数选择:用户通过配置工具选择需要使用的MCAL驱动程序和相关参数。可以根据具体需求选择不同的驱动程序和配置选项。
- 参数设置:配置工具提供了用户界面,用户可以通过界面设置各个驱动程序的参数,如时钟频率、引脚配置、中断优先级等。
- 参数校验:配置工具会对用户设置的参数进行校验,确保参数的合法性和正确性。例如,检查时钟频率是否在允许范围内,检查引脚配置是否冲突等。
- 代码生成:配置工具根据用户的配置参数,生成相应的MCAL驱动程序的代码。生成的代码包括初始化函数、配置函数、中断处理函数等。
- 代码导出:生成的代码可以导出为可执行文件或者源代码文件,供用户在实际项目中使用。
MCAL配置工具的主要功能包括:
- 驱动程序选择和配置:用户可以选择需要使用的MCAL驱动程序,并设置相应的参数,以满足具体的需求。
- 参数校验和合规性检查:配置工具可以对用户设置的参数进行校验,确保参数的合法性和正确性,避免配置错误导致的问题。
- 代码生成和导出:配置工具可以根据用户的配置参数,生成相应的MCAL驱动程序的代码,并将代码导出为可执行文件或源代码文件。
- 用户界面和交互:配置工具通常提供友好的用户界面,使用户能够方便地进行参数设置和配置,提高配置效率和准确性。
总之,MCAL配置工具通过用户界面和参数设置,生成符合用户需求的MCAL驱动程序的代码,并提供参数校验和合规性检查等功能,以帮助用户更快速、准确地配置和生成MCAL驱动程序。
6.3.3 中间件软件配置工具
中间件软件包含的各种总线通信协议、标定和中断协议等都有很多配置参数,需要生成很多配置结构体,通过图形化配置工具的配置向导和参数检查、参数功能提示及配置代码生成等功能可以帮助客户高效准确地使用这些中间件软件。
中间件软件的配置工具工作原理与上面介绍的SDK和MCAL配置工具类似,此处不再赘述。
如下是一个LIN stack的配置工具的实现架构,配置工具(Processor Expert)通过解析LIN描述文件(LDF)获取应用程序对LIN通信的总线网络和信号的配置信息,然后生成生成当前LIN节点的配置数据和LIN stack的配置数据,以C文件中的配置结构体和头文件中的宏定义的形式产生配置结果,最终与LIN stack和LIN driver一起编译链接生成满足应用需求能够在目标MCU上运行的LIN协议。
6.4 电机调试和参数标定可视化工具
通常为了帮助用户更方便、快速地进行电机的调试和标定工作,车规MCU厂商通过电机调试和参数标定可视化工具提供以下功能:
- 实时数据监控:可以实时监控电机的运行状态,包括电流、转速、温度等参数,并以图表或曲线的形式展示。
- 参数设置:可以通过工具设置电机的各种参数,如电流限制、速度限制、加速度限制等,以便进行调试和标定。
- 数据记录和导出:可以记录电机运行过程中的数据,并将数据导出为文件,以便后续分析和处理。
- 参数标定:可以通过工具对电机的各种参数进行标定,如电机的电阻、电感、转矩常数等,以提高电机的控制性能。
- 故障诊断:可以通过工具对电机运行过程中的故障进行诊断,如过流、过温、过载等,以便及时采取措施进行修复。
- 可视化界面:工具通常具有友好的可视化界面,使用户能够直观地查看和操作电机的调试和标定过程。
总结
车规MCU的软件开发生态是其应用功能软件开发的基础。
一方面,随着半导体摩尔定理的发展,车规MCU芯片的规模进入到55nm及更先进工艺制程后,CPU内核数量和外设种类及数量集成越来越多,片上存储器越来越大,车规MCU的处理性能和外设功能越来越复杂/强大,芯片的数据手册和参考手册长达数千页,如果还按照十年前的开发模式,每个客户自己工程师通过编程C代码读写寄存器的方式去开发新一代车规MCU的底层驱动程序,将十分费时费力,且代码无法实现跨硬件平台开发,实现复用;
另一方面,伴随新一代汽车电子电器架构(EEA)的落地和逐渐普及,汽车电子应用软件变得越来越复杂,各类通信总线的协议栈、标定和诊断以及电机控制FOC这类与硬件不相关的通用算法和软性协议栈构成的中间件软件(Middleware)使用也变得十分广泛,提高这些中间件软件的复用,可以大大缩短项目开发周期,并保证代码质量。
本文介绍的车规MCU的软件开发生态涉及的AUTOSAR软件、底层驱动、中间件协议栈软件、配置工具,编译/链接/调试工具链和集成开发环境(IDE)众多,并非所有软件都是车规MCU厂商自研,他们通常会与行业里面的第三方专业合作伙伴合作,一起来为客户提供完整的车规MCU软件开发生态:
如下是据我所知目前国产车规MCU的头部公司 - 苏州云途半导体的YTM32系列32位车规MCU芯片的软件开发生态建设情况供大家参考(其软件生态是做得最为完善的公司之一,强烈建议有车规MCU国产替代需求的读者联系原厂技术支持和销售,详细了解评估一下,尤其是其图形化配置工具YCT,整合了云途SDK、MCAL及很多中间件软件的配置、参数检查和驱动代码及应用工程自动生成功能,使用十分方便高效):
作者:Enwei Hu
文章来源:汽车电子expert成长之路
推荐阅读
更多汽车电子干货请关注汽车电子与软件专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。