一文轻松搞定ETASCP工具链基本概念与开发流程

谈思实验室 2024-07-20 17:04

点击上方蓝字谈思实验室

获取更多汽车网络安全资讯

01

概述

ETAS RTA-CAR(Classic AUTOSAR)包括用于ECU软件开发的基础软件模块和工具,主要内容如下:

  • ISOLAR:工具包含ISOLAR-A和ISOLAR-B两个部分,用于配置Classic AUTOSAR产品。

  • ISOLAR-A:用于AUTOSAR架构配置与应用集成工具。

  • ISOLAR-B:用于配置满足AUTOSAR标准的基础软件,以及用于生成和集成ECU软件的工具。

  • RTA-RTE:ETAS RTA-RTE (runtime environment) 为符合AUTOSAR的ECU软件提供运行时环境。它支持相关AUTOSAR, OSEK/VDX, ISO 26262, 和MISRA C标准的最新版本。

  • RTA-BSW:RTA-BSW提供全套AUTOSAR基础软件模块,与RTA-OS和RTA-RTE相结合,即可构建用于ECU应用开发的整套AUTOSAR平台软件。它提供了完整的基础软件协议栈,例如CAN、LIN、J1939、诊断、XCP、以太网SOMEIP等。

  • RTA-OS:RTA-OS 以汽车工业建立多年的RTA-OSEK 实时操作系统的经验为基础。RTA-OS 支持单片和多片微控制器的使用,在最小运行时系统开销的条件下结合一整套AUTOSAR 功能。由于其ASIL-D 的ISO 26262 认证的优点,RTA-OS 也可以被用于进行严格安全要求下的功能开发。

02

开发框架与流程

下面的脑图包含了使用ETAS CP工具链进行开发的一个基本框架,其中把整个ECU的软件开发设计分为了软件组件开发、系统级设计与配置、ECU设计、以及RTE集成与配置。其中应用软件组件开发主要着眼于控制逻辑以及算法的开发,系统级设计与配置主要着眼于组件(包含应用以及基础软件组件)之间的关系设计,ECU设计主要着眼于基础软件组件,OS,以及底层驱动的设计与实现,RTE的集成与开发则着眼于根据系统级设计完成组件间通信以及任务调度。

下图是一个自顶而下的开发流程,其中第一步采用的工具是Matlab/Simulink与Embedded Coder,第二步到第四步采用的是ISOLAR(内部集成了RTA-BSW,RTA-RTE),第五步采用的是RTA-OS,第六步采用的是EB,第七步则为HighTec或者是Tasking等。

03

系统及设计与配置

创建部件与系统

部件(Composition)是软件组件的集合,它包含一组相关甚至整车的所有ECU的软件组件,下图是部件的建立方法。

系统(System) 建立的方法如下。

系统建立完成之后,需要为其添加一个Compositon,通过下图新建一个Root SW Comppsition Prototype。 

建立完成之后建立对刚才部件的引用。

04

定义数据类型(Data Types)与接口(Interface)

AUTOSAR定义了三种数据类型,即应用数据类型(ADT),实现数据数据类型(IDT)以及基本数据类型(Base Type)。下面主要说明一下建立应用数据类型(ADT)中的数组类型。

配置类型属性。

AUTOSAR常见定义了两种接口(Interface),一种是发送者-接收者接口(Sender-Receiver Interface,S/R),一种是客户端与服务器接口(Client-Server Interface,C/S)。S/R接口是一组数据类型的集合,连接的两个组件通过类似全局变量的方式传递数据,C/S接口则是一组函数原型集合,定义了IN(输入参数),OUT(输出参数,传入的是地址)等函数的参数以及返回值。

下图为一个包含了一组数据集合的S/R接口。增加接口点Add SR Interface即可。

下图包含了一组函数原型集合的C/S接口,并打开了一个函数的参数,包含BufSize等。增加C/S接口则点击Add CS Interface即可。

05

系统约束描述文件(DBC)导入

