CN114115850A - 一种代码生成方法及装置 - Google Patents
一种代码生成方法及装置 Download PDFInfo
- Publication number
- CN114115850A CN114115850A CN202111414238.5A CN202111414238A CN114115850A CN 114115850 A CN114115850 A CN 114115850A CN 202111414238 A CN202111414238 A CN 202111414238A CN 114115850 A CN114115850 A CN 114115850A
- Authority
- CN
- China
- Prior art keywords
- custom
- algorithm module
- module
- file
- system function
- 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
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/34—Graphical or visual programming
-
- 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
- G06F8/44—Encoding
- G06F8/447—Target code generation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种代码生成方法及装置,通过预先利用嵌入式平台提供的优化专用算法函数封装为自定义的Simulink算法模块,优化了由Simulink自带的系统函数生成的算法模块,在使用自定义算法模块对应的自定义TLC文件生成代码后,可得到代码量较小的C代码文件,大大提高了C代码文件在嵌入式平台的运行速度,降低了对嵌入式平台CPU的占用时间,满足任务的实时性要求。
Description
技术领域
本发明涉及计算机技术领域,更具体的,涉及一种代码生成方法及装置。
背景技术
现有的基于Simulink的代码自动生成方法是采用Simulink自带的系统TLC(Target Language Compiler,目标语言编译器)文件来生成代码。用户基于Simulink搭建好模型后,在Simulink的参数配置界面选择Code Generation选项,选择适当的TLC文件,选择生成代码的语言为C语言,即可进行代码的自动生成。
在用Simulink自带的系统函数构建模型时,其生成的是通用的C代码,这些C代码是通用的,可以被编译为可执行程序运行在绝大多数嵌入式平台上。但是,对于一些复杂的算法模型,模型生成的代码量很大,运行在嵌入式平台上不仅会占用较多的嵌入式平台资源,而且还会长时间占用嵌入式平台CPU,导致其无法满足任务的实时性要求,严重者甚至会导致程序运行过程中直接崩溃,产生灾难性的后果。
发明内容
有鉴于此,本发明提供了一种代码生成方法及装置,模型生成的C代码量较小,大大提高了在嵌入式平台的运行速度,满足任务的实时性要求。
第一方面,本发明实施例提供了一种代码生成方法,应用于部署有Simulink模型的嵌入式平台,所述方法包括:
获得利用TLC语言编写的自定义算法模块对应的自定义TLC文件,其中,在所述自定义TLC文件中定义了配置参数,所述自定义算法模块为预先对嵌入式平台提供的优化专用算法函数进行封装后得到;
根据所述自定义TLC文件的定义,从生成代码的中间文件中获取所述自定义算法模块的配置参数,并将其传递给所述自定义算法模块与所述优化专用算法函数之间的接口文件,生成嵌入式平台的C代码文件。
在一些实施例中,所述方法还包括:
对所述优化专用算法函数进行封装,得到所述自定义算法模块与所述专用算法函数之间的接口文件;
基于Simulink的系统函数模板编写所述自定义算法模块的系统函数,并将所述自定义算法模块的配置参数写入生成代码的中间文件中;
利用TLC语言编写所述自定义算法模块的所述自定义TLC文件,以支持所述自定义算法模块的系统函数生成代码。
在一些实施例中,在基于Simulink的系统函数模板编写所述自定义算法模块的系统函数之后,所述方法还包括:
将所述自定义算法模块的系统函数编译为预设格式的可执行程序,由Simulink仿真时进行调用。
在一些实施例中,在基于Simulink的系统函数模板编写所述自定义算法模块的系统函数之后,所述方法还包括:
通过对所述自定义算法模块进行封装,为所述自定义算法模块配置在可视化界面的显示外观。
在一些实施例中,所述通过对所述自定义算法模块进行封装,为所述自定义算法模块配置在可视化界面的显示外观,包括:
在Simulink界面新建Library类型的自定义模型库,将所述自定义模型库文件与所述自定义算法模块的系统函数存储在同一路径下;
在所述自定义算法模块库文件中添加系统函数模块,将所述系统函数模块的名称和参数分别设置为所述自定义算法模块的系统函数的名称和参数;
利用预设编辑器对所述系统函数模块进行编辑。
在一些实施例中,所述利用预设编辑器对所述系统函数模块进行编辑,包括:
选中所述系统函数模块,并打开所述系统函数模块对应的预设编辑器对话框;
在预设编辑器对话框中编辑所述系统函数模块的外观参数、模块参数,并进行保存,所述模块参数包括所述自定义算法模块的配置参数和仿真参数。
在一些实施例中,在通过对所述自定义算法模块进行封装,为所述自定义算法模块配置在可视化界面的显示外观之后,所述方法还包括:
将所述自定义模型库添加到Simulink的库浏览器中。
第二方面,本发明实施例提供了一种代码生成装置,应用于部署有Simulink模型的嵌入式平台,所述装置包括:
TLC文件获得单元,用于获得利用TLC语言编写的自定义算法模块对应的自定义TLC文件,其中,在所述自定义TLC文件中定义了配置参数,所述自定义算法模块为预先对嵌入式平台提供的优化专用算法函数进行封装后得到;
代码生成单元,用于根据所述自定义TLC文件的定义,从生成代码的中间文件rtw中获取所述自定义算法模块的配置参数,并将其传递给所述自定义算法模块与所述优化专用算法函数之间的接口文件,生成嵌入式平台的C代码文件。
在一些实施例中,所述装置还包括:自定义算法模块创建单元,具体用于:
对所述优化专用算法函数进行封装,得到所述自定义算法模块与所述专用算法函数之间的接口文件;
基于Simulink的系统函数模板编写所述自定义算法模块的系统函数,并将所述自定义算法模块的配置参数写入生成代码的中间文件中;
利用TLC语言编写所述自定义算法模块的所述自定义TLC文件,以支持所述自定义算法模块的系统函数生成代码。
在一些实施例中,所述装置还包括:
系统函数编译单元,用于在基于Simulink的系统函数模板编写所述自定义算法模块的系统函数之后,将所述自定义算法模块的系统函数编译为预设格式的可执行程序,由Simulink仿真时进行调用。
在一些实施例中,所述装置还包括:
自定义算法模块封装单元,用于在基于Simulink的系统函数模板编写所述自定义算法模块的系统函数之后,通过对所述自定义算法模块进行封装,为所述自定义算法模块配置在可视化界面的显示外观。
在一些实施例中,所述自定义算法模块封装单元包括:
自定义模型库创建子单元,用于在Simulink界面新建Library类型的自定义模型库,将所述自定义模型库文件与所述自定义算法模块的系统函数存储在同一路径下;
系统函数模块设置子单元,用于在所述自定义算法模块库文件中添加系统函数模块,将所述系统函数模块的名称和参数分别设置为所述自定义算法模块的系统函数的名称和参数;
系统函数模块编辑子单元,用于利用预设编辑器对所述系统函数模块进行编辑。
在一些实施例中,所述系统函数模块编辑子单元,具体用于:
选中所述系统函数模块,并打开所述系统函数模块对应的预设编辑器对话框;
在预设编辑器对话框中编辑所述系统函数模块的外观参数、模块参数,并进行保存,所述模块参数包括所述自定义算法模块的配置参数和仿真参数。
在一些实施例中,所述装置还包括:
自定义模型库添加单元,用于在通过对所述自定义算法模块进行封装,为所述自定义算法模块配置在可视化界面的显示外观之后,将所述自定义模型库添加到Simulink的库浏览器中。
第三方面,本发明实施例提供了一种电子设备,所述电子设备包括:至少一个存储器和至少一个处理器;
所述存储器存储有程序,所述处理器调用所述存储器存储的程序,所述程序用于实现第一方面中任一实现方式描述的代码生成方法。
第四方面,本发明实施例提供了一种存储介质,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令用于执行第一方面中任一实现方式描述的代码生成方法。
相对于现有技术,本发明的有益效果如下:
本发明公开的一种代码生成方法,通过预先对嵌入式平台提供的优化专用算法函数封装为自定义的Simulink算法模块,优化了由Simulink自带的系统函数生成的算法模块,在使用自定义算法模块对应的自定义TLC文件生成代码后,可得到代码量较小的C代码文件,大大提高了C代码文件在嵌入式平台的运行速度,降低了对嵌入式平台CPU的占用时间,满足任务的实时性要求。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例公开的一种代码生成方法的流程示意图;
图2为本发明实施例公开的一种代码生成方法的部分方法流程示意图;
图3为本发明实施例公开的一种代码生成方法的部分方法流程示意图;
图4为本发明实施例公开的一种代码生成装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
发明人经过研究发现:Simulink为了尽可能提高通用性和普适性,其自带的系统函数为通用函数,在用Simulink自带的系统函数构建模型时,对于较简单的模型,生成的C代码能满足实时性要求,但是对于较为复杂的算法模型,生成的C代码量较大且较为复杂,运行在嵌入式平台上不仅会占用较多的嵌入式平台资源,而且还会长时间占用嵌入式平台CPU,导致其无法满足任务的实时性要求,严重者甚至会导致程序运行过程中直接崩溃,产生灾难性的后果。
而发明人进一步研究发现:有些嵌入式平台会提供丰富的优化后的算法库函数,该函数可运行在嵌入式平台,通过利用嵌入式平台提供的优化专用算法函数封装为自定义的Simulink算法模块,能生成高性能代码,在运行代码时充分利用嵌入式平台的特性,能大大提高了C代码文件在嵌入式平台的运行效率。
在此基础上,本发明提供了一种代码生成方法及装置,应用于部署有Simulink模型的嵌入式平台。嵌入式平台根据芯片的不同,可以为DSP(Digital Signal Process,数字信号处理)平台、MCU(Micro Control Unit,微控制单元)平台等,通过预先利用嵌入式平台提供的优化专用算法函数封装为自定义的Simulink算法模块,优化了由Simulink自带的系统函数生成的算法模块,在使用自定义算法模块对应的自定义TLC文件生成代码后,可得到代码量较小的C代码文件,大大提高了C代码文件在嵌入式平台的运行速度,降低了对嵌入式平台CPU的占用时间,满足任务的实时性要求。
请参阅图1,本实施例公开的一种代码生成方法包括以下步骤:
S101:获得利用TLC语言编写的自定义算法模块对应的自定义TLC文件,其中,在自定义TLC文件中定义了配置参数,自定义算法模块为预先对嵌入式平台提供的优化专用算法函数进行封装后得到。
在搭建好自定义算法模型之后,在Simulink的参数配置界面选择CodeGeneration选项,选择ert.tlc文件作为系统目标文件,选择生成代码的语言为C语言,然后进行代码生成。
需要说明的是,自定义算法模块为预先对嵌入式平台提供的优化专用函数进行封装后得到的算法模块。自定义算法模块的目标文件为上述自定义TLC文件,自定义TLC文件利用TLC语言编写,在自定义TLC文件中定义了头文件和配置参数。
请参阅图2,本实施例提供了一种创建自定义算法模块的方法,具体包括以下步骤:
S201:对优化专用算法函数进行封装,得到自定义算法模块与专用算法函数之间的接口文件。
由于嵌入式平台提供的优化专用算法函数可能具有很多参数,用户可能不会用到所有参数,很可能只关心其中几个参数,为了能够更好的适配用户的需求,需要对嵌入式平台提供的优化专用算法函数进行封装。
自定义算法模块为在Simulink中封装的嵌入式平台提供的优化专用算法函数后生成的算法模型,该自定义算法模块生成的函数对应的就是算法接口函数,算法接口函数的声明在.h文件中,算法接口函数的实现在.c文件中,.h文件和.c文件统称为自定义算法模块与专用算法函数之间的接口文件。
也就是说,算法接口函数内部实现了对特定嵌入式平台提供的优化专用函数的封装,该算法接口函数就是自定义算法模块与底层优化专用函数之间的中间层接口函数,对应的.h和.c文件为中间层接口文件。生成自定义算法模块与专用算法函数之间的接口文件的过程即为对优化专用算法函数进行封装的过程。
特定嵌入式平台提供的优化专用算法函数,如Ti提供的图像处理的内联函数,一般由芯片厂商配套提供,其充分利用了嵌入式平台(如DSP平台)的特点,相较于普通的C代码算法函数,可大大提高算法在DSP平台的运行效率。
S202:基于Simulink的系统函数模板编写自定义算法模块的系统函数,并将自定义算法模块的配置参数写入生成代码的中间文件中。
自定义算法模块的系统函数,即S函数,是预先基于Simulink的S(SystemFunction)函数,按照自定义算法模块的特点编写的。具体的,Simulink提供了S函数模板文件,基于该模板文件进行修改可编写自定义算法模块的系统函数(S函数)。
其中,S函数是采用一种程序设计语言描述的一个功能模块。S函数文件中定义了很多接口,具体包括:mdlOutputs、mdlRTW等函数。mdlOutputs函数为模型仿真时的输出函数,该函数定义了模型仿真时的输出行为,用于仿真。mdlRTW函数用于将自定义算法模块的配置参数写入到生成代码的中间文件rtw中,用于后续的代码生成。
在基于Simulink的系统函数模板编写自定义算法模块的系统函数(S函数)之后,将自定义算法模块的配置参数写入生成代码的中间文件rtw中,以便使自定义算法模块的TLC文件,即自定义TLC文件能够从中间文件rtw中读取到自定义算法模块的配置参数。
自定义算法模块的配置参数需要在仿真前配置好,包括自定义算法模块相关的参数和仿真时的采样时间(Sample time)等参数。
S203:利用TLC语言编写自定义算法模块的自定义TLC文件,以支持自定义算法模块的系统函数生成代码。
使用TLC语言编写自定义算法模块的目标文件,即自定义TLC文件,以支持自定义算法模块的系统函数(S函数)生成代码。编写自定义算法模块的自定义TLC文件的过程可以为人工完成,也可以为计算机在程序驱动下完成,在此不做具体限定。
S102:根据自定义TLC文件的定义,从生成代码的中间文件中获取自定义算法模块的配置参数,并将其传递给自定义算法模块与优化专用算法函数之间的接口文件,生成嵌入式平台的C代码文件。
由于在TLC文件中定义了头文件和配置参数,在生成代码的时,根据自定义TLC文件的定义,从生成代码的中间文件rtw中获取自定义算法模块的配置参数,并传递给自定义算法模块与优化专用算法函数之间的接口文件中定义的算法模块接口函数,生成代码时,就将自定义算法模块的相应参数传递给了算法模块接口函数。
可见,本实施例公开的一种代码生成方法,通过预先对嵌入式平台提供的优化专用算法函数封装为自定义的Simulink算法模块,优化了由Simulink自带的系统函数生成的算法模块,在使用自定义算法模块对应的自定义TLC文件生成代码后,可得到代码量较小的C代码文件。
需要说明的是,由于自定义算法模块是基于嵌入式平台提供的优化专用算法函数得到的,利用自定义算法模块进行仿真时,自定义算法模块对应的函数运行在嵌入式平台,充分利用嵌入式平台的特性,大大提高了C代码文件在嵌入式平台的运行速度,降低了对嵌入式平台CPU的占用时间,满足任务的实时性要求。
为了实现利用自定义算法模块进行仿真,在基于Simulink的系统函数模板编写自定义算法模块的系统函数之后,需要通过对自定义算法模块进行封装,为自定义算法模块配置在可视化界面的显示外观,并将添加有自定义算法模块的系统函数模块的自定义模型库添加到Simulink的库浏览器中,用户就可以在Simulink模型中像使用其他算法模块一样使用自定义算法模块了。
为了实现上述发明目的,在上述实施例公开的一种代码生成方法的基础上,请参阅图3,公开了一种代码生成方法的又一个实施例的流程,具体包括以下步骤:
S301:基于Simulink的系统函数模板编写自定义算法模块的系统函数。
S302:将自定义算法模块的系统函数编译为预设格式的可执行程序,由Simulink仿真时进行调用。
具体的,可以在编译器中将自定义算法模块的系统函数编译为预设格式的可执行程序,该预设格式为可以运行在嵌入式平台的文件格式,以编译器为MATLAB为例,在MATLAB中使用mex指令,将自定义算法模块的S函数编译为.mexw64格式的可执行程序,由Simulink仿真时进行调用。
S303:通过对自定义算法模块进行封装,为自定义算法模块配置在可视化界面的显示外观。
在完成自定义算法模块的系统函数(S函数)编写后,可通过封装为该自定义算法模块设计显示外观,并为自定义算法模块的S函数所需要的参数添加对应的控件,共同构成自定义算法模块的参数对话框GUI,以实现良好的人机交互。
可选的,可以采用MaskEditor的方式对自定义算法模块进行封装,当然也可以采用其他编辑器对自定义算法模块进行封装,在此不做具体限定。
首先在Simulink界面新建一个Library类型的自定义模型库,用以存放自定义算法模块,并将自定义算法模块库文件保存至自定义算法模块的系统函数(S函数)所在的路径。
然后在自定义算法模块库文件中,添加一个系统函数模块(S-Function模块),将系统函数模块的名称和参数分别设置为自定义算法模块的系统函数的名称和参数。
最后利用预设编辑器对系统函数模块进行编辑,如可以利用Mask Editor对系统函数模块进行编辑,具体的,选中该系统函数模块,并打开系统函数模块对应的预设编辑器对话框进行编辑,在预设编辑器对话框中编辑系统函数模块的外观参数、模块参数,并进行保存,则完成了对自定义算法模块的封装,模块参数包括自定义算法模块的配置参数和仿真参数。
此时自定义算法模块同Simulink自带的算法模块类似,具有良好的GUI界面可进行参数的设置。
S304:将自定义模型库添加到Simulink的库浏览器中。
由于在S303中已经创建了一个自定义模型库,可在该库中添加一个或多个自定义算法模块的系统函数模块,添加完成后,将自定义模型库添加至Simulink的库浏览器中,然后就可以在Simulink模型中像使用其它模块一样使用自定义的算法模块。模型生成代码时,对应的算法模块就能够生成高性能的嵌入式代码。
基于上述实施例公开的一种代码生成方法,本实施例对应公开了一种代码生成装置,应用于部署有Simulink模型的嵌入式平台,请参阅图4,所述装置包括:
TLC文件获得单元401,用于获得利用TLC语言编写的自定义算法模块对应的自定义TLC文件,其中,在所述自定义TLC文件中定义了配置参数,所述自定义算法模块为预先对嵌入式平台提供的优化专用算法函数进行封装后得到;
代码生成单元402,用于根据所述自定义TLC文件的定义,从生成代码的中间文件rtw中获取所述自定义算法模块的配置参数,并将其传递给所述自定义算法模块与所述优化专用算法函数之间的接口文件,生成嵌入式平台的C代码文件。
在一些实施例中,所述装置还包括:自定义算法模块创建单元,具体用于:
对所述优化专用算法函数进行封装,得到所述自定义算法模块与所述专用算法函数之间的接口文件;
基于Simulink的系统函数模板编写所述自定义算法模块的系统函数,并将所述自定义算法模块的配置参数写入生成代码的中间文件中;
利用TLC语言编写所述自定义算法模块的所述自定义TLC文件,以支持所述自定义算法模块的系统函数生成代码。
在一些实施例中,所述装置还包括:
系统函数编译单元,用于在基于Simulink的系统函数模板编写所述自定义算法模块的系统函数之后,将所述自定义算法模块的系统函数编译为预设格式的可执行程序,由Simulink仿真时进行调用。
在一些实施例中,所述装置还包括:
自定义算法模块封装单元,用于在基于Simulink的系统函数模板编写所述自定义算法模块的系统函数之后,通过对所述自定义算法模块进行封装,为所述自定义算法模块配置在可视化界面的显示外观。
在一些实施例中,所述自定义算法模块封装单元包括:
自定义模型库创建子单元,用于在Simulink界面新建Library类型的自定义模型库,将所述自定义模型库文件与所述自定义算法模块的系统函数存储在同一路径下;
系统函数模块设置子单元,用于在所述自定义算法模块库文件中添加系统函数模块,将所述系统函数模块的名称和参数分别设置为所述自定义算法模块的系统函数的名称和参数;
系统函数模块编辑子单元,用于利用预设编辑器对所述系统函数模块进行编辑。
在一些实施例中,所述系统函数模块编辑子单元,具体用于:
选中所述系统函数模块,并打开所述系统函数模块对应的预设编辑器对话框;
在预设编辑器对话框中编辑所述系统函数模块的外观参数、模块参数,并进行保存,所述模块参数包括所述自定义算法模块的配置参数和仿真参数。
在一些实施例中,所述装置还包括:
自定义模型库添加单元,用于在通过对所述自定义算法模块进行封装,为所述自定义算法模块配置在可视化界面的显示外观之后,将所述自定义模型库添加到Simulink的库浏览器中。
本实施例公开的一种代码生成装置,通过预先对嵌入式平台提供的优化专用算法函数封装为自定义的Simulink算法模块,优化了由Simulink自带的系统函数生成的算法模块,在使用自定义算法模块对应的自定义TLC文件生成代码后,可得到代码量较小的C代码文件,大大提高了C代码文件在嵌入式平台的运行速度,降低了对嵌入式平台CPU的占用时间,满足任务的实时性要求。
本实施例还公开了一种电子设备,所述电子设备包括:至少一个存储器和至少一个处理器;
所述存储器存储有程序,所述处理器调用所述存储器存储的程序,所述程序用于实现如下代码生成方法:
获得利用TLC语言编写的自定义算法模块对应的自定义TLC文件,其中,在所述自定义TLC文件中定义了配置参数,所述自定义算法模块为预先对嵌入式平台提供的优化专用算法函数进行封装后得到;
根据所述自定义TLC文件的定义,从生成代码的中间文件中获取所述自定义算法模块的配置参数,并将其传递给所述自定义算法模块与所述优化专用算法函数之间的接口文件,生成嵌入式平台的C代码文件。
进一步,所述方法还包括:
对所述优化专用算法函数进行封装,得到所述自定义算法模块与所述专用算法函数之间的接口文件;
基于Simulink的系统函数模板编写所述自定义算法模块的系统函数,并将所述自定义算法模块的配置参数写入生成代码的中间文件中;
利用TLC语言编写所述自定义算法模块的所述自定义TLC文件,以支持所述自定义算法模块的系统函数生成代码。
进一步,在基于Simulink的系统函数模板编写所述自定义算法模块的系统函数之后,所述方法还包括:
将所述自定义算法模块的系统函数编译为预设格式的可执行程序,由Simulink仿真时进行调用。
进一步,在基于Simulink的系统函数模板编写所述自定义算法模块的系统函数之后,所述方法还包括:
通过对所述自定义算法模块进行封装,为所述自定义算法模块配置在可视化界面的显示外观。
进一步,所述通过对所述自定义算法模块进行封装,为所述自定义算法模块配置在可视化界面的显示外观,包括:
在Simulink界面新建Library类型的自定义模型库,将所述自定义模型库文件与所述自定义算法模块的系统函数存储在同一路径下;
在所述自定义算法模块库文件中添加系统函数模块,将所述系统函数模块的名称和参数分别设置为所述自定义算法模块的系统函数的名称和参数;
利用预设编辑器对所述系统函数模块进行编辑。
进一步,所述利用预设编辑器对所述系统函数模块进行编辑,包括:
选中所述系统函数模块,并打开所述系统函数模块对应的预设编辑器对话框;
在预设编辑器对话框中编辑所述系统函数模块的外观参数、模块参数,并进行保存,所述模块参数包括所述自定义算法模块的配置参数和仿真参数。
进一步,在通过对所述自定义算法模块进行封装,为所述自定义算法模块配置在可视化界面的显示外观之后,所述方法还包括:
将所述自定义模型库添加到Simulink的库浏览器中。
本实施例还公开了一种存储介质,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令用于执行如下代码生成方法:
获得利用TLC语言编写的自定义算法模块对应的自定义TLC文件,其中,在所述自定义TLC文件中定义了配置参数,所述自定义算法模块为预先对嵌入式平台提供的优化专用算法函数进行封装后得到;
根据所述自定义TLC文件的定义,从生成代码的中间文件中获取所述自定义算法模块的配置参数,并将其传递给所述自定义算法模块与所述优化专用算法函数之间的接口文件,生成嵌入式平台的C代码文件。
进一步,所述方法还包括:
对所述优化专用算法函数进行封装,得到所述自定义算法模块与所述专用算法函数之间的接口文件;
基于Simulink的系统函数模板编写所述自定义算法模块的系统函数,并将所述自定义算法模块的配置参数写入生成代码的中间文件中;
利用TLC语言编写所述自定义算法模块的所述自定义TLC文件,以支持所述自定义算法模块的系统函数生成代码。
进一步,在基于Simulink的系统函数模板编写所述自定义算法模块的系统函数之后,所述方法还包括:
将所述自定义算法模块的系统函数编译为预设格式的可执行程序,由Simulink仿真时进行调用。
进一步,在基于Simulink的系统函数模板编写所述自定义算法模块的系统函数之后,所述方法还包括:
通过对所述自定义算法模块进行封装,为所述自定义算法模块配置在可视化界面的显示外观。
进一步,所述通过对所述自定义算法模块进行封装,为所述自定义算法模块配置在可视化界面的显示外观,包括:
在Simulink界面新建Library类型的自定义模型库,将所述自定义模型库文件与所述自定义算法模块的系统函数存储在同一路径下;
在所述自定义算法模块库文件中添加系统函数模块,将所述系统函数模块的名称和参数分别设置为所述自定义算法模块的系统函数的名称和参数;
利用预设编辑器对所述系统函数模块进行编辑。
进一步,所述利用预设编辑器对所述系统函数模块进行编辑,包括:
选中所述系统函数模块,并打开所述系统函数模块对应的预设编辑器对话框;
在预设编辑器对话框中编辑所述系统函数模块的外观参数、模块参数,并进行保存,所述模块参数包括所述自定义算法模块的配置参数和仿真参数。
进一步,在通过对所述自定义算法模块进行封装,为所述自定义算法模块配置在可视化界面的显示外观之后,所述方法还包括:
将所述自定义模型库添加到Simulink的库浏览器中。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
上述各个实施例之间可任意组合,对所公开的实施例的上述说明,本说明书中各实施例中记载的特征可以相互替换或者组合,使本领域专业技术人员能够实现或使用本申请。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种代码生成方法,其特征在于,应用于部署有Simulink模型的嵌入式平台,所述方法包括:
获得利用TLC语言编写的自定义算法模块对应的自定义TLC文件,其中,在所述自定义TLC文件中定义了配置参数,所述自定义算法模块为预先对嵌入式平台提供的优化专用算法函数进行封装后得到;
根据所述自定义TLC文件的定义,从生成代码的中间文件中获取所述自定义算法模块的配置参数,并将其传递给所述自定义算法模块与所述优化专用算法函数之间的接口文件,生成嵌入式平台的C代码文件。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对所述优化专用算法函数进行封装,得到所述自定义算法模块与所述专用算法函数之间的接口文件;
基于Simulink的系统函数模板编写所述自定义算法模块的系统函数,并将所述自定义算法模块的配置参数写入生成代码的中间文件中;
利用TLC语言编写所述自定义算法模块的所述自定义TLC文件,以支持所述自定义算法模块的系统函数生成代码。
3.根据权利要求2所述的方法,其特征在于,在基于Simulink的系统函数模板编写所述自定义算法模块的系统函数之后,所述方法还包括:
将所述自定义算法模块的系统函数编译为预设格式的可执行程序,由Simulink仿真时进行调用。
4.根据权利要求2所述的方法,其特征在于,在基于Simulink的系统函数模板编写所述自定义算法模块的系统函数之后,所述方法还包括:
通过对所述自定义算法模块进行封装,为所述自定义算法模块配置在可视化界面的显示外观。
5.根据权利要求4所述的方法,其特征在于,所述通过对所述自定义算法模块进行封装,为所述自定义算法模块配置在可视化界面的显示外观,包括:
在Simulink界面新建Library类型的自定义模型库,将所述自定义模型库文件与所述自定义算法模块的系统函数存储在同一路径下;
在所述自定义算法模块库文件中添加系统函数模块,将所述系统函数模块的名称和参数分别设置为所述自定义算法模块的系统函数的名称和参数;
利用预设编辑器对所述系统函数模块进行编辑。
6.根据权利要求5所述的方法,其特征在于,所述利用预设编辑器对所述系统函数模块进行编辑,包括:
选中所述系统函数模块,并打开所述系统函数模块对应的预设编辑器对话框;
在预设编辑器对话框中编辑所述系统函数模块的外观参数、模块参数,并进行保存,所述模块参数包括所述自定义算法模块的配置参数和仿真参数。
7.根据权利要求5所述的方法,其特征在于,在通过对所述自定义算法模块进行封装,为所述自定义算法模块配置在可视化界面的显示外观之后,所述方法还包括:
将所述自定义模型库添加到Simulink的库浏览器中。
8.一种代码生成装置,其特征在于,应用于部署有Simulink模型的嵌入式平台,所述装置包括:
TLC文件获得单元,用于获得利用TLC语言编写的自定义算法模块对应的自定义TLC文件,其中,在所述自定义TLC文件中定义了配置参数,所述自定义算法模块为预先对嵌入式平台提供的优化专用算法函数进行封装后得到;
代码生成单元,用于根据所述自定义TLC文件的定义,从生成代码的中间文件rtw中获取所述自定义算法模块的配置参数,并将其传递给所述自定义算法模块与所述优化专用算法函数之间的接口文件,生成嵌入式平台的C代码文件。
9.一种电子设备,其特征在于,所述电子设备包括:至少一个存储器和至少一个处理器;
所述存储器存储有程序,所述处理器调用所述存储器存储的程序,所述程序用于实现权利要求1~7中任意一项所述的代码生成方法。
10.一种存储介质,其特征在于,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令用于执行权利要求1~7中任意一项所述的代码生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111414238.5A CN114115850A (zh) | 2021-11-25 | 2021-11-25 | 一种代码生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111414238.5A CN114115850A (zh) | 2021-11-25 | 2021-11-25 | 一种代码生成方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114115850A true CN114115850A (zh) | 2022-03-01 |
Family
ID=80373126
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111414238.5A Pending CN114115850A (zh) | 2021-11-25 | 2021-11-25 | 一种代码生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114115850A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116257037A (zh) * | 2023-05-15 | 2023-06-13 | 通达电磁能股份有限公司 | 控制器测试程序的生成方法、系统、电子设备及存储介质 |
-
2021
- 2021-11-25 CN CN202111414238.5A patent/CN114115850A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116257037A (zh) * | 2023-05-15 | 2023-06-13 | 通达电磁能股份有限公司 | 控制器测试程序的生成方法、系统、电子设备及存储介质 |
CN116257037B (zh) * | 2023-05-15 | 2023-08-11 | 通达电磁能股份有限公司 | 控制器测试程序的生成方法、系统、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110134386B (zh) | 一种程序编辑方法和装置 | |
JP5722448B2 (ja) | 画像処理ソフトウェア開発方法、画像処理ソフトウェア開発装置、および、画像処理ソフトウェア開発プログラム | |
Perchat et al. | Component based framework to create mobile cross-platform applications | |
CN111124713B (zh) | 设备系统函数调用方法、装置、终端设备和存储介质 | |
CN107943485B (zh) | 一种补丁编译平台及补丁编译方法 | |
CN107832059B (zh) | 一种基于Makefile的代码静态分析方法和装置 | |
CN109976723B (zh) | 一种算法开发平台、算法开发方法及计算机可读存储介质 | |
CN111090433A (zh) | 一种数据处理的方法、装置和存储介质 | |
WO2020259163A1 (zh) | 设备部署方法及装置、设备运行方法及电子设备 | |
CN113032963A (zh) | 一种Simulink模型仿真加速方法及装置 | |
US10496423B2 (en) | Method for opening up data and functions of terminal application based on reconstruction technology | |
CN111880863B (zh) | 应用程序的运行方法、装置、电子设备及存储介质 | |
CN104142819B (zh) | 一种文件处理方法及装置 | |
CN114115850A (zh) | 一种代码生成方法及装置 | |
TW202403541A (zh) | 第三方行動應用程式中引入小程序的系統、方法、裝置及介質 | |
CN106610845B (zh) | 信息管理方法、装置、服务器及系统 | |
WO2016003850A1 (en) | Rule-based activation of behaviors in an extensible software application | |
US20170052765A1 (en) | Method and system for creating app | |
CN116483481A (zh) | 一种固件库调用方法、装置、设备及存储介质 | |
CN113177292B (zh) | 一种通用的bim二次开发实现方法和装置 | |
JP2008293186A (ja) | 鉄鋼プラント制御プログラムの自動生成方法およびその装置 | |
CN113342702B (zh) | 一种应用程序测试方法、装置、设备及可读存储介质 | |
CN114489675A (zh) | 自动驾驶系统的处理方法、装置和电子设备 | |
CN110502439B (zh) | 调试方法、装置、电子设备以及存储介质 | |
CN114064218A (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 |