您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center 汽车系统工程   模型库  
会员   
   
AI Spec Coding工程化实践
4月24-25日 北京+线上
基于模型的数据治理与数据中台
5月19-20日 北京+线上
网络安全原理与实践
5月21-22日 北京+线上
     
   
 订阅
搞不懂BSW,别说你会AUTOSAR!一文把OS/COM/DCM/DEM/NvM全讲透了
 
作者:从零学嵌入式
 
  9   次浏览      3 次
 2026-4-24
 
编辑推荐:
本文系统讲解BSW的四大组成部分——服务层、ECU抽象层、MCAL和复杂驱动层,并深入剖析OS、COM、DCM、DEM、NvM等核心模块的工作机制与模块间协作关系。希望对你的学习有帮助。
本文来自于微信公众号从零学嵌入式 ,由火龙果软件Alice编辑,推荐。

摘要:在AUTOSAR架构中,基础软件层(BSW)是连接应用软件与硬件的桥梁。本文系统讲解BSW的四大组成部分——服务层、ECU抽象层、MCAL和复杂驱动层,并深入剖析OS、COM、DCM、DEM、NvM等核心模块的工作机制与模块间协作关系。

一、引言

在汽车电子嵌入式软件开发领域,AUTOSAR(Automotive Open System Architecture)已经成为行业公认的软件架构标准。AUTOSAR的核心设计理念是软硬件解耦,通过分层架构实现应用软件与底层硬件的完全分离,使软件组件能够在不同硬件平台上复用,极大地提升了开发效率和产品质量。

在AUTOSAR分层架构中,基础软件层(Basic Software Layer,BSW)是连接应用软件与硬件的桥梁,承担着硬件抽象、系统服务、通信管理、诊断服务等核心功能。理解BSW层的模块划分与工作机制,是每一位汽车嵌入式软件工程师的必备技能。

本文将系统性地讲解BSW层的四大组成部分——服务层(Service Layer)、ECU抽象层(ECU Abstraction Layer)、微控制器抽象层(MCAL) 和复杂驱动层(Complex Drivers,CDD),并重点剖析其中最核心的模块:OS(操作系统)、COM(通信管理)、DCM(诊断通信管理)、DEM(诊断事件管理)和NvM(非易失性存储管理)。

a▲ 图1:AUTOSAR BSW 分层架构全景图

二、BSW分层架构全景

2.1 四层结构概述

BSW层自下而上划分为四个层次,每一层都有其明确的职责边界和访问规则:

层级 名称 核心职责
L5 服务层Service Layer OS、COM、DCM、DEM、NvM、WDGM等系统级服务
L4 ECU抽象层 ECU Abstraction CanIf、PduR、CanSM、EcuM等外设抽象
L3 MCAL 微控制器抽象层 Can、Lin、Spi、Dio、Adc、Pwm、Mcu等片内外设驱动
L2 微控制器 Microcontroller CPU内核、片内外设、寄存器、时钟、中断控制器

分层原则:每一层只能调用其直接下层提供的接口,跨层访问被严格禁止。这种强制的分层依赖关系保证了架构的清晰性和可维护性。

2.2 各层职责定位

微控制器抽象层(MCAL)是BSW的最底层,直接与MCU硬件交互。包含GPIO驱动、SPI驱动、CAN驱动、ADC驱动、PWM驱动等。MCAL将芯片的具体硬件细节封装为标准化的接口,是硬件相关代码的唯一驻留层。

ECU抽象层(ECU Abstraction Layer)位于MCAL之上,负责对ECU级别的硬件进行抽象。统一了外部存储器、通信收发器、电源管理芯片等外设的访问接口,使上层软件无需关心硬件的具体实现细节。

服务层(Service Layer)是BSW中最接近应用软件的层次,提供系统级的后台服务,包括操作系统(OS)、通信服务(COM/PduR/NM)、诊断服务(DCM/DEM/FIM)、存储服务(NvM/MemIf/FEE)等。

复杂驱动层(CDD)用于处理那些无法被标准AUTOSAR接口完全抽象的复杂硬件或实时性要求极高的场景。典型应用包括:摄像头接口驱动、雷达信号处理、发动机控制的高精度定时等。

三、服务层核心模块详解

3.1 OS——汽车实时操作系统

AUTOSAR OS是基于OSEK/VDX标准发展而来的实时操作系统,是整个ECU软件运行的调度中枢。

任务调度管理:AUTOSAR OS支持多优先级抢占式调度,任务(Task)可分为:

  • 基础任务(Basic Task):仅包含一个执行步骤

  • 扩展任务(Extended Task):可通过WaitEvent机制实现内部等待状态

中断管理:

  • Category 1中断:不受OS管辖,中断处理完成后控制权直接返回

  • Category 2中断:由OS管理,ISR可以调用OS服务

计数器与报警器:计数器基于硬件定时器产生tick,报警器将计数器与特定动作(激活任务、设置事件、调用回调)关联,实现精确的周期性调度。

