CN107656731A - 一种Matlab模型的一键编译方法 - Google Patents
一种Matlab模型的一键编译方法 Download PDFInfo
- Publication number
- CN107656731A CN107656731A CN201710935705.6A CN201710935705A CN107656731A CN 107656731 A CN107656731 A CN 107656731A CN 201710935705 A CN201710935705 A CN 201710935705A CN 107656731 A CN107656731 A CN 107656731A
- Authority
- CN
- China
- Prior art keywords
- files
- matlab
- file
- functions
- called
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/35—Creation or generation of source code model driven
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供了一种Matlab模型的一键编译方法,通过调用Matlab的API函数,将标定变量制作成Matlab文件,在脚本调用此文件实现参数的加载,调用Matlab的API函数rtwbuild检查编译模型以及actxserver函数调用其他工具完成特定的操作。本申请通过编程将上述函数连接起来实现一键完成机器码的编译以及接口文件的生成。
Description
技术领域
本发明涉及Matlab模型技术领域,特别地,涉及一种从Matlab模型转换为C代码,然后调用编译器编译为机器码,并且能够自动生成接口文件的一键编译方法。
背景技术
目前,随着智能控制的发展,汽车一些重要部件都需要增加控制器实现智能化,而目前汽车行业最先进、最流行的开发方式为用Matlab开发应用程序,然后用RTW转换为C代码,最后用编译器转化为机器码烧入机器,并且在此过程中需要生成用于标定的接口文件,又需要调用A2L文件生成工具。因此此过程涉及到多个工具,如果仅仅靠软件工程师手动操作,将会占用大量时间拖累了开发效率,并且往往不能保证各个过程的正确性而出现错误。
发明内容
本发明目的在于提供Matlab模型的一键编译方法,以解决现有Matlab开发应用程序使用起来繁琐的技术问题。
为实现上述目的,本发明提供了一种Matlab模型的一键编译方法,包括步骤:
A、新建Matlab文件,用load_system函数加载目标模型到Matlab软件中,并加载目标模型中的标定参数到Matlab的工作空间;
B、调用rtwbuild函数,利用Matlab的自动生成代码功能,将目标模型转化为C文件和H文件;
C、调用actxserver函数关联CodeWarrior编译器,调用invoke函数打开目标模型工程;
D、调用copyfile函数将生成的C文件和H文件拷贝到CodeWarrior编译器新建的工程,调用invoke函数利用其添加文件的属性加载所述C文件和H文件到CodeWarrior编译器新建的工程中;
E、调用invoke函数利用其编译文件的属性编译工程,生成机器识别文件S19和地址描述文件Map;
F、调用actxserver函数关联用于标定描述的A2L文件的生成软件,将MAP文件的地址填入空白A2L文件中;完成一键编译。
优选的,在步骤A和步骤B的中间,还包括步骤:
A1、调用rtwbuild函数,根据模型编写人员设定的诊断规则检查目标模型是否存在死逻辑、死循环、变量没有定义的问题;
若不存在上述问题,转步骤B。
优选的,在步骤F之后,还包括步骤:
G、将步骤A新建的Matlab文件与快捷键相关联。
本发明具有以下有益效果:
本发明利用Matlab文件通过编程将各个工具连接在一个文件内,只要运行该Matlab文件就能够很快且正确的完成机器码以及相关接口文件的生成,一键实现功能。因Matlab程序内提供了很多的API函数,通过调用这些函数,将标定变量制作成Matlab文件,在脚本调用此文件能够实现参数的加载,例如调用Matlab的API函数rtwbuild检查编译模型以及actxserver函数调用其他工具完成特定的操作。因此,只要通过编程将特定函数连接起来,就能够实现一键完成机器码的编译以及接口文件的生成。
有益效果体现在几个方面:
第一,提高编程效率:在实际操作中,修改Matlab的模板文件也能够实现一键编译,但Matlab的模板文件过于专业,一般软件工程师不易于修改且不敢随便修改,从而不能实现;对于接口文件的生成需要调用第三方工具更是不容易,因此采用本发明使用Matlab文件的方式更加容易实现,可节省软件工程师的时间和提高编程效率;
第二,提高调试效率:平常软件工程师需要将手动生成的C代码拷贝到编译器生成机器码和地址文件,然后用地址文件去生成接口文件,用这种方法开发软件会导致模型编译的时间比软件开发的时间还长,严重制约软件工程师的调试效率,而且操作复杂步骤繁多,难免犯错造成新的问题。
除了上面所描述的目的、特征和优点之外,本发明还有其它的目的、特征和优点。下面将参照图,对本发明作进一步详细的说明。
附图说明
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1本发明优选实施例的流程示意图。
具体实施方式
以下结合附图对本发明的实施例进行详细说明,但是本发明可以根据权利要求限定和覆盖的多种不同方式实施。
参见图1,以2挡自动变速器控制模型(名为2AMT)的机器码生成并产生标定接口文件的过程为例进行本申请流程的说明。
1、建立一个M文件,并且命名为Build,打开Build文件,并开始编程;
2、用load_system函数加载2挡自动变速器控制模型到Matlab软件中;
3、加载模型中的标定参数到Matlab中的工作空间;
4、检查2挡自动变速器控制模型,调用rtwbuild函数,根据模型编写人员设定的诊断规则检查模型是否存在死逻辑、死循环、是否变量没有定义等问题;
5、模型检查通过后调用rtwbuild函数,利用Matlab的自动生成代码功能,将2挡自动变速器控制模型转化为C文件(需要实现的功能函数实体文件)和H文件(需要实现的功能函数声明文件),C文件中包含了所有2挡自动变速器控制模型要实现的功能,H文件包含2挡自动变速器控制模型与外交互信号所有的接口;
6、调用actxserver函数关联CodeWarrior编译器,调用invoke函数打开2挡自动变速器控制模型工程;
7、调用copyfile函数将生成的C文件和H文件拷贝到CodeWarrior编译器新建的工程,调用invoke函数利用其添加文件的属性加载所述C文件和H文件到新建的工程中;
8、调用invoke函数利用其编译文件的属性编译工程,生成机器识别文件S19和地址描述文件Map;
9、调用actxserver函数关联标定描述文件A2L生成软件(如vector),将MAP文件的地址填入空白A2L文件(按照ASAP2标准描述芯片内部地址的接口文件)中;
10、至此整个工具已经完成,将此M文件与快捷键连接,如ctrl+Y,就可以运行这个M文件,自动完成机器码识别文件的生成和接口文件A2L文件的生成。
而对比实施例的操作过程如下:
1、人工检查MATLAB模型的正确性,例如重复定义等问题;
2、手动点击MATLAB界面的编译按钮;
3、手动新建一个代码编译工程,并将MATLAB编译文件夹中的C文件和H文件手动拷贝到新建的代码编译工程文件夹中;
4、手动将C文件和H文件加载到新建的代码编译工程中,并编译工程产生机器码和地址文件;
5、编译器检查是否有语法错误,生成代码接口是否正常;若失败,检查参数和变量是否定,变量是否重复定义,返回第二步;
6、编译器检查成功后,手动打开A2L编辑文件,手动加入编译器产生的地址文件,生成A2L文件;
7、成功后,更改策略,返回第一步,重复以上流程。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (3)
1.一种Matlab模型的一键编译方法,其特征在于,包括步骤:
A、新建Matlab文件,用load_system函数加载目标模型到Matlab软件中,并加载目标模型中的标定参数到Matlab的工作空间;
B、调用rtwbuild函数,利用Matlab的自动生成代码功能,将目标模型转化为C文件和H文件;
C、调用actxserver函数关联CodeWarrior编译器,调用invoke函数打开目标模型工程;
D、调用copyfile函数将生成的C文件和H文件拷贝到CodeWarrior编译器新建的工程,调用invoke函数利用其添加文件的属性加载所述C文件和H文件到CodeWarrior编译器新建的工程中;
E、调用invoke函数利用其编译文件的属性编译工程,生成机器识别文件S19和地址描述文件Map;
F、调用actxserver函数关联用于标定描述的A2L文件的生成软件,将MAP文件的地址填入空白A2L文件中;完成一键编译。
2.根据权利要求1所述的一键编译方法,其特征在于,在步骤A和步骤B的中间,还包括步骤:
A1、调用rtwbuild函数,根据模型编写人员设定的诊断规则检查目标模型是否存在死逻辑、死循环、变量没有定义的问题;
若不存在上述问题,转步骤B。
3.根据权利要求2所述的一键编译方法,其特征在于,在步骤F之后,还包括步骤:
G、将步骤A新建的Matlab文件与快捷键相关联。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710935705.6A CN107656731A (zh) | 2017-10-10 | 2017-10-10 | 一种Matlab模型的一键编译方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710935705.6A CN107656731A (zh) | 2017-10-10 | 2017-10-10 | 一种Matlab模型的一键编译方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107656731A true CN107656731A (zh) | 2018-02-02 |
Family
ID=61117525
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710935705.6A Pending CN107656731A (zh) | 2017-10-10 | 2017-10-10 | 一种Matlab模型的一键编译方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107656731A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112596735A (zh) * | 2020-12-18 | 2021-04-02 | 西安法士特汽车传动有限公司 | 一种加密模型的代码生成及集成编译方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103365638A (zh) * | 2012-03-29 | 2013-10-23 | 北京九州华海科技有限公司 | 基于ECUCoder的单片机开发系统及方法 |
CN104573193A (zh) * | 2014-12-18 | 2015-04-29 | 北京控制工程研究所 | 一种航天器gnc系统快速设计方法 |
CN106773784A (zh) * | 2016-12-26 | 2017-05-31 | 中国航空工业集团公司西安飞机设计研究所 | 一种可配置余度等级的控制律验证平台及方法 |
US9690888B2 (en) * | 2015-04-20 | 2017-06-27 | Nxp Usa, Inc. | Method and apparatus for system design verification |
-
2017
- 2017-10-10 CN CN201710935705.6A patent/CN107656731A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103365638A (zh) * | 2012-03-29 | 2013-10-23 | 北京九州华海科技有限公司 | 基于ECUCoder的单片机开发系统及方法 |
CN104573193A (zh) * | 2014-12-18 | 2015-04-29 | 北京控制工程研究所 | 一种航天器gnc系统快速设计方法 |
US9690888B2 (en) * | 2015-04-20 | 2017-06-27 | Nxp Usa, Inc. | Method and apparatus for system design verification |
CN106773784A (zh) * | 2016-12-26 | 2017-05-31 | 中国航空工业集团公司西安飞机设计研究所 | 一种可配置余度等级的控制律验证平台及方法 |
Non-Patent Citations (1)
Title |
---|
张霞萍,徐晓辉主编: "《MATLAB 8.X程序设计及典型应用》", 31 July 2014 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112596735A (zh) * | 2020-12-18 | 2021-04-02 | 西安法士特汽车传动有限公司 | 一种加密模型的代码生成及集成编译方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Aßmann et al. | Invasive software composition | |
von Oheimb | Hoare logic for Java in Isabelle/HOL | |
Meyer et al. | A systematic approach to transform OMT diagrams to a B specification | |
Clark et al. | Super-languages: Developing languages and applications with XMF | |
CN111309292B (zh) | 一种基于MATLAB/Simulink的全模型可执行程序构建方法 | |
CN109002290A (zh) | 一体化ecu嵌入式目标代码自动生成器及自动生成方法 | |
CN106371813A (zh) | 一种基于Simulink的电动汽车电机控制器软件生成方法 | |
CN105608258A (zh) | 一种基于模型的系统设计及信息流可视化仿真系统及方法 | |
CN109783195A (zh) | 一种基于容器的智能合约实时调试方法 | |
WO2022188780A1 (zh) | 视觉软件开发系统、方法、装置及计算机存储介质 | |
CN109739740A (zh) | 一种aadl模型组合形式化验证方法 | |
CN110196720A (zh) | 一种Simulink生成动态链接库的优化方法 | |
CN101458633B (zh) | 通过脚本程序访问宿主程序的方法及其系统和装置 | |
CN107656731A (zh) | 一种Matlab模型的一键编译方法 | |
CN101303646B (zh) | 基于可执行元语言的电信领域建模方法 | |
Křikava et al. | SIGMA: Scala internal domain-specific languages for model manipulations | |
KR20210039714A (ko) | 테스트 환경 구축 방법 및 장치 | |
Lilis et al. | An integrated implementation framework for compile‐time metaprogramming | |
CN115098076A (zh) | 一种用于Android系统的代码生成方法 | |
Matthews et al. | An operational semantics for scheme1 | |
CN115391173A (zh) | 从Simulink-StateFlow模型到NuSMV模型的转换方法 | |
Peterson et al. | P4Cub: A Little Language for Big Routers | |
Baresi et al. | A toolbox for automating visual software engineering | |
CN107657038B (zh) | 一种数据库快速读取方法 | |
CN111124485B (zh) | 一种基于中间语言的形式化规约语言简化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20191021 Address after: 412000 Ming day road, Tianyuan District, Zhuzhou, Hunan Province, No. 10 Applicant after: Zhuzhou Gearings Co., Ltd. Address before: 412000, Zhuzhou, Hunan province Tianyuan District Pearl River North Road chestnut rain Industrial Park Applicant before: Zhuzhou Accurate Drive Train Co., Ltd. |
|
TA01 | Transfer of patent application right | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180202 |
|
RJ01 | Rejection of invention patent application after publication |