嵌入式系统底层驱动可视化配置映射规则挖掘*
2013-06-08李银国蒋建春
舒 适,李银国,蒋建春
(1.重庆邮电大学计算机科学与技术学院,重庆 400065;2.重庆高校汽车电子与嵌入式系统工程研究中心,重庆 400065)
1 引言
随着汽车电子行业的飞速发展,各种电子控制单元ECU(Electronic Control Unit)硬件层出不穷,过去针对ECU 的软件开发过于依赖系统硬件,严重影响了开发效率。为了提高软件的复用率,全球汽车制造商、零部件供应商及其他电子、半导体和软件系统公司共同制定了AUTOSAR(AUTomotive Open System ARchitecture)[1]规范,它定义了一套支持分布式、功能驱动的汽车电子软件开发方法以及ECU 上的软件架构标准化配置方案。基于AUTOSAR 规范的配置分为应用组件配置、系统配置和ECU 配置[2]。应用组件配置需要定义好组件间的通信接口并提供组件的描述文件[3],系统配置主要是在整个系统层面上对运行时环境RTE(Real-Time Enviroment)层进行设计[4];ECU 配置关注当前ECU 软件架构中各个模块的配置及代码生成[5]。目前还没有针对ECU配置中驱动各模块结构体初始化的图形配置工具,其难点在于各种结构体嵌套使映射出的软件界面元素规则复杂化,且扩展芯片各模块结构体的未知性,使得配置工具不易兼容。本文基于AUTOSAR 规范,采用模型驱动体系结构MDA(Model Driven Architecture)[6]的开发方式,提出了一种驱动配置界面潜在规则的挖掘方法,该方法对模型的潜在规则进行挖掘、回溯验证,把驱动模块配置及初始化细节映射到界面上,方便用户对驱动进行配置。最后,基于上述理论,开发了相应的驱动可视化配置软件。
2 驱动配置MDA方法
MDA 方法的思想是使业务逻辑和具体实现分离,更好地达到软件复用的目的。MDA 主要流程[7]如图1所示,其中,PIM(Platform Independent Model)为平台无关模型,PSM(Platform Specific Model)为平台相关模型。驱动配置中的PIM模板是用XML 语言描述的ECU 配置项信息,由PIM 规则组成,PIM 规则为XML语言中结点的包含和并列关系以及这两种关系的各种组合。
Figure 1 MDA-based embedded software development process图1 基于MDA 的嵌入式软件开发过程
驱动配置软件是将含有驱动各模块配置项信息的PIM 模板作为输入,映射成图形界面元素;图形界面元素为软件界面中的一条记录,它代表XML中的一个结点;在图形界面中对每条记录的信息进行配置,然后保存回PIM,再将PIM与PSM 结合生成配置文件。整个过程的难点在于如何使PIM 规则能适用于不同ECU 芯片。这是一个分析问题域、设计和预测问题域规则以满足各种情况的过程。PIM 规则需要从以下几个方面考虑:
(1)简便性:用户易于使用;
(2)完备性:覆盖问题域中的所有现有行为;
(3)预测性:基于当前行为挖掘未来可能的行为;
(4)正确性:验证规则是否符合问题域逻辑。
3 底层驱动可视化配置的PIM 映射规则
3.1 算法描述
PIM 规则的挖掘流程可分为四个步骤:分析问题域行为、转换自然语言、建立森林、潜在规则挖掘。如图2所示。
Figure 2 PIM modeling process图2 PIM 建模流程
步骤1 在问题领域中通过分析了解用户需求,用自然语言列举出问题域中的行为。
步骤2 把步骤1中的自然语言抽象出来,根据下面的定义1和定义2进行转换:
定义1 a 包含b=(a(b));
定义2 a 并列b=(a,b)。
步骤3 将步骤2中的表达式根据下面的定义3和定义4转换成森林:
定义3 (a(b))={a,b|a,b分别为树的父、子结点};
定义4 (a,b)={a,b|a,b为树的兄弟结点}。
步骤4 对步骤3中的森林横向挖掘和纵向挖掘,再回溯到步骤1中验证是否符合逻辑,若符合就保留,不符合或者重复,则去掉。
3.2 分析问题域行为
在基于AUTOSAR 的嵌入式系统底层驱动配置中,问题域的行为主要是与驱动资源库各模块的内部实现相关,包括头文件和初始化结构体。下面以实际开发的项目为例,列举出驱动配置问题域中的所有现有行为,每条自然语言描述一种实际的行为:
(1)头文件中宏定义和结构体部分属性初始化,用户可以输入值对其赋值。
(2)头文件中开关函数和结构体部分属性的枚举,用户可以从多个备选中任选其一对其赋值。
(3)头文件中的通道选择,用户可以从多个备选中任选一个或多个。
(4)结构体初始化中,结构体嵌套子结构体,内层子结构体为一个整体组合,组合中包含不同的属性,用户在外层输入数字代表内层组合的重复次数。
(5)结构体初始化中,结构体嵌套子结构体,内层结构体属性和外层相同,根据外层的选择,内层出现相应的某个属性,每次有且仅有一个被选中。
(6)结构体初始化中,结构体嵌套子结构体,内层结构体属性和外层相同,内层中列出子结构体的属性,可以任选一个或多个。
3.3 转换自然语言
从各种芯片的驱动资源库分析可知,其基本界面元素只有编辑框(Edit1,Edit2)、下拉框(Combo)和列表框(List),其它各种复杂的界面行为都是这几种基本界面元素的组合,因此用这几种基本界面元素可以表示各种界面行为。将3.2节问题域中的六条自然语言用界面元素符号分别表示如下:
(1)Edit1。
(2)Combo。
(3)List。
(4)Edit2,包含Edit1、Combo、List、Edit2,内层并列。
(5)Combo包含Combo。
(6)List包含List。
分别令Edit1、Combo、List、Edit2 为树结点a、b、c、e,那么,自然语言抽象如下:
(1)(a)。
(2)(b)。
(3)(c)。
(4)(e(a,b,c,e))。
(5)(b(b))。
(6)(c(c))。
3.4 建立森林
根据3.3节抽象出的表达式,建立如图3所示的森林。
3.5 潜在规则挖掘
问题域中用自然语言列举了全部现有行为,再将自然语言转换为相应表达式,因此在其基础上建立的森林覆盖了现有问题域中的所有行为,再针对森林进行潜在规则的挖掘。
Figure 3 Interface actions of forests图3 界面行为森林
4 基于树拼接的潜在规则挖掘算法
树拼接是对森林中任何两棵树的根结点进行试探性拼接,符合逻辑的保留,不符合的则去掉。树拼接的潜在规则挖掘包括横向挖掘和纵向挖掘。
(1)横向挖掘。
例如,选择的树为a 和b,把b 作为a 的子结点,返回问题域,由于a 在问题域中代表的是Edit1,只接收输入值,不可能在其下出现包含子结点的情况,所以去掉这种分支。若把a作为b 的子结点,返回问题域,b代表的是Combo,可以包含它本身。若包含其他类型的界面元素,如Edit1、List、Edit2,在一个结构体下嵌套另一子结构体,子结构体有多个不同类型的属性,只能选其中之一,是符合问题域逻辑的,所以保留这个分支。图3经过横向挖掘后,得到的森林T 如图4所示。
Figure 4 Horizontal mining forest图4 横向挖掘后的森林
(2)纵向挖掘。
在森林T 中,如果一棵树t1的根结点与森林T 中任何(包括t1)一棵树t2的子结点同类型,那么用树t1取代t2的子结点,且这个过程可递归。对于取代拼接的每一种情况,回溯到问题域中验证是否符合逻辑,符合则保留,不符合则去掉。
例如,在图4d 中,根结点e与子结点e 同类型,所以可用e树取代结点e,虚线表示多层递归,返回到问题域中验证,e代表Edit2,可包含Edit1、Combo、List、Edit2,且中间过程可以一直递归下去,所以符合问题域逻辑,保留该分支,如图5 所示。
Figure 5 Vertical expansion figure 4d图5 纵向扩展图4d
按此方法,图4经纵向挖掘后最终得到的森林如图6所示。
Figure 6 Vertical excavation forest图6 纵向挖掘后的森林
最终的森林包含了问题域的现有行为和扩展行为,依此为PIM 的规则建立PIM 模型,可解析映射出尽可能多的界面行为。
5 底层驱动可视化配置应用实例
以实际项目为例,加入STM8 芯片和XC167芯片到驱动配置软件中,只需要编写描述各自相关配置项信息的PIM 模板,其中有下面四种类型的界面行为。为方便阅读,以下的XML 省略掉了结点的某些属性。编写完PIM 模板,将其导入到配置软件中,通过解析即可映射出相应的界面元素,XML结点映射界面记录,XML 中结点间的包含、并列及各种组合关系也在界面的各条记录中体现。
(1)Edit1,接收用户输入值。
如图7a所示,属性名纵列的Name1 为XML模板的EditItem 中name值的映射,属性值纵列的1为EditItem 中value值的映射。
(2)Combo,可包含用户输入型Edit1、枚举型Combo、列表型List和综合型Edit2。ComboItem的value值只能是其子结点中的某一个。
如图7b所示,属性名纵列中LIN_CHNEL映射XML模板第一级ComboItem 的name值,属性值纵列中STD_ON[]映射第一级ComboItem 的value值。而LIN_CHNEL 的子结点STD_ON[]映射第二级ListItem 的name值。子结点LIN_UART 递归映射第三级EditItem 的name值,LIN_UART 映射value值。
(3)List,可包含用户输入型Edit1、枚举型Combo、列表型List和综合型Edit2。ListItem 的子结点有selected属性,表示是否选中该结点。
Figure 7 Configuration software graphical interface screenshots图7 配置软件图形界面截图
如图7b所示,属性名纵列中ADC_ATDx[]映射XML模板第一级ListItem 的name值,而它下面包含子结点ADC_CT、ADC_HT、ADC_ATD0[]和ADC_ATD1[]为XML 模板第二级结点,前两项为第二级EditItem 的name值映射,后两项为第二级ListItem 的name值映射,而ADC_ATD0[]和ADC_ATD1[]下的子结点又分别递归映射第三级EditItem 的name和value值。
(4)Edit2,EditArray 下包含Base结点,Base只起边界限定作用,不代表具体行为。Base下的所有子结点是需要重复地组合,组合中有用户输入型Edit1、枚举型Combo、列表型List和综合型Edit2。重复的次数由用户输入值控制。
如图7a所示,属性名纵列中Name2映射第一级EditArray的name值,属性值纵列中四映射其value值。值4表示其下有4组并列,分别用base0~base3 标识边界,这里只用base0 一组为例,base0为第二级Base结点的name值映射,起边界作用。SpiBufferNumber[0]、SpiChannelTyp[0]、whatever[0]和SpiJobAssignment[0]为base0 下的三级结点,前两项为第三级EditItem 各项值的映射,第三项为第三级ListItem 各项值映射,第四项为第三级EditArray递归映射。Whatever[0]下的子结点Name3、Name4和Name5为第四级EditItem 递归映射的name 属性值。SpiJobAssignment[0]的值为3,说明其下子结点有三组,分别用base00~base02标识,这里以base00为例,base00为SpiJobAssignment[0]下的第五级Base递归映射,而ChannelAssignment[0]为base00下的第六级EditItem 递归映射。
图7a 和图7b 为不同芯片驱动相关模块的XML模板映射界面截图,从图中可知,该方法能完整地将含有配置信息的XML 模板映射到图形界面,且保持XML 模板中结点间的父子和兄弟关系。
6 结束语
通过对嵌入式系统底层驱动的PIM 潜在规则进行挖掘,使驱动配置软件在设计时以更全面的PIM 模型为基础。实际应用证明了在面对不同芯片时,该软件能很好地兼容,大大降低了二次开发的成本。
[1]Autosar_Specification 4.0 SW_Architecture[EB/OL].[2009-01-01].http://www.autosar.org/.
[2]Xu Xin-peng,Wang Xiang,Lu Jian-hua,et al.Based on the AUTOSAR methodology of application component configuration[J].Computer Engineering,2010,36(18):240-242.(in Chinese)
[3]Jo H C,Piao S,Jin S H,et al.Software development tool design for automotive applications[C]∥Proc of 2009ICROSSICE International Joint Conference,2009:5645-5648.
[4]Jo H C,Piao S,Cho S R,et al.RTE template structure for AUTOSAR based embedded software platform[C]∥Proc of 2008IEEE/ASME International Conference on Mechtronic and Embedded Systems and Applications,2008:233-237.
[5]AUTOSAR GbR.AUTOSAR specification of ECU configuration R3.0[EB/OL].[2008-01-01].http://www.autosar.org/.
[6]Miller J,Mukerji J.MDA guide version 1.0.1[EB/OL].[2003-01-01].http://www.omg.com/mda/.
[7]Yuan Feng.MDA dreams and reality-rescue sisyphus[J].Software World,2007(14):4.(in Chinese)
附中文参考文献:
[2]徐鑫朋,王翔,陆建华,等.基于AUTOSAR 方法论的应用组件配置[J].计算机工程,2010,36(18):240-242.
[7]袁峰.MDA 的梦想与现实——解救西西弗斯[J].软件世界,2007(14):4.