3.2 COM——通信管理模块

AUTOSAR COM是车载网络通信的核心枢纽,位于RTE与下层通信协议栈之间,负责信号的打包、解包、路由和传输模式管理。

信号与信号组(Signal & Signal Group):COM管理两种数据单元——单个Signal(如一个uint16的温度值)和由多个Signal组成的Signal Group。Signal可配置初始值(ComSignalInitValue)和数据无效值(ComSignalDataInvalidValue)。

字节序转换(Endianness):COM支持大端(Big Endian) 和小端(Little Endian)两种格式自动转换,确保异构系统间的数据正确解析。

传输模式选择(Transmission Mode Selection, TMS):发送模式包括:

  • Direct/N-Times:Signal更新立即触发I-PDU发送,发送N次

  • Periodic:按固定周期发送,Signal更新仅更新数据缓冲

  • Mixed:混合模式,兼具直接发送和周期发送特性

  • None:不自发发送,仅响应TriggerTransmit请求

信号过滤机制:COM提供8种信号过滤算法(ALWAYS、NEVER、MASKED_NEW_EQUALS_X、MASKED_NEW_DIFFERS_X、MASKED_NEW_DIFFERS_MASKED_OLD、NEW_IS_WITHIN、NEW_IS_OUTSIDE、ONE_EVERY_N),用于在接收端过滤无效信号,或在发送端计算TMC。

3.3 DCM——诊断通信管理

DCM模块实现了UDS(Unified Diagnostic Services,ISO 14229)诊断协议中的通信管理功能,是整车诊断和软件更新的核心通道。

诊断会话管理:

  • 默认会话(Default Session):提供基础诊断服务

  • 扩展会话(Extended Session):解锁更多安全敏感的诊断操作

  • 编程会话(Programming Session):用于引导加载程序中的软件刷新

典型UDS诊断服务:

SID 服务名称 功能描述
0x10 诊断会话控制 切换ECU诊断会话状态
0x11 电控单元复位 执行硬复位、软复位等操作
0x27 安全访问 请求种子并解锁对应安全等级
0x2E 写入数据 写入DID(Data Identifier)数据
0x3E 待机握手 保持非默认会话的激活状态

3.4 DEM——诊断事件管理

DEM模块负责汽车电子系统的故障诊断与事件管理,是功能安全体系的关键组成部分。DEM使用UDS 4字节DTC格式,DTC状态通过8位状态掩码(StatusOfDTC)表示:

Bit 标志名称 含义
Bit0 testFailed 当前操作周期内测试失败标志
Bit1 testFailedThisOperationCycle 本操作周期内测试失败
Bit2 pendingDTC 确认失败前的待定状态
Bit3 confirmedDTC 已确认故障(需达到确认阈值)
Bit5 testFailedSinceLastClear 自上次清除后测试失败
Bit7 warningIndicatorRequested 请求点亮故障指示灯

故障老化(Aging)机制:对于已确认的故障,当其在连续多个操作周期内不再出现时,DEM可自动清除(age)该故障状态,释放故障历史记录。

与FIM的协作:DEM将故障事件状态通知功能禁止管理器(Function Inhibition Manager,FIM),FIM据此禁止或限制受影响的功能模块。例如,当检测到某个传感器故障时,FIM可以禁止依赖该传感器的自适应巡航功能。

3.5 NvM——非易失性存储管理

NvM模块管理ECU的非易失性存储(Flash、EEPROM),为上层应用提供统一的数据持久化接口,是汽车电子中配置参数、标定数据和故障记忆存储的核心基础设施。

Block类型划分:

  • NVRAM Block:需要数据校验(如CRC)和一致性保护的数据块,包含RAM镜像和ROM镜像

  • NV Block:存储在非易失性介质中的实际数据区

操作类型:

  • Write:将数据从RAM写入非易失性存储

  • Read:将数据从非易失性存储读入RAM

  • Restore:用ROM中的默认值填充RAM镜像

  • Invalidate:标记数据块为无效

  • Erase:擦除数据块内容

错误处理策略:当检测到存储数据损坏时,NvM支持RETRY(自动重试)、USE_FIRST_FAILING(使用首次失败数据)、USE_BLOCK_DEFAULT(使用ROM默认值)三种错误恢复策略。

四、ECU抽象层与MCAL模块

4.1 ECU抽象层

ECU抽象层位于MCAL之上,通过标准化的接口屏蔽了下层硬件的具体实现,为服务层提供统一的硬件访问能力。核心模块包括:

  • PduR(PDU Router):协议数据单元路由器,负责在BSW内部路由I-PDU,支持通信接口路由(1:1或1:N)和传输协议路由

    CanIf(CAN Interface):向上对PduR提供标准化的CAN控制器抽象,向下调用MCAL中的Can Driver

    CanSM(CAN State Manager):管理CAN控制器的通信模式和波特率切换

    EcuM(ECU State Manager):管理ECU的全局状态——启动(STARTUP)、运行(UP)、休眠(SLEEP)和关闭(SHUTDOWN)

