一种基于模型的计算机软件开发方法与流程

文档序号:12915775阅读:594来源:国知局
一种基于模型的计算机软件开发方法与流程

本发明涉及软件开发技术领域,具体的涉及一种基于模型的计算机软件开发方法。



背景技术:

随着现今社会的进步和发展,嵌入式系统开发经逐步面临着市场需求多样性与开发实现快速性之间的矛盾。然而传统的嵌入式系统开发模式,从需求分析、设计、实现到测试的顺序开发过程中由于开发环节较多、中间文档较多,常导致各开发环节之间的衔接存在很大的不确定性和潜在的遗漏危机,一旦在最终实现和测试阶段出现了明显的错误或是需求不满足的情况,则无法进行跨越阶段的重复设计,只能从头开始设计和实现,这样将无法满足市场对产品开发周期的快速性需求,使嵌入式系统开发陷入设计瓶颈。目前,依靠手工编程的设计流程已经很难胜任新的开发需求,而且通过手工编写的代码容易产生程序缺陷。查找和解决这些问题不仅要花费大量的人力和时间,有时甚至会导致软件的重新开发。特别是在对安全系数要求较高产品上,出现程序缺陷会直接关系到人身安全。因此,事先防范才是最好的解决办法。而基于模型的设计方法则能彻底改变这种情况。因此,近几年国外汽车电子行业的一些龙头企业已经用基于模型的方法逐步取代传统的产品开发方法,代码自动生成逐步取代手工编程,并且收到了良好的效果。

但是,基于模型的嵌入式软件开发方法还很不普及。一方面是人们认为基于模型的方法所需要的工具不易掌握,另一方面是自动代码生成工具目前只对少数型号的微控制器提供完整支持。因此,为除少数大公司之外的众多用户使用基于模型的开发方法带来了一定困难。



技术实现要素:

针对现有技术中存在的上述问题,提供一种基于模型的计算机软件开发方法,当需要具体实现产品或者进行集成测试时,只要通过自动代码生成就可以迅速地完成代码生成、硬件实时仿真与测试,避免了大量的手写代码工作,这种软件开发方法主要解决了传统设计手段中手写规范文档、测试工作在后期阶段的主要问题。

为实现上述目的,达到上述效果,本发明是通过以下技术方案实现:

一种基于模型的计算机软件开发方法,其特征在于,包括以下步骤:

1)根据目标需求建立可执行模型;

2)对模型进行仿真测试;

3)根据模型自动生成代码;

4)将代码固化于硬件电路中;

5)对产品进行测试和验证。

优选的,所述步骤1)根据目标需求建立可执行的模型,其特征在于包括:a建模工具的选择;b信号输入部分建模;c控制算法建模;d信号输出部分建模。

优选的,所述步骤2)对模型进行仿真测试,其特征在于包括:基于时间或基于事件的仿真分析方法来验证模型准确性和完整性;

优选的,所述步骤3)根据模型自动生成代码,其特征在于包括:当模型仿真测试正确后,根据系统模型的功能结构自动生成代码或根据系统底层实现而预先编写的代码框架生成。

优选的,所述步骤5)对产品进行测试和验证,其特征在于:代码整合完成就可以将手工装配形成嵌入式系统软件代码编译下载到目标板对控制逻辑进行验证,验证的问题可直接对模型进行修改。

本发明的有益效果是:基于模型的计算机软件开发方法,当需要具体实现产品或者进行集成测试时,只要通过自动代码生成就可以迅速地完成代码生成、硬件实时仿真与测试,避免了大量的手写代码工作,这种软件开发方法主要解决了传统设计手段中手写规范文档、测试工作在后期阶段的主要问题。

附图说明

图1基于模型的计算机软件开发方法框图;

图2本发明实施例中ecu软件系统集成方框图;

具体实施方式

结合以下具体实施例和附图,对本发明作进一步的详细说明,本发明的保护内容不局限于以下实施例。在不背离发明构思的精神和范围下,本领域技术人员能够想到的变化和优点都被包括在本发明中,并且以所附的权利要求书为保护范围。实施本发明的过程、条件、试剂、实验方法等,除以下专门提及的内容之外,均为本领域的普遍知识和公知常识,本发明没有特别限制内容。

一种基于模型的计算机软件开发方法,如图1所示:其特征在于,包括以下步骤:

1)根据目标需求建立可执行模型;

2)对模型进行仿真测试;

