AUTOSAR BSW MD文件解析
我们都知道,在AUTOSAR整个工作流程中,有一个东西非常重要,它贯穿整个流程,那就是arxml文件。根据AUTOSAR架构,不同软件层的职责是是不一样的,所以相应的arxml文件内容也是不一样的。本文将介绍BSW层1的描述文件:Xxx_Bswmd.arxml(Xxx代表模块缩写)。
Bswmd是Basic Software Module Description的缩写。
- 本文重点讲解MCAL层,严格来说BSW层包含内容比较多,比如ECU抽象层也属于BSW,但是这些层的描述文件和本文描述的内容可能不一样。比如COM,DEM等与通信/诊断相关的模块,他们的描述文件内容是不一样的。但是MCAL层的各个模块(包括CDD)内容大体上相同。
因为模块描述文件(BSW MD)本质还是一个xml文件,所以文件开始几行会先描述一些基本信息,比如:xml的版本,编码格式,使用的主题(schema)等。
主题部分通常除了引用w3.org的xml主题外,很重要的一部分就是引用AUTOSAR的主题文件,毕竟arxml的主要目标是描述AUTOSAR的软件的,AUTOSAR官网已经提供了很多主题文件,直接从官网引用即可。如下图所示:
<AUTOSAR xmlns="http://autosar.org/schema/r4.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_00046.xsd">
接下来就是定义本模块里面的包(Package),一个模块里面可以有多个包,且通常情况下都会有多个包,每个包负责描述的内容是不一样的。
包里面的内容通常包括以下内容:
- 模块描述器
- 模块名字
- 模块ID:标准模块都有自己的ID号(<255)。如果是复杂驱动(CDD),可以设置为255,或者2048~4095。多个CDD模块,可以都设置为相同值:255,但是如果你每个模块都有DET/DEM消息,为了区分开模块,可以考虑在2048~4095范围里分配。
- 模块暴露给其他模块使用的函数的引用。通常情况下在模块主h文件里面定义。需要注意的是还包括中断函数(中断函数一般不在主h文件里面定义),其他函数(比如内部函数)不在本描述文件里面描述。
- 内部行为
- 原子保护区域(Exclusive Area)
- 模块暴露给其他模块使用的函数:是否有原子保护区域,连续两次调用该函数的时间间隔限制。
- 模块入口:描述模块暴露给其他模块使用的函数。
- 函数名
- 函数ID(所有中断函数的ID为0,其余功能函数ID需唯一)
- 是否可重入
- 同步函数还是异步函数
- 调用类型(共五种):regular,callback,interrupt,scheduled,callout。
- 执行上下文环境(共五种):task,interruptCat1,interruptCat2,hook,unspecified。
- 软件实现策略(共四种):standard,inline,macro,inlineConditional。
- 模块实现
- 资源文件:主要描述模块里面包含哪些xdm,源代码文件(主要是h/c文件,汇编文件不需要描述),以及文档,都需包含路径信息。需要注意的是,这里强调所有文件,比如你的工程里面包含示例工程,虽然示例工程严格来说不是模块必备的,但是如果你包含在模块文件夹里面,那么这些示例工程里面包含的xdm,h,c,文件以及文档也需要描述。用于生成代码的那些模板文件(伪代码c/h文件)在后面单独描述。
- 所支持的编译器
- 编译参数
- 编译器提供商
- 详细版本信息
- 代码生成文件
- 所支持的链接器
- 链接参数
- 链接器提供商
- 详细版本信息
- 编程语言
- 内存区段
- 区段属性
- 内部软件版本
- AUTOSAR版本
- 供应商编号
需要注意的是bswmd文件不受配置参数影响,一个模块开发完成发布后,生成的bswmd文件和发布文件是一样的,不会受不同配置参数影响其内容,因为以上列这些内容都是固定的,与具体某个参数配置没关系。但是一般情况下工具链会限制,如果配置有错,则不会生成bswmd文件。
下面是一个简化的模板文件:
<AUTOSAR xmlns="http://autosar.org/schema/r4.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_00046.xsd"><AR-PACKAGES><AR-PACKAGE><SHORT-NAME>AUTOSAR_I2cSHORT-NAME><AR-PACKAGES><AR-PACKAGE><SHORT-NAME>BswModuleDescriptionsSHORT-NAME><ELEMENTS><BSW-MODULE-DESCRIPTION><SHORT-NAME>I2cSHORT-NAME><MODULE-ID>255MODULE-ID><PROVIDED-ENTRYS><BSW-MODULE-ENTRY-REF-CONDITIONAL><BSW-MODULE-ENTRY-REF DEST="BSW-MODULE-ENTRY">/AUTOSAR_I2c/BswModuleEntrys/I2c_AsyncTransmitBSW-MODULE-ENTRY-REF>BSW-MODULE-ENTRY-REF-CONDITIONAL><BSW-MODULE-ENTRY-REF-CONDITIONAL><BSW-MODULE-ENTRY-REF DEST="BSW-MODULE-ENTRY">/AUTOSAR_I2c/BswModuleEntrys/I2c_DeInitBSW-MODULE-ENTRY-REF>BSW-MODULE-ENTRY-REF-CONDITIONAL><BSW-MODULE-ENTRY-REF-CONDITIONAL><BSW-MODULE-ENTRY-REF DEST="BSW-MODULE-ENTRY">/AUTOSAR_I2c/BswModuleEntrys/LPI2C0_Master_IRQHandlerBSW-MODULE-ENTRY-REF>BSW-MODULE-ENTRY-REF-CONDITIONAL>PROVIDED-ENTRYS><INTERNAL-BEHAVIORS><BSW-INTERNAL-BEHAVIOR><SHORT-NAME>InternalBehavior_0SHORT-NAME><EXCLUSIVE-AREAS><EXCLUSIVE-AREA><SHORT-NAME>I2C_EXCLUSIVE_AREA_00SHORT-NAME>EXCLUSIVE-AREA>EXCLUSIVE-AREAS><ENTITYS><BSW-CALLED-ENTITY><SHORT-NAME>I2c_AsyncTransmitSHORT-NAME><CAN-ENTER-EXCLUSIVE-AREA-REFS><CAN-ENTER-EXCLUSIVE-AREA-REF DEST="EXCLUSIVE-AREA">/AUTOSAR_I2c/BswModuleDescriptions/I2c/InternalBehavior_0/I2C_EXCLUSIVE_AREA_00CAN-ENTER-EXCLUSIVE-AREA-REF>CAN-ENTER-EXCLUSIVE-AREA-REFS><MINIMUM-START-INTERVAL>0.0MINIMUM-START-INTERVAL><IMPLEMENTED-ENTRY-REF DEST="BSW-MODULE-ENTRY">/AUTOSAR_I2c/BswModuleEntrys/I2c_AsyncTransmitIMPLEMENTED-ENTRY-REF>BSW-CALLED-ENTITY><BSW-CALLED-ENTITY><SHORT-NAME>I2c_DeInitSHORT-NAME><MINIMUM-START-INTERVAL>0.0MINIMUM-START-INTERVAL><IMPLEMENTED-ENTRY-REF DEST="BSW-MODULE-ENTRY">/AUTOSAR_I2c/BswModuleEntrys/I2c_DeInitIMPLEMENTED-ENTRY-REF>BSW-CALLED-ENTITY><BSW-INTERRUPT-ENTITY><SHORT-NAME>LPI2C0_Master_IRQHandlerSHORT-NAME><MINIMUM-START-INTERVAL>0.0MINIMUM-START-INTERVAL><IMPLEMENTED-ENTRY-REF DEST="BSW-MODULE-ENTRY">/AUTOSAR_I2c/BswModuleEntrys/LPI2C0_Master_IRQHandlerIMPLEMENTED-ENTRY-REF><INTERRUPT-CATEGORY>CAT-2INTERRUPT-CATEGORY><INTERRUPT-SOURCE>HardwareINTERRUPT-SOURCE>BSW-INTERRUPT-ENTITY>ENTITYS><EVENTS>EVENTS>BSW-INTERNAL-BEHAVIOR>INTERNAL-BEHAVIORS>BSW-MODULE-DESCRIPTION>ELEMENTS>AR-PACKAGE><AR-PACKAGE><SHORT-NAME>BswModuleEntrysSHORT-NAME><ELEMENTS><BSW-MODULE-ENTRY><SHORT-NAME>I2c_AsyncTransmitSHORT-NAME><SERVICE-ID>0x03SERVICE-ID><IS-REENTRANT>trueIS-REENTRANT><IS-SYNCHRONOUS>trueIS-SYNCHRONOUS><CALL-TYPE>REGULARCALL-TYPE><EXECUTION-CONTEXT>UNSPECIFIEDEXECUTION-CONTEXT><SW-SERVICE-IMPL-POLICY>STANDARDSW-SERVICE-IMPL-POLICY>BSW-MODULE-ENTRY><BSW-MODULE-ENTRY><SHORT-NAME>I2c_DeInitSHORT-NAME><SERVICE-ID>0x01SERVICE-ID><IS-REENTRANT>falseIS-REENTRANT><IS-SYNCHRONOUS>trueIS-SYNCHRONOUS><CALL-TYPE>REGULARCALL-TYPE><EXECUTION-CONTEXT>UNSPECIFIEDEXECUTION-CONTEXT><SW-SERVICE-IMPL-POLICY>STANDARDSW-SERVICE-IMPL-POLICY>BSW-MODULE-ENTRY><BSW-MODULE-ENTRY><SHORT-NAME>LPI2C0_Master_IRQHandlerSHORT-NAME><SERVICE-ID>0SERVICE-ID><IS-REENTRANT>falseIS-REENTRANT><IS-SYNCHRONOUS>trueIS-SYNCHRONOUS><CALL-TYPE>INTERRUPTCALL-TYPE><EXECUTION-CONTEXT>INTERRUPT-CAT-2EXECUTION-CONTEXT><SW-SERVICE-IMPL-POLICY>STANDARDSW-SERVICE-IMPL-POLICY>BSW-MODULE-ENTRY>ELEMENTS>AR-PACKAGE>AR-PACKAGES>AR-PACKAGE><AR-PACKAGE><SHORT-NAME>I2c_TS_T40D34M20I0R0SHORT-NAME><AR-PACKAGES><AR-PACKAGE><SHORT-NAME>ImplementationsSHORT-NAME><ELEMENTS><BSW-IMPLEMENTATION><SHORT-NAME>BswImplementation_0SHORT-NAME><CODE-DESCRIPTORS><CODE><SHORT-NAME>FilesSHORT-NAME><ARTIFACT-DESCRIPTORS><AUTOSAR-ENGINEERING-OBJECT><SHORT-LABEL>config::I2c.xdmSHORT-LABEL><CATEGORY>SWCFGCATEGORY>AUTOSAR-ENGINEERING-OBJECT><AUTOSAR-ENGINEERING-OBJECT><SHORT-LABEL>doc::RTD_I2C_IM.pdfSHORT-LABEL><CATEGORY>SWDOCCATEGORY>AUTOSAR-ENGINEERING-OBJECT><AUTOSAR-ENGINEERING-OBJECT><SHORT-LABEL>examples::EBT::I2c_HLD_FLEXIO_Transfer_S32K312::generate::epc::Base.xdmSHORT-LABEL><CATEGORY>SWCFGCATEGORY>AUTOSAR-ENGINEERING-OBJECT><AUTOSAR-ENGINEERING-OBJECT><SHORT-LABEL>include::CDD_I2c.hSHORT-LABEL><CATEGORY>SWHDRCATEGORY>AUTOSAR-ENGINEERING-OBJECT><AUTOSAR-ENGINEERING-OBJECT><SHORT-LABEL>src::CDD_I2c.cSHORT-LABEL><CATEGORY>SWSRCCATEGORY>AUTOSAR-ENGINEERING-OBJECT><AUTOSAR-ENGINEERING-OBJECT><SHORT-LABEL>src::Lpi2c_Ip_Irq.cSHORT-LABEL><CATEGORY>SWSRCCATEGORY>AUTOSAR-ENGINEERING-OBJECT>ARTIFACT-DESCRIPTORS>CODE>CODE-DESCRIPTORS><COMPILERS><COMPILER><SHORT-NAME>GCC_CompilerSHORT-NAME><NAME>GCC CompilerNAME><OPTIONS>-mcpu=cortex-m7 -mthumb -mlittle-endian -mfpu=fpv5-sp-d16 -mfloat-abi=hard -std=c99 -Os -ggdb3 -Wall -Wextra -pedantic -Wstrict-prototypes -Wundef -Wunused -Werror=implicit-function-declaration -Wsign-compare -Wdouble-promotion -fno-short-enums -funsigned-char -funsigned-bitfields -fomit-frame-pointer -fno-common -fstack-usage -fdump-ipa-all -c -DS32K3XX -DS32K344 -DGCC -DUSE_SW_VECTOR_MODE -DD_CACHE_ENABLE -DI_CACHE_ENABLE -DENABLE_FPU -DMCAL_ENABLE_USER_MODE_SUPPORTOPTIONS><VENDOR>GCC SystemsVENDOR><VERSION>NXP GCC 10.2.0 20200723 (Build 1728 Revision g5963bc8)VERSION>COMPILER>COMPILERS><GENERATED-ARTIFACTS><DEPENDENCY-ON-ARTIFACT><SHORT-NAME>CDD_I2c_PBcfg_hSHORT-NAME><ARTIFACT-DESCRIPTOR><SHORT-LABEL>generate_PB::include::CDD_I2c_PBcfg.hSHORT-LABEL><CATEGORY>SWHDRCATEGORY>ARTIFACT-DESCRIPTOR><USAGES><USAGE>EXECUTEUSAGE>USAGES>DEPENDENCY-ON-ARTIFACT><DEPENDENCY-ON-ARTIFACT><SHORT-NAME>CDD_I2c_PBcfg_cSHORT-NAME><ARTIFACT-DESCRIPTOR><SHORT-LABEL>generate_PB::src::CDD_I2c_PBcfg.cSHORT-LABEL><CATEGORY>SWSRCCATEGORY>ARTIFACT-DESCRIPTOR><USAGES><USAGE>EXECUTEUSAGE>USAGES>DEPENDENCY-ON-ARTIFACT>GENERATED-ARTIFACTS><LINKERS><LINKER><SHORT-NAME>GCC_LinkerSHORT-NAME><NAME>GCC CompilerNAME><OPTIONS>-Wl,-Map,filename -T linkerfile --entry=Reset_Handler -nostartfiles -mcpu=cortexm7 -mthumb -mfpu=fpv5-sp-d16 -mfloat-abi=hard -mlittle-endian -ggdb3 -lc -lm -lgccOPTIONS><VENDOR>GCC SystemsVENDOR><VERSION>NXP GCC 10.2.0 20200723 (Build 1728 Revision g5963bc8)VERSION>LINKER>LINKERS> <PROGRAMMING-LANGUAGE>CPROGRAMMING-LANGUAGE><RESOURCE-CONSUMPTION><SHORT-NAME>ResourceConsumptionSHORT-NAME><MEMORY-SECTIONS><MEMORY-SECTION><SHORT-NAME>I2C_CODESHORT-NAME><ALIGNMENT>UNSPECIFIEDALIGNMENT><SW-ADDRMETHOD-REF DEST="SW-ADDR-METHOD">/AUTOSAR_MemMap/SwAddrMethods/CODESW-ADDRMETHOD-REF><SYMBOL>CODESYMBOL>MEMORY-SECTION><MEMORY-SECTION><SHORT-NAME>I2C_CONFIG_DATA_UNSPECIFIEDSHORT-NAME><ALIGNMENT>UNSPECIFIEDALIGNMENT><SW-ADDRMETHOD-REF DEST="SW-ADDR-METHOD">/AUTOSAR_MemMap/SwAddrMethods/CONFIG_DATASW-ADDRMETHOD-REF><SYMBOL>CONFIG_DATA_UNSPECIFIEDSYMBOL>MEMORY-SECTION><MEMORY-SECTION><SHORT-NAME>I2C_VAR_CLEARED_8SHORT-NAME><ALIGNMENT>8ALIGNMENT><SW-ADDRMETHOD-REF DEST="SW-ADDR-METHOD">/AUTOSAR_MemMap/SwAddrMethods/VAR_CLEAREDSW-ADDRMETHOD-REF><SYMBOL>VAR_CLEARED_8SYMBOL>MEMORY-SECTION>MEMORY-SECTIONS>RESOURCE-CONSUMPTION><SW-VERSION>2.0.0SW-VERSION><VENDOR-ID>43VENDOR-ID><AR-RELEASE-VERSION>4.4.0AR-RELEASE-VERSION><BEHAVIOR-REF DEST="BSW-INTERNAL-BEHAVIOR">/AUTOSAR_I2c/BswModuleDescriptions/I2c/InternalBehavior_0BEHAVIOR-REF><VENDOR-SPECIFIC-MODULE-DEF-REFS><VENDOR-SPECIFIC-MODULE-DEF-REF DEST="ECUC-MODULE-DEF">/TS_T40D34M20I0R0/I2cVENDOR-SPECIFIC-MODULE-DEF-REF>VENDOR-SPECIFIC-MODULE-DEF-REFS>BSW-IMPLEMENTATION>ELEMENTS>AR-PACKAGE>AR-PACKAGES>AR-PACKAGE>AR-PACKAGES>
AUTOSAR>
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