DBC文件主要包含以下几个部分的内容。

  • Networks(网络)

  • ECUs(电控单元)

  • Network nodes(网络节点)

  • Messages(报文)

  • Signals(信号)

每个DBC描述的是一个网络上的通信信息,所以首先要定义一个Networks(网络),这个是在新建database时自动创建出来的。之后就是定义Network nodes(网络节点),右键单击Network nodes新建即可,同时将在ECUs(电控单元)菜单中自动创建出相关ECU信息。

定义了网络节点后,就需要根据项目需求完成Signals(信号)和Messages(报文)的设计。右键点击Signals新建,按照项目的信号矩阵,完成信号的设计。下图是一个信号的配置界面。

定义了所有的信号之后,即可进行报文设计。右键单击Message新建即可,主要需要定义的属性如下,并将之前定义好的信号包含进来。        

在完成了所有的信号以及报文设计之后,就需要将他们在各个节点的收发关系定义出来。若报文是发送,则将该报文添加到相应CAN节点的Tx Messages即可;若报文时接收的,则需要拖动该报文的信号,将他们逐一添加到Mapped Rx Signals列表中,下图是两个Tx报文和一个Rx报文。

之后,就可以将系统配置所需要的输入文件导入到ISOLAR中。点击下图红框。

然后进入如下界面,选择要导入的dbc文件,和导入的CAN网络与对应的CAN控制器。

然后选择DBC中要导入的ECU。

最后选择对应的报文。

最后在对应的ECU中可以看到导入的信号信息。

DBC导入之后会根据DBC中定义的Offset和Factor完成原始值(总线上的值)到物理值(信号的物理值是物理量(如速度、转速、温度等)的值)的计算方法,具体的公式为:[Physical value] = ( [Raw value] * [Factor] ) + [Offset]。

06

设计软件组件 

首先,新建一个应用组件如下图。

然后,建立软件组件内部行为,只有建立了之后才能Runnables(可运行项)等功能函数实体。

为软件添加端口(Port),端口按照方向分为PPort和RPort。

针对S/R接口,PPort“写入”接口包含的数据,RPort“读取”接口包含的数据,注意只有在Port引用了接口之后,才会建立数据的定义,不同PPort引用同一个接口会建立不同名称的数据定义,一个PPort可以对应多个RPort。

针对C/S接口,PPort“实现”接口包含的函数原型,RPort“调用”接口包含的函数,不同PPort引用同一个接口会对应不同的函数实现,一个PPort可以对应多个RPort。

下图建立了三个Port口,一个是C/S类型的RPort,一个是S/R类型的PPort,一个S/R类型的RPort。

然后我们建立一个Runnables,建立完之后,增加针对S/R类型PPort口的数据访问如下,我们选择DataSendPoints显式(Explicit,应用于实时性较高的数据传输,可以通过排布任务调度在一个调度周期内将数据传输到另一个组件)。然后增加针对S/R类型RPort口的数据访问,选择DataReceivePointByArguments显示访问。

然后增加针对C/S类型Port的访问,访问类型为Synchronous。因为接口包含了5个函数原型,所以选择对应的Port口之后,会显示Port口引用接口下的所有函数原型。

最后,我们添加运行实体的RTE事件,我们选择周期性事件,并将周期设置成0.01s。

至此,组件相关的设计已经完成,但是要想正确的生成RTE,我们还需要以下几个步骤将组件跟之前建立的部件,系统,ECU等建立关系。

首先,我们将软件组件加入部件,双击之前建立的部件,然后点击加号,选择Component Prototype。

然后选择之前创建的应用组件Test,点击OK即可。

然后右键之间建立的系统,打开方式选择SWC To ECU,然后拖拽到ECU之下。


这里还需要把之前定义的Runnables加入到Os_Task,这部分我们到RTT配置部分再介绍。

最后生成组件内函数对应的.C文件,用户可以再接入/出的信号基础上添加逻辑。

选择为每个函数单独建立一个.c文件。 

