从零开始simulink自定义代码生成

您所在的位置:网站首页 从rom中提取底层驱动的函数是 从零开始simulink自定义代码生成

从零开始simulink自定义代码生成

2024-07-16 00:34| 来源: 网络整理| 查看: 265

在了解了自定义目标文件系统后,再结合自定义驱动文件库,就可以实现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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3