基于MATLAB强大的计算功能及友好用户界面,目前汽车行业大多用MATLAB实现模型开发,最终完成相应的算法及功能实现。当一个新的算法开发之前,需要有相应的需求文档,分析算法实现的可能性以及最终能达成的目标,以及算法本身的逻辑。在MATLAB环境实现算法,并进行白盒黑盒模拟测试,建立测试文档。测试完成后,则一般需要将算法生成目标控制器能适用的代码。
这种基于模型的设计的有一定优势,对设计员本身的代码需求不高,更多集中于算法的开发。但是实际生成代码过程,会有各种限制。对大众化的芯片,如英飞凌,飞思卡尔等,MATLAB代码生成平台有相应的目标控制器的硬件配置,但并不包括所有控制器。另外,如果未使用MATLAB自带的模块或者自定义s函数时,运用MATLAB代码生成的过程可能要比直接进行目标语言编译复杂,这也是我比较怀疑基于模型实现驱动模块的代码生成的效率及必要性的原因。
所谓自动代码生成,实际是MATLAB环境封装一个环境,让用户看不到MATLAB自带模块转变的过程(实质是模块函数的各种调用),这样友好的用户环境,同样也造成一些困扰,类似于windows系统用户和linux用户,windows系统友好但是用户基本是被动接受,如果用户想要实现自己的一些功能,或者问题的解决,处理起来就会比较麻烦。实际算法开发过程,如果要将算法应用到实际工程,算法的效率,复杂度,都需要考虑,这样同样可能还是需要去深入了解算法代码如何自动生成。
MATLAB代码生成流程:设计模型(生成mdl)--------解析模型(rtw文件)-------中间表示的解析(tlc文件)-----代码生成----管理代码