应用层-SWC架构

2023-12-20 18:30
文章标签 架构 应用层 swc

本文主要是介绍应用层-SWC架构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

应用层-SWC架构

  • 0 前言
  • 1 SWC设计原理
    • 1.1 SWC架构目的
    • 1.2 SWC架构方案
  • 2 SWC架构实现
    • 2.1 通用数据
      • Base Type
      • Compu Method
      • Constants
    • 2.2 Data Element和Data Type
      • Data Type
    • 2.3 PortInterface
      • Port Prototype
      • Port Interface
    • 2.4 Atomic SWC
      • Application Component Type
      • Application Component Prototype
    • 2.5 Composition SWC
      • Composition Component Type
      • Composition Component Prototype
    • 2.6 Runnable Entity

0 前言

>>返回AUTOSAR系列文章目录<<


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个发送APIRte_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_SeReleasepinlock();
}

对于每一个需要接收DT_PORTNAME_outputs的SwcName:

  • 在Rte_SwcName.h中声明1个接收APIRte_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


>>返回AUTOSAR系列文章目录<<

这篇关于应用层-SWC架构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/517029

相关文章

Java异常架构Exception(异常)详解

《Java异常架构Exception(异常)详解》:本文主要介绍Java异常架构Exception(异常),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. Exception 类的概述Exception的分类2. 受检异常(Checked Exception)

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

系统架构设计师: 信息安全技术

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师: 信息安全技术前言信息安全的基本要素:信息安全的范围:安全措施的目标:访问控制技术要素:访问控制包括:等保

利用命令模式构建高效的手游后端架构

在现代手游开发中,后端架构的设计对于支持高并发、快速迭代和复杂游戏逻辑至关重要。命令模式作为一种行为设计模式,可以有效地解耦请求的发起者与接收者,提升系统的可维护性和扩展性。本文将深入探讨如何利用命令模式构建一个强大且灵活的手游后端架构。 1. 命令模式的概念与优势 命令模式通过将请求封装为对象,使得请求的发起者和接收者之间的耦合度降低。这种模式的主要优势包括: 解耦请求发起者与处理者

创业者该如何设计公司的股权架构

本文来自七八点联合IT橘子和车库咖啡的一系列关于设计公司股权结构的讲座。 主讲人何德文: 在公司发展的不同阶段,创业者都会面临公司股权架构设计问题: 1.合伙人合伙创业第一天,就会面临股权架构设计问题(合伙人股权设计); 2.公司早期要引入天使资金,会面临股权架构设计问题(天使融资); 3.公司有三五十号人,要激励中层管理与重要技术人员和公司长期走下去,会面临股权架构设计问题(员工股权激