下面是生成的.C文件,我们可以在注释写了Protect包含的地方写入代码,这样每次生成不会更改此部分代码。

/* ***************************************************************************** * BEGIN: Banner *----------------------------------------------------------------------------- *                                 ETAS GmbH *                      D-70469 Stuttgart, Borsigstr. 14 *----------------------------------------------------------------------------- *    Administrative Information (automatically filled in by ISOLAR)          *----------------------------------------------------------------------------- * Name:  * Description: * Version: 1.0 *----------------------------------------------------------------------------- * END: Banner ****************************************************************************** * Project : CSDNTest * Component: /ARPackage_0/Test * Runnable : RunnableEntity_0 ***************************************************************************** * Tool Version: ISOLAR-AB 4.0.2 * Author: geekl * Date : ������ ���� 21 18:14:36 2024 ****************************************************************************/
#include "Rte_Test.h"
/*PROTECTED REGION ID(FileHeaderUserDefinedIncludes :RunnableEntity_0_func) ENABLED START *//* Start of user defined includes - Do not remove this comment *//* End of user defined includes - Do not remove this comment *//*PROTECTED REGION END */
/*PROTECTED REGION ID(FileHeaderUserDefinedConstants :RunnableEntity_0_func) ENABLED START *//* Start of user defined constant definitions - Do not remove this comment *//* End of user defined constant definitions - Do not remove this comment *//*PROTECTED REGION END */
/*PROTECTED REGION ID(FileHeaderUserDefinedVariables :RunnableEntity_0_func) ENABLED START *//* Start of user variable defintions - Do not remove this comment *//* End of user variable defintions - Do not remove this comment *//*PROTECTED REGION END */#define Test_START_SEC_CODE #include "Test_MemMap.h"
FUNC (void, Test_CODE) RunnableEntity_0_func/* return value & FctID */( void){
uint32 read1; Std_ReturnType retRead1; EcuM_ShutdownTargetType shutdownTarget1; EcuM_ShutdownModeType shutdownMode2; Std_ReturnType syncCall2; EcuM_ShutdownTargetType shutdownTarget3; EcuM_ShutdownModeType shutdownMode4; Std_ReturnType syncCall3; EcuM_ShutdownTargetType shutdownTarget5; EcuM_ShutdownModeType shutdownMode6; Std_ReturnType syncCall4; EcuM_ShutdownCauseType shutdownCause7; Std_ReturnType syncCall5; EcuM_ShutdownCauseType shutdownCause8; Std_ReturnType syncCall6; uint16 write7; Std_ReturnType retWrite7;
/* Local Data Declaration */
/*PROTECTED REGION ID(UserVariables :RunnableEntity_0_func) ENABLED START */ /* Start of user variable defintions - Do not remove this comment */ /* End of user variable defintions - Do not remove this comment */ /*PROTECTED REGION END */ Std_ReturnType retValue = RTE_E_OK; /* -------------------------------------- Data Read ----------------------------------------- */ retRead1 = Rte_Read_RPortPrototype_1_VDP_uint32(&read1);
/* -------------------------------------- Server Call Point -------------------------------- */
syncCall2 = Rte_Call_RPortPrototype_0_GetLastShutdownTarget(&shutdownTarget1,&shutdownMode2);
syncCall3 = Rte_Call_RPortPrototype_0_SelectShutdownTarget(shutdownTarget3,shutdownMode4);
syncCall4 = Rte_Call_RPortPrototype_0_GetShutdownTarget(&shutdownTarget5,&shutdownMode6);
syncCall5 = Rte_Call_RPortPrototype_0_SelectShutdownCause(shutdownCause7);
syncCall6 = Rte_Call_RPortPrototype_0_GetShutdownCause(&shutdownCause8);
/* -------------------------------------- CDATA --------------------------------------------- */
/* -------------------------------------- Data Write ---------------------------------------- */ retWrite7 = Rte_Write_PPortPrototype_0_VDP_uint16(write7);
/* -------------------------------------- Trigger Interface --------------------------------- */
/* -------------------------------------- Mode Management ----------------------------------- */
/* -------------------------------------- Port Handling ------------------------------------- */
/* -------------------------------------- Exclusive Area ------------------------------------ */
/* -------------------------------------- Multiple Instantiation ---------------------------- */
/*PROTECTED REGION ID(User Logic :RunnableEntity_0_func) ENABLED START */ /* Start of user code - Do not remove this comment */ /* End of user code - Do not remove this comment */ /*PROTECTED REGION END */
}
#define Test_STOP_SEC_CODE #include "Test_MemMap.h"