4.2 MCAL微控制器抽象层

MCAL是整个AUTOSAR架构中与硬件耦合度最高的层次,由芯片厂商提供实现,包含以下核心驱动模块:

驱动类别 模块名称 主要功能
微控制器驱动 Mcu Driver 时钟初始化(PLL)、复位控制、低功耗模式
GPT Driver 通用定时器,为OS提供系统时钟基准
Wdg Driver 看门狗驱动,支持快速/慢速/关闭三种模式
通信驱动 Can Driver 片内CAN控制器驱动,硬件对象配置与报文收发
Lin Driver LIN主机驱动,帧头发送与响应处理
Spi Handler SPI总线驱动,支持多Job/Sequence的异步传输
Eth Driver 以太网MAC驱动,MII/RMII接口管理
存储驱动 Fls Driver 内部Flash驱动,程序写入/数据存储/擦除
Eep Driver 内部/外部EEPROM驱动
I/O驱动 Port Driver 管脚复用配置(方向、功能模式)
Dio Driver 数字GPIO读写
Adc Driver 模数转换,支持单次/连续/硬件触发
Pwm Driver 脉宽调制输出
Icu Driver 输入捕获,支持边沿检测与时间测量

五、BSW模块交互实例:CAN报文收发

为帮助读者建立完整的系统认知,以下以CAN报文发送和CAN报文接收两条路径,说明BSW各模块间的协作流程:

5.1 CAN报文发送路径

发送路径:

发送路径:
应用层SWC → RTE → COM模块 → PduR → CanIf → Can Driver(MCAL) → CAN收发器 → CAN总线

关键API:Rte_Write_Signal() → Com_MainFunction_Tx() → PduR_ComTransmit() → CanIf_Transmit() → Can_Write()

5.2 CAN报文接收路径

接收路径:

接收路径:
CAN总线 → CAN收发器 → Can Driver(MCAL) → CanIf → PduR → COM模块 → RTE → 应用层SWC

关键API:Can_RxIndication() → CanIf_RxIndication() → PduR_RxIndication() → Com_RxIndication() → Rte_Write()

六、总结与工程实践建议

BSW层是AUTOSAR架构中规模最大、复杂度最高的组成部分,涵盖了从底层寄存器访问到上层系统服务的全栈功能。

工程实践要点

  1. 分层意识:严格遵守分层访问规则,不要在服务层直接调用MCAL接口

  2. 模块耦合:明确各模块的上下游关系——DCM依赖COM、PduR;DEM依赖NvM

  3. 配置先行:BSW的绝大多数行为通过配置工具(DaVinci Developer、EB tresos等)定义

  4. 异常处理:充分利用DET和DEM的诊断能力,在开发阶段尽早暴露问题

  5. 实时性考量:对于时间敏感的场景,优先使用CDD直接访问硬件

掌握BSW层,是每一位汽车嵌入式软件工程师从初级迈向高级的必经之路。

 

   
9   次浏览       3 次
相关文章

中央计算的软件定义汽车架构设计
汽车电子控制系统中的软件开发过程
一文读懂汽车芯片-有线通信芯片
OTA在汽车上有哪些难点痛点?
相关文档

汽车设计-汽车的整体结构及动力系统
自动驾驶汽车软件计算框架
SysML在汽车领域的应用实践
电子电气架构-大陆汽车系统架构平台
相关课程

AutoSAR原理与实践
功能安全管理体系(基于ISO26262)
MBSE(基于模型的系统工程)
基于SOA的汽车电子架构设计与开发

最新活动计划
AI Spec Coding工程化实践 4-24[北京]
需求分析与管理 4-21[北京]
基于模型的数据治理 5-19[北京]
企业网络安全 5-21[北京]
认证课:OCSMP-MU 5-27[在线]
具身智能技能与实践 6-11[厦门]
 
 
最新文章
ASPICE中配置管理是个什么东西?
了解软件安全分析与组件鉴定
掌握Autosar ComStack的精髓!
基于整车功能的正向诊断需求开发
搞定Autosar SWC开发秘籍,码住!
汽车OTA更新的系统性威胁评估
最新课程
基于SOA的汽车电子架构设计与开发
Auto SAR原理与实践
AUTOSAR架构与实践(从CP到 AP )
AUTOSAR架构建模方法与工具(EA)
ASPICE4.0核心开发过程指南
MBSE(基于模型的系统工程)
更多...   
成功案例
某知名车企 AUTOSAR应用设计与开发
吉利汽车 MBSE工程体系汽车建模及评估
某整车企业 《功能需求分析与设计》
富奥汽车零部件 建模工具EA
零跑汽车 建模工具EA及服务
北汽福田 建模工具EA
小鹏汽车 建模工具EA
更多...