ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

从零开始simulink自定义代码生成----自定义目标系统配置(2)

2021-06-11 19:33:50  阅读:424  来源: 互联网

标签:代码生成 simulink off 自定义 slConfigUISetEnabled hDlg slConfigUISetVal 设置 hSrc


从零开始simulink自定义代码生成----自定义目标系统配置(2)

自定义目标系统配置文件之系统目标文件 RTW工具箱回调函数

simulink支持自定义目标系统设置,需要以下几个文件:
1.xx.tlc 系统目标文件 主文件xx名称可自定义
2.xx_callback_handler.m RTW工具箱回调函数
3.xx_make_rtw_hook.m tlc文件调用,该文件后缀为_make_rtw_hook
4.xx_file_process.tlc 文件处理TLC文件
5.xx_srmain.tlc 用来控制主函数文件的生成

今天介绍工具箱回调函数。

RTW工具箱回调函数的作用

该函数通过调用matlab自带的函数(slConfigUISetVal 函数是用于自定义目标系统的属性,slConfigUISetEnabled函数则表示该属性是否可以被修改)对Configuration Parameter中的内容进行配置。
callback_handler函数中两个输入参数hDlg 和 hSrc 参数不需要用户自行设置,这些参数是由matlab自动分配的,不用对其进行修改。(资料内容:《基于模型设计—自定义目标系统配置指南》)

RTW工具箱回调函数参考代码

给出的s12x_demo中设置了以下参数,供大家参考
set_param(bdroot,‘PostCodeGenCommand’,‘postGenFunc(buildInfo)’);
设置参数,在配置页面表现如下图
在这里插入图片描述

目的是将指定的后期代码生成命令添加到模型编译过程中

curVal=slConfigUIGetVal(hDlg, hSrc, ‘ModelReferenceCompliant’);%获取当前值,默认是off
slConfigUISetVal(hDlg, hSrc, ‘ModelReferenceCompliant’, ‘on’);%设置为ON
curVal=slConfigUIGetVal(hDlg, hSrc, ‘ModelReferenceCompliant’);%获取当前值
slConfigUISetEnabled(hDlg, hSrc, ‘ModelReferenceCompliant’, false);%设置为不可改变
在这里插入图片描述

目的是 在 SelectCallback 中为目标设置,以指示目标支持模型引用

slConfigUISetVal(hDlg, hSrc, ‘CompOptLevelCompliant’, ‘on’);%设置为ON
slConfigUISetEnabled(hDlg, hSrc, ‘CompOptLevelCompliant’, false);%设置为不可改变
在这里插入图片描述

这个设置是在 SelectCallback 中为目标设置,以指示目标支持使用 Compiler optimization level 参数控制用于编译所生成代码的编译器优化级别。

slConfigUISetVal(hDlg, hSrc, ‘ProdHWDeviceType’, ‘Motorola HC12’);%设置硬件类型
slConfigUISetEnabled(hDlg, hSrc, ‘ProdHWDeviceType’, 0);%设置为不可改变
在这里插入图片描述

%% 指定用于测试从该模型生成的代码的硬件与代码最终将在其上运行的硬件相同。
slConfigUISetVal(hDlg, hSrc, ‘ProdEqTarget’,‘on’);%设置为ON
slConfigUISetEnabled(hDlg, hSrc, ‘ProdEqTarget’, 0);%设置为不可改变
在这里插入图片描述

%% 设置取消初始化代码,如果
slConfigUISetVal(hDlg, hSrc, ‘ZeroExternalMemoryAtStartup’,‘off’);%off表示勾选 取消ram初始化为0
slConfigUISetVal(hDlg, hSrc, ‘ZeroInternalMemoryAtStartup’,‘off’);%off表示勾选 取消值为0的初始化代码
在这里插入图片描述

slConfigUISetVal(hDlg, hSrc, ‘NoFixptDivByZeroProtection’, ‘on’);%on表示删除除0保护
在这里插入图片描述

slConfigUISetVal(hDlg, hSrc, ‘EfficientFloat2IntCast’, ‘on’);%on表示删除超出范围的浮点数到整数转换的代码
在这里插入图片描述

slConfigUISetVal(hDlg, hSrc, ‘GenerateSampleERTMain’, ‘on’);%设置需要生成 ERT 主函数
slConfigUISetEnabled(hDlg, hSrc, ‘GenerateSampleERTMain’, 0);%设置为不可改变

在这里插入图片描述

slConfigUISetVal(hDlg, hSrc, ‘GenerateMakefile’, ‘off’);%配置不适用 Makefile 进行代码生成
slConfigUISetEnabled(hDlg, hSrc, ‘GenerateMakefile’, 0);%设置为不可改变

在这里插入图片描述

