SWC 流程

  • 一个arxml 存储SWC (可以存多个,也可以一个arxml存一个SWC)
  • 一个arxml 存储 composition (只能存一个)
  • 一个arxml 存储 system description (通过import dbc自动生成system)

存储SWC和composition的arxml文件分开,有效的实现了swc的复用。因为SWC的创建只是依赖于interface。【不依赖与Implementation data type,所以不用担心】 所以拿着 SWC的arxml 和定义 Interface的arxml这两个文件,就可以在任意的project里面复用了。【创建composition可以直接import该SWC】

1 新建AUTOSAR project的时候,就会自己创建文件

“ISOLAR_PlatformTypes.arxml”

  • Implementation Data Type
  • BaseType
  • DataConstr

这个文件就干了一件事,通过BaseType和DataConstr,把IDT定义了,可以直接在c文件里面直接用 【有了长度和符号,就可以被编译器识别了】

2 系统工程师会自己创建一个文件

“01_TypesAndInterface.arxml”

  • Application Data Types
  • Interfaces

这个文件里面的ADT还没有与上面提到的IDT链接起来,这时只是名字而已(会在之后的SWC过程中link起来?)

Interfaces 下面创建了3个Sender-Receiver Interface实体,每个Interface下面都分配了data element。data element的数据类型是由ADT定义的

也就是说, 我们是先有了需要这个三个通信接口的需求,然后才开始在AUTOSAR project里面去创建SWC的 【可以把每个 Interface看作是函数吗,data element是函数的输入输出】

至此,用户的需求全部在 “01_TypesAndInterface.arxml” 文件中出现

3. 新建SWC

3.1 用户在ISOLAR内 create AXRML文件,用作存储之后创建的SWC的信息

注意,这个package是AUTOSAR很重要的概念

可以看到:每个arxml文件下只能有一个package,且各个arxml的package name不能一样。也就是说,不管是SWC还是BSW模块,他们的信息都是挂靠在package下面。

这个可以类别为c project, package就是c文件【这就是为什么package不能重名】,SWC/BSW可以看作是函数,可以放在任意的c文件下

3.2 用户在package下面创建SWC,并添加相应信息给该SWC

  • Port
    • Interface - (Data Element + Application Data Type) 【一个SWC下面可以有多个port】
  • Internal Behavior
    • Runnable Entity 【函数:一个SWC下面可以有多个runnable】
      • DataAccessPoint  【函数参数】
      • Timing Event 【函数的周期】
    • DataTypeMapping 【Application Data Type 到 Implementation Data Type】

  1. SWC是功能模块而不是函数的抽象,所以一个功能模块(SWC)下面一开始就要声明好要多少port,是输入还是输出port,有哪些data element参与传输【这样high level的抽象总结,方便接下来在system 级别确定/规划接口怎么跟外界连】 【swc可用看作是.c文件,port定义可用看作是对应的.h文件】
  2. SWC跟外界通讯的port定义完成以后,接下来就是SWC内部的函数定义了【函数名 + 参数 + 运行周期】。Runnable Entity就是函数名, Runnable Entity下面的DataAccessPoint 就是函数参数【通过分配之前port下面的interface下面的data element实现】
  3. 每个package下面都要有DataTypeMapping,或者说每个SWC下面都要有DataTypeMapping,可用看作SWC是.c文件,而转换ADT - IDT的DataTypeMapping就是对应的.h 文件

一个port下面只能有一个Interface

port只做一件事情,确定传输方向是输入还是输出

一个arxml下面可以有多个SWC,但是为了复用最好还是一个SWC一个arxml文件

过程是怎样,在哪个界面操作的不重要,重要的是理解,tool给我们提供了哪些可用的功能

Port是SWC最重要的概念

可创建的Port 只有 Pport 和 Rport 两种,用来表示方向,是send还是receive 数据

而可以被分配到Port下面的Interface则分为 sender/receiver 和 clien/server 两种【Interface已经在“01_TypesAndInterface.arxml”文件里面事先被system engineer定义好了,我们在接下来的步骤中不会涉及到新建或者修改Interface的定义】

可以将SWC看作是一堆函数集合抽象出来的一个统一实体,比如将雨刷控制器的所有相关函数统一放在一个SWC里面。而给SWC分配Interface,就是让SWC里面的函数可以通过interface下面的data element与外界通信【外界指其他SWC或者com来的CAN signal】

sender/receiver 和 client/server 接口的区别,以及生成的code的区别:

All the Runnables of an SWC只能被map到同一个core上(对多核ecu而言)

4 新建一个Composition,并将之前创建的多个SWC之间的port连接起来

右键新建composition,会产生一个arxml文件,以及对应的package,用来存储这个composition的所有信息

在composition里面把需要的SWC全部添加进来,然后再assembly connector里面可以把port连接上

5 导入system description,包括Signal,PDU,ECU等系统信息

通过import dbc文件,tool会自动生成一个或多个arxml,自动将dbc文件里面的Signal,PDU,ECU等信息转换到这些arxml文件内。这些信息叫做system description, 用来以AUTOSAR的格式存放dbc的信息,相当于一个DLL库 【并且会生成COM module,里面有各个CAN signal】

