一文轻松搞定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的使用

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

谈思实验室 深入专注智能汽车网络安全与数据安全技术,专属汽车网络安全圈的头部学习交流平台和社区。平台定期会通过线上线下等形式进行一手干货内容输出,并依托丰富产业及专家资源,深化上下游供需对接,逐步壮大我国汽车安全文化及产业生态圈。
评论
  •         近日,广电计量在聚焦离子束(FIB)领域编写的专业著作《聚焦离子束:失效分析》正式出版,填补了国内聚焦离子束领域实践性专业书籍的空白,为该领域的技术发展与知识传播提供了重要助力。         随着芯片技术不断发展,芯片的集成度越来越高,结构也日益复杂。这使得传统的失效分析方法面临巨大挑战。FIB技术的出现,为芯片失效分析带来了新的解决方案。它能够在纳米尺度上对芯片进行精确加工和分析。当芯
    广电计量 2025-02-28 09:15 116浏览
  • 应用趋势与客户需求,AI PC的未来展望随着人工智能(AI)技术的日益成熟,AI PC(人工智能个人电脑)逐渐成为消费者和企业工作中的重要工具。这类产品集成了最新的AI处理器,如NPU、CPU和GPU,并具备许多智能化功能,为用户带来更高效且直观的操作体验。AI PC的目标是提升工作和日常生活的效率,通过深度学习与自然语言处理等技术,实现更流畅的多任务处理、实时翻译、语音助手、图像生成等功能,满足现代用户对生产力和娱乐的双重需求。随着各行各业对数字转型需求的增长,AI PC也开始在各个领域中显示
    百佳泰测试实验室 2025-02-27 14:08 255浏览
  • RGB灯光无法同步?细致的动态光效设定反而成为产品客诉来源!随着科技的进步和消费者需求变化,电脑接口设备单一功能性已无法满足市场需求,因此在产品上增加「动态光效」的形式便应运而生,藉此吸引消费者目光。这种RGB灯光效果,不仅能增强电脑周边产品的视觉吸引力,还能为用户提供个性化的体验,展现独特自我风格。如今,笔记本电脑、键盘、鼠标、鼠标垫、耳机、显示器等多种电脑接口设备多数已配备动态光效。这些设备的灯光效果会随着音乐节奏、游戏情节或使用者的设置而变化。想象一个画面,当一名游戏玩家,按下电源开关,整
    百佳泰测试实验室 2025-02-27 14:15 138浏览
  • 美国加州CEC能效跟DOE能效有什么区别?CEC/DOE是什么关系?美国加州CEC能效跟DOE能效有什么区别?CEC/DOE是什么关系?‌美国加州CEC能效认证与美国DOE能效认证在多个方面存在显著差异‌。认证范围和适用地区‌CEC能效认证‌:仅适用于在加利福尼亚州销售的电器产品。CEC认证的范围包括制冷设备、房间空调、中央空调、便携式空调、加热器、热水器、游泳池加热器、卫浴配件、光源、应急灯具、交通信号模块、灯具、洗碗机、洗衣机、干衣机、烹饪器具、电机和压缩机、变压器、外置电源、消费类电子设备
    张工nx808593 2025-02-27 18:04 120浏览
  • 更多生命体征指标风靡的背后都只有一个原因:更多人将健康排在人生第一顺位!“AGEs,也就是晚期糖基化终末产物,英文名Advanced Glycation End-products,是存在于我们体内的一种代谢产物” 艾迈斯欧司朗亚太区健康监测高级市场经理王亚琴说道,“相信业内的朋友都会有关注,最近该指标的热度很高,它可以用来评估人的生活方式是否健康。”据悉,AGEs是可穿戴健康监测领域的一个“萌新”指标,近来备受关注。如果站在学术角度来理解它,那么AGEs是在非酶促条件下,蛋白质、氨基酸
    艾迈斯欧司朗 2025-02-27 14:50 400浏览
  • 在物联网领域中,无线射频技术作为设备间通信的核心手段,已深度渗透工业自动化、智慧城市及智能家居等多元场景。然而,随着物联网设备接入规模的不断扩大,如何降低运维成本,提升通信数据的传输速度和响应时间,实现更广泛、更稳定的覆盖已成为当前亟待解决的系统性难题。SoC无线收发模块-RFM25A12在此背景下,华普微创新推出了一款高性能、远距离与高性价比的Sub-GHz无线SoC收发模块RFM25A12,旨在提升射频性能以满足行业中日益增长与复杂的设备互联需求。值得一提的是,RFM25A12还支持Wi-S
    华普微HOPERF 2025-02-28 09:06 145浏览
  • 1,微软下载免费Visual Studio Code2,安装C/C++插件,如果无法直接点击下载, 可以选择手动install from VSIX:ms-vscode.cpptools-1.23.6@win32-x64.vsix3,安装C/C++编译器MniGW (MinGW在 Windows 环境下提供类似于 Unix/Linux 环境下的开发工具,使开发者能够轻松地在 Windows 上编写和编译 C、C++ 等程序.)4,C/C++插件扩展设置中添加Include Path 5,
    黎查 2025-02-28 14:39 141浏览
  • 在2024年的科技征程中,具身智能的发展已成为全球关注的焦点。从实验室到现实应用,这一领域正以前所未有的速度推进,改写着人类与机器的互动边界。这一年,我们见证了具身智能技术的突破与变革,它不仅落地各行各业,带来新的机遇,更在深刻影响着我们的生活方式和思维方式。随着相关技术的飞速发展,具身智能不再仅仅是一个技术概念,更像是一把神奇的钥匙。身后的众多行业,无论愿意与否,都像是被卷入一场伟大变革浪潮中的船只,注定要被这股汹涌的力量重塑航向。01为什么是具身智能?为什么在中国?最近,中国具身智能行业的进
    艾迈斯欧司朗 2025-02-28 15:45 221浏览
  • 一、VSM的基本原理震动样品磁强计(Vibrating Sample Magnetometer,简称VSM)是一种灵敏且高效的磁性测量仪器。其基本工作原理是利用震动样品在探测线圈中引起的变化磁场来产生感应电压,这个感应电压与样品的磁矩成正比。因此,通过测量这个感应电压,我们就能够精确地确定样品的磁矩。在VSM中,被测量的样品通常被固定在一个震动头上,并以一定的频率和振幅震动。这种震动在探测线圈中引起了变化的磁通量,从而产生了一个交流电信号。这个信号的幅度和样品的磁矩有着直接的关系。因此,通过仔细
    锦正茂科技 2025-02-28 13:30 100浏览
  • 振动样品磁强计是一种用于测量材料磁性的精密仪器,广泛应用于科研、工业检测等领域。然而,其测量准确度会受到多种因素的影响,下面我们将逐一分析这些因素。一、温度因素温度是影响振动样品磁强计测量准确度的重要因素之一。随着温度的变化,材料的磁性也会发生变化,从而影响测量结果的准确性。因此,在进行磁性测量时,应确保恒温环境,以减少温度波动对测量结果的影响。二、样品制备样品的制备过程同样会影响振动样品磁强计的测量准确度。样品的形状、尺寸和表面处理等因素都会对测量结果产生影响。为了确保测量准确度,应严格按照规
    锦正茂科技 2025-02-28 14:05 134浏览
  •           近日受某专业机构邀请,参加了官方举办的《广东省科技创新条例》宣讲会。在与会之前,作为一名技术工作者一直认为技术的法例都是保密和侵权方面的,而潜意识中感觉法律有束缚创新工作的进行可能。通过一个上午学习新法,对广东省的科技创新有了新的认识。广东是改革的前沿阵地,是科技创新的沃土,企业是创新的主要个体。《广东省科技创新条例》是广东省为促进科技创新、推动高质量发展而制定的地方性法规,主要内容包括: 总则:明确立法目
    广州铁金刚 2025-02-28 10:14 103浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