07

连接系统/内部信号 

通过之前建立的系统,打开系统数据映射编辑界面。

然后选择通过DBC导入的系统信号与之前建立的RPort与接收的系统信号进行连接。

内部的信号连接首先还是通过之前建立的系统打开部件编辑界面。

然后选择下面的内部信号连接摁扭。

选择需要进行的连接,勾选对应连接然后点击Finish完成连接。

下图为最后完成的连接。

08

ECU抽取

在生成RTE之前,需要做ECU抽取来把BSW和ASW的改动跟RTE相关的部分抽取出来。选择对应的ECU,右键选择建立ECU抽取。

选择如下选项点击Finish完成ECU抽取。 

来源:汽车ECU开发

 end 

 专业社群 

 精品活动推荐 

更多文章

不要错过哦,这可能是汽车网络安全产业最大的专属社区!

关于涉嫌仿冒AutoSec会议品牌的律师声明

一文带你了解智能汽车车载网络通信安全架构

网络安全:TARA方法、工具与案例

汽车数据安全合规重点分析

浅析汽车芯片信息安全之安全启动

域集中式架构的汽车车载通信安全方案探究

系统安全架构之车辆网络安全架构

车联网中的隐私保护问题

智能网联汽车网络安全技术研究

AUTOSAR 信息安全框架和关键技术分析

AUTOSAR 信息安全机制有哪些?

信息安全的底层机制

汽车网络安全

Autosar硬件安全模块HSM的使用

首发!小米雷军两会上就汽车数据安全问题建言:关于构建完善汽车数据安全管理体系的建议