3)根据模型自动生成代码;

4)将代码固化于硬件电路中;

5)对产品进行测试和验证。

其中,步骤1)根据目标需求建立可执行的模型,其特征在于包括:a建模工具的选择;b信号输入部分建模;c控制算法建模;d信号输出部分建模。

其中,步骤2)对模型进行仿真测试,其特征在于包括:基于时间或基于事件的仿真分析方法来验证模型准确性和完整性;

其中,步骤3)根据模型自动生成代码,其特征在于包括:当模型仿真测试正确后,根据系统模型的功能结构自动生成代码或根据系统底层实现而预先编写的代码框架生成。

其中,步骤5)对产品进行测试和验证,其特征在于:代码整合完成就可以将手工装配形成嵌入式系统软件代码编译下载到目标板对控制逻辑进行验证,验证的问题可直接对模型进行修改。

实施例

一种基于模型的计算机软件开发方法,如图1所示:其特征在于,包括:

1)根据目标需求建立可执行模型;

在需求分析阶段,需要根据产品的需求定义所需要完成的工作,以及工作结果需要满足的某种特性要求,并且分析出为了满足这些需求分别需要完成哪些工作,工作的步骤以及不同工作阶段的产出与验收手段等。在分析了客户需求后就可以开始在simulink环境下建立模型,模型的建立框架主要分为三大部分:信号输入部分,逻辑控制部分和信号输出部分;

建模包括:

a建模工具的选择

在进行基于模型的设计过程中,建模是一个重要环节。因为只有正确的模型才能够成为正确的设计规范,才能得到正确的代码。建模环节需要选择合适的建模工具。目前在世界范围内,系统的建模仿真都广泛采用mathworks公司开发的simulink平台。simulink平台提供丰富的功能模块,可以快捷地创建系统的模型。

b信号输入部分建模

信号输入部分的建模是通过simulink平台上sorrces模块库中的各个模块来建立的。常用来搭建模型的有constant模块、pulsegenerator模块、signalbuilder模块、step模块等。

c控制算法建模

d信号输出部分建模

信号输出部分的建模是通过simulink平台上sinks模块库中的各个模块来建立的。常用来搭建模型的有display模块、scope模块、toworkspace模块等。

2)对模型进行仿真测试;

采用基于模型的设计方法,在软件的开发中的每一个流程都可以进行测试。模型仿真测试是控制系统设计过程的组成部分,根据目标需求建立系统模型后,为了保证模型可靠有效,还必须使用基于时间或基于事件的仿真分析方法,来验证模型的准确性和完整性。这样在系统开发的初级阶段就可以发现控制逻辑的设计缺陷,最大程度的减少带到实验现场的出错率。这也为后序的自动代码生成的质量提供了可靠依据。

3)根据模型自动生成代码;

当模型仿真测试正确后,在基于模型的嵌入式系统开发方法中,自动代码生成是不可缺少的环节。只有从控制模型自动生成ecu中运行的控制代码,才有可能实现开发过程中快速迭代。自动代码生成,指生成程序的程序,更详细的是指通过读取工程中的文本或模型,按照指定的设计模式,遵照一定的领域规则,生成规范的计算机能理解的代码的过程。

对于一个完整的模型,其自动生成的代码文件会包含两类,一类是根据系统模型的功能结构自动生成的,另一类是用户根据系统底层实现而预先编写的代码框架生成的。前一类文件根据系统功能和配置的不同而定,后一类文件的结构相对固定,仅根据系统提供的接口不同而定。

rtwtypes.h是代码自动生成文件中重要的组成部分,这个文件包含了rtwec工具代码生成中所需要的数据、结构及宏的定义。下图是rtwtypes.h文件的部分代码,在下一阶段代码整合中都必须包含rtwtypes.h。

typedefsignedcharint8_t;

typedefunsignedcharuint8_t;

typedefshortint16_t;

typedefunsignedshortuint16_t;

typedefintint32_t;

typedefunsignedintuint32_t;

typedeffloatreal32_t;

typedefdoublereal64_t;

在模型中定义的输入输出变量,是在modelname.h中体现的。

/*externalinputs(rootinportsignalswithautostorage)*/

typedefstruct{

uint8_tinmode;/*'<root>/inmode'*/

uint32_ttimer_config;/*'<root>/timer_config'*/

}externalinputs_abc;

/*externaloutputs(rootoutportsfedbysignalswithautostorage)*/

