当前位置:网站首页>【AutoSAR 二 AppL概述】
【AutoSAR 二 AppL概述】
2022-07-02 23:49:00 【柯宇谦】
AutoSAR 二 AppL概述
1 AppL组成

- 应用软件组件 SWC
- AutoSAR接口Ports和连接器Connector
- 可运行实体Runnable
2 SWC

2.1 SWC的通信

SWC之间的通信是通过应用软件层外进行了,我们称其为虚拟功能总线(VFB)。
该总线是意义上的片内外通信的结合体,取了个名字叫虚拟功能总线,其实际就是分两部分:
- 在片内就是通过RTE通信。前面章节说了,一个SWC可以理解为一个.c文件,那么c文件间怎么通信呢——全局变量。
- 在片外就通过片外总线通信(一般汽车上都是CAN Bus)

上图中的这个符号是指AutoSAR接口(Ports),而它们之间的蓝色的连接线称为连接器(Connector)。
2.3 SWC的分配

我们把上述的7个SWC分配到两个ECU中(实际上汽车里面也是这么做的)。将车灯开关、调光控制器和左右顶灯放到一个ECU中由车身顶部的一个芯片控制;将左右车门开关和车门开关逻辑单元放到专用的车门ECU芯片中控制。
两个ECU即为两个控制器,分别位于车身前部的车门控制器和位于车身顶部的顶灯控制器。ECU内部的SWC是通过RTE的管理来通信的;而跨ECU的通信就是通过外部总线(一般为CAN,就是车身上连接各ECU的CAN双绞线束)。
这样一来,就将整个顶灯的功能统一起来,并且部署到车身的各个ECU中去执行。
2.4 SWC的类型
2.4.1 原子级的SWC(Atomic SWC)
原子级的SWC(Atomic SWC):顾名思义,就是不可再拆分的SWC.
我们将SWC看成原子,那runnable就是其中的电子、质子和中子,它们与原子密不可分。因此将SWC看成是最小单元,runnable是其中的函数。每个SWC的功能基本都是用来实现特定的算法。

2.4.2 集合级的SWC(Composition SWC)
有不可分割的SWC,就肯定有可分割的SWC。所以AutoSAR还规定了一类集合级的SWC(Composition SWC)。它们可以分为一个一个更小的Atomic SWC。
我们可以将功能相近或者需要整合到一处方便观看的SWC(以后Atomic SWC都简称为SWC)利用一个compositon
SWC包含起来。这样,就可以方便SWC归类

这样就会在AppL中集合成一个文件夹的形式,文件映射的关系也将改变:

- 注意:
在Vector的DaVinci中其实不会生成Composition的文件夹,为了方便大家理解添加的。其实Composition只是一个概念,是用来在配置工具上方便大家归类整理,看起来顺眼的
2.4.3 特殊的SWC
实际上,需要添加代码的不止是应用层的SWC。在BSW中,IO硬件抽象层(IoHwAb,BSW章节中会讲到)和复杂驱动(Cdd)都是需要手动添加代码的,而这两个地方也可以算作是SWC,在DaVinci Developer中都是可以作为SWC进行配置和加runnable等操作的。因此,我们将其算成是特殊的SWC来看待
3 Ports类型
Ports是SWC和SWC做接口(Interface)通信使用,或者SWC通过RTE和BSW做接口(Interface)通信使用。
Ports主要分为5种类型,列在下面的图中:
其中又可分类为:R-Ports、P-Ports和PR-Ports。值得注意的是,这里的PR-Ports只在AutoSAR4中定义了。
或者又可以分为:Send/Receiver(S/R)接口和Client/Server(C/S)接口。
而S/R接口是用来传输数据的;C/S接口是用来执行操作的。
3.1.1 S/R接口

• 作用: 传输数据。通过RTE传输数据,并且通过RTE管理数据的传输,避免数据出问题(例如同时调用同一数据时可能出错)
• 一个接口可以包含多个数据,类似于通过结构体传输
• 可以传输基础数据类型(int,float等)和复杂数据类型(record,array等)
再说具体一点,举个例子调用接收接口:
Rte_Read_<Port>_<Data>()
//这里的xx是指的传输的数据内容,比如DoorOpen就是:
SWC_DoorOpen = Rte_Read_Door_DoorOpen();
3.1.2 C/S接口

• 作用: 提供操作。就是Server提供函数供Client调用
• 可以同步和异步。同步就是直接调用,相当于函数直接插入上下文运行;异步的话需要等待,相当于让函数在另一个线程中运行,运行完了再返回,原上下文依然运行
• 一个接口可以提供多个操作,就是一个接口可以包含很多函数
• ECU内部和跨ECU都可以调用,跨ECU也是通过外部总线
再说具体一点,举个例子调用客户接口:
Rte_Call_<Port>_<Function>()
//这里的xx是指的调用的函数,比如调用State()就是:
Rte_Call_Door_State();
4 Runnables 可运行实体
Runnable就是SWC中的函数,而在AutoSAR架构在被DaVinci软件生成的时候,Runnable是空函数,需要手动添加代码来实现其实际的功能。
Runnable可以被触发,比如被定时器触发、被操作调用触发或者被接受数据触发等。
- Runnable是需要OS中的Task做载体的。
runnable是函数,但是再c文件中光有一个函数那没用,必须要调用该函数才能起作用,就必须要有操作系统中的任务来执行这个函数。
边栏推荐
- 文件操作IO-Part2
- Linux Software: how to install redis service
- 【luogu P4320】道路相遇(圆方树)
- Markdown使用教程
- How to find out the currently running version of Solr- How do I find out version of currently running Solr?
- setInterval定时器在ie不生效原因之一:回调的是箭头函数
- University of Toronto:Anthony Coache | 深度强化学习的条件可诱导动态风险度量
- Hundreds of continuous innovation to create free low code office tools
- Array de duplication
- Two common methods and steps of character device registration
猜你喜欢
随机推荐
Sentry developer contribution Guide - configure pycharm
Multi process programming (III): message queue
【AutoSAR 十三 NVM】
NC50965 Largest Rectangle in a Histogram
Gan model architecture in mm
可下载《2022年中国数字化办公市场研究报告》详解1768亿元市场
[shutter] Introduction to the official example of shutter Gallery (project introduction | engineering construction)
NC24325 [USACO 2012 Mar S]Flowerpot
NC24325 [USACO 2012 Mar S]Flowerpot
The "2022 China Digital Office Market Research Report" can be downloaded to explain the 176.8 billion yuan market in detail
Go custom sort
Callback event after the antv X6 node is dragged onto the canvas (stepping on a big hole record)
Vulkan并非“灵药“
利亚德:Micro LED 产品消费端首先针对 100 英寸以上电视,现阶段进入更小尺寸还有难度
Introduction of UART, RS232, RS485, I2C and SPI
Linux Software: how to install redis service
Overlay of shutter (Pop-Up)
The most painful programming problem in 2021, adventure of code 2021 Day24
Confluence的PDF导出中文文档异常显示问题解决
Redis21 classic interview questions, extreme pull interviewer







![[MCU project training] eight way answering machine](/img/a3/6a50619cd16269bf485a4a273677aa.jpg)


