在了解了自定义目标文件系统后,再结合自定义驱动文件库,就可以实现simulink中编写应用层模型策略,调用自定义驱动文件库,实现底层与应用层软件的全自动代码生成。本篇博客主要做一个整体的介绍,把大体的开发过程先抛出来。
自定义硬件驱动开发步骤:
1、c mex .c mex生成mex64文件, 2.编辑sfunction界面 3.编写tlc文件,tlc文件中会调用封装过后的模块,仿真时使用的是 S-Function 背后所调用的 mexw64 文件,代码生成的时候则是按照 tlc 文件的描述去生成代码。因此通过编写模块 tlc 文件就能定制设备驱动的个性化代码,并将其嵌入到模型源代码中,从而扩展Simulink 的功能。
1:c mex.c/cpp中包含的主要内容:
利用ssGetSFcnParam 获取指向控件中参数的指针 mxGetScalar获取指针指向地址的数值
mdlInitializeSizes:设置或获取输入和输出端口的数量、宽度以及一些其他信息
mdlInitializeSampleTimes:设置采样时间
mdlOutputs:计算模块输出,也可以不在本文件中实现,而是在tlc文件中生成代码实现
mdlRTW:只在代码生成的过程中被执行。该函数只有一个作用:在代码生成过程中对参数赋值和格式化,并将其参数数据输出到中间描述文件.rtw 中。目标语言编译器在生成代码时将使用这些数据结构
在函数 mdlRTW 中设置模块参数,模块 tlc描述文件通过获取模块参数值来生成不同的模块代码
2:sfunction界面
mask中编辑界面,s-function名称和c mex文件一致, 输入参数个数和顺序需要和c mex文件一致
3:tlc文件
tlc文件名与c mex文件一致,用来自定义生成代码
Start函数:为模块中仅执行一次的函数,内部代码会生成到model_initialize()函数中
Outputs:用于编写模块计算输出的代码,并将其生成到model_step()中
BlockTypeSetup:宏定义
以上是自己总结出来的驱动开发过程,具体的实现过程在后面慢慢介绍~
欢迎各位在学习自定义代码生成的童靴和我交流,共同学习~Wechat/QQ:953509472