分享

关于Simulink CodeGeneration代码比较

 stevin_lib 2018-02-25
使用同一个MBD方式创建的车辆控制模型,测试mdl模型文件,six模型文件使用不同编译器生成代码的异同:

测试模型:mdl格式和six格式
测试环境:Matlab 2016a 64bitWindows 版 and Matlab 2015b64bitGlinux 版
操作系统:en_windows_10 enterprise x64
操作系统:CentOS-7-x86_64-1511
Embedded hardware selection: Freescale->HC(S)12
比较对象:模块子系统.c和.h文件,模型.c和.h文件文件

1:通过测试发现mdl和six生成的主要.c和.h文件以及a2l文件都相同;
2:以下情况生成的主要.c和.h文件以及a2l文件都相同:

测试Microsoft Visual C++ 2012 和 Microsoft Visual C++ 2015;
测试Microsoft Visual C++ 2012 和Matlab LCC-win64 v2.4.1;
测试Microsoft Visual C++ 2012 和 MinGW64 v4.x;

3:测试Microsoft Visual C++ 2012 和 GCC Win64 Linux发现:
GCC代码简洁,不太符合规范
MS C++代码规范,略显冗长

比如abs操作:
MS C++代码:
absIn1 = in1 < 0L ? ~(uint32_T)in1 + 1UL :(uint32_T)in1; 
absIn0 = in0 < 0L ? ~(uint32_T)in0 + 1UL :(uint32_T)in0;
GCC代码:
absIn1 = (uint32_T)(in1 < 0L ? -in1 :in1); 
absIn0 = (uint32_T)(in0 < 0L ? -in0 : in0);

4:测试Matlab 2010b 32bit + Win7 32bit 与Matlab 2016a 64bit +Win10 64 bit
这个比较意义其实没有什么意义,时隔六年,已是物是人非,生成的一部分.c和.h文件极为相似,详细的比较等待补充……

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多