应用层-SWC架构

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

应⽤层-SWC架构
应⽤层-SWC架构
0 前⾔
1 SWC设计原理
1.1 SWC架构⽬的
在AUTOSAR项⽬中:
① 项⽬⼯程师提出设计需求,并将设计需求分为不同的功能模块,也就是Simulink⼯程中最上层的EBS、ACC等模块,以任务书形式发给策略⼯程师
② 策略⼯程师接到任务,⽐如要完成EBS模块,⾸先将EBS模块细分为制动踏板传感器Subsystem、执⾏电机Subsystem、分析计算Subsystem,⼜列出每个Subsystem需要收发哪些Variable,以Excel形式发给架构⼯程师
③ 架构⼯程师拿着Excel⽂件,开始在Vector Developer⾥⼲下⾯的⼯作,完成后将架构⽂件以arxml形式发给策略⼯程师,以dpa形式发给底层软件⼯程师
将EBS模块设计为Composition SWC
将制动踏板传感器Subsystem、执⾏电机Subsystem、分析计算Subsystem分别设计为EBS模块下的Atomic SWC
将每个Atomic SWC需要的Variable组设计为Port,需要的Variable设计为Port下的Data Element,将Port相互连接
将每个Atomic SWC需要的函数设计为Runnable
④ 策略⼯程师⽤Simulink打开arxml,开发策略,最终⽣成ASW部分C代码,发给软件集成⼯程师
每个Composition SWC⽣成⼀个⽂件夹
每个Atomic SWC⽣成⼀个C⽂件
每个Runnable⽣成⼀个函数
每个Data Element⽣成⼀个变量
⑤ 底层软件⼯程师⽤Vector Configurator打开dpa⽂件,配制AUTOSAR BSW,完成后⽣成BSW部分代码,发给软件集成⼯程师
⑥ 软件集成⼯程师将ASW代码和BSW代码⽣成HEX、MAP、ELF、A2L等⽂件,发给标定⼯程师和测试⼯程师
1.2 SWC架构⽅案
SWC架构分为5层结构:
Composition SWC,对应Simulink的模块System,对应C代码的⽂件夹,每个模块只要⼀个,包含数个Atomic SWC
Atomic SWC,对应Simulink的模块Subsystem,对应C代码的C⽂件,每个传感器、执⾏器、分析模块各⼀个,在Composition SWC下层,包含Runnabl和Port
Port,Atomic SWC之间的通信通道,有数据传输需求的Atomic SWC之间⾄少要有⼀个Port相连,也可以有多个Port相连
Data Element,Port要传输的Variable,给Runable使⽤
Runnable,Atomic SWC内具体功能实现的函数,也是Port、Data Element的实际使⽤者
为了⽅便架构设计和结构复⽤,除了Runnable外,每层⼜分为实例类和应⽤类:
实例类最终会⽣成实际的C代码,应⽤类只在架构设计过程中使⽤,不产⽣代码
应⽤类可以帮助设计复⽤,⽐如作为Sender的实例Port和作为Receiver的实例Port,传输相同的数据,只需要设计⼀个应⽤Port映射两次就可以
应⽤类可以帮助层次之间解耦,⽐如Atomic SWC设计好后,下⾯的Port还没设计,先将Atomic SWC关联应⽤Port,等实例Port设计好了在关联应⽤Port
2 SWC架构实现
SWC架构设计过程如下:
2.1 通⽤数据
Base Type
Base Type是C语⾔所⽀持的基本数据类型,如boolean、int、uint、float等等,⼀般不⽤⾃⼰添加
Base Type不能直接⽤于定义Date Element
Compu Method
Compu Method是Date Element的raw value(2进制数)和physical value之间的换算关系
Constants
在C代码中宏定义⼀个常量,⽐如#define InitValue 0,通常作为Data Element的Init Value、Invalid Value、Enum Value等等
2.2 Data Element和Data Type
Data Element就是应⽤层使⽤的变量,由Data Type创建,专属于特定SWC
Data Type是变量的数据类型
实例类是Implementation Data Type,使⽤这个
应⽤类是Application Data Type,⽬前没有使⽤
Data Type
RTE层使⽤的数据类型就称为Data Type
RTE层使⽤的所有数据类型都在Rte_Type.h中定义
Data Type分为是Implementation Data Type 和 Application Data Type,⽬前统⼀使⽤Implementation Data Type,简称为DT
DT可分为2种,数组型DT和结构体型DT
数组型DT⽰例如下:
注意,AUTOSAR禁⽌直接使⽤Base Type做数据类型
typedef uint8 rt_uint8;
typedef uint8 rt_uint8_4[4];
结构体型DT⽰例如下:
结构体型DT通常⽤DT开头,成员变量可以使BaseType、数组型DT和结构体型DT
typedef struct
{
uint8 member1;
rt_uint8_4 member2;
}DT_name_type;
2.3 PortInterface
Port传递Data Element的接⼝
实例类是Port Prototype,简称Pp
应⽤类是Port Interface,简称Pi
Port Prototype
Pp有⽅向,有初值
Pp在指定的CtAp界⾯,New Receiver Port Prototype或者New Sender Port Prototype创建,需要配置的属性⽅向Receiver或Sender
关联的Pi
Port Interface
Port Interface是⼀个抽象的通道,每个PortInterface负责在SWC之间传递⼀个DataElement
由于1个PortInterface只能传递1个DataElement,所以需要将要传递的DataElement打包成⼀个总的DataElement,通常命名为DT_PORTNAME_outputs
typedef struct
{
DT_Aaa_TYPE member1;
DT_Bbb_TYPE member2;
}DT_PORTNAME_outputs;
对于每⼀个需要发送DT_PORTNAME_outputs的SwcName:
在Rte_SwcName.h中声明1个发送API Rte_Write_SwcName_PORTNAME_outputs()
在Rte_SystemApplication_OsCore_Corex.c中实现它
在Rte_SwcName.h中将Rte_Write_SwcName_PORTNAME_outputs()宏定义为Rte_Write_PORTNAME_outputs()
在Rte_SwcName.c中使⽤Rte_Write_PORTNAME_outputs(&data)
#define Rte_Write_PORTNAME_outputs Rte_Write_SwcName_PORTNAME_outputs
Rte_Write_SwcName_PORTNAME_outputs(*data)
{
GetSpinlock();
*data = Rte_Se
Releasepinlock();
}
对于每⼀个需要接收DT_PORTNAME_outputs的SwcName:
在Rte_SwcName.h中声明1个接收API Rte_Read_SwcName_PORTNAME_outputs()
在Rte_SystemApplication_OsCore_Corex.c中实现它
在Rte_SwcName.h中将Rte_Read_SwcName_PORTNAME_outputs()宏定义为Rte_Read_PORTNAME_outputs()在Rte_SwcName.c中使⽤Rte_Read_PORTNAME_outputs(&data)
#define Rte_Read_PORTNAME_outputs Rte_Read_SwcName_PORTNAME_outputs
2.4 Atomic SWC
Atomic SWC是Port和Runnable的封装
实例类是Application Component Type,简称CtAp
应⽤类是Application Component Prototype,简称CpAp
Application Component Type
在Application Component Types右击创建,选择属性
Composition/Atomic ->选择Atomic
Type -> 选择Application
Supports multiple instantiation -> 是否⽀持实例化多个CpAp
Application Component Prototype
在CtCo中右击,选择Composition Component相应CtAp,创建CpAp
关联Data Type Map
2.5 Composition SWC
Composition SWC是Atomic SWC的封装
实例类是Composition Component Type,简称CtCo
应⽤类是Composition Component Prototype,简称CpCo
Composition Component Type
在Application Component Types右击创建,选择属性
Composition/Atomic ->选择Composition
Type -> 选择Application
Supports multiple instantiation -> 是否⽀持实例化多个CpCo
Composition Component Prototype
在CtCo中右击,选择Composition Component,创建CpCo 2.6 Runnable Entity
在CpAp中创建,在Vector Developer中关联Task。

相关文档
最新文档