前言
本系列请点击:《搞一下CP AUTOSAR入门》
所有系列请点击:《汽车电子系列分享》
在上一篇介绍了CP AUTOSAR的分层结构,对于多数使用AUTOSAR架构开发汽车电子软件的工程师而言,主要关注的还是如何将AUTOSAR架构应用到具体的项目中,多数公司都是直接采用AUTOSAR开发工具链进行开发,主流的如Vector的Davinci工具链、ETAS的ISOLAR工具链以及EB等。
在AUTOSAR分层架构中,APP部分在特定的工具链的架构设计和实现相对比较简短,主要是建立SWC、SWC之间交互的接口、映射CAN信号、建立周期触发的函数、建立Client-Server导向的接口函数等。但是从一个初识AUTOSAR架构或者工具链的工程师来说,对BSW层众多的模块可能一脸懵逼,自己刚开始接触AUTOSAR使用工具配置的时候也不例外。当时用Vector Davinci的工具链的时候对于AUTOSAR定义的基础模块功能基本一窍不通,那时候最想关心的还是BSW各个模块的功能是干什么的,后来在慢慢的开发学习中了解了各个模块的功能,因此这篇文章主要介绍下AUTOSAR基础模块的主要功能,达到对BSW各个模块熟悉的目的,以便在后续使用中更快的上手。
下图展示的是AUTOSAR 4.2标准的主要功能块: 其中E2EPW 是E2E保护封装通过添加功能安全相关的信号,扩展了RTE的验证功能。在使用的时候要结合E2E的库来使用。下面对每个功能块内部的模块做简述。
1、AUTOSAR RTE模块概述
RTE RTE实现虚拟总线的功能和SWC的执行,并确保了SWC之间以及SWC和基础软件间数据访问的一致性。同时集成SCHM实现了基础软件功能函数的执行。RTE还可以支持分区界限(多核/可信任/不可信任)间的通信。此外,RTE还提供NVRAM数据和标定数据的简化访问方式。在与功能安全相关的ECU中,RTE是一个与功能安全相关的模块。
SCHM SCHM模块集成在RTE内,调用每个BSW模块的主函数,并给临界区提供相关的函数。对于通过分区和内核边界的BSW分配(主卫星概念),SCHM可以提供和RTE模块基本相同的通信接口。
2、AUTOSAR OS模块概述
AUTOSAR ECU中的OS是基于OSEK操作系统而扩展的。所有扩展功能被分配到不同的操作系统扩展类型中,采用SC1-SC4表示,其中,SC1表示只使用调度表功能;SC2包含了调度表和时间保护;SC3包含了内存保护和调度表;SC4包含了调度表/时间保护和内存保护。同时操作系统也可以支持多核处理器。
?3、AUTOSAR SYS模块概述
AUTOSAR中SYS模块主要提供系统相关的服务,主要模块如下:
具体的模块功能如下:
?BSWM 包含了车辆的模式管理和应用模式管理,处理来自于SWC模块和其他BSW模块的模式请求,同时根据模式请求的仲裁结果,执行模式转换或具体的行为等。同时BSWM可以与ECUM模块关联,控制ECU的启动和关闭,BSWM模块还可以协调多核系统的不同分区。
COMM COMM模块根据应用程序的通信需求协调不同网络以及局部网络间的通信。对通信具有使能和禁用控制。
CSM CSM模块提供接口用于SWC访问基础加密函数。个别加密算法在CRY模块通过软件或者硬件实现。
DBG 调试模块使得外部访问可以获得基础软件的内部信息,也用于修改内存数据。
DET DET模块用于支持在软件开发过程中的错误调试。它提供了一个错误提示接口,这一接口会在错误发生的时候被对应的BSW模块调用。
DLT DLT模块是诊断Log和Trace的简称,主要用于记录DET、DEM、SWS等的日志信息以及跟踪信息。Dlt模块通过内部的API可以在通信总线传输该数据,以使该信息在 ECU 外部可见。
ECUM ECU状态管理负责ECU的启动和关闭,同时还管理ECU的唤醒机制。支持Fixed和Flex两个版本的配置。Fixed的配置ECUM管理一些预定义好的运行状态。通过Flex的配置可以在BSWM中定义运行的状态,实现特殊的节能状态和多种启动类型。多核系统中,ECUM还可以协调管理不同的内核。
STBM 同步时基管理可以确保时间的同步,从AUTOSAR 4.2开始,由时间主站提供的时间基准可以通过总线系统实现不同ECU之间的同步。
TM TM模块用于测试函数运行时间和实现动态等待功能,可以提供从1微秒到4.9天的精度。
WDGM 看门狗管理模块监测ECU应用程序的可靠性和功能安全。包含对SWC和BSW正确执行的监测以及在需要的时间区间触发看门狗。WDGM模块还可以对多个升级阶段中潜在的错误行为进行反应。根据ISO26262标准,该模块有一个重要的安全相关的功能,即对关键任务正确执行顺序监测(逻辑监测)。对于功能安全相关的ECU,WDGM模块必须遵循ISO26262标准进行开发。
WDGIF 该模块为访问看门狗驱动(WDG)提供统一的服务,包括看门狗模式切换和启动。对于功能安全相关的ECU,WDGIF模块必须遵循ISO26262标准进行开发。
?4、AUTOSAR DIAG服务模块概述
AUTOSAR中DIAG模块主要提供诊断相关的服务,主要模块如下: 具体的模块功能如下所示:
DCM DCM实现的是ISO14229-1:2006(UDS)通信诊断协议,一些诊断请求(会话状态管理/错误码读取/重启ECU等)在DCM中直接被处理,另外一些诊断请求(读取和控制数据ID中的数据元素/程序执行等)会通过Port接口路由到SWC进行处理。OBDII/SAEJ1979排放法规需求也在该模块实现。
DEM DEM模块用于故障内存管理。用于诊断监测的标准接口实现了独立于制造商的SWC的统一开发。负责管理故障诊断码的状态、环境数据和将数据保存到非易失内存中。也支持OBDII/SAEJ1979排放法规需求。
J1939DCM 该模块实现了符合SAEJ1939-73协议的诊断报文,例如读取错误内存。
FIM 基于DEM模块所管理的有效错误,FIM可以关闭SWC相关的功能。
?5、AUTOSAR标定服务模块概述
XCP XCP是一种上位机(PC工具)和下位机(ECU)之间的通信协议。它由ASAM组织提供规范,主要用于测量/标定/刷写和测试ECU。XCP支持的总线协议包括CAN(CanXcp)/FleyRay(FrXcp)/Ethernet(EthXcp)和LIN(LinXcp)。
6、AUTOSAR MEM服务模块概述
AUTOSAR中MEM模块主要提供内存操作相关的服务,主要模块如下:具体的模块功能如下:
NVM NVM模块负责管理和从非易失性内存中读取数据。在系统启动和关闭阶段,同步应用程序RAM区的数据。此模块还提供其他服务,例如用于上层数据保护的冗余数据单元。同时,RTE提供了简单灵活和接口(NvDataInterface)用于非易失内存的数据处理。
MEMIF 该模块提供了访问EA和FEE的标准接口,这样可以复合使用FEE和EA模块。
EA EA模块式利用EEPROM的驱动实现独立于硬件的访问EEPROM的数据接口。此外,对于读写和擦除数据,EA模块会将写访问分摊到不同的EEPROM区域,这样所有的EPROM单元都会被实现,增加EEPROM的寿命。
EEP EEP模块提供了独立于硬件访问EEPROM内存的机制,提供了读写和比较数据的服务。
FEE FEE模块提供了独立于硬件的接口,用于访问flash数据,直接访问flash驱动。除了负责读写和擦除flash数据,FEE还负责分散flash内存的使用,延长flash的寿命。
7、AUTOSAR COMMUNICATION 服务模块概述
AUTOSAR中COMMUNICATION模块主要提供通信相关的服务,主要模块如下:具体的模块功能如下:
COM COM模块给RTE提供了面向数据的信号接口。发送时,负责将信号放到特定报文的特定位置,并按照特定的报文发送方式将数据发送;接收时,直接将特定的PDU的特定位置的信号数据发送给SWC。该模块包含了对数据接收的监控机制,对数据发送的控制机制。
LDCOM LDCOM模块负责优化大数据信号的路由,可以避免一些不必要的数据Copy。LDCOM模块常与SOMEIP/XF共同使用,用于数据序列化的转换。
IPDUM 该模块处理负责不同数据内容的PDU的复用。
NM 该模块提供了独立于总线方式的通用接口,访问具体的网络管理模块(CANNM/LINNM/FRNM/UDPNM)。此外,这一模块还负责同步不同网络上的ECU之间的通信系统关闭工作。
PDUR PDU路由模块负责在总线系统和不同BSW模块之间分发通信包(PDU)。此外,该模块还负责不同总线间的PDU和TP-PDU的路由工作。
COMXF 该模块可以对RTE和COM模块的相互作用进行优化,实现对数据序列化和反序列化的操作。
SOMEIPXF SOME/IP模块是一个远程进程调用和序列化协议,用于从其它ECU中调用服务,这些服务是通过SD模块事先从系统中获知。
E2EXF 通过E2ETransfer模块可以在RTE接口中,根据ISO26262标准,集成安全相关的信号的保护。相比于E2EPW,该模块使用了RTE标准的接口。
SECOC SECOC模块可以用来发送和接收认证信息。那些未经认可的/重复的或被操作的信息可以被检测到。该模块是AUTOSAR加密方案的一部分。
8、AUTOSAR COMMUNICATION 抽象层模块概述
AUTOSAR中COMMUNICATION抽象模块主要对底层的通信驱动模块定义协议栈,主要模块如下:具体的模块功能如下:
J1939TP J1939Tp模块实现了SAEJ1939标准中的两种数据传输方式BAM和CMDT。
J1939NM J1939支持网络中在线增加ECU。J1939NM不同于其他负责总线唤醒和休眠的NM模块,它负责处理特定ECU的地址。
J1939RM J1939RM实现了SAEJ1939协议中的通信请求处理获得请求数据的机制。
CANTP CANTP实现了ISO15765-2标准的协议。作为CAN传输协议,CANTP负责数据的拆分和合并,同时对监控传输过程中的数据流。
CANNM CAN网络管理模块负责实现AUTOSAR网络管理的功能,协调CAN网络的唤醒和休眠的状态切换。
CANSM CAN状态管理模块负责CAN通信的状态管理,与COMM/CANNM/NM等协调管理CAN的通信状态切换,同时处理CAN通信的错误。
CANTSYN CANTSYN模块实现了CAN总线特定的时间同步协议,SWC需要同步时基管理模块(STBM)才能访问同步时基。
CANIF 为CAN模块提供基于PDU的抽象接口,用于访问CAN驱动器,对于不同功能的PDU在CANIF层实现PDU的区分,并关联到上层模块。同时还可以控制CAN驱动和CAN收发器的状态和模式。
TTCANIF TTCAN接口为TTCAN控制器(ISO11898-4)提供和CANIF一样的功能。
CANTRCV CANTRCV负责对控制芯片外的CAN的收发器运行,包含唤醒/休眠控制等。
LINNM LINNM模块包含了独立于硬件的协议,协调处理LIN网络的普通运行模式和总线休眠模式的切换
LINSM LIN状态管理模块负责切换COM模块中的调度表和PDU组,并根据休眠和唤醒状态调用LIN服务接口
LINIF LIN接口提供对LIN硬件的抽象(基于PDU)的访问,它还负责处理调度表,同时包含了LIN传输协议(LINTP)。
LINTRCV LIN收发器驱动负责监测和驱动LIN收发器的唤醒和休眠功能。
FRTP FRTP是基于ISO1068-2标准的FlexRay总线传输协议
FRARTP FRARTP是FlexRay总线的传输协议。它包含了基于ISO15765-2(—>CANTP)的与CAN总线兼容的数据帧.
FRNM 该模块负责FlexRay网络管理,同步总线切换到休眠状态
FRSM FlexRay状态管理模块控制并检测FlexRay总线节点的唤醒/启动/状态切换等。
FRTSYN FRTSYN模块实现了FlexRay特定的时间同步机制规则。SWC需要同步时基管理模块(STBM)才能访问同步时基。
FRIF FlexRay接口提供对FlexRay硬件的抽象(基于PDU)的访问,此外,它还可以同步FlexRay的全局时钟。
FRTRCV 片外FlexRay收发器驱动,同时负责切换收发器的状态。
UDPNM UDP网络管理同步切换以太网ECU到休眠模式。
SD SD模块实现了一个ECU将自身可用的服务采用发布-订阅协议实现ECU之间的通信。此外,ECU还可以注册去接收自动提醒,例如通过信号更新。
DOIP 通过IP实现诊断的功能,包含了ISO13400-2标准的诊断功能。
SOAD SOAD模块将AUTOSAR中定义的PDU通信转换成基于socket的通信。实现Socket和PDU数据之间的切换。
TCPIP 此模块包含了基于UDP和TCP协议通信的所有协议,支持IPv4和Ipv6。主要包含的协议IPv4/ICMPv4/ARP;IPv6/ICMPv6/NDP;UDP/TCP/DHCPv4/DHCPv6。
ETHSM Ethernet状态管理为COMM提供抽象接口,用于启动和关闭Ethernet通信。ETHSM也可通过ETHIF访问Ethernet硬件
ETHTSYN ETHTSYN模块实现了以太网特定的时间同步协议以及IEEE802.1AS相关的标准。SWC需要同步时基管理模块(STBM)才能访问同步时基。
ETHIF Ethernet接口模块独立于Ethernet驱动和ETHTRCV D,区分具体的Ethernet数据,同时还负责对VLAN的管理
ETHSWT ERHSWT模块为控制以太网交换机提供了统一的且与硬件无关的接口,在使用多个ECU的时候,ETHSWT可以协调它们的MAC学习。
ETHTRCV THTRCV提供独立于硬件的统一接口,用于驱动不同的Ethernet收发器。可以根据外部使用的不同型号的收发器去配制该模块。
9、AUTOSAR IOHWABS模块概述
I/O硬件抽象模块代表的是RTE和ECU I/O通信间的连接。它封装了I/O驱动,例如对ADC/DIO/PWM/ICU/OCU等MCAl模块的操作,通过该模块使得SWC能够访问I/O的信号。
?10、AUTOSAR IOHWABS模块概述
?I/O硬件抽象模块代表的是RTE和ECU I/O通信间的连接。它封装了I/O驱动,例如对ADC/DIO/PWM/ICU/OCU等MCAl模块的操作,通过该模块使得SWC能够访问I/O的信号。
11、AUTOSAR Library模块概述
AUTOSAR中Library模块主要提供诊断相关的服务,主要模块如下:具体的模块功能如下:
BFX Bit field function for fixed point,对位处理的定点计算函数库。
CAL Crypto Abstraction Library,CAL提供了SWC和其他BSW模块可以访问的基础加密算法,个别的加密算法是通过Cal模块在代码中实现的。
CRC 循环冗余校验库,计算CRC校验值。
EFX 定点值数学函数扩展库。
E2E 该库用于功能安全ECU根据ISO26262标准进行安全数据交换的保护。它负责计算校验码和提供报文计数。其中和E2E相关的还包括E2EPW和E2EXf两个主要模块。
IFL 浮点数插值函数库。
IFX 定点数插值函数库。
MFL 浮点值数学函数库。
MFX 定点值数学函数库。
12、AUTOSAR CDD模块概述
?CDD是没有被AUTOSAR标准化的软件模块的统称,它可以访问BSW模块/RTE模块/MCAL驱动等。
13、AUTOSAR MCAL模块概述
AUTOSAR中MCAL模块主要提供诊断相关的服务,主要模块如下:具体的模块功能如下:
?MCU MCU驱动提供了软件复位/选择微处理器的状态(停止/休眠/挂起等)/配置唤醒行为/管理内部PLL时钟/初始化RAM数据。
GPT 通用定时器驱动提供了访问片内定时器的接口,用于控制周期性和单一的事件。
WDG 该模块为控制和触发看门狗硬件提供服务。触发程序是由看门狗管理模块(WDGM)调用的。对于功能安全相关的ECU,WDG模块必须遵循ISO26262标准进行开发。
FLS Flash驱动提供独立于硬件访问Flash内存的机制,提供用于读写/比较和擦除Flash的服务驱动。
CORETST CORETST模块包含了配置和控制芯片测试功能。提供了一个用于扩展这些测试功能的框架,对于功能安全相关的代码,CORETST模块会监控ALU和寄存器等重要的单元。
FLSTST Flash测试模块提供了测试非易失内存的算法,包括数据和程序Flash/SRAM/被保护的缓存。
RAMTST 该模块用于测试微处理器内部的RAM单元,在ECU启动和关闭阶段触发或者由诊断命令触发此项测试。在正常运行阶段,执行的是周期测试。
CAN CAN驱动用于访问芯片的CAN控制器,负责对CAN报文数据接收和发送/CAN控制状态和模式的切换。
ETH Ethernet驱动抽象对于Ethernet硬件的访问,发送和接收数据,并且切换控制器状态。
FR FlexRay驱动抽象访问FlexRay硬件,发送和接收数据,切换控制器状态等
LIN LIN驱动提供了初始化报文发送(报头/响应/休眠模式/唤醒)的服务,同时还负责接收响应,检查当前状态的验证和唤醒事件。
SPI SPI 驱动负责处理SPI端口的数据交换,主要用于MCU与外部硬件(外部EEPROM/外部看门狗等)的数据交换。
TTCAN TTCAN驱动为TTCAN控制器(ISO11898-4)提供和CAN驱动一样的功能。
PORT 该模块负责处理微处理器中的所有Port的初始化工作。
DIO 数字输入输出驱动提供了访问DIO通道/DIO通道和DIO通道组的读写操作。
ADC ADC驱动用于抽象访问芯片内部的ADC模块,控制ADC模块相关的转换,对于每一个ADC转换通道,转换的精度/触发源/结果处理等都是可以配置的。
ICU ICU驱动提供了边沿检测/周期性信号测量/边沿时间戳分配和唤醒诊断控制功能。
PWM PWM驱动提供了初始化和控制微处理器中的PWM通道服务。
OCU OCU驱动提供输出比较单元的初始化函数和访问接口。
以上就是本人对CP AUTOSAR基础模块功能简单的描述,欢迎大家一起交流学习,如果有不合理的地方也请大家指正,愿和大家一起学习进步,一步步做好汽车电子软件开发。
如果大家有想分享的内容,欢迎大家一起来分享! 更多内容请关注微信公众号《搞一下汽车电子小助手》与《搞一下汽车电子》
更多CP AUTOSAR其他内容,也可以随时与我们联系。
联系我们
微信:shactiontech 邮箱:support@shactiontech.com
|