ASW层(应用层)设计与工作内容笔记
一、Autosar ASW层
1. ASW要素
- 核心元素:
- 数据类型定义:作为所有工作的基础,是接口与组件交互的前提;
- 接口类型定义:基于已定义的数据类型构建,实现组件间交互的“标准协议”;
- 软件组件(SWC)设计:为每个组件匹配合适的数据接口,明确功能边界;
- 组件连接:多个SWC通过接口关联,形成ASW层的Composition(组件集合) 概念。
- 设计特点:
- 使用Component Prototype (CPT) 表示软件模块原型,聚焦“交互框架”而非具体算法;
- 关注架构而非算法:仅定义组件间的交互逻辑,不涉及功能的具体实现代码;
- 系统级视角:需综合考虑多核部署(SWC核心分配)、功能安全(ISO 26262)、信息安全(ISO/SAE 21434)等系统约束。
2. ASW层的设计
1)设计流程
按“基础准备→模块级→系统级”分层推进,确保设计逻辑完整可落地:
- 基础准备工作:
- 数据类型定义:覆盖Base Type(底层原生类型)、Implementation Data Type(IDT,代码级类型)、Application Data Type(ADT,应用逻辑类型)及Data Type Mapping Sets(类型映射);
- 数据变换方法:设计Compute Method,处理线性变换、分段增益、数据压缩等“代码值→物理值”的转换逻辑;
- 接口类型定义:明确6类核心接口——SR(Sender Receiver,发送-接收)、CS(Client Service,客户端-服务端)、MS(Mode Switch,模式切换)、NV data(非易失数据)、Trigger(触发)、Parameter(参数)。
- 模块级设计:
- 接口定义:确定单个SWC对外的交互方式(如用SR接口传传感器数据、CS接口提供控制服务);
- 功能定义:划清SWC的功能边界(如“电池状态监测”“灯光控制”),避免功能重叠;
- 事件定义:规划SWC的响应机制(如定时采样事件、数据接收触发事件);
- IRV定义:设计SWC内部可运行实体(Runnable)间的交互变量(Internal Runnable Variable),实现组件内数据传递。
- 系统级设计:
- 组件链接:通过接口建立不同SWC间的交互关系(如“传感器SWC→ECU控制SWC”的数据流向);
- CPT定义:完成SWC的原型配置,为后续Composition构建提供可复用的模块单元。
2)设计原则
- 抽象组合原则:
- 合理划分SWC功能颗粒度(避免过大降低复用性、过小增加交互复杂度);
- 提前规划多核部署方案(高优先级SWC分配至独立核心,避免资源抢占);
- 兼顾功能安全与信息安全(安全相关SWC单独设计,敏感数据接口需加密)。
- 数据交互机制:
- 组件间通信完全依赖RTE(运行时环境),SWC无需关心底层总线(CAN/LIN/Ethernet)或协议细节;
- BSW层为RTE提供底层支撑(如COM模块负责总线数据收发、NM模块管理网络状态);
- SWC仅需向RTE发起“数据发送/接收”“服务调用”请求,无需直接调用BSW接口。
- 架构特点:
- 所有ARXML文件共同描述严格的软件架构,确保跨工具、跨团队协作的一致性;
- 避免“单个控制器视角”,需从整车系统出发设计SWC交互(如跨ECU的SWC通信);
- 最终产出为“应用层软件架构”(接口、SWC、Composition),而非具体功能实现代码。
3. ASW层工作内容
1)数据类型(数据字典编辑器)
数据类型是ASW层的“语言基础”,按抽象层级分为4类,需通过数据字典编辑器统一管理:
- Application Data Types (ADT):
- 定义角度:从应用逻辑角度描述数据,属虚拟概念;
- 核心特点:体现数据的物理语义(如“电池电压”“发动机转速”)、取值范围(如0-5V)和单位;
- 关联逻辑:需绑定Compute Method,实现“计算机内部代码值→物理值”的转换;
- 使用场景:SWC设计阶段,用于组件间的“虚拟通信”(不涉及底层代码实现)。
- Implementation Data Types (IDT):
- 定义角度:从代码实现角度描述数据;
- 抽象层级:虽为抽象概念,但近似C语言数据类型(如uint16、float32);
- 生成结果:代码生成时会自动转换为对应的C语言类型定义;
- 作用:承上启下——基于Base Type构建,支撑ADT的底层实现。
- Base Types:
- 定义角度:从比特/字节角度描述底层平台原生数据类型;
- 依赖条件:与MCU硬件、编译器绑定(由Platform模块定义);
- 核心作用:作为IDT、ADT的“底层基石”,确保数据类型与硬件兼容。
- Data Type Mapping Sets:
- 本质:建立不同数据类型间的映射关系(如ADT与IDT的对应、IDT与Base Type的关联);
- 目的:确保SWC交互、BSW层调用时数据格式一致,避免类型不匹配错误。
编辑说明
- 编辑界面:包含4个核心选项卡——Data Types(数据类型)、Interface(接口)、Compute Method(计算方法)、Data Constraints(数据约束);
- 类型分类:左侧选项卡区分“Primitive(基础类型,如单个数值)”和“Composite(复杂类型,如数组、结构体、联合体)”;
- 编辑方式:以表格形式维护数据字典,需定义“存放位置、类型、短名、标定权限(read write/read only)”,支持引用Base Type或同类型其他定义;
- 注意事项:需具备C语言基础,可配置数组长度、结构体成员等属性;
- 推荐设计流程:先定义Base Type(适配MCU平台)→再定义IDT(代码级抽象)→最后定义ADT(应用逻辑语义)→按需配置Mapping Sets。
2)计算方法(Compute Method)
- 功能定位:将SWC交互的“原始代码值”转换为“具有物理意义的量值”(如ADC采样值0-4095→电压值0-5V)。
- 核心转换方式:
- identical变换:原始数据与物理值一致,无需转换(如“1=灯亮,0=灯灭”);
- 线性变换:遵循
y=kx+b
公式(k为系数,b为偏移量),适用于连续线性关系数据; - scale of linear变换:带比例尺的线性转换(如
物理值=(原始值-偏移量)×系数/比例尺
),适用于需校准的传感器数据; - 文字表转换:通过预设对照表实现数值映射(如“1=正常,2=警告,3=故障”),适用于离散状态数据。
- 使用建议:根据数据的物理特性选择转换方式,确保“代码值→物理值”的准确性。
3)数据约束(Data Constraints)
- 核心功能:定义数据的有效边界和异常处理规则,避免无效数据导致SWC功能误判。
- 典型应用场景:
- 需设置上下界的连续量(如发动机转速0-8000rpm、冷却液温度-40-125℃);
- 安全相关参数的边界控制(如制动压力低于1MPa时触发报警)。
- 操作特性:
- 支持可视化界面编辑,可快速添加/删除约束元素;
- 工程意义:提升系统稳定性,减少因数据异常引发的功能故障。
4)接口(Interface)
接口是SWC间、SWC与BSW层交互的“标准协议”,按功能分为6类:
- 接口类型及核心用途:
- 数据交互接口(Sender Receiver, SR):实现SWC间双向数据交换(如“传感器SWC→ECU SWC发送温度数据”),基于“数据帧”传递,无返回值;
- 客户端服务端接口(Client Server, CS):支持“请求-响应”式函数调用(如“ECU SWC→诊断SWC请求读取故障码”),Client发起调用,Server执行并返回结果;
- 参数接口(Parameter):用于SWC间静态/慢变参数传递(如“标定工具→控制SWC传递PID参数”),支持配置“读/写”权限;
- 模式切换接口(Mode Switch, MS):由ASW层发起模式转换请求(如“应用层请求ECU进入休眠模式”),与BSW层BSWM、DCM、ECUM模块联动,通过RTE传递模式指令;
- 非易失数据接口(NV Data):专门用于SWC与BSW存储模块(如NVM)交互,实现数据持久化(如保存故障码、标定参数);
- 触发接口(Trigger):传递“触发信号”,触发SWC特定动作(如定时触发数据采样任务),无数据交互。
- 接口操作:
- 添加方式:通过工具选项卡切换,选择对应接口类型创建;
- 原型声明:接口声明即创建“可复用原型”(类似C++类声明),后续SWC可直接引用;
- VDP配置:支持为每个接口添加多个Variable Data Point(变量数据点),可定义不同数据类型。
- 接口应用:
- SWC复用:SWC设计时引用接口原型,可对接口设置别名(如将“Temp_SR”别名为“Engine_Temp_SR”);
- 类比理解:接口原型≈C++类声明,SWC使用接口≈类的实例化。
5)软件组件(SWC)
SWC是ASW层的“功能单元”,需完成创建、接口配置、内部行为定义等操作:
- SWC的创建:
- 类型分类:AUTOSAR架构下SWC分为7类——应用SWC(核心业务功能)、复杂驱动SWC(CDD,特殊硬件驱动)、ECU抽象SWC(硬件适配)、非易失存储SWC(NV数据处理)、参数传感SWC(传感器数据采集)、执行SWC(执行器控制)、服务类SWC(通用服务,如时间同步);
- 设计原则:设计阶段需明确SWC的接口交互逻辑(“与谁交互、交互什么数据”);
- 创建方法:通过ARXML工具或工程查看工具,在
software/components
子文件夹右键创建,推荐用系统级工具可视化查看。
- 配置SWC的接口及数据变体:
- 端口配置:左侧面板配置接口类型与可运行实体(Runnable),右侧配置数据及variant/split ball支持选项;
- 引用元素:若需使用mapping或unit groups,需提前引入相关引用元素;
- 命名规范:建议采用区分性命名(如“pp_XXX”代表provider port,“rp_XXX”代表receiver port)。
- 配置内部行为及可运行实体:
- 内部行为创建:点击右上角“+”创建
software internal behavior
,推荐命名格式为“swc_ib_[组件名]_0”; - 可运行实体(Runnable):通过“configure runnable entity”创建,可按周期命名(如“Runnable_1ms”),需挂载到指定内部行为下(Runnable是SWC的“执行单元”,对应具体功能逻辑)。
- 内部行为创建:点击右上角“+”创建
- 配置事件:
- 事件类型:定时事件(按周期触发,如1ms事件)、初始化事件(SWC启动时触发)、后台事件(空闲时执行)、数据接收事件(收到SR接口数据时触发)、操作调用事件(CS接口被调用时触发);
- 创建限制:部分事件需对应接口支持(如数据接收事件依赖SR接口),需提前定义rps和variable data prototype(bdp)数据类型。
- 配置可运行实体间的变量交互(IRV):
- IRV变量:用于SWC内部不同Runnable间的数据交换,可导入已有IRV或声明新数据类型;
- 关键配置:明确IRV的读写关系(如“Runnable_A写,Runnable_B读”),可设置初始值(如默认0)。
- 其他配置:
- 参数配置:按需定义或新增参数类型,支持多种参数化选项;
- 设计考量:合理划分SWC颗粒度,预留未来Composition映射空间,适配功能安全与架构约束。
6)组件系统级工作内容
- 链接组件并定义CPT:
- Composition概念:比SWC更高层级的“组件集合”,是多个SWC按功能关联形成的系统单元;
- 创建流程:创建
Composition Software Component Type
→保存至同名ARXML文件→在Composition中引用SWC、接口及数据类型; - 组件声明与引用:先在components下声明组件原型(CPT),可引用已创建的ASW SWC(如ASW VCU)或BSW生成模块,CPT支持重命名(如“CPT_ASW_VCU”)。
- 配置组件间的连接:
- 自动配置工具:使用“Auto Config Composition”功能,自动完成SWC引用、命名及链接建立,需后续检查正确性;
- 连接检查:在“Assembly Connectors”中删除无用连接,确保链路准确;
- 手动连接方法:通过“Manual Connection Editor”选择源组件(Source Component)与目标组件(Target Component),需保证接口类型一致(如SR接口只能连SR接口);
- 连接规则:依赖良好的命名规范,支持正则表达式匹配(示例:将ASW VCU与DCM模块的“ECU Serial Number”端口连接);
- 连接状态检查:通过“Open with Composition Overview”可视化查看,调整工具窗口显示方式,确认所有链接无误。
- 导入system info创建必要的元素:
- 自动生成功能:在AR Explorer中打开System文件夹→选择目标ECU→点击“Auto Generate ASW”,自动创建接口、组件等基础元素;
- 配置选项:设置Component Name(如“VCU_Component”),可双击创建新组件,将接口映射到指定Component下(如所有接口挂载到VCU Component);
- 生成内容:自动创建VCU Component的SWC、必要PS Ports、VCU Composition,根据DBC文件生成收发信号;
- 后续工作:手动映射服务模块,补全组件链接,可大幅减少数据类型与接口的手动创建工作量。
二、内容总结
- Composition构建要点:
- SWC引用建立:Composition中必须为所有必要SWC建立引用,避免缺失模块;
- PP-RP链接:需正确建立Composition内“provider port(PP)”与“receiver port(RP)”的对应链接;
- 数据依赖规则:每个receiver port(RPOS)必须有且仅有一个provider port(PPOS)提供数据,否则会触发编译错误;
- 工作注意事项:链接配置繁杂,需耐心核对,避免因链路错误导致系统功能失效。
- 工程实例演示:
- 实例工程:以TC397 MCU的工程为例,演示Composition的完整构建流程;
- 工具准备:需等待工程工具完全加载(避免因加载不完整导致配置异常)。
- 模块引用关系:
- 核心模块:需重点关注CDD模块(复杂设备驱动)与IO硬件抽象模块;
- 建立原则:根据MCU硬件状态与资源(如引脚、外设)正确创建模块,确保硬件与软件适配;
- 引用验证:必须完成模块间的正确引用,才能进入后续映射阶段。
- 后续工作流程:
- 映射阶段:将创建的Composition与System中的元素(如ECU、总线)进行相互映射;
- 学习安排:详细映射流程将在后续课程(如第21章)展开。
- ASW层概念补充:
- 层级结构:ASW层存在多级架构概念(如SWC、Composition、System Level);
- 后续讲解:不同层级的具体含义与区别将在后续课程中深入说明。
三、知识小结
知识点 | 核心内容 | 关键操作/配置项 | 关联概念 |
---|---|---|---|
ASW层设计流程 | 定义数据类型→设计接口→创建SWC→构建Composition | Data Type定义、Interface配置、SWC原型设计、Composition组件链接 | BSW层支持、RTE数据交互 |
数据类型分类 | Application/Implementation/Base Data Types + Mapping Sets | ADT物理语义映射、IDT代码级定义、Base Type原生类型匹配、Mapping Sets关联 | Compute Method线性变换 |
接口类型 | Sender-Receiver/Client-Server/Parameter等6类接口 | VDP变量声明、Mode Switch模式关联、接口原型复用、PP/RP端口命名 | RTE服务请求抽象、BSWM模式管理 |
SWC设计 | 应用/复杂驱动/ECU抽象等7类组件 | Port配置、Runnable实体创建、IRV变量读写映射、事件类型匹配 | 功能安全颗粒度、多核部署 |
Composition构建 | 组件连接与系统架构集成 | Auto-config自动链接、Assembly Connector手动校验、Composition Overview状态检查 | 系统级功能集成、跨ECU交互 |
工具链操作 | ARXML数据字典编辑 + Composition可视化配置 | AR Explorer工程查看、Auto Generate ASW自动生成、Problems面板错误排查 | System Mapping映射、DBC信号导入 |
设计准则 | 功能抽象/多核部署/信息安全三重约束 | SWC颗粒度控制、接口复用规划、安全相关组件隔离、核心功能优先级分配 | 自下而上开发方法论、ISO 26262合规 |
自动化生成 | 从System Description导入生成基础元素(接口、SWC、Composition) | Auto-generate ASW触发、DBC信号映射、Component接口挂载、VCU Composition自动创建 | 服务模块集成、硬件资源适配 |