6 新建一个system extract,system level的核心配置都在这个文件里面进行

右键新建system,会自动生成一个arxml,此为system extract

system extract 是 system level配置的核心文件,有两大功能

  • SWC to ECU mapping: 将 composition的那些SWC分配到各个ecu【system description相当于库文件,里面的ECU等信息会被自动识别出来等待被调用】
  • System Data mapping: 将SWC的port里面的需要和外界通讯的data element与刚才system extract里面的CAN signal连起来【system description相当于库文件,里面的system signal等信息会被自动识别出来等待被调用】

每次更改过system extract,都要运行 Create Ecu Extract 来重新生成 EcuExtract.arxml,使改动生效

7 操作EcuExtract.arxml, 将之前在SWC中创建的Runnable Entity分配到Task上

EcuExtract.arxml是在对system extract.arxml文件执行Create Ecu Extract操作之后,自动生成的。

RTE editor里面包含RunnableToTaskMapping的界面

  • 新建 Task,设置period
  • 将unmapping runnable拖拽到Task下面

至此实现了

  • 函数名的创建
  • 函数参数的创建
  • 函数的周期性调度

不配置DataTypeMapping,就会导致c code里面只有函数框架,没有对应的data read/data write。因为ISOLAR不知道这些变量正确的implementation data type是什么,从而无法生成

IDT和base type相连,相当于用IDT给c data type重命名了一下,从而满足了MISRA的要求

从c语言的角度去理解,SWC的创建是是什么样的

这个右键component,直接生成code真好用,要好好利用上

RTE实际生成的文件是什么?

生成RTE之前,需要做什么,先生成 system extract 和 ecu extract吗?

OSNeeds.arxml 是干什么的

我现在有一个SWC,已经生成函数了

为什么我在EthSwt_CDD里面新建了port,但是在system extract的System data mapping里面根本就没有对应的port可以和system signal相连起来?

我想验证的是,对component右键生成代码的时候会不会把我在函数里面手写的code覆盖掉?

答:不会  tool在生成代码的时候,/* PROTECTED REGION */  里面的code不会被覆盖掉

从c代码的角度,SWC的创建分两种

  1. 在函数内读取变量(其他SWC内部的变量) 
  2. 在函数内调用函数 (其他SWC内部的函数)

通过 sender/receiver interface,实现了第一点: 【RTE传输对象是Interface下面的DataElement

在各自的SWC的runnable里面添加对应的Pport或者Rport【不要忘了在data mapping里面将ADT和IDT对应起来】,即可右键component生成下入所示的runnable函数框架(存储在src/asw文件夹下的一个.c文件里面,跟rte没有关系.)。【右键生成代码的时候不会覆盖掉PROTECTED REGION里面的code】

然后在composition的assembly connector里面将两个port下面的dataelement连接起来,生成RTE的时候rte.c里面就会生成这些个Rte_IRead, Rte_Write函数实体,从而实现数据传输【RTE只会生成rte.c,不会生成/更新 上面的component.c 文件】

通过 client/server interface, 实现了第二点: 【RTE传输对象是interface下面的Operation(Event)

原理其实是client runnable内部通过set event,来触发server runnable的运行。

实现分三步

  1. client SWC的runnable里面设置server call point来调用client/server interface下面的Operation【其实就是event】
  2. server SWC里面设置runnable为OperationInvokeEvent出发
  3. 然后在composition的assembly connector里面将两个SWC的interface下的Operation连起来即可

函数调用想传递参数的话,通过ArgInOut实现【定义interface的时候,Operation本来就跟Arguement绑定好了,所以是全自动的,不需要在ISOLAR里面额外操作】

1 需求

        传输 data 和 调用 函数

2 为满足需求创造的概念: interface

        operation: 调用函数

        data element: 传输data

想想创建一个diagnostic SWC的流程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/82501.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第2章_freeRTOS入门与工程实践之单片机程序设计模式

本教程基于韦东山百问网出的 DShanMCU-F103开发板 进行编写,需要的同学可以在这里获取: https://item.taobao.com/item.htm?id724601559592 配套资料获取:https://rtos.100ask.net/zh/freeRTOS/DShanMCU-F103 freeRTOS系列教程之freeRTOS入…

目标跟踪:Mobile Vision Transformer-based Visual Object Tracking

论文作者:Goutam Yelluru Gopal,Maria A. Amer 作者单位:Concordia University 论文链接:https://arxiv.org/pdf/2309.05829v1.pdf 项目链接:https://github.com/goutamyg/MVT 内容简介: 1)方向&#…

基于HOG特征提取和GRNN神经网络的人脸表情识别算法matlab仿真,测试使用JAFFE表情数据库

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 1.HOG特征提取 2.GRNN神经网络 3.JAFFE表情数据库 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 .....................................…

Vue3 菜鸟入门(二)超详细:基本框架 模板语法和指令

