CN102063298A - 一种面向汽车电子控制器的运行时环境生成***及方法 - Google Patents
一种面向汽车电子控制器的运行时环境生成***及方法 Download PDFInfo
- Publication number
- CN102063298A CN102063298A CN2010105822803A CN201010582280A CN102063298A CN 102063298 A CN102063298 A CN 102063298A CN 2010105822803 A CN2010105822803 A CN 2010105822803A CN 201010582280 A CN201010582280 A CN 201010582280A CN 102063298 A CN102063298 A CN 102063298A
- Authority
- CN
- China
- Prior art keywords
- description file
- rte
- file
- ecu
- information list
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种面向汽车电子控制器的运行时环境生成***及方法,该***包括项目资源管理模块、描述文件管理模块、XML解析器、代码模板和RTE生成器引擎模块。该方法为:A、读入并整理项目相关的***描述文件、构件描述文件及ECU信息列表,解析后获得线性信息列表发送至RTE生成器引擎模块中;B、同时,将代码模板输入RTE生成器引擎模块中;C、RTE生成器引擎模块根据代码模板结合从解析后描述文件中取出相应信息生成并输出RTE源文件。该***可根据构件描述信息、***描述信息以及ECU的配置信息自动生成满足应用以及底层基础软件要求的运行时环境,同时生成构件端口通信API的申明和实现源文件以及封装构件运行体为任务。
Description
技术领域
本发明涉及汽车电子技术领域,具体涉及一种面向汽车电子控制器的运行时环境生成***及方法。
背景技术
近年来,汽车领域的应用经历着巨大的变化。越来越多新应用的出现,一方面带来新的机会,同时也给汽车软件的开发者在研究和开发上带来新的挑战。当今的汽车,尤其是豪华汽车,其硬件、软件的复杂程度都非常高,例如,一台汽车上可多达70个电子控制器(Electronic Control Unit,ECU),不同类型的10条控制总线。汽车软件不再是一个电子控制器上的一个简单控制程序,软件的开发面临的是一个分布式、异构的嵌入式环境。
另一方面,随着车载控制***日益先进和复杂化,每辆汽车投入的软件开发工时数(时间及人力)2010年将达到2002年的5-10倍。汽车电子***设计复杂化造成的可靠性隐患导致汽车因安全隐患被“招回”的现象频繁发生,使得汽车软件的开发还面临软件可靠性以及上市时间两项指标的考验。传统的汽车软件开发过程是‘V’字形过程,在开发的很多环节存在着重复劳动。重复的需求,重复的设计,重复的测试等等工作都降低了汽车软件的开发效率,直接影响汽车上市时间。此外,重复的劳动并不能保证软件的可靠性。如果一个经过充分测试和验证的软件成果能够多次地应用到不同的汽车平台上,不但能缩短软件开发时间,也能保证软件的可靠性。
为了实现软件复用的目标,汽车电子领域已开始采用软件构件技术进行应用程序的开发,软件构件技术被视为实现软件成功复用的关键因素。采用构件技术的汽车软件开发的基本思想为:应用软件通过在产品线上连接预制的可信的构件组装而成,构件在运行时通过连接端***互。
构件间的交互很大程度上依赖于***的物理结构以及构件的部署方式。对汽车这样的分布式、异构***,构件间交互的显得复杂而难以处理。理想的方式是将复杂而容易出错的交互逻辑分开甚至隐藏。因此,需要采用通信中间件来处理交互。表面上应用构件直接交互,实际上利用了透明的通信中间件。而构件不需要提供任何关于交互的实现方式,只考虑构件的实际作用,也使得构件的代码规模小,不易出错。然而通用的通信中间件,例如CORBA,是一种重量级的中间件,并不适合于资源约束性强的嵌入式***。因此,在汽车电子嵌入式领域需要构建轻量级的通信中间件从而支持构件的开发。这种轻量级的通信中间件是一种可定制的嵌入式运行时环境,即是面向汽车电子ECU的运行时环境。
运行时环境隔离了应用软件与ECU平台上的基础软件,向上对应用软件屏蔽了底层细节,向下粘合ECU上的操作***、通信软件的基本功能实现构件通信。然而在汽车平台上,不同ECU的硬件有差异以及操作***、通信软件和其他功能模块有差异。当应用软件部署到具体的ECU上时,需要一种工具,能结合具体ECU的基础软件功能和软件构件的实际情况,配置和生成面向ECU的运行时环境。这样的工具称作运行时环境生成器。
发明内容
本发明所要解决的技术问题是:如何提供一种面向汽车电子控制器的运行时环境生成***及方法,该面向汽车电子控制器的运行时环境生成***可根据构件描述信息、***描述信息以及ECU的配置信息自动生成满足应用以及底层基础软件要求的运行时环境,同时生成构件端口通信API的申明和实现源文件以及封装构件运行体为任务。
为达到上述发明目的,本发明所采用的方案为:提供一种面向汽车电子控制器的运行时环境生成***,其特征在于:所述***包括:
项目资源管理模块,用来管理与项目相关的构件描述文件、***描述文件、ECU信息列表和RTE源文件;具体功能包括:1)以树状结构显示项目所包含的文件夹与文件;2)提供项目的新建与删除功能;3)提供文件夹与文件的新建、复制、删除、重命名功能;
描述文件管理模块,用于管理构件描述文件、***描述文件和ECU信息列表;具体功能包括:1)提供构件描述文件、***描述文件和ECU信息列表的导入功能;2)提供构件描述文件、***描述文件和ECU信息列表的导出功能;3)提供构件描述文件、***描述文件和ECU信息列表的合并功能;4)提供构件描述文件、***描述文件和ECU信息列表的编辑功能;
XML解析器,主要负责解析XML格式的构件描述文件、***描述文件和ECU信息列表内容,将构件描述文件、***描述文件和ECU信息列表内容读入到内存中并转换为多个关联的哈希表进行存储;
代码模板,用于为RTE生成器引擎模块提供生成RTE源文件规范样式的基本模板;
RTE生成器引擎模块,负责根据项目当前的构件描述文件、***描述文件和ECU信息列表完成以下功能:1)依据代码模板的规范样式生成输出ECU特定的运行时环境代码RTE源文件;2)生成构件端口通信函数的申明以及实现函数;3)将构件运行体封装为操作***的任务,交给底层的操作***管理和执行。
所述RTE源文件包括运行时环境源代码文件和与构件应用相关的源代码文件。
一种面向汽车电子控制器的运行时环境生成方法,包括步骤:A、读入并整理项目相关的***描述文件、构件描述文件及ECU信息列表,将XML形式的***描述文件、构件描述文件及ECU信息列表解析后获得关于***、构件和ECU的线性信息列表在内存中进行存储,并发送至RTE生成器引擎模块中;B、同时,将代码模板输入RTE生成器引擎模块中;C、RTE生成器引擎模块根据代码模板顺序依次解析代码模板内容,并从解析后的***描述文件、构件描述文件及ECU信息列表中取出相应信息依据代码模板的规范样式生成并输出RTE源文件。
在所述步骤C中,RTE生成器引擎模块的工作过程如下:
a、引擎启动后,对输入的配置描述信息和输出目录进行初始化,完成后建立ListManager和SourceGenerator两个对象;所述ListManager对象用于管理***描述文件、构件描述文件和ECU信息列表;
b、SourceGenerator对象首先初始化一张结构化表,即SourceFileList,然后调用SourceFileFactory中的createSourceFiles()函数,将代码模板提取出来并注册到表中,把需要生成的目标信息传递给各个模板,从而实例化为SourceFile对象;
c、引擎依次读取SourceFileList的内容,各个SourceFile从ListManager中提取出自己需要的信息,形成源代码实例,并写入到RTE源文件中。
在所述步骤C中,代码模板提供了C语言常见的所有内容结构,通过实例化这些结构将其挂载到相应位置并存放到SourceFile对象中,引擎模块会自动将它们转换为源代码。
在所述步骤A中,将XML形式的***描述文件、构件描述文件及ECU信息列表进行解析后获得关于***、构件和ECU的线性信息列表,线性信息列表的组织由ListManager完成,ListManager内部包含了下面14张哈希表:
表名 |
ApplicationSoftwareComponentList |
AssemblyConnectorList |
ComponentPrototypeList |
CompositionList |
DataAccessList |
DataElementList |
DataPointList |
DataTypeList |
ElementList |
Index |
InterfaceList |
InternalBehaviorList |
PortList |
RunnableEntityList |
其中,elementList为主表,包含其他所有表中的元素的主节点。
所述线性信息列表的生成算法如下:
(1)ListManager初始化时,建立所有的字表,并将它们置空;
(2)表的建立必须遵循:被依赖的项目必须在依赖项之前添加;首先,建立一张名为index的表,用于规定表的添加循序,具体顺序依次为:1)dataTypeList;2)dataElementList;3)interfaceList;4)portList;5)applicationSoftwareComponentList;6)dataAccessList;7)dataPointList;8)runnableEntityList;9)internalBehaviorList;10)internalBehaviorList;11)assemblyConnectorList;12)componentPrototypeList;13)compositionList;
(3)ListManager扫描所有XML描述文件,当扫描到任何ELEMENTSType类型的节点时,就先把这个节点所在的路径通过回溯法计算出来,然后调用lists.addElement(fullShortPath,(EObject)object);添加到elementList中,其中fullShortPath就是节点路径;
(4)扫描完所有的XML文件后,填充完成elementList;接着将其中的元素分类细化,细化的流程是:选定一张子表(顺序为dataTypeList、interfaceList、applicationSoftwareComponentList、internalBehaviorList、compositionList),扫描提取出elementList中的每一个元素,接着,每张子表检测这个元素e是否属于自己,如果属于则将其添加到自己的哈希表中。
综上所述,本发明所提供的面向汽车电子控制器的运行时环境生成***及方法采用开放源代码的、基于Java的可扩展开发平台Eclipse的插件机制实现。Eclipse的插件机制是轻型软件组件化架构。在富客户机平台上,Eclipse使用插件来提供所有的附加功能,插件架构能够支持将任意的扩展加入到现有环境中。例如支持Java以外的其他语言,再如配置管理。
附图说明
图1为面向汽车电子控制器的运行时环境生成***的功能模块关系图;
图2为RTE生成器引擎模块层级划分示意图;
图3为XMLFiles类图;
图4为Element List类图;
图5为元素类型哈希表生成示意图;
图6为AbstractElement类关系图;
图7为ApplicationSoftwareComponentList类图;
图8为InternalBehaviorList类图;
图9为DataType类图;
图10为Interface List类图;
图11为NonElement Index数据结构示意图;
图12为Port List类图;
图13为Data Element List类图;
图14为Runnable Entity类图;
图15为RTE生成器引擎模块的工作示意图;
图16为代码模板内容结构图。
具体实施方式
下面结合具体实施例对本发明的实施过程做详细描述。
该面向汽车电子控制器的运行时环境生成***包括:项目资源管理模块,用来管理与项目相关的构件描述文件、***描述文件、ECU信息列表和RTE源文件;具体功能包括:1)以树状结构显示项目所包含的文件夹与文件;2)提供项目的新建与删除功能;3)提供文件夹与文件的新建、复制、删除、重命名功能;描述文件管理模块,用于管理构件描述文件、***描述文件和ECU信息列表;具体功能包括:1)提供构件描述文件、***描述文件和ECU信息列表的导入功能;2)提供构件描述文件、***描述文件和ECU信息列表的导出功能;3)提供构件描述文件、***描述文件和ECU信息列表的合并功能;4)提供构件描述文件、***描述文件和ECU信息列表的编辑功能;XML解析器,主要负责解析XML格式的构件描述文件、***描述文件和ECU信息列表内容,将构件描述文件、***描述文件和ECU信息列表内容读入到内存中并转换为多个关联的哈希表进行存储;代码模板,用于为RTE生成器引擎模块提供生成RTE源文件规范样式的基本模板;RTE生成器引擎模块,负责根据项目当前的构件描述文件、***描述文件和ECU信息列表完成以下功能:1)依据代码模板的规范样式生成输出ECU特定的运行时环境代码RTE源文件;2)生成构件端口通信函数的申明以及实现函数;3)将构件运行体封装为操作***的任务,交给底层的操作***管理和执行。所述RTE源文件包括运行时环境源代码文件和与构件应用相关的源代码文件。
一种面向汽车电子控制器的运行时环境生成方法,包括步骤:A、读入并整理项目相关的***描述文件、构件描述文件及ECU信息列表,将XML形式的***描述文件、构件描述文件及ECU信息列表解析后获得关于***、构件和ECU的线性信息列表在内存中进行存储,并发送至RTE生成器引擎模块中;B、同时,将代码模板输入RTE生成器引擎模块中;C、RTE生成器引擎模块根据代码模板顺序依次解析代码模板内容,并从解析后的***描述文件、构件描述文件及ECU信息列表中取出相应信息依据代码模板的规范样式生成并输出RTE源文件。
如图15所示,在所述步骤C中,RTE生成器引擎模块的工作过程如下:a、引擎启动后,对输入的配置描述信息和输出目录进行初始化,完成后建立ListManager和SourceGenerator两个对象;所述ListManager对象用于管理***描述文件、构件描述文件和ECU信息列表;b、SourceGenerator对象首先初始化一张结构化表,即SourceFileList,然后调用SourceFileFactory中的createSourceFiles()函数,将代码模板提取出来并注册到表中,把需要生成的目标信息传递给各个模板,从而实例化为SourceFile对象;c、引擎依次读取SourceFileList的内容,各个SourceFile从ListManager中提取出自己需要的信息,形成源代码实例,并写入到RTE源文件中。
在所述步骤C中,代码模板提供了C语言常见的所有内容结构,通过实例化这些结构将其挂载到相应位置并存放到SourceFile对象中,引擎模块会自动将它们转换为源代码,如图16所示。
在所述步骤A中,将XML形式的***描述文件、构件描述文件及ECU信息列表进行解析后获得关于***、构件和ECU的线性信息列表,线性信息列表的组织由ListManager完成,ListManager内部包含了下面14张哈希表:
表名 |
ApplicationSoftwareComponentList |
AssemblyConnectorList |
ComponentPrototypeList |
CompositionList |
DataAccessList |
DataElementList |
DataPointList |
DataTypeList |
ElementList |
Index |
InterfaceList |
InternalBehaviorList |
PortList |
RunnableEntityList |
其中,elementList为主表,包含其他所有表中的元素的主节点。
所述线性信息列表的生成算法如下:
(1)ListManager初始化时,建立所有的字表,并将它们置空;
(2)表的建立必须遵循:被依赖的项目必须在依赖项之前添加;首先,建立一张名为index的表,用于规定表的添加循序,具体顺序依次为:1)dataTypeList;2)dataElementList;3)interfaceList;4)portList;5)applicationSoftwareComponentList;6)dataAccessList;7)dataPointList;8)runnableEntityList;9)internalBehaviorList;10)internalBehaviorList;11)assemblyConnectorList;12)componentPrototypeList;13)compositionList;
(3)ListManager扫描所有XML描述文件,当扫描到任何ELEMENTSType类型的节点时,就先把这个节点所在的路径通过回溯法计算出来,然后调用lists.addElement(fullShortPath,(EObject)object);添加到elementList中,其中fullShortPath就是节点路径;
(4)扫描完所有的XML文件后,填充完成elementList;接着将其中的元素分类细化,细化的流程是:选定一张子表(顺序为dataTypeList、interfaceList、applicationSoftwareComponentList、internalBehaviorList、compositionList),扫描提取出elementList中的每一个元素,接着,每张子表检测这个元素e是否属于自己,如果属于则将其添加到自己的哈希表中。
在下一代汽车架构中,运行时环境的作用为了解决开放式***应用层模块的对外交互问题,主要功能有以下两个:1)为每一个构件端口产生所需的编程接口(API)。2)把运行体封装成为任务,并交给操作***执行。因此,本发明将RTE的结构设计为如图2所示。上述功能的实现,主要通过运行时环境引擎对获得***、构件、ECU描述信息配合代码模板进行代码自动生成来完成。下面分别描述描述信息线性列表方案、代码模板方案,以及代码自动生成流程。
如前所述,***、构件、ECU描述信息在经XML解析后,生成结构化的线性列表共14个。具体设计时,列表的大致类型分为:描述文件列表,元素列表(Element List),元素类型哈希表(Element-type Hash Map),非元素类型哈希表(Non Element-type Hash Map)。下面分别描述各类型列表的设计。
1、描述文件列表
本发明采用Eclipse作为生成器实现的载体,以Eclipse中项目管理方式来对需要读入的配置描述文件进行管理。考虑到生成器应该独立于所依赖的环境(操作***、运行平台),所以使用一个类抽象所有的配置文件。在导入时使用层次遍历的方法,将所有以arxml结尾的文件放入以String为元素的链表中,然后传递给RTE生成器。设计一个名为XMLFiles的类封装整个过程,其结构如图3所示。
2、元素列表
元素列表(ElementList)用于索引文档中的元素,它包含一个哈希映射表,主键为元素(ELEMENT)的名字参考(Short-Name Ref),值为一个Element对象,用于将ELEMENT和Short-Name Ref关联起来,如图4所示。
3、元素类型哈希表
元素类型哈希表(ELEMENT-Type Hash Map)是对ElementList中元素的归类索引,用于在代码生成时顺序扫描而生成代码,如图5所示。所有元素类型元素都继承自AbstractElement,它抽象了所有的ELEMENT-Type元素所应该具有的功能,如图6所示。经过设计,具体实现以下的索引,以便驱动代码生成引擎,进行代码的生成:
1)ComponentLIst
ComponentList用于存储所有的构件元素,它的类结构如错误!未找到引用源。7所示。
对象ApplicationSoftwareComponent有三个功能:1、通过link字段与Element关联起来;2、通过ports和runnableEntities字段存储内部配置信息;3、通过getSourceCode()函数,将文档元素与生成的代码关联起来。
它的构造过程为:XMLParser首先将ListManager的所有Element元素填充完成,然后ListManager顺序调用每一个AbstractElementIndex的check_add()函数,检查所有的Element,如果是ApplicationSoftwareComponent元素,就直接创建一个对象,添加到自己的链表中。
2)InternalBehaviorList
Internal Behavior List的类组织形式和构造方法与Component List类似,它的结构如图8所示。
3)DataTypeList
Data Type List用于索引所有的数据类型。Data Type List含有一个存储所有DataType的链表,发挥面向对象的优点,软件使用继承层次结构来优化所有数据类型的编写与存储,关系如图9所示。
4)InterfaceList
Interface List用于索引所有的Interface元素,每一个Interface都聚合一张DataElement列表,用于表示这个接口上传递的数据,其构成如错误!未找到引用源。10所示。
4、非元素哈希表
代码生成过程中,仅依靠扫描Element的元素是不够的,有时候也需要扫描它们的子节点,比如生成Port API Section时,需要扫描所有的Port列表,而Port是Component的子元素,不是一个ELEMENT,因此,将所有的Port进行一个索引是很有必要的。与此类似的还有Data Element列表、Runnable Entities列表和Data Access/Point列表。
索引使用一张Hash Map,通过Short Name Ref与Element的子元素列表中的元素进行关联,如图11所示。Port List类图、Data Element List类图以及Runnable Entity List类图分别如图12、图13以及图14所示。
代码模板主要涉及:1)RTE任务并发及公共变量模块(Rte.h、Rte.c);2)RTE类型定义模块(Rte_Types.h);3)生命期管理模块(Rte_Main.h、Rte_Main.c);4)构件API支持模块(Rte_Component.h)。
代码生成过程具体包括下列五步:
1、数据类型的移植
由于不同平台所使用的基本数据类型(字长)是不一样的,在不同平台之间通信,需要统一数据类型。运行时环境生成引擎,根据当前目标平台的配置,通过读取DataType描述信息,查询匹配表,并使用类似于typedef<t_name><x_c_code>;这样的形式进行代码输出。
2、通信变量申明
网络通信时,基本元素可以是一组变量,某些情况下还具有返回值和通信状态,为了统一数据和状态信息,使用数据元素统一表示通信变量。通过解析每一个接口数据元素的信息,将其转换为DE(S)结构体,为通信数据做类型准备,形式如下:
typedef struct
{
<t_ref->t_name>value;
Std_ReturnType status;
}Rte_DES_<e_name>;
3、端口函数的封装
端口函数特指那些对端口上的数据元素进行操作的API,它通常用于检查端口状态,设置端口初值以辅助通信的顺利完成,通常把对同一个端口操作的函数指针放到一个结构体中(PDS,Port Data Structure),以方便用户操作。PDS形式如下:
struct Rte_PDS_<p_component>_<p_if>_P
{
Std_ReturnType(*Feedback_<p_if->i_element>)(<p_if->i_element>);
Std_ReturnType(*Write_<p_if->i_element>)(<p_if->i_element>);
};
4、端口通信的实现
两个端口要想通信,必须有一条通信信道,这里使用共享变量为例,展示如何进行同一ECU上端口间的通信:
(1)顺序扫描每一个连接器描述信息,定义其中间变量
<c_p_port->p_if->e_type>Rte_Signal_<signal_i>;
(2)对于每一个端口将描述信息生成代码
对于接收端口生成如下代码:
extern<DataType>Rte_IRead_<c>_<r>_<p>_<e>(void);
#ifdef_RTE_C_
#ifdef_RTE_<c>_C_
#define Rte_IRead_<r>_<p>_<e>\
Rte_IRead_<c>_<r>_<p>_<e>
#endif/*_RTE_<c>_C_*/
#endif/*_RTE_C_*/
Std_ReturnType
Rte_Read_<c>_<r>_<p>_<e>(<DataType>*value)
{
*value=Rte_Signal_<signal_i>;
return RTE_E_OK;
}
对于发送端口生成如下代码:
extern Std_ReturnType Rte_Write_<c>_<r>_<p>_<e>(<DataType>);
#ifdef_RTE_C_
#ifdef_RTE_<c>_C_
#define Rte_Write_<r>_<p>_<e>\
Rte_Write_<c>_<r>_<p>_<e>
#ifdef_cplusplus
Std_ReturnType Rte_Send_<c>_<r>_<p>_<e>(<DataType>value)
{
Rte_Signal_<signal_i>=value;
ActiveTask(Rte_Task_<r>);
return RTE_E_OK;
}
#endif/*_RTE_<c>_C_*/
5、任务体的构造
任务体的实现涉及到操作***的配置(基础平台的配置),任务体每次激活一个或多个运行体,从而完成应用程序的激活。对于每一个运行体,生成如下代码:
TASK(Rte_Task_<r>)
{
<r>();
TerminateTask();
}
其中r为运行体名。
Claims (7)
1.一种面向汽车电子控制器的运行时环境生成***,其特征在于:所述***包括:
项目资源管理模块,用来管理与项目相关的构件描述文件、***描述文件、ECU信息列表和RTE源文件;具体功能包括:
1)以树状结构显示项目所包含的文件夹与文件;
2)提供项目的新建与删除功能;
3)提供文件夹与文件的新建、复制、删除、重命名功能;
描述文件管理模块,用于管理构件描述文件、***描述文件和ECU信息列表;具体功能包括:
1)提供构件描述文件、***描述文件和ECU信息列表的导入功能;
2)提供构件描述文件、***描述文件和ECU信息列表的导出功能;
3)提供构件描述文件、***描述文件和ECU信息列表的合并功能;
4)提供构件描述文件、***描述文件和ECU信息列表的编辑功能;
XML解析器,主要负责解析XML格式的构件描述文件、***描述文件和ECU信息列表内容,将构件描述文件、***描述文件和ECU信息列表内容读入到内存中并转换为多个关联的哈希表进行存储;
代码模板,用于为RTE生成器引擎模块提供生成RTE源文件规范样式的基本模板;
RTE生成器引擎模块,负责根据项目当前的构件描述文件、***描述文件和ECU信息列表完成以下功能:
1)依据代码模板的规范样式生成输出ECU特定的运行时环境代码RTE源文件;
2)生成构件端口通信函数的申明以及实现函数;
3)将构件运行体封装为操作***的任务,交给底层的操作***管理和执行。
2.根据权利要求1所述的面向汽车电子控制器的运行时环境生成***,其特征在于:所述RTE源文件包括运行时环境源代码文件和与构件应用相关的源代码文件。
3.一种面向汽车电子控制器的运行时环境生成方法,其特征在于:所述方法包括步骤:
A、读入并整理项目相关的***描述文件、构件描述文件及ECU信息列表,将XML形式的***描述文件、构件描述文件及ECU信息列表解析后获得关于***、构件和ECU的线性信息列表在内存中进行存储,并发送至RTE生成器引擎模块中;
B、同时,将代码模板输入RTE生成器引擎模块中;
C、RTE生成器引擎模块根据代码模板顺序依次解析代码模板内容,并从解析后的***描述文件、构件描述文件及ECU信息列表中取出相应信息依据代码模板的规范样式生成并输出RTE源文件。
4.根据权利要求3所述的面向汽车电子控制器的运行时环境生成方法,其特征在于:在所述步骤C中,RTE生成器引擎模块的工作过程如下:
a、引擎启动后,对输入的配置描述信息和输出目录进行初始化,完成后建立ListManager和SourceGenerator两个对象;所述ListManager对象用于管理***描述文件、构件描述文件和ECU信息列表;
b、SourceGenerator对象首先初始化一张结构化表,即SourceFileList,然后调用SourceFileFactory中的createSourceFiles()函数,将代码模板提取出来并注册到表中,把需要生成的目标信息传递给各个模板,从而实例化为SourceFile对象;
c、引擎依次读取SourceFileList的内容,各个SourceFile从ListManager中提取出自己需要的信息,形成源代码实例,并写入到RTE源文件中。
5.根据权利要求3所述的面向汽车电子控制器的运行时环境生成方法,其特征在于:在所述步骤C中,代码模板提供了C语言常见的所有内容结构,通过实例化这些结构将其挂载到相应位置并存放到SourceFile对象中,引擎模块会自动将它们转换为源代码。
6.根据权利要求3所述的面向汽车电子控制器的运行时环境生成方法,其特征在于:在所述步骤A中,将XML形式的***描述文件、构件描述文件及ECU信息列表进行解析后获得关于***、构件和ECU的线性信息列表,线性信息列表的组织由ListManager完成,ListManager内部包含了下面14张哈希表:
其中,elementList为主表,包含其他所有表中的元素的主节点。
7.根据权利要求6所述的面向汽车电子控制器的运行时环境生成方法,其特征在于:所述线性信息列表的生成算法如下:
(1)ListManager初始化时,建立所有的字表,并将它们置空;
(2)表的建立必须遵循:被依赖的项目必须在依赖项之前添加;首先,建立一张名为index的表,用于规定表的添加循序,具体顺序依次为:1)dataTypeList;2)dataElementList;3)interfaceList;4)portList;5)applicationSoftwareComponentList;6)dataAccessList;7)dataPointList;8)runnableEntityList;9)internalBehaviorList;10)internalBehaviorList;11)assemblyConnectorList;12)componentPrototypeList;13)compositionList;
(3)ListManager扫描所有XML描述文件,当扫描到任何ELEMENTSType类型的节点时,就先把这个节点所在的路径通过回溯法计算出来,然后调用lists.addElement(fullShortPath,(EObject)object);添加到elementList中,其中fullShortPath就是节点路径;
(4)扫描完所有的XML文件后,填充完成elementList;接着将其中的元素分类细化,细化的流程是:选定一张子表(顺序为dataTypeList、interfaceList、applicationSoftwareComponentList、internalBehaviorList、compositionList),扫描提取出elementList中的每一个元素,接着,每张子表检测这个元素e是否属于自己,如果属于则将其添加到自己的哈希表中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105822803A CN102063298A (zh) | 2010-12-10 | 2010-12-10 | 一种面向汽车电子控制器的运行时环境生成***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105822803A CN102063298A (zh) | 2010-12-10 | 2010-12-10 | 一种面向汽车电子控制器的运行时环境生成***及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102063298A true CN102063298A (zh) | 2011-05-18 |
Family
ID=43998587
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010105822803A Pending CN102063298A (zh) | 2010-12-10 | 2010-12-10 | 一种面向汽车电子控制器的运行时环境生成***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102063298A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104503767A (zh) * | 2014-12-31 | 2015-04-08 | 埃泰克汽车电子(芜湖)有限公司 | 基于lin协议的代码自动生成***及方法 |
CN109683865A (zh) * | 2018-12-26 | 2019-04-26 | 中车青岛四方车辆研究所有限公司 | 动车组车载控制软件生成***及方法 |
CN109800330A (zh) * | 2019-01-31 | 2019-05-24 | 北京经纬恒润科技有限公司 | 一种数据处理方法及装置 |
CN110007953A (zh) * | 2018-12-26 | 2019-07-12 | 蔚来汽车有限公司 | 一种软件前端开发方法及其*** |
CN110297633A (zh) * | 2019-06-28 | 2019-10-01 | 百度在线网络技术(北京)有限公司 | 代码转换方法、装置、设备和存储介质 |
CN111399816A (zh) * | 2020-03-12 | 2020-07-10 | 华大半导体有限公司 | 汽车ecu程序文件生成方法及***、存储介质及终端 |
CN113094033A (zh) * | 2021-06-07 | 2021-07-09 | 南京沁恒微电子股份有限公司 | 一种mcu集成开发环境的工程结构适配方法 |
CN115687317A (zh) * | 2022-10-21 | 2023-02-03 | 南京上游软件有限公司 | 一种实现基于Java端多叉树对象增删改查服务的方法 |
CN116501703A (zh) * | 2023-06-27 | 2023-07-28 | 江铃汽车股份有限公司 | 一种对adams分析结果进行数据合并处理的方法及设备 |
-
2010
- 2010-12-10 CN CN2010105822803A patent/CN102063298A/zh active Pending
Non-Patent Citations (6)
Title |
---|
《Software Engineering Research》 20091204 Shiquan Piao等 "Design and Inmplementation of RTE Generator for Automotive Embedded Software" 第161页左侧分栏第37-38行,第161页右侧分栏第1-10行和第24-37行,第162页左侧分栏第1-2行 4,5 , * |
《中国优秀硕士学位论文全文数据库(电子期刊)》 20080715 刘凯 "面向汽车电子嵌入式领域的运行时环境中间件-SmartRTE" 第5页第1段,第6页第1段,第23页第1-2段,第24页第3段,第51页第3段,第52页第1段,图3-4 1-7 , 第7期 * |
《汽车电器》 20100531 高焕吉 "基于AUTOSAR的汽车电子控制***嵌入式软件开发" 第11-14页 1-7 , 第5期 * |
SHIQUAN PIAO等: ""Design and Inmplementation of RTE Generator for Automotive Embedded Software"", 《SOFTWARE ENGINEERING RESEARCH》 * |
刘凯: ""面向汽车电子嵌入式领域的运行时环境中间件-SmartRTE"", 《中国优秀硕士学位论文全文数据库(电子期刊)》 * |
高焕吉: ""基于AUTOSAR的汽车电子控制***嵌入式软件开发"", 《汽车电器》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104503767A (zh) * | 2014-12-31 | 2015-04-08 | 埃泰克汽车电子(芜湖)有限公司 | 基于lin协议的代码自动生成***及方法 |
CN109683865A (zh) * | 2018-12-26 | 2019-04-26 | 中车青岛四方车辆研究所有限公司 | 动车组车载控制软件生成***及方法 |
CN110007953A (zh) * | 2018-12-26 | 2019-07-12 | 蔚来汽车有限公司 | 一种软件前端开发方法及其*** |
CN109800330A (zh) * | 2019-01-31 | 2019-05-24 | 北京经纬恒润科技有限公司 | 一种数据处理方法及装置 |
CN110297633A (zh) * | 2019-06-28 | 2019-10-01 | 百度在线网络技术(北京)有限公司 | 代码转换方法、装置、设备和存储介质 |
CN111399816A (zh) * | 2020-03-12 | 2020-07-10 | 华大半导体有限公司 | 汽车ecu程序文件生成方法及***、存储介质及终端 |
CN113094033A (zh) * | 2021-06-07 | 2021-07-09 | 南京沁恒微电子股份有限公司 | 一种mcu集成开发环境的工程结构适配方法 |
CN113094033B (zh) * | 2021-06-07 | 2021-08-27 | 南京沁恒微电子股份有限公司 | 一种mcu集成开发环境的工程结构适配方法 |
CN115687317A (zh) * | 2022-10-21 | 2023-02-03 | 南京上游软件有限公司 | 一种实现基于Java端多叉树对象增删改查服务的方法 |
CN115687317B (zh) * | 2022-10-21 | 2023-10-03 | 南京上游软件有限公司 | 一种实现基于Java端多叉树对象增删改查服务的方法 |
CN116501703A (zh) * | 2023-06-27 | 2023-07-28 | 江铃汽车股份有限公司 | 一种对adams分析结果进行数据合并处理的方法及设备 |
CN116501703B (zh) * | 2023-06-27 | 2023-09-01 | 江铃汽车股份有限公司 | 一种对adams分析结果进行数据合并处理的方法及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102063298A (zh) | 一种面向汽车电子控制器的运行时环境生成***及方法 | |
CN101840334B (zh) | 一种软件构件服务化封装方法 | |
Gray et al. | Domain-Specific Modeling. | |
CN105808428B (zh) | 一种对分布式文件***进行统一性能测试的方法 | |
CN107807878A (zh) | 基于关键字的自动化测试引擎 | |
CN103558767A (zh) | 一种列控***测试序列的辅助生成方法和*** | |
CN102880468B (zh) | 一种用于ecu程序开发的代码智能提示方法及其*** | |
CN101291253B (zh) | 一种网管客户端基于图形界面的人机命令交互方法 | |
CN101763043B (zh) | 用于自动化协同框架的方法和*** | |
Wang et al. | An executable system architecture approach to discrete events system modeling using SysML in conjunction with colored Petri Net | |
CN102542002A (zh) | 一种卫星遥测数据处理***以及其实现方法 | |
CN103984624A (zh) | 一种网页自动化测试方法及*** | |
CN101841515A (zh) | 可变目标的协议数据单元编解码代码自动生成的实现方法 | |
CN106201480A (zh) | 一种座舱显示控制***软件架构管理平台 | |
CN100561476C (zh) | 一种基于asn类型对象的代码生成方法 | |
CN102111282A (zh) | 一种基于电信业务的信息管理***架构及其构建方法 | |
CN101651679A (zh) | 一种基于树形结构的数据帧解析和处理***和方法 | |
CN106371847A (zh) | Windows xp***下CPCI总线RS422通信驱动方法及*** | |
CN102141991A (zh) | 用于web服务器的方法和*** | |
CN102096729B (zh) | 一种面向汽车电子的虚拟功能总线设计器 | |
CN107885500A (zh) | 一种面向autosar软件架构的运行时环境生成方法 | |
CN110109658A (zh) | 一种基于形式化模型的ros代码生成器及代码生成方法 | |
CN105893063A (zh) | 一种基于xml格式配置文件的应用程序界面及其构建方法 | |
Handley et al. | Maintaining the consistency of sysml model exports to XML metadata interchange (XMI) | |
Wu et al. | A hierarchical modeling method for AUTOSAR software components |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20110518 |