%% GenerateErtSFunction 这个新版matlab已经没有了,用下面的
% slConfigUISetVal(hDlg, hSrc, ‘GenerateErtSFunction’, ‘off’);%取消将生成的代码包装在S-Function块中
% slConfigUISetEnabled(hDlg, hSrc, ‘GenerateErtSFunction’, 0);%设置为不可改变
slConfigUISetVal(hDlg, hSrc, ‘CreateSILPILBlock’, ‘None’);%取消创建一个SIL或PIL块来验证生成的代码
slConfigUISetEnabled(hDlg, hSrc, ‘CreateSILPILBlock’, 0);%设置为不可改变
在这里插入图片描述

%% MultiInstanceERTCode 这个新版matlab已经没有了,用下面的
% slConfigUISetVal(hDlg, hSrc, ‘MultiInstanceERTCode’, ‘off’);%指定生成不可重用的可重入代码
% slConfigUISetEnabled(hDlg, hSrc, ‘MultiInstanceERTCode’, 0);%设置为不可改变
slConfigUISetVal(hDlg, hSrc, ‘CodeInterfacePackaging’, ‘Nonreusable function’);%指定代码接口打包 设置 Nonreusable function表示生成的代码不可重用
slConfigUISetEnabled(hDlg, hSrc, ‘CodeInterfacePackaging’, 0);%设置为不可改变
在这里插入图片描述

slConfigUISetVal(hDlg, hSrc, ‘MatFileLogging’, ‘off’);%取消生成mat文件
slConfigUISetEnabled(hDlg, hSrc, ‘MatFileLogging’, 0);%设置为不可改变

在这里插入图片描述

slConfigUISetVal(hDlg, hSrc, ‘GRTInterface’, ‘off’);%指定不生成与R2012a之前创建的模型中GRT目标的主程序模块兼容的模型函数调用。
slConfigUISetEnabled(hDlg, hSrc, ‘GRTInterface’, 0);%设置为不可改变
在这里插入图片描述

slConfigUISetVal(hDlg, hSrc, ‘ERTCustomFileTemplate’, ‘s12x_file_process.tlc’);%配置用户自定义的模板文件
slConfigUISetEnabled(hDlg, hSrc, ‘ERTCustomFileTemplate’, 0);%设置为不可改变

在这里插入图片描述

slConfigUISetVal(hDlg, hSrc, ‘SupportNonInlinedSFcns’, ‘off’);%配置取消支持未与TLC文件内联的s函数。
在这里插入图片描述

slConfigUISetVal(hDlg, hSrc, ‘UtilityFuncGeneration’, ‘Auto’);%指定在何处生成实用函数、导出数据类型定义和导出数据的声明以及自定义存储类。
在这里插入图片描述

slConfigUISetVal(hDlg, hSrc, ‘IncludeMdlTerminateFcn’, 0);%设置取消生成一个模型终止函数
slConfigUISetEnabled(hDlg, hSrc, ‘IncludeMdlTerminateFcn’, 0);%设置为不可改变
在这里插入图片描述

slConfigUISetVal(hDlg, hSrc, ‘InitFltsAndDblsToZero’,‘off’);%设置生成将浮点数据显式初始化为0.0的代码 off表示勾选 如果编译器和目标CPU使用的浮点零表示与整数位模式0相同,则选择此选项。

在这里插入图片描述

slConfigUISetVal(hDlg, hSrc, ‘PurelyIntegerCode’,‘off’);%在生成的代码中支持浮点数据类型 off表示勾选
在这里插入图片描述

slConfigUISetVal(hDlg, hSrc, ‘SupportNonFinite’,‘off’);%取消在生成的代码中支持非有限值(inf, nan, -inf)
在这里插入图片描述

slConfigUISetVal(hDlg, hSrc, ‘TargetLibSuffix’, ‘.s19’);%控制用于命名目标依赖库的后缀
slConfigUISetEnabled(hDlg, hSrc, ‘TargetLibSuffix’, 0);%设置为不可改变

在这里插入图片描述

后续思考

如果需要自己定义想要的Configuration Parameter中的参数,可以按如下操作步骤来执行:
1.鼠标移动到想要配置的参数项,点击鼠标右键,弹出what is this
2.鼠标点击what is this,可以看到该参数是由matlab中的具体哪个函数来执行的,如果函数前面带~符号,说明和实际操作相反(如设置off时表示勾选,设置on时表示不勾选)
3.进入到该函数的具体说明,可以看到函数的用途及是如何使用的
4.搞清楚如何使用之后,再在callback_handler.m文件中添加自己想要的配置即可
5.添加完后可以重新导入目标系统配置的tlc文件,根据Configuration Parameter中的显示即可判断是否添加有效

以上就是callback_handler函数的基本内容,掌握了这个回调函数后,接下来需要添加xx_make_rtw_hook.m文件,该文件被tlc文件调用,后缀需要固定为_make_rtw_hook,将在后面详细介绍。欢迎点赞转发~~

标签:代码生成,simulink,off,自定义,slConfigUISetEnabled,hDlg,slConfigUISetVal,设置,hSrc
来源: https://blog.csdn.net/weixin_49000276/article/details/117825663

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有