【学习笔记】Vue3 菜鸟入门(二)超详细:基本框架 模板语法和指令 关键词:Vue 、Vue 3、Java、Spring Boot、Idea、数据库、一对一、培训、教学本文主要内容含Vue 基本框架 模板语法、指令计划1小时完成,请同学尽量提前…

nginx入门

概述/简介 Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件代理服务器,在 BSD-like 协议下发行,具有高性能、高可靠性、丰富的模块化支持和简单易用的优势。 应用场景 动静分离: 为了加快网站的解析速度,我们可以把动态页面和静态页面分散到…

cutree 算法

传播 ​ 由于块与块之间具有参考关系,提升被参考块的质量,可以改善后续参考块的质量 ​ Pn1帧中CU0,1完全参考Pn的CU1,1。且Pn1帧中CU0,1块帧内预测和帧间预测的代价分别为 c x , y n 1 ( 0 , 0 ) c_{x,y}^{n1}(0,0) cx,yn1​(0,0)和 c x , y n 1 ( d…

2023Node.js零基础教程(小白友好型),nodejs新手到高手,(一)NodeJS入门

写在开始前 在无尽的代码汪洪中,闪耀着一抹绚丽的光芒。它叫做Web前端开发! HTML是我们的魔法笔,是创造力的源泉。它将我们的思绪化为标签,将我们的想象变为元素。 在无尽的标签组合中,我们创造出独特的网页&#xff…

Webserver项目解析

一.webserver的组成部分 Buffer类 用于存储需要读写的数据 Channel类 存储文件描述符和相应的事件,当发生事件时,调用对应的回调函数 ChannelMap类 Channel数组,用于保存一系列的Channel Dispatcher 监听器,可以设置为epo…

【张兔兔送书第一期:考研必备书单】

考研书单必备 《数据结构与算法分析》《计算机网络:自顶向下方法》《现代操作系统》《深入理解计算机系统》《概率论基础教程(原书第10版》《线性代数(原书第10版)》《线性代数及其应用》赠书活动 八九月的朋友圈刮起了一股晒通知…

【架构篇】Supabase架构和功能介绍

Supabase是什么 Supabase将自己定位为Firebase的开源替代品,提供了一套工具来帮助开发者构建web或移动应用程序。Supabase是建立在Postgres之上的,Postgres是一个免费的开源数据库,被认为是世界上最稳定、最先进的数据库之一。Supabase对标F…

《Envoy 代理:云原生时代的流量管理》

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack: &#x1f4da…

C# Onnx Yolov8 Detect Poker 扑克牌识别

效果 效果一般,可下载数据集自己训练 Demo下载 数据集下载

SaaS架构C/S检验科LIS系统源码: 检验申请、标本编号、联机采集

适用于医院检验科实际需要的LIS管理系统, 实现检验业务全流程的计算机管理。从检验申请、标本编号、联机采集、中文报告单的生成与打印、质控图的绘制和数据的检索与备份。通过将所有仪器自身提供的端口与科室LIS系统中的工作站点连接,实现与医院HIS系统的对接。 通过门诊医生和…

docker-compose使用

docker-compose docker的项目编排 一、安装docker-compose Rocky Linux Rocky Linux安装Docker Compose的步骤如下: 安装Docker。您可以使用以下命令安装Docker: sudo dnf install docker-ce docker-ce-cli containerd.io安装Docker Compose。您可以…

java项目之抗疫医疗用品销售平台ssm+jsp

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的抗疫医疗用品销售平台。技术交流和部署相关看文章末尾! 开发环境: 后端: 开发语言:Java 框…

今天的消费情况

1、今天消费1710元 意外险 住院--集中参保 校---******----服 1220 rmB lunch 240Rmb

腾讯mini项目-【指标监控服务重构】2023-07-30

今日已办 调研 CPU & Memory Cadivisor Cadivisor -> Prometheus -> (Grafana / SigNoz Web) google/cadvisor: Analyzes resource usage and performance characteristics of running containers. (github.com) services:cadvisor:image: gcr.io/ca…

linux 磁盘命令之du和df命令

du相关的命令: du -ah 显示所有目录或文件所占空间 du -KG 显示所有目录或文件所占空间 块大小K为单位 du -BM 显示所有目录或文件所占空间 块大小M为单位 du -BG 显示所有目录或文件所占空间 块大小G为单位du -sh [目录名] 返回该目录的大小 du -sm [文件夹] 返回该文…

短信、邮箱验证码本地可以,部署到服务器接口却不能使用

应对公司双验证要求,对本系统做邮箱、短信验证码登录,本地开发正常发送,到服务器上部署却使用失败,已全部解决,记录坑。 一、nginx拦截 先打开你的服务器 nginx.conf 看看有没有做接口拦截。(本地可能做Sp…

爬虫逆向实战(32)-某号店登录(RSA、补环境、混淆)

一、数据接口分析 主页地址:某号店 1、抓包 通过抓包可以发现登录接口是/publicPassport/login.do 2、判断是否有加密参数 请求参数是否加密? 通过查看“载荷”模块可以发现,有三个加密参数:username、password、captchaTok…