发明内容
以下给出一个或多个方面的简要概述以提供对这些方面的基本理解。此概述不是所有构想到的方面的详尽综览,并且既非旨在指认出所有方面的关键性或决定性要素亦非试图界定任何或所有方面的范围。其唯一的目的是要以简化形式给出一个或多个方面的一些概念以为稍后给出的更加详细的描述之序。
本发明的目的在于解决上述问题,提供了一种用户可配置的自动生成a2l文件的装置和方法,解决了配置标定数据库过程中产生的问题。
本发明的技术方案为:本发明揭示了一种用户可配置的自动生成a2l文件的装置,包括:
用户配置界面输入模块,通过人机界面对所要生成的a2l文件进行通用性预定义配置,并将配置项赋值给对应的程序数据接口,包括:
源a2l文件路径输入单元,输入matlab生成的应用层变量数据库文件(.a2l文件)的路径;
地址映射文件路径输入单元,输入编译器生成的存储器数据的地址映射文件的路径;
标定量数据段名及ROM地址单元,根据不同编译器环境和控制器进行配置,在a2l文件中标识工作页和引用页的数据段定义;
测量量数据段名单元,根据不同编译器环境进行配置,用于在程序中将指针指向字符串指定的数据段位置的头;
自动生成器模块,根据用户配置界面中配置的控制器平台数据段特征信息配置生成a2l的模板,自动生成器模块进一步包括:
用户配置接口调用及实例化单元,获取用户配置路径下的地址映射文件,根据用户指定的标签名及起始地址提取出其中的标定量和测量量数据,并将数据以字符串形式保存在程序缓存中,用于之后的变量名和地址的检索;
数据类型结构体数组实例化单元,定义并实例化结构体,根据各类结构体在matlab生成的a2l文件中定义变量属性的格式定义结构体,并对结构体以结构体数组的形式进行实例化;
地址映射文件各数据段数据获取单元,获取用户指定路径下的matlab生成的源a2l文件,用ASAP2协议中定义的关键字对其数据进行检索并分配给对应的四类结构体,再按行将数据填入其对应结构体的成员中;
a2l文件解析单元,用已经分配好的结构体变量中的变量名成员到地址映射文件解析出来的数据段中检索对应的变量名并读取其地址;
数据段信息查找单元,将对应数据段中解析出来的变量对应地址写入其对应的结构体变量的地址成员中;
a2l文件生成单元,为新a2l文件写入头、尾模板,将结构体变量的成员按照a2l文件的标准格式循环写入已经预便携的a2l文件的指定段定义中,并将文件输出至用户指定的路径下。
根据本发明的用户可配置的自动生成a2l文件的装置的一实施例,数据类型结构体数组实例化单元定义并实例化的结构体包括:标定量结构体、测量量结构体、Y轴标定量结构体以及X轴标定量结构体。
根据本发明的用户可配置的自动生成a2l文件的装置的一实施例,数据段信息查找单元中判断结构体变量的属性,若为标定量则根据结构体变量在其RAM中的地址和标定数据段在flash/ROM中的映射地址计算出地址的偏移量,并将其映射地址减去其偏移量后将其写入,若为测量量则不需要进行地址换算后直接写入。
本发明还揭示了一种用户可配置的自动生成a2l文件的方法,包括:
步骤1:通过用户配置界面对所要生成的a2l文件进行通用性预定义配置,并将配置项赋值给对应的程序数据接口;
步骤2:自动生成器根据用户输入的地址映射文件标签对指定路径下的地址映射文件以流文件的形式读取并进行字符串处理和读写,以检索和获取需要用到的数据段信息;
步骤3:自动生成器对用户指定路径下的matlab生成的a2l文件进行流文件读取并进行字符串处理检索,其中的关键字依据ASAP2协议,之后将所有的信息按照结构体的定义形式分配到对应类型的结构体数组中的指定元素的对应结构体成员中;
步骤4:自动生成器通过对结构体成员的处理,检索出内容缺省的部分,并从在对应的地址映射文件中读取出的数据段中以结构体中的变量名成员进行检索,检索完成后再将其对应地址或相关信息填充入对应属性的结构体变量成员中;
步骤5:为新a2l文件写入头、尾模板,将结构体变量的成员按照a2l文件的标准格式循环写入已经预便携的a2l文件的指定段定义中,并将文件输出至用户指定的路径下。
根据本发明的用户可配置的自动生成a2l文件的方法的一实施例,在步骤1中,通过用户配置界面获取matlab生成的应用层变量数据库文件(.a2l文件)以及编译器生成的存储器数据的地址映射文件的路径,同时获取用户配置的地址映射文件中的标签名作为接口。
根据本发明的用户可配置的自动生成a2l文件的方法的一实施例,步骤3中的结构体包括:标定量结构体、测量量结构体、Y轴标定量结构体以及X轴标定量结构体。
根据本发明的用户可配置的自动生成a2l文件的方法的一实施例,步骤4中进一步包括:判断结构体变量的属性,若为标定量则根据结构体变量在其RAM中的地址和标定数据段在flash/ROM中的映射地址计算出地址的偏移量,并将其映射地址减去其偏移量后将其写入,若为测量量则不需要进行地址换算后直接写入。
本发明相较于现有技术有如下的有益效果:本发明提供了一个人机可配置界面对所要生成的a2l文件进行通用性预定义配置,并且在软件装置运行的过程中将配置项赋值给对应的程序数据接口,在运行过程中,软件会自动调用这些程序接口,以达到用户配置预期的效果。本发明相较于传统方法的优势在于可以在不同控制器平台及集成编译环境中根据其特征对装置进行用户自定义配置(特征包括:地址映射文件中各数据段的标签名、各数据段的起始地址、daq List长度、各内存数据段长度),很大程度提高了生成装置的通用性,并且降低了频繁更换生成软件的风险。
具体实施方式
在结合以下附图阅读本公开的实施例的详细描述之后,能够更好地理解本发明的上述特征和优点。在附图中,各组件不一定是按比例绘制,并且具有类似的相关特性或特征的组件可能具有相同或相近的附图标记。
图1示出了本发明的用户可配置的自动生成a2l文件的装置的较佳实施例的原理。请参见图1,本实施例的用户可配置的自动生成a2l文件的装置包括:用户配置界面输入模块1和自动生成器模块2。用户配置界面输入模块1通过人机界面对所要生成的a2l文件进行通用性预定义配置,并将配置项赋值给对应的程序数据接口。自动生成器模块2根据用户配置界面中配置的控制器平台数据段特征信息配置生成a2l的模板。
用户配置界面输入模块1包括:源a2l文件路径输入单元11、地址映射文件路径输入单元12、标定量数据段名及ROM地址单元13、测量量数据段名单元14。
同时参见图2,源a2l文件路径输入单元11输入matlab生成的应用层变量数据库文件(.a2l文件)的路径。地址映射文件路径输入单元12输入编译器生成的存储器数据的地址映射文件的路径。导入地址映射文件和源a2l文件的路径,用于自动生成器模块构造其流文件读取的实例。标定量数据段名及ROM地址单元13根据不同编译器环境和控制器进行配置,在a2l文件中标识工作页(workingpage)和引用页(reference page)的数据段(segment)定义。测量量数据段名单元14根据不同编译器环境进行配置,用于在程序中将指针指向字符串指定的数据段位置的头。
用户在生成a2l文件前,可以手动配置一些特征选项以保证输出的a2l文件可以在不同的控制器平台上运行。通过用户配置界面获取matlab生成的应用层变量数据库文件(.a2l)以及编译器生成的存储器数据地址映射文件(.map)的路径,同时获取用户配置的地址映射文件中的标签名作为接口,这些条件将作为自动生成器模块的输入,并且以字符串的数据形式保存在程序缓存中。其中地址映射文件(.map)路径与matlab生成的变量数据库文件(.a2l)路径为必选配置项,自动生成器需根据路径访问对应的文件并对文件进行流文件的读写操作。其中测量量数据段名和地址与标定量数据段名和地址为可选配置项,若用户配置项为空,则生成器会根据默认配置进行生成(默认配置为POWERPC的mpc5604单片机的链接文件定义)。用户配置界面在windows***下的操作界面如图3所示,当用户配置完毕后,单击Generate按键进行自动变量数据库文件(.a2l)生成。其中各可选配置项中的数据段标签及起始地址均在工程源文件中的lcf链接文件中定义,用户可根据不同控制器平台对于此文件中数据段的定以来修改这些可配置项。
自动生成器模块2包括:用户配置接口调用及实例化单元21、数据类型结构体数组实例化单元22、地址映射文件各数据段数据获取单元23、a2l文件解析单元24、数据段信息查找单元25、a2l文件生成单元26。
用户配置接口调用及实例化单元21获取用户配置路径下的地址映射文件(即编译器编译生成的.map文件),根据用户指定的标签名及起始地址提取出其中的标定量和测量量数据,并将数据以字符串形式保存在程序缓存中,用于之后的变量名和地址的检索。
数据类型结构体数组实例化单元22定义并实例化结构体,根据各类结构体在matlab生成的a2l文件中定义变量属性的格式定义结构体,并对结构体以结构体数组的形式进行实例化。这里的结构体包括:标定量结构体、测量量结构体、Y轴标定量结构体以及X轴标定量结构体。
地址映射文件各数据段数据获取单元23获取用户指定路径下的matlab生成的源a2l文件(应用层变量数据库文件),用ASAP2协议中定义的关键字对其数据进行检索并分配给对应的四类结构体,再按行将数据填入其对应结构体的成员中。
a2l文件解析单元24用已经分配好的结构体变量中的变量名成员到地址映射文件解析出来的数据段中检索对应的变量名并读取其地址。
数据段信息查找单元25将对应数据段中解析出来的变量对应地址写入其对应的结构体变量的地址成员中。其中数据段信息查找单元25判断结构体变量的属性,若为标定量则根据结构体变量在其RAM中的地址和标定数据段在flash/ROM中的映射地址计算出地址的偏移量,并将其映射地址减去其偏移量后将其写入,若为测量量则不需要进行地址换算后直接写入。
a2l文件生成单元26为新a2l文件写入头、尾模板,将结构体变量的成员按照a2l文件的标准格式循环写入已经预便携的a2l文件的指定段定义中,并将文件输出至用户指定的路径下默认情况下与.map文件所在路径一致)。其中头、尾模板包含:宏定义、数据段名与地址定义、daq list定义、计算方法定义。其中内存空间段与控制器相关的参数都可以从之前的用户配置信息以及地址映射文件中获取。
请同时参见图4和图5,自动生成器模块2执行如下的步骤。
根据用户输入的地址映射文件标签对指定路径下的地址映射文件以流文件的形式读取并进行字符串处理和读写,以检索和获取需要用到的数据段信息。
对用户指定路径下的matlab生成的应用程序变量数据库文件(.a2l)进行流文件读取并进行字符串处理检索,其主要的关键字依据为ASAP2协议,之后会将所有的信息按照结构体的定义形式分配到对应类型的结构体数组中的指定元素中的对应结构体成员中去。
通过对结构体各成员进行处理,检索出其内容缺省的部分,并到对应的地址映射文件中读取出来的数据段中以变量名即结构体中的变量名成员进行检索,检索完成后再将其对应地址或相关信息填充入对应属性的结构体变量成员中去。
在检索并写入地址变量时应注意如果是标定量则应写入其RAM对应映射到其对应Flash/ROM的地址。这里地址需要做转换,先将标定量的RAM地址读取出来,再减去其标定量数据段在RAM中的基地址即得到此标定量在变定量数据段中对应的地址偏移量,将此偏移量加上标定量数据段杂ROM中的基地址即得到此标定量在实际ROM/Flash中的地址。
借助于使用结构体数组及其结构体成员的数据管理方式,可以更有效的管理及分配各类型变量的参数,使得该软件更易于维护和响应用户的新的需求,例如对于计算方法COMPUTE METHOD、变量的上下限值Upper Limit Lower Limit、变量别名Long Identifier等描述变量的参数。
在结构体数组分配过程中主要按照四个大类来分配:测量量结构体、y轴数组标定量结构体、x轴数组标定量结构体、普通标定量结构体。
每个结构体中的成员变量都是根据matlab生成的数据源文件进行定义的,在生成器中继承了其数据描述结构,比起传统的a2l文件的数据属性描述结构其优势在于结构合理并添加注释可读性强,可维护性强,具有通用的标识符方便进行批量的数据处理。
图6示出了本发明的用户可配置的自动生成a2l文件的方法的实施例的流程。请参见图6,本实施例的方法的详细步骤如下。
步骤S1:通过用户配置界面对所要生成的a2l文件进行通用性预定义配置,并将配置项赋值给对应的程序数据接口。
通过用户配置界面获取matlab生成的应用层变量数据库文件(.a2l文件)以及编译器生成的存储器数据的地址映射文件的路径,同时获取用户配置的地址映射文件中的标签名作为接口。
步骤S2:自动生成器根据用户输入的地址映射文件标签对指定路径下的地址映射文件以流文件的形式读取并进行字符串处理和读写,以检索和获取需要用到的数据段信息。
步骤S3:自动生成器对用户指定路径下的matlab生成的a2l文件进行流文件读取并进行字符串处理检索,其中的关键字依据ASAP2协议,之后将所有的信息按照结构体的定义形式分配到对应类型的结构体数组中的指定元素的对应结构体成员中。其中结构体包括:标定量结构体、测量量结构体、Y轴标定量结构体以及X轴标定量结构体。
步骤S4:自动生成器通过对结构体成员的处理,检索出内容缺省的部分,并从在对应的地址映射文件中读取出的数据段中以结构体中的变量名成员进行检索,检索完成后再将其对应地址或相关信息填充入对应属性的结构体变量成员中。
本步骤进一步包括:判断结构体变量的属性,若为标定量则根据结构体变量在其RAM中的地址和标定数据段在flash/ROM中的映射地址计算出地址的偏移量,并将其映射地址减去其偏移量后将其写入,若为测量量则不需要进行地址换算后直接写入。
步骤S5:为新a2l文件写入头、尾模板,将结构体变量的成员按照a2l文件的标准格式循环写入已经预便携的a2l文件的指定段定义中,并将文件输出至用户指定的路径下。
请同时参见图4和图5,本实施例的方法如下。
用户在生成变量数据库文件(.a2l)前,可以手动配置一些特征选项以保证输出的a2l文件可以在不同的控制器平台上运行。其中地址映射文件(.map)路径与matlab生成的变量数据库文件(.a2l)路径为必选配置项,自动生成器模块需根据路径访问对应的文件并对文件进行流文件的读写操作。其中测量量数据段名和地址与标定量数据段名和地址为可选配置项,若用户配置项为空,则生成器会根据默认配置进行生成(默认配置为POWERPC的mpc5604单片机的链接文件定义)。
用户配置界面在Windows***下的操作界面如图3所示,当用户配置完毕后,单击Generate键进行自动变量数据库文件(.a2l)生成。其中各可选配置项中的数据段标签及起始地址均在工程源文件中的lcf链接文件中定义,用户可根据不同控制器平台对于此文件中数据段的定以来修改这些可配置项。
当用户在配置界面中单击Generate键后,装置会启动自动生成器模块来执行以下步骤。
调用用户配置界面中的各数据段接口的数据—标定量数据段名、测量量数据段名、标定量内存起始地址、标定量存储器起始地址,将其以字符串的格式保存于缓存中,用于之后程序进行检索。这些数据的声明需为public,便于用户在文本框中配置的内容可对其进行进行修改,其初值均为适用于POWERPC 5604B的默认值,若文本框中配置项为空,则程序按默认值运行。
定义四种结构体类型:标定量结构体类型、测量量结构体类型、数组型X轴标定量结构体类型、数组型Y轴标定量结构体类型。定义规则按照matlab生成的变量数据库文件(.a2l)对变量的定义的格式来定义。按照结构体的一般定义顺序测量量结构体的成员有:变量名、长id、类型、转换方式、分辨率、精度、上限值、下限值、内存地址。标定量结构体的成员有:变量名、长id、标定量类型、内存地址、记录格式、转换方式、上限值、下限值。
访问用户定义的文件路径构造地址映射文件(.map)和变量数据库文件(.a2l)的创建流文件和读流文件的实例。
地址映射文件处理,将读入的.map文件字符串按照用户配置的标签名进行检索并获取标定量数据段信息及测量量数据段信息,数据段信息的内容包括:变量名、数据类型、内存起始地址、所占空间、所属源文件等新消息。通过截取字符串的方法获取关键数据段信息,并按照其原始的文件格式存储。
Matlab生成的源变量数据库文件(.a2l)处理,先将读入的文件按照定义关键字进行分块按每个/begin到/end分为一个数据定义块,/beginCHARACTERISTIC到/end CHARACTERISTIC中的内容为标定量,其中标定量又分为两种种类型:一般标定量与数组型Y轴标定量,若在此数据块中检索到/begin AXIS_DESCR关键字,则判断此数据块为Y轴标定量,其余为一般标定量。另外测量量数据块的关键字标签为/begin MEASUREMENT和/endMEASUREMENT。数组型X轴标定量数据块的关键字标签为/begin AXIS_PTS和/end AXIS_PTS。根据各数据块的类型为其分配对应的结构体数组中的元素。
分配的到与其数据块类型对应的结构体数组元素之后,需要将数据块中的内容按照其属性类型填入对应的结构体数组元素的成员中。一般格式为按照换行符作为分隔符将数据块按换行符进行分割,并且按照循环分割的先后次序将描述此变量的属性逐个写入其成员中去。
填入结构体成员后还需要对结构体成员中的内容进行字符串处理,由于matlab生成的版本中可用数据前都会添加上注释,故在此需要作字符串的处理并将最后可直接使用的数据重新写入其所在类型的结构体成员中。在此处因为matlab生成的变量数据库文件(.a2l)都遵循列对齐的格式。只需要在此处做一个统一的删去从索引0到40个字符的内容,其剩余的字符即被作为有效数据写入结构体成员中。
将已经写入数据的结构体成员用其变量名成员作为索引的关键字,到地址映射文件所获取的对应类型数据段中检索其对应的地址信息,并截取地址信息后写入对应结构体成员中,截取地址的操作也可根据地址映射文件统一的格式对其字符串进行取子字符串函数。
此时若变量为标定量,还需要对地址进行处理,将得到的其在内存中的地址减去内存中的起始地址得到此变量在此数据段中的偏移量,并且将此偏移量加上标定段在FLASH/ROM中的地址,即为此变量在FLASH/ROM中的地址。将转换好的地址写入结构体中的地址成员中。
在用户指定的地址映射文件路径下构造一个新的文件实例和一个写流文件的实例,写入新变量数据库文件(a2l)的头和尾模板,其中包括:宏定义、数据段名与地址定义、daq list定义、计算方法定义。其中内存空间段与控制器相关的参数生成器都会自动从的用户配置信息及地址映射文件中获取。
遍历各结构体数组及成员,写入新生成的变量数据库文件(.a2l),写入的位置为检索关键字/end MODULE的索引前。
最后需要添加对所有标定量变量名的声明,在文件的末尾即关键词标签/beginREF_CHARACTERISTIC到/end REF_CHARACTERISTIC之间***所有标定量结构体的变量名成员。
析构所有实例释放内存,并调用生成完毕信息窗口提示用户变量数据库文件生成完毕。此时文件将被保存在用户指定的地址映射文件(.map)下,即一般在工程原文件的bin目录下方便用户的使用和管理。
本装置在目前一般的专用型变量数据库文件(.a2l)文件生成工具(只针对单一控制器平台)的基础上,对各平台差异性和特殊性作了总结和抽象,开放了用户可配置选项作为借口,可以支持在不同平台生成a2l文件。增加了工具的通用性和移植性,降低了频繁更换工具风险。同时自动生成工具节约了大量的工作量和出错率,提高了生成文件的可靠性和一致性。
使用结构体数组的形式管理数据,使得程序更易于维护和管理。由于变量数据库文件(.a2l)在标定中通常需要对一些参数进行更改,方便对于变量的属性的修改和更新。
尽管为使解释简单化将上述方法图示并描述为一系列动作,但是应理解并领会,这些方法不受动作的次序所限,因为根据一个或多个实施例,一些动作可按不同次序发生和/或与来自本文中图示和描述或本文中未图示和描述但本领域技术人员可以理解的其他动作并发地发生。
本领域技术人员将进一步领会,结合本文中所公开的实施例来描述的各种解说性逻辑板块、模块、电路、和算法步骤可实现为电子硬件、计算机软件、或这两者的组合。为清楚地解说硬件与软件的这一可互换性,各种解说性组件、框、模块、电路、和步骤在上面是以其功能性的形式作一般化描述的。此类功能性是被实现为硬件还是软件取决于具体应用和施加于整体***的设计约束。技术人员对于每种特定应用可用不同的方式来实现所描述的功能性,但这样的实现决策不应被解读成导致脱离了本发明的范围。
结合本文所公开的实施例描述的各种解说性逻辑板块、模块、和电路可用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立的门或晶体管逻辑、分立的硬件组件、或其设计成执行本文所描述功能的任何组合来实现或执行。通用处理器可以是微处理器,但在替换方案中,该处理器可以是任何常规的处理器、控制器、微控制器、或状态机。处理器还可以被实现为计算设备的组合,例如DSP与微处理器的组合、多个微处理器、与DSP核心协作的一个或多个微处理器、或任何其他此类配置。
结合本文中公开的实施例描述的方法或算法的步骤可直接在硬件中、在由处理器执行的软件模块中、或在这两者的组合中体现。软件模块可驻留在RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动盘、CD-ROM、或本领域中所知的任何其他形式的存储介质中。示例性存储介质耦合到处理器以使得该处理器能从/向该存储介质读取和写入信息。在替换方案中,存储介质可以被整合到处理器。处理器和存储介质可驻留在ASIC中。ASIC可驻留在用户终端中。在替换方案中,处理器和存储介质可作为分立组件驻留在用户终端中。
在一个或多个示例性实施例中,所描述的功能可在硬件、软件、固件或其任何组合中实现。如果在软件中实现为计算机程序产品,则各功能可以作为一条或更多条指令或代码存储在计算机可读介质上或藉其进行传送。计算机可读介质包括计算机存储介质和通信介质两者,其包括促成计算机程序从一地向另一地转移的任何介质。存储介质可以是能被计算机访问的任何可用介质。作为示例而非限定,这样的计算机可读介质可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备、或能被用来携带或存储指令或数据结构形式的合意程序代码且能被计算机访问的任何其它介质。任何连接也被正当地称为计算机可读介质。例如,如果软件是使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)、或诸如红外、无线电、以及微波之类的无线技术从web网站、服务器、或其它远程源传送而来,则该同轴电缆、光纤电缆、双绞线、DSL、或诸如红外、无线电、以及微波之类的无线技术就被包括在介质的定义之中。如本文中所使用的盘(disk)和碟(disc)包括压缩碟(CD)、激光碟、光碟、数字多用碟(DVD)、软盘和蓝光碟,其中盘(disk)往往以磁的方式再现数据,而碟(disc)用激光以光学方式再现数据。上述的组合也应被包括在计算机可读介质的范围内。
提供对本公开的先前描述是为使得本领域任何技术人员皆能够制作或使用本公开。对本公开的各种修改对本领域技术人员来说都将是显而易见的,且本文中所定义的普适原理可被应用到其他变体而不会脱离本公开的精神或范围。由此,本公开并非旨在被限定于本文中所描述的示例和设计,而是应被授予与本文中所公开的原理和新颖性特征相一致的最广范围。