>>返回AUTOSAR系列文章目录<<
在AUTOSAR项目中:
① 项目工程师提出设计需求,并将设计需求分为不同的功能模块,也就是Simulink工程中最上层的EBS、ACC等模块,以任务书形式发给策略工程师
② 策略工程师接到任务,比如要完成EBS模块,首先将EBS模块细分为制动踏板传感器Subsystem、执行电机Subsystem、分析计算Subsystem,又列出每个Subsystem需要收发哪些Variable,以Excel形式发给架构工程师
③ 架构工程师拿着Excel文件,开始在Vector Developer里干下面的工作,完成后将架构文件以arxml形式发给策略工程师,以dpa形式发给底层软件工程师
④ 策略工程师用Simulink打开arxml,开发策略,最终生成ASW部分C代码,发给软件集成工程师
⑤ 底层软件工程师用Vector Configurator打开dpa文件,配制AUTOSAR BSW,完成后生成BSW部分代码,发给软件集成工程师
⑥ 软件集成工程师将ASW代码和BSW代码生成HEX、MAP、ELF、A2L等文件,发给标定工程师和测试工程师
SWC架构分为5层结构:
为了方便架构设计和结构复用,除了Runnable外,每层又分为实例类和应用类:
SWC架构设计过程如下:
Base Type是C语言所支持的基本数据类型,如boolean、int、uint、float等等,一般不用自己添加
Base Type不能直接用于定义Date Element
Compu Method是Date Element的raw value(2进制数)和physical value之间的换算关系
在C代码中宏定义一个常量,比如
#define InitValue 0
,通常作为Data Element的Init Value、Invalid Value、Enum Value等等
Data Element就是应用层使用的变量,由Data Type创建,专属于特定SWC
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;
Port传递Data Element的接口
Pp有方向,有初值
Pp在指定的CtAp界面,New Receiver Port Prototype或者New Sender Port Prototype创建,需要配置的属性
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_Write_SwcName_PORTNAME_outputs()
Rte_Write_SwcName_PORTNAME_outputs()
宏定义为Rte_Write_PORTNAME_outputs()
Rte_Write_PORTNAME_outputs(&data)
#define Rte_Write_PORTNAME_outputs Rte_Write_SwcName_PORTNAME_outputs
Rte_Write_SwcName_PORTNAME_outputs(*data)
{GetSpinlock();*data = Rte_SeReleasepinlock();
}
对于每一个需要接收DT_PORTNAME_outputs
的SwcName:
Rte_Read_SwcName_PORTNAME_outputs()
Rte_Read_SwcName_PORTNAME_outputs()
宏定义为Rte_Read_PORTNAME_outputs()
Rte_Read_PORTNAME_outputs(&data)
#define Rte_Read_PORTNAME_outputs Rte_Read_SwcName_PORTNAME_outputs
Atomic SWC是Port和Runnable的封装
在Application Component Types右击创建,选择属性
在CtCo中右击,选择Composition Component相应CtAp,创建CpAp
Composition SWC是Atomic SWC的封装
在Application Component Types右击创建,选择属性
在CtCo中右击,选择Composition Component,创建CpCo
在CpAp中创建,在Vector Developer中关联Task
>>返回AUTOSAR系列文章目录<<
本文发布于:2024-02-02 00:07:56,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170680947640065.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |