带有20k采样点缓冲块的错误构建模型(C2000) -断言失败:inputExpr->type()->equals(indexIntType())

5次观看(过去30天)
你好,
我在用TI C2000块构建Simulink模型时面临一个问题。金宝app我的MATLAB版本是R2019b,代码composer studio版本是9.30。我使用一个自定义TMS320F28335板与外部1Mx16 SRAM。
让我简单概述一下我的模型,
信号来自ADC块 数据类型被传递到长度为20k的采样点缓冲区。该缓冲器连接到一个MATLAB函数块,在那里进行进一步的处理。与该问题相关的代码如下所示。函数参数 Vib 从buffer中获取值,然后从变量中获取18k点 Vib 是否复制到另一个变量 temp_sig, 之后进行进一步的处理。
functionFDD_data = fast_function (xx, xx, Vib)
temp_sig =单(0 (18000 1));
temp_sig = Vib (2001:20000);
当我建立模型时,我得到以下错误,
“‘ BWWT_2pole_final / Acceleration_buffer / Buffer1 '使用一个包含40000个元素的矩阵,该矩阵大于指定目标的'int'最大值。有关此错误的解决方法的信息,请参阅外部错误报告704491。”
我不能理解为什么错误显示有40k个元素,尽管缓冲区中只有20k个元素。
无论如何,我已经尝试了MathWorks错误报告中的解决方法,即 避免使用大于INT_MAX的数组信号 .所以,我需要设置以下内容
slfeature (AllowUnsafeOversizedMatrices, 1)
然而,在设置了这个功能后,我得到了一个不同的错误,如下所示,
CGIR断言'In indexIntVCatNode: assertion failed: inputExpr->type()->equals(indexIntType())'失败在'b:\matlab\src\eml\dom_eml\eml_mclass_translation_ctx.cpp:448'
在"in CGIR: b:\matlab\src\eml\dom_eml\eml_mclass_translation_ctx.cpp line 448: in indexIntVCatNode: Assertion failed: inputExpr->type()->equals(indexIntType())中遇到意外或内部错误”。如果您能使其再次发生,请将此报告给MathWorks
我尽了最大的努力,但是我找不到任何解决这个错误的方法。
我断开了20k长度的缓冲区和MATLAB函数之间的连接。然后在函数内部初始化一个虚拟变量,如下所示
函数 FDD_data = fast_function (xx, xx)
Vib =单(0 (20000 1));
temp_sig =单(0 (18000 1));
temp_sig = Vib (2001:20000);
在这种情况下,模型构建没有任何错误。所以,我想,在Matlab2019b中构建我的模型有一些问题。
注意: 这个模型,我试图建立在MATLAB 2019b是完美的工作在MATLAB 2011b没有任何问题。在MATLAB 2011b中进行了代码的构建、硬件部署和功能验证。
我很感激任何人能帮我解决这个问题。提前谢谢。
问候,
Subash
2的评论

登录发表评论。

答案(0)

社区寻宝

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

开始狩猎!