如何为你的硬件开发Simulink Toolbox(3)

如何为你的硬件开发Simulink Toolbox(3)在Simulink Toolbox中,需要为自定义开发的block写S-Function,我们使用的C语言编写,也叫C Mex S-Function,C语言编写的S-Function仿真速度快,也可以调用具体的硬件驱动和使用已有的C库,功能十分强大,我们的目标是为硬件编写Toolbox,S-Function的主要功能是将自定义Block的参数传递给TLC,让TLC可以生产和我们的硬件匹配的代码。

C Mex S-Function Matlab不能直接使用,需要先编译成mex文件,这次我们先做一些准备工作,安装C/C++编译器。

安装MINGW

可以使用mex -setup命令查看系统是否已经有可用的编译器,我的系统一开始是没有的,看到是下面这样的:
如何为你的硬件开发Simulink Toolbox(3)下载tdm64-gcc-9.2.0.exe,然后安装,过程比较简单。安装完成后再次尝试mex -setup,发现仍然提示没有可用的编译器。

我们加上-v选项,看看是哪里出了问题。

mex -setup -v
详细模式已开。
… 正在查找编译器 ‘Intel C++ Composer XE 2013 with Microsoft SDK 7.1 ©’…
… 正在查找环境变量 ‘ICPP_COMPILER14’…否。
… 正在查找环境变量 ‘ICPP_COMPILER13’…否。
找不到已安装的编译器 ‘Intel C++ Composer XE 2013 with Microsoft SDK 7.1 ©’。
… 正在查找编译器 ‘Intel C++ Composer XE 2013 with Microsoft Visual Studio 2013 ©’…
… 正在查找环境变量 ‘ICPP_COMPILER14’…否。
… 正在查找环境变量 ‘ICPP_COMPILER13’…否。
找不到已安装的编译器 ‘Intel C++ Composer XE 2013 with Microsoft Visual Studio 2013 ©’。
… 正在查找编译器 ‘Intel Parallel Studio XE 2015 with Microsoft SDK 7.1 ©’…
… 正在查找环境变量 ‘ICPP_COMPILER15’…否。
找不到已安装的编译器 ‘Intel Parallel Studio XE 2015 with Microsoft SDK 7.1 ©’。
… 正在查找编译器 ‘Intel Parallel Studio XE 2015 with Microsoft Visual Studio 2013 ©’…
… 正在查找环境变量 ‘ICPP_COMPILER15’…否。
找不到已安装的编译器 ‘Intel Parallel Studio XE 2015 with Microsoft Visual Studio 2013 ©’。
… 正在查找编译器 ‘Intel Parallel Studio XE 2015 with Microsoft Visual Studio 2015 ©’…
… 正在查找环境变量 ‘ICPP_COMPILER15’…否。
找不到已安装的编译器 ‘Intel Parallel Studio XE 2015 with Microsoft Visual Studio 2015 ©’。
… 正在查找编译器 ‘Intel Parallel Studio XE 2016 with Microsoft SDK 7.1 ©’…
… 正在查找环境变量 ‘ICPP_COMPILER16’…否。
找不到已安装的编译器 ‘Intel Parallel Studio XE 2016 with Microsoft SDK 7.1 ©’。
… 正在查找编译器 ‘Intel Parallel Studio XE 2016 with Microsoft Visual Studio 2013 ©’…
… 正在查找环境变量 ‘ICPP_COMPILER16’…否。
找不到已安装的编译器 ‘Intel Parallel Studio XE 2016 with Microsoft Visual Studio 2013 ©’。
… 正在查找编译器 ‘Intel Parallel Studio XE 2016 with Microsoft Visual Studio 2015 ©’…
… 正在查找环境变量 ‘ICPP_COMPILER16’…否。
找不到已安装的编译器 ‘Intel Parallel Studio XE 2016 with Microsoft Visual Studio 2015 ©’。
… 正在查找编译器 ‘Intel Parallel Studio XE 2017 with Microsoft SDK 7.1 ©’…
… 正在查找环境变量 ‘ICPP_COMPILER17’…否。
找不到已安装的编译器 ‘Intel Parallel Studio XE 2017 with Microsoft SDK 7.1 ©’。
… 正在查找编译器 ‘Intel Parallel Studio XE 2017 with Microsoft Visual Studio 2013 ©’…
… 正在查找环境变量 ‘ICPP_COMPILER17’…否。
找不到已安装的编译器 ‘Intel Parallel Studio XE 2017 with Microsoft Visual Studio 2013 ©’。
… 正在查找编译器 ‘Intel Parallel Studio XE 2017 with Microsoft Visual Studio 2015 ©’…
… 正在查找环境变量 ‘ICPP_COMPILER17’…否。
找不到已安装的编译器 ‘Intel Parallel Studio XE 2017 with Microsoft Visual Studio 2015 ©’。
… 正在查找编译器 ‘Intel Parallel Studio XE 2017 with Microsoft Visual Studio 2017 ©’…
… 正在查找环境变量 ‘ICPP_COMPILER17’…否。
找不到已安装的编译器 ‘Intel Parallel Studio XE 2017 with Microsoft Visual Studio 2017 ©’。
… 正在查找编译器 ‘MinGW64 Compiler ©’…
… 正在查找环境变量 ‘MW_MINGW64_LOC’…否。
找不到已安装的编译器 ‘MinGW64 Compiler ©’。
… 正在查找编译器 ‘Microsoft Visual C++ 2012 ©’…
… 正在查找注册表设置 ‘HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VS7’ 11.0…否。
… 正在查找注册表设置 ‘HKCU\SOFTWARE\Microsoft\VisualStudio\SxS\VS7’ 11.0…否。
… 正在查找注册表设置 ‘HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7’ 11.0…否。
… 正在查找注册表设置 ‘HKCU\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7’ 11.0…否。
找不到已安装的编译器 ‘Microsoft Visual C++ 2012 ©’。
… 正在查找编译器 ‘Microsoft Visual C++ 2013 ©’…
… 正在查找注册表设置 ‘HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VS7’ 12.0…否。
… 正在查找注册表设置 ‘HKCU\SOFTWARE\Microsoft\VisualStudio\SxS\VS7’ 12.0…否。
… 正在查找注册表设置 ‘HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7’ 12.0…否。
… 正在查找注册表设置 ‘HKCU\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7’ 12.0…否。
找不到已安装的编译器 ‘Microsoft Visual C++ 2013 ©’。
… 正在查找编译器 ‘Microsoft Visual C++ 2015 ©’…
… 正在查找注册表设置 ‘HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VC7’ 14.0…否。
… 正在查找注册表设置 ‘HKCU\SOFTWARE\Microsoft\VisualStudio\SxS\VC7’ 14.0…否。
… 正在查找注册表设置 ‘HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7’ 14.0…否。
… 正在查找注册表设置 ‘HKCU\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VC7’ 14.0…否。
找不到已安装的编译器 ‘Microsoft Visual C++ 2015 ©’。
… 正在查找编译器 ‘Microsoft Visual C++ 2017 ©’…
… 正在查找注册表设置 ‘HKLM\SOFTWARE\Microsoft\VisualStudio\SxS\VS7’ 15.0…否。
… 正在查找注册表设置 ‘HKCU\SOFTWARE\Microsoft\VisualStudio\SxS\VS7’ 15.0…否。
… 正在查找注册表设置 ‘HKLM\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7’ 15.0…否。
… 正在查找注册表设置 ‘HKCU\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7’ 15.0…否。
找不到已安装的编译器 ‘Microsoft Visual C++ 2017 ©’。
… 正在查找编译器 ‘Microsoft Windows SDK 7.1 ©’…
… 正在查找注册表设置 ‘HKLM\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.1’ InstallationFolder…否。
… 正在查找注册表设置 ‘HKLM\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v7.1’ InstallationFolder…否。
找不到已安装的编译器 ‘Microsoft Windows SDK 7.1 ©’。
错误使用 mex
未找到支持的编译器或 SDK。您可以安装免费提供的 MinGW-w64 C/C++ 编译器;请参阅安装 MinGW-w64 编译器。有关更多选项,请访问
http://www.mathworks.com/support/compilers。

发现它在查找MW_MINGW64_LOC这个环境变量,我们在环境变量里添加MW_MINGW64_LOC,并在matlab命令行输入:

setenv(‘MW_MINGW64_LOC’,‘C:\TDM-GCC-64’)

再试一次:mex -setup -v,可以看到Matlab已经找到了MinGW。

详细模式已开。

… 正在查找编译器 ‘Intel C++ Composer XE 2013 with Microsoft SDK 7.1 ©’…
… 正在查找环境变量 ‘ICPP_COMPILER14’…否。
… 正在查找环境变量 ‘ICPP_COMPILER13’…否。

… 正在查找环境变量 ‘MW_MINGW64_LOC’…是(‘C:\TDM-GCC-64’)
… 正在查找文件 ‘C:\TDM-GCC-64\bin\gcc.exe’…是。
… 正在查找文件夹 ‘C:\TDM-GCC-64’…是。
找到已安装的编译器 'MinGW64 Compiler ©’。

找一个C文件试一下:
如何为你的硬件开发Simulink Toolbox(3)

OK,准备工作完成。

如何为你的硬件开发Simulink Toolbox(3)