谈思实验室 深入专注智能汽车网络安全与数据安全技术,专属汽车网络安全圈的头部学习交流平台和社区。平台定期会通过线上线下等形式进行一手干货内容输出,并依托丰富产业及专家资源,深化上下游供需对接,逐步壮大我国汽车安全文化及产业生态圈。
评论
  • 本文介绍Linux系统更换开机logo方法教程,通用RK3566、RK3568、RK3588、RK3576等开发板,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。制作图片开机logo图片制作注意事项(1)图片必须为bmp格式;(2)图片大小不能大于4MB;(3)BMP位深最大是32,建议设置为8;(4)图片名称为logo.bmp和logo_kernel.bmp;开机
    Industio_触觉智能 2025-01-06 10:43 72浏览
  • 车身域是指负责管理和控制汽车车身相关功能的一个功能域,在汽车域控系统中起着至关重要的作用。它涵盖了车门、车窗、车灯、雨刮器等各种与车身相关的功能模块。与汽车电子电气架构升级相一致,车身域发展亦可以划分为三个阶段,功能集成愈加丰富:第一阶段为分布式架构:对应BCM车身控制模块,包含灯光、雨刮、门窗等传统车身控制功能。第二阶段为域集中架构:对应BDC/CEM域控制器,在BCM基础上集成网关、PEPS等。第三阶段为SOA理念下的中央集中架构:VIU/ZCU区域控制器,在BDC/CEM基础上集成VCU、
    北汇信息 2025-01-03 16:01 188浏览
  • 光耦合器,也称为光隔离器,是一种利用光在两个隔离电路之间传输电信号的组件。在医疗领域,确保患者安全和设备可靠性至关重要。在众多有助于医疗设备安全性和效率的组件中,光耦合器起着至关重要的作用。这些紧凑型设备经常被忽视,但对于隔离高压和防止敏感医疗设备中的电气危害却是必不可少的。本文深入探讨了光耦合器的功能、其在医疗应用中的重要性以及其实际使用示例。什么是光耦合器?它通常由以下部分组成:LED(发光二极管):将电信号转换为光。光电探测器(例如光电晶体管):检测光并将其转换回电信号。这种布置确保输入和
    腾恩科技-彭工 2025-01-03 16:27 171浏览
  •     为控制片内设备并且查询其工作状态,MCU内部总是有一组特殊功能寄存器(SFR,Special Function Register)。    使用Eclipse环境调试MCU程序时,可以利用 Peripheral Registers Viewer来查看SFR。这个小工具是怎样知道某个型号的MCU有怎样的寄存器定义呢?它使用一种描述性的文本文件——SVD文件。这个文件存储在下面红色字体的路径下。    例:南京沁恒  &n
    电子知识打边炉 2025-01-04 20:04 66浏览
  • 自动化已成为现代制造业的基石,而驱动隔离器作为关键组件,在提升效率、精度和可靠性方面起到了不可或缺的作用。随着工业技术不断革新,驱动隔离器正助力自动化生产设备适应新兴趋势,并推动行业未来的发展。本文将探讨自动化的核心趋势及驱动隔离器在其中的重要角色。自动化领域的新兴趋势智能工厂的崛起智能工厂已成为自动化生产的新标杆。通过结合物联网(IoT)、人工智能(AI)和机器学习(ML),智能工厂实现了实时监控和动态决策。驱动隔离器在其中至关重要,它确保了传感器、执行器和控制单元之间的信号完整性,同时提供高
    腾恩科技-彭工 2025-01-03 16:28 166浏览
  • 每日可见的315MHz和433MHz遥控模块,你能分清楚吗?众所周知,一套遥控设备主要由发射部分和接收部分组成,发射器可以将控制者的控制按键经过编码,调制到射频信号上面,然后经天线发射出无线信号。而接收器是将天线接收到的无线信号进行解码,从而得到与控制按键相对应的信号,然后再去控制相应的设备工作。当前,常见的遥控设备主要分为红外遥控与无线电遥控两大类,其主要区别为所采用的载波频率及其应用场景不一致。红外遥控设备所采用的射频信号频率一般为38kHz,通常应用在电视、投影仪等设备中;而无线电遥控设备
    华普微HOPERF 2025-01-06 15:29 73浏览
  • 根据Global Info Research项目团队最新调研,预计2030年全球封闭式电机产值达到1425百万美元,2024-2030年期间年复合增长率CAGR为3.4%。 封闭式电机是一种电动机,其外壳设计为密闭结构,通常用于要求较高的防护等级的应用场合。封闭式电机可以有效防止外部灰尘、水分和其他污染物进入内部,从而保护电机的内部组件,延长其使用寿命。 环洋市场咨询机构出版的调研分析报告【全球封闭式电机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球封闭式电机总体规
    GIRtina 2025-01-06 11:10 76浏览
  • 物联网(IoT)的快速发展彻底改变了从智能家居到工业自动化等各个行业。由于物联网系统需要高效、可靠且紧凑的组件来处理众多传感器、执行器和通信设备,国产固态继电器(SSR)已成为满足中国这些需求的关键解决方案。本文探讨了国产SSR如何满足物联网应用的需求,重点介绍了它们的优势、技术能力以及在现实场景中的应用。了解物联网中的固态继电器固态继电器是一种电子开关设备,它使用半导体而不是机械触点来控制负载。与传统的机械继电器不同,固态继电器具有以下优势:快速切换:确保精确快速的响应,这对于实时物联网系统至
    克里雅半导体科技 2025-01-03 16:11 176浏览
  • 彼得·德鲁克被誉为“现代管理学之父”,他的管理思想影响了无数企业和管理者。然而,关于他的书籍分类,一种流行的说法令人感到困惑:德鲁克一生写了39本书,其中15本是关于管理的,而其中“专门写工商企业或为企业管理者写的”只有两本——《为成果而管理》和《创新与企业家精神》。这样的表述广为流传,但深入探讨后却发现并不完全准确。让我们一起重新审视这一说法,解析其中的矛盾与根源,进而重新认识德鲁克的管理思想及其著作的真正价值。从《创新与企业家精神》看德鲁克的视角《创新与企业家精神》通常被认为是一本专为企业管
    优思学院 2025-01-06 12:03 73浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 79浏览
  • 在快速发展的能源领域,发电厂是发电的支柱,效率和安全性至关重要。在这种背景下,国产数字隔离器已成为现代化和优化发电厂运营的重要组成部分。本文探讨了这些设备在提高性能方面的重要性,同时展示了中国在生产可靠且具有成本效益的数字隔离器方面的进步。什么是数字隔离器?数字隔离器充当屏障,在电气上将系统的不同部分隔离开来,同时允许无缝数据传输。在发电厂中,它们保护敏感的控制电路免受高压尖峰的影响,确保准确的信号处理,并在恶劣条件下保持系统完整性。中国国产数字隔离器经历了重大创新,在许多方面达到甚至超过了全球
    克里雅半导体科技 2025-01-03 16:10 122浏览
  • 这篇内容主要讨论三个基本问题,硅电容是什么,为什么要使用硅电容,如何正确使用硅电容?1.  硅电容是什么首先我们需要了解电容是什么?物理学上电容的概念指的是给定电位差下自由电荷的储藏量,记为C,单位是F,指的是容纳电荷的能力,C=εS/d=ε0εrS/4πkd(真空)=Q/U。百度百科上电容器的概念指的是两个相互靠近的导体,中间夹一层不导电的绝缘介质。通过观察电容本身的定义公式中可以看到,在各个变量中比较能够改变的就是εr,S和d,也就是介质的介电常数,金属板有效相对面积以及距离。当前
    知白 2025-01-06 12:04 110浏览
  • 在测试XTS时会遇到修改产品属性、SElinux权限、等一些内容,修改源码再编译很费时。今天为大家介绍一个便捷的方法,让OpenHarmony通过挂载镜像来修改镜像内容!触觉智能Purple Pi OH鸿蒙开发板演示。搭载了瑞芯微RK3566四核处理器,树莓派卡片电脑设计,支持开源鸿蒙OpenHarmony3.2-5.0系统,适合鸿蒙开发入门学习。挂载镜像首先,将要修改内容的镜像传入虚拟机当中,并创建一个要挂载镜像的文件夹,如下图:之后通过挂载命令将system.img镜像挂载到sys
    Industio_触觉智能 2025-01-03 11:39 115浏览
  • PLC组态方式主要有三种,每种都有其独特的特点和适用场景。下面来简单说说: 1. 硬件组态   定义:硬件组态指的是选择适合的PLC型号、I/O模块、通信模块等硬件组件,并按照实际需求进行连接和配置。    灵活性:这种方式允许用户根据项目需求自由搭配硬件组件,具有较高的灵活性。    成本:可能需要额外的硬件购买成本,适用于对系统性能和扩展性有较高要求的场合。 2. 软件组态   定义:软件组态主要是通过PLC
    丙丁先生 2025-01-06 09:23 66浏览
  • 随着市场需求不断的变化,各行各业对CPU的要求越来越高,特别是近几年流行的 AIOT,为了有更好的用户体验,CPU的算力就要求更高了。今天为大家推荐由米尔基于瑞芯微RK3576处理器推出的MYC-LR3576核心板及开发板。关于RK3576处理器国产CPU,是这些年的骄傲,华为手机全国产化,国人一片呼声,再也不用卡脖子了。RK3576处理器,就是一款由国产是厂商瑞芯微,今年第二季推出的全新通用型的高性能SOC芯片,这款CPU到底有多么的高性能,下面看看它的几个特性:8核心6 TOPS超强算力双千
    米尔电子嵌入式 2025-01-03 17:04 45浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