typedefstruct{

boolean_toutgreen;/*'<root>/outgreen'*/

boolean_toutyellow;/*'<root>/outyellow'*/

boolean_toutred;/*'<root>/outred'*/

}externaloutputs_abc;

/*externalinputs(rootinportsignalswithautostorage)*/

externexternalinputs_abcabc_u;

/*externaloutputs(rootoutportsfedbysignalswithautostorage)*/

externexternaloutputs_abcabc_y;

代码自动生成的modelname.c包含三个函数:

(1)model_initialize:执行所有模型初始化工作,在开始执行模型前应执行一次。

(2)model_step:包块了模型中所有模块的代码。用于实现模型一个步长时间内所有的计算。

model_terminate:作为系统终止的一部分被调用。若用户的应用程序是以无限时间运行的,就不需要该函数。

其中代码使用了在modelname.h中定义的输入,输出变量,

/*externalinputs*/

abc_u.inmode=0;

abc_u.timer_config=0;

/*externaloutputs*/

abc_y.outgreen=false;

abc_y.outyellow=false;

abc_y.outred=false;

在代码生成的过程中,嵌入式代码生成器会同时产生代码生成报告(html格式)。其中包含了所生成代码模块的详尽信息,这个报告保证了代码相对框图的可追踪性,以便进行检查和验证。

4)将代码固化于硬件电路中

代码整合:虽然借助代码生成工具rtwec可以非常容易地生成c代码(这些代码可以适用于所有提供c语言编译器的单片机),但距离实用化的自动代码生成还需要解决如下问题。由于matlab只完整支持少数型号的微控制器而在实际应用中由于客观需要,如性能、成本等的不同要求,使得微控制器的品种繁多,不同型号微控制器在功能、性能、封装等方面很少兼容。这就使得除少数大公司之外的众多用户难以使用自动代码生成的开发方法。针对这一问题,可以通过代码整合来实现自动生成的代码与成百上千种具体ecu硬件平台的集成。在ecu软件系统中,rtwec自动生成的控制算法代码是其中的一部分,还有一部分代码用rtwec实现有一定难度,所以采用手工编写的方法。手工编写的代码直接操作硬件,以应用程序接口的形式提供给算法程序。在代码整合前,根据所建模型的输入、输出端口手工编写相应的接口初始化程序。例如使用按键作为信号输入,就需要编写相应端口作为输入的初始化程序和按键中断的初始化程序。由于嵌入式软件一般以固定的取样率运行,使得输入、输出器件工作在相同的时间点。所以整个软件系统集成的核心框架为一个定时器循环程序,不断迭代执行着自动生成的控制逻辑代码。为了保证程序在最终检测中时序的正确性,这个定时器的时钟周期与模型仿真时的固定步长必须一致。离散时间控制系统在等间隔时间点对输入进行取样,并更新输出。每次更新后,输出信号通常保持不变,直到下一次更新。输入取样点之间(以及输出更新点之间)的时间称为取样周期ts,其值越小,离散时间控制器的行为越接近于导出它的连续时间系统。到极限时,取样周期的降低可能超出i/o硬件性能要求,增加控制器成本和功耗。采样周期又必须足够长,使得在每个离散时间间隔内有足够时间执行控制器算法和i/o操作。rtwec工具箱自动生成的代码符合嵌入式系统的数据结构,自动生成的代码文件modelname.h中就定义了两个针对输入输出的全局结构体。所以用赋值语句就可以实现输入、输出的变量名与所用目标单片机的端口结合,如图2所示:代码整合的流程:

a主程序的结构

b在主函数中调用自动生成的代码

c在主函数中调用硬件驱动程序

代码整合完成就可以将手工装配形成嵌入式系统软件代码编译下载到目标板对控制逻辑进行验证。

5)对产品进行测试和验证

代码整合完成就可以将手工装配形成嵌入式系统软件代码编译下载到目标板对控制逻辑进行验证,验证的问题可直接对模型进行修改,并重复在代码自动生成之前进行全模块仿真,使用rtwembeddedcoder进行代码自动生成,用一个标准的软件体系结构进行代码整合的过程。

基于模型的计算机软件开发方法,当需要具体实现产品或者进行集成测试时,只要通过自动代码生成就可以迅速地完成代码生成、硬件实时仿真与测试,避免了大量的手写代码工作,这种软件开发方法主要解决了传统设计手段中手写规范文档、测试工作在后期阶段的主要问题。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。

对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1