从零开始simulink自定义代码生成----自定义目标系统配置(3)
自定义目标系统配置文件之make_rtw_hook文件(钩子函数)
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 用来控制主函数文件的生成
今天介绍make_rtw_hook函数,又称钩子函数。
make_rtw_hook钩子函数的作用
在编译过程中,可以在代码生成和联编过程中的指定点执行的钩子方法中提供可选的自定义代码。可以使用钩子方法将特定于目标的操作添加到编译过程中。
下图很好的说明了钩子函数在编译过程中的阶段:
可以在entry,before_tlc,after_tlc,before_make,after_make,exit中加入自定义代码及编译过程
make_rtw_hook钩子函数的使用
_make_rtw_hook.m 文件位于 MATLAB路径中。
文件名是系统目标文件 (STF) 的名称,后跟文本 _make_rtw_hook.m。例如,如果您使用自定义系统目标文件 mytarget.tlc 生成代码,请将钩子文件命名为 mytarget_make_rtw_hook.m,并将文件中实现的钩子函数命名为 mytarget_make_rtw_hook。
函数原型:
function STF_make_rtw_hook(hookMethod, modelName, rtwRoot, templateMakefile,buildOpts, buildArgs, buildInfo)
hookMethod:指定调用 STF_make_rtw_hook 函数的编译过程阶段的字符向量。hookMethod 的有效值为 ‘entry’、‘before_tlc’、‘after_tlc’、‘before_make’、‘after_make’、‘exit’ 和 ‘error’。STF_make_rtw_hook 函数使用 switch 语句调度给相关代码。
您可以使用 ‘entry’ 钩子来初始化编译过程,例如,在生成代码之前更改或验证设置。‘entry’ 钩子的用途之一是重新运行最初在目标选择时间运行的自动配置脚本,从而对执行脚本前后的模型参数进行比较,以实现验证目的。
其他钩子点(‘before_tlc’、‘after_tlc’、‘before_make’、‘after_make’、‘exit’ 和 ‘error’)可用来与外部工具链、源代码管理工具和其他环境工具对接。
例如,您可以在 ‘entry’ 之后的阶段使用 STF_make_rtw_hook.m 文件来获取编译文件夹的路径。之后在 ‘exit’ 阶段,您就可以在编译文件夹中找到生成的代码文件,并将它们签入到您的版本控制系统。在代码生成或编译过程中发生错误时,您可以使用 ‘error’ 清理钩子函数使用的静态数据或全局数据。
hook代码例子
function mytarget_make_rtw_hook(hookMethod,modelName,rtwroot,templateMakefile,buildOpts,buildArgs)
% Hook file for the Workshop Host Target
switch hookMethod
case 'error'
disp('error');
case 'entry'
disp('Starting build');
disp('Good hook spot to run Model Advisor checks');
case 'before_tlc'
disp('this stage is before_tlc');
% do nothing
case 'after_tlc'
disp('this stage is after_tlc');
% do nothing
case 'before_make'
disp('this stage is before_make');
% do nothing
case 'after_make'
disp('this stage is after_make');
% do nothing
case 'exit'
disp('Done building');
end
总结
钩子文件实现比较复杂,资料也很少,网上的代码中的钩子函数中添加的代码也不太好理解,最好的方式就是在之前的基础上修改。在exit阶段实现编译器的调用及自动编译代码,这应该是最有用的了。
本文介绍了钩子函数的作用及使用,下一篇文章将介绍文件处理tlc文件,这个文件主要是用来控制,自动代码生成过程中,针对不同的情况,在各阶段生成什么样的代码。
关联文章:
从零开始simulink自定义代码生成----自定义目标系统配置(1)
从零开始simulink自定义代码生成----自定义目标系统配置(2)
从零开始simulink自定义代码生成----自定义目标系统配置(4)