1,报"冒号运算符……"
or
报错原因:
将信号的维度设置为了标定量。
BTC提供的解决方法:
(1)将对应的标定量改为该标定量对应的数字。(我采用的)
(2)去掉后面的标定量的''符号,并定义后面的标定量为数字。
%%%目前使用了这个方法后,会报enum多次定义的问题。
2,报enum未定义:
报错原因:
BTC方面认为是MATLAB 的bug.
如图,当自定义数据和头文件的名字,且类型选择Modular,则会出现enum类型的数据被定义在Rte_Type.h,在报错的C文件中需要使用此enum数据但是未直接或间接声明此文件。所以BTC导入中C代码编译变量未定义错误。
BTC提供的解决方法:
(1)让mathworks公司修复此bug.
(2)在mathworks公司未修复此bug前,可通过修改配置来规避此bug,将两个生成文件的选项改为自动。如图.
或者将File packaging format改为Compact.
(3)若不想按照方法(1)和(2),则当BTC测试到达代码导入界面时,修改对应的C文件,声明相应的头文件。修改后,保存。回到BTC的界面,选择Check后不再有error.
3,报"more than one AUTOSAR element"
BTC提供的解决方法:
(1)第一步换插件:卸载掉旧的1.22的插件,安装新的.1.3.3的插件
(2)将出现此问题的输出接口:右键-Block Parameters.在Signal Attributes下,将Output as nonvirtual bus in parent model选项选择。(出现此选项的前提是接口被定义为Bus:***,此类型应在文件里定义一下)
(3)将此simulink模型中,选择"菜单-Tools-BTC Plugin for Embedded Coder-Create AUTOSAR wrapper model",生成wrapper模型。
将生成的wrapper模型中对应的port也设置为非虚拟bus.
(4)将生成的Wrapper*.slx,调度用的Scheduler连接错的接口手动修正好。
4,报:function 多次定义.
报错原因:
因为BTC软件的bug.当模型中存在goto和多个from,且每个from存在不同的runable中.则每个from会导致BTC工具对该信号相关的桩函数重复定义一次.
BTC提供的解决方法:
(1)临时解决方法:自行前往报错的文件,查找相应的报多次定义的function,并屏蔽到只剩一个.
5,报:usage of undefined Function
报错原因:
MATLAB漏打了桩函数.
BTC提供的解决方法:
在BTC软件的界面,当报此错误时,Check按钮旁会多一个自动生成桩函数的按钮,点击后,让你为生成的桩函数取名.之后再check则此问题消失.
6,报:compilation failure:cannot open source file "can_message.h"
报错原因:
使用can pack和can unpack模块的后遗症,这些块不属于MAAB规定的标准块.
BTC提供的解决方法:需将相应的.h文件从MATLAB目录拷贝到被测模型报错的.c文件所在目录下,之后再check一下.
我实际上的解决方法:从matlab的目录搜索到一个同名文件,拷贝过来.
7,没有SWC
这个块暂时不测.