CMSIS代码替换库

9的观点(30天)
亚历克斯Bogias
亚历克斯Bogias 2018年2月22日
编辑: 亚历克斯Bogias2018年2月27日
你好,
我有一个数量的模型函数封装Matlab万博1manbetx函数。我把这些函数在不同的模型和代码生成一次。让第一个模型模型,第二个ModelB打电话。两个模型需要使用CMSIS手臂库。ModelB也依赖于模型。
模型似乎代码生成好,但当ModelB试图代码生成它吐出了一个错误:
“C: \ Program Files \ MATLAB \ R2017b \ bin \ win64 \ mex.exe”- c COPTIMFLAGS =“- 02”-DMATLAB_MEX_FILE -我“C: \ sw_dev \ trunk_latest \开发\ G3 \ RTU Matlab \ slprj \ \一个mm \ _sfprj _self \ DFPI \ \ sfun \ src "-我“C: \ sw_dev \ trunk_latest \开发\ G3 \ RTU Matlab \ slprj \ ert \ \一个mm \ mathfunctions”-我“C: \ sw_dev \ trunk_latest G3 \开发\ \ RTU \一个mm \ Matlab”-我“C: \ sw_dev G3 \ trunk_latest \开发\ \常见\包括“-我“C: \ sw_dev \ trunk_latest \开发\ G3 \ RTU Matlab \ \一个mm \ mathfunctions_ert_rtw”-我“C: \ sw_dev \ trunk_latest \开发\ G3 \ RTU Matlab \ slprj \ ert \ \一个mm \ _sharedutils”-我“C: \ Program Files \ extern MATLAB \ R2017b \ \包括“-我“C: \ Program Files \ MATLAB \ R万博1manbetx2017b \仿真软件\包括“-我“C: \ Program Files \ MATLAB \ R万博1manbetx2017b \仿真软件\ \ sf_runtime”包括-我“C: \ Program Files \ MATLAB \ R2017b \ stateflow \ C \墨西哥人\包括“-我“C: \ Program Files \ MATLAB \ R2017b \ rtw \ C \ src "-我“C: \ sw_dev \ trunk_latest \开发\ G3 \ RTU Matlab \ slprj \ \一个mm \ _sfprj _self \ DFPI \ \ sfun \ src "DFPI_sfun.c
建筑与“MinGW64编译器(C)”。
文件包括了从C: \ sw_dev G3 \ trunk_latest \开发\ \ RTU \一个mm \ Matlab \ mathfunctions_ert_rtw / MathFunctions.h: 26:0,
C: \ sw_dev \ trunk_latest \开发\ G3 \ RTU Matlab \ slprj \ \一个mm \ _sfprj _self \ DFPI \ \ sfun \ src \ DFPI_sfun.h: 30,
C: \ sw_dev \ trunk_latest \开发\ G3 \ RTU Matlab \ slprj \ \一个mm \ _sfprj _self \ DFPI \ \ sfun \ src \ DFPI_sfun.c: 4:
C: \ sw_dev \ trunk_latest \开发\ G3 \ RTU Matlab \ slprj \ ert \ \一个mm \_sharedutils / mw_cmsis。h: 12:22:致命错误:arm_math。h:没有这样的文件或目录
编译终止。
如果我添加一个包括(在目标模型模拟配置文件)指向CMSIS arm_math支持包。万博1manbetxh是位于我就一大堆的错误:
“C: \ programdata \ MAT万博1manbetxLAB \ supportpackages \ R2017b \ 3 p.instrset \ cmsis.instrset \ CMSIS \包括/ arm_math。h: 314:4:“错误:#错误定义根据使用核心ARM_MATH_CM7皮层,ARM_MATH_CM3 ARM_MATH_CM4 ARM_MATH_CM0PLUS或ARM_MATH_CM0”
#错误显示“定义使用皮质核心ARM_MATH_CM7 ARM_MATH_CM4, ARM_MATH_CM3, ARM_MATH_CM0PLUS或ARM_MATH_CM0”
^
C: \ programdata \ MAT万博1manbetxLAB \ supportpackages \ R2017b \ 3 p.instrset \ cmsis.instrset \ CMSIS \包括/ arm_math。h: 387:11:错误:未知的类型名字“int8_t”
类型定义int8_t q7_t;
^
C: \ programdata \ MAT万博1manbetxLAB \ supportpackages \ R2017b \ 3 p.instrset \ cmsis.instrset \ CMSIS \包括/ arm_math。h: 392:11:错误:未知的类型名字“int16_t”
类型定义int16_t q15_t;
^
C: \ programdata \ MAT万博1manbetxLAB \ supportpackages \ R2017b \ 3 p.instrset \ cmsis.instrset \ CMSIS \包括/ arm_math。h: 397:11:错误:未知的类型名字“int32_t”
类型定义int32_t q31_t;
^
C: \ programdata \ MAT万博1manbetxLAB \ supportpackages \ R2017b \ 3 p.instrset \ cmsis.instrset \ CMSIS \包括/ arm_math。h: 402:11:错误:未知的类型名字“int64_t”
类型定义int64_t q63_t;
^
C: \ programdata \ MAT万博1manbetxLAB \ supportpackages \ R2017b \ 3 p.instrset \ cmsis.instrset \ CMSIS \包括/ arm_math。h: 484:10:错误:未知的类型名字“__INLINE”
静态__INLINE q31_t clip_q63_to_q31 (“
如果我将代码替换库设置为GNU C99 externsions我不得到这个错误。似乎这个问题源于事实,ModelB取决于模型,在模型我使用共同作用的一个图书馆。我这样做为了避免代码重复。
例如模型包含的函数定义罪恶,因为,模,剩下的等……依赖于其他模型。通常我使用的命名约定是“ModelA_cos”、“ModelA_Sin”等……和其他模型中的函数调用通过这个名字。我希望这是一个好方法避免代码重复。
如果我删除这个类型的调用协定从ModelB我简单地使用matlab的自己的罪,因为,等等……我可以使用CMSIS代码生成好的代码替换库,但各模型的代码是重复的,这是我想避免的。
什么好主意吗?网上找不到太多的信息。
由于亚历克斯
1评论
亚历克斯Bogias
亚历克斯Bogias 2018年2月23日
编辑:亚历克斯Bogias 2018年2月27日
经过许多试验和磨难我添加自己的# include“stdint。h”文件。这似乎帮助但我现在得到以下错误。
我猜,这与C89(与C99标准数学库)和“手臂兼容”,类型:“胳膊皮层”的目标我指定。
建筑与“MinGW64编译器(C)”。
墨西哥人成功完成。
# # #链接
“C: \ Program Files \ MATLAB \ R2017b \ bin \ win64 \ mex.exe”沉默LDFLAGS =“LDFLAGS美元”与产出DFPI_sfun。mexw64 @DFPI_sfun.mol“C: \ ProgramData \ MAT万博1manbetxLAB \ SupportPackages \ R2017b \ 3 p.instrset \ cmsis.instrset \ CMSIS \ Lib \ GCC \ libarm_cortexM7l_math.a”
C: / ProgramData / MAT万博1manbetxLAB / SupportPackages R2017b / 3 p.instrset / mingw_w64.instrset / bin / lib / gcc / x86_64-w64-mingw32/5.3.0 / . . / . . / . . / . . / . . / x86_64-w64-mingw32 / bin / ld。exe:未知的架构的输入文件MATLAB的C: \ ProgramData万博1manbetx \ \ SupportPackages \ R2017b \ 3 p.instrset \ cmsis.instrset \ CMSIS \ Lib \ GCC \ libarm_cortexM7l_math.a (arm_sin_f32.o)”是不符合i386: x86 - 64输出
C: / ProgramData / MAT万博1manbetxLAB / SupportPackages R2017b / 3 p.instrset / mingw_w64.instrset / bin / lib / gcc / x86_64-w64-mingw32/5.3.0 / . . / . . / . . / . . / . . / x86_64-w64-mingw32 / bin / ld。exe:未知的架构的输入文件MATLAB的C: \ ProgramData万博1manbetx \ \ SupportPackages \ R2017b \ 3 p.instrset \ cmsis.instrset \ CMSIS \ Lib \ GCC \ libarm_cortexM7l_math.a (arm_cos_f32.o)”是不符合i386: x86 - 64输出
C: \ ProgramData \ MAT万博1manbetxLAB \ SupportPackages \ R2017b \ 3 p.instrset \ cmsis.instrset \ CMSIS \ Lib \ GCC \ libarm_cortexM7l_math.a (arm_sin_f32.o):不能读符号:无效的操作
collect2。exe:错误:ld返回1退出状态
[DFPI_sfun。mexw64)错误1
感谢任何帮助。
谢谢

登录置评。

答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!