主要内容

嵌入式编码器检查

嵌入式编码器检查概述

使用嵌入的编码器®模型顾问检查以配置代码生成模型。

另请参阅

检查不推荐用于C / C ++生产代码部署的块

检查身份证mathworks.codegen.PCG万博1manbetxSupport

识别代码生成不支持或C/ c++产品代码万博1manbetx部署不推荐的代码块。

描述

此检查部分识别不推荐用于C/ c++产品代码生成的模型构造。为万博1manbetx®编码器™和嵌入式编码器,这些模型构造标识出现在万博1manbetx仿真软件块支持万博1manbetx

在某些情况下,这个检查标记代码生成所支持的块。万博1manbetx对于这些块,您应该查看支持说明中提供的脚注信息,并遵循Model Advisor提供的建议操作。万博1manbetx

根据该检查的建议,生成符合CERT C、CWE和ISO/IEC TS 17961标准的代码的可能性增加。

可与嵌入式编码器和万博1manbetxSimulink Check™

结果和建议的行动

条件 建议操作
模型或子系统包含不应用于生产代码部署的块。 考虑替换结果中列出的块。单击问题项列表中的一个元素以定位条件。
模型或子系统包含支持但不推荐用于生产代码生成的块。万博1manbetx 检查支持说明并坚持Mo万博1manbetxdel Advisor提供的建议操作。

能力和局限性

你可以:

  • 在您的库模型上运行这个检查。

  • 分析库链接块的内容。

  • 分析屏蔽子系统中的内容。

  • 如果您有一个,则排除块和图表万博1manbetx仿真软件检查许可证。

编辑时间检查

编辑时检查支持此检查。万博1manbetx

另请参阅

检查配置参数,以生成低效的饱和代码

检查身份证mathworks.codegen.EfficientTunableParamExpr

检查模型配置,以获得可以提高代码效率的优化设置。

描述

此检查标识C/ c++产品代码生成中推荐的模型配置参数。对于嵌入式编码器,这些模型配置参数提高了代码效率。

可提供嵌入式编码器。

结果和建议的行动

条件 建议操作
优化抑制了代码生成,以防范您选择的可调参数表达式的整数溢出。选择饱和码消除。 如果您有Embedded Coder并且正在使用基于ert的系统目标文件,请选择Configuration Parameter从可调参数表达式中删除饱和超出范围值的代码或者设置参数EfficientTunableParamExpr
此优化将抑制处理的浮点到整数转换结果的代码生成价值观选择转换代码消除。 如果您有Embedded Coder并且正在使用基于ert的系统目标文件,请选择Configuration Parameter删除从浮点到整数转换的代码,饱和映射NaN到零或者设置参数EfficientMapNaN2IntZero

行动的结果

点击修改设置配置模型优化设置会影响代码生成的效率。不存在以下安全问题:

  • 从可调参数表达式中删除饱和超出范围值的代码参数如果您的模拟包含可调节表达式的参数的整个值范围,并且Simulink不会产生饱和警告。万博1manbetx

  • 删除从浮点到整数转换的代码,饱和映射NaN到零参数如果您的模型仿真不包含NaN输入值。

能力和局限性

  • 不能在库模型上运行。

  • 不允许块或图表排除。

另请参阅

识别生成昂贵超出检查代码的查找表块

检查身份证mathworks.codegen.lutrancecheckcode.

识别查找表块,生成代码以防止用于断开断点或索引值的超出范围输入。

描述

此检查验证以下块是否不会生成代码以防止输入超出有效断点值的范围:

此检查还验证了这一点插值使用Prelookup块不会生成防止输入超出有效索引值范围的代码。

遵循推荐的操作可以提高生成代码的执行效率和ROM效率。

可提供嵌入式编码器。

结果和建议的行动

条件 建议操作

查找表块会生成超出范围的检查代码。

更改块对话框的设置,以便不会生成超出范围的检查代码。

  • 1-D查找表二维查找表一天的查找表,及Prelookup块,选择的复选框删除对生成代码中超出范围输入的保护

  • 插值使用Prelookup块,选择对应的复选框在生成的代码中删除对超出范围索引的保护

能力和局限性

你可以:

  • 在您的库模型上运行这个检查。

  • 排除块和图表从这个检查,如果你有万博1manbetx仿真软件检查许可证。

行动的结果

点击修改防止查找表块生成超出范围的检查代码,这使得生成的代码更高效。

编辑时间检查

编辑时检查支持此检查。万博1manbetx

另请参阅

检查逻辑块的输出类型

检查身份证mathworks.codegen.LogicBlockUseNonBooleanOutput

识别不使用的逻辑块布尔基用于输出数据类型。

描述

此检查验证以下块的输出数据类型是布尔基

  • 比较恒定的

  • 比较为零

  • 检测变化

  • 检测减少

  • 检测堕落消极

  • 检测下降负的

  • 增加检测

  • 检测不上升

  • 检测增加积极的

  • 间隔测试

  • 间隔测试动态

  • 逻辑运算符

  • 关系操作符

使用输出数据类型布尔基提高生成代码的执行效率。

可提供嵌入式编码器。

结果和建议的行动

条件 建议操作
逻辑块的输出数据类型不是布尔基 在块对话框中,设置输出数据类型布尔基

能力和局限性

你可以:

  • 在您的库模型上运行这个检查。

  • 排除块和图表从这个检查,如果你有万博1manbetx仿真软件检查许可证。

另请参阅

行动的结果

点击修改强制使用逻辑块布尔基作为输出数据类型。如果一个逻辑块使用uint8.对于输出类型,单击修改将输出类型更改为布尔基

检查硬件实现

检查身份证mathworks.codegen.HWImplementation

识别不一致或未指定的硬件实现设置

描述

simu万博1manbetxlink和万博1manbetxSimulink编码器软件需要两组目标规范。第一组描述了最终预期的生产目标。第二组描述当前所选的目标。如果配置不匹配,则代码生成器会创建额外的代码以模拟生产目标的行为。硬件属性的不一致或下限可能导致目标硬件的效率或不正确的代码生成。

可提供嵌入式编码器。

结果和建议的行动

条件 建议操作
硬件实现参数未设置为建议值。

在“配置参数”对话框的“硬件实现”窗格中,指定以下参数:

  • 字节次序Prodendianess.

  • 生产硬件signed整数除法ProdIntDivRoundTo

在“配置参数”对话框中输入以下参数:

  • 测试硬件中的字节排序TargetEndianess

  • 测试硬件带符号整数除法的舍入TargetIntDivRoundTo

硬件实现生产硬件设置不匹配测试硬件设置。 在“配置参数”对话框中,考虑选择测试硬件与生产硬件相同Prodeqtarget.)复选框,或修改设置以匹配。

另请参阅

运行时环境配置

识别有问题的软件环境规范

检查身份证mathworks.codegen.swenvironmentspec.

识别有问题的软件环境设置。

描述

  • 万博1manbetx支持某些软件环境设置可能导致低效的代码生成和非最佳结果。

  • C的行业标准,如ISO®和MISRA®,要求标识符在前31个字符内是唯一的。

  • Stateflow®使用弱Simulink I/O数据万博1manbetx类型的图表将导致低效的代码。

可提供嵌入式编码器。

结果和建议的行动

条件 建议操作
最大标识符长度不符合C的行业标准。 在“配置参数”对话框中,单击代码生成>标识符窗格中,设置最大标识符长度参数31字符。
在“配置参数”对话框中,配置的参数代码生成>接口窗格未设置为推荐值。

在“配置参数”对话框中,单击代码生成>接口窗格中,清除以下参数:

  • 万博1manbetx支持:连续时间

  • 万博1manbetx支持:非谓语形式的数字

在“配置参数”对话框中,清除万博1manbetx支持非内联的S函数

在“配置参数”对话框中,配置的参数代码生成>标识符窗格未设置为推荐值。 在“配置参数”对话框中,单击代码生成>标识符窗格中,设置生成标量内联参数为参数直接常量
在“配置参数”对话框中,单击代码生成>接口窗格,万博1manbetx支持:适应信号被选中。这可能会导致代码效率低下。 如果您不打算支持可变大小的信号,请在“配置参数”万博1manbetx对话框中代码生成>接口窗格中,清晰的万博1manbetx支持:适应信号
该模型包含具有弱Simulink I/O数据类型规范的状态流程图。万博1manbetx 选择状态流程图属性在Simulink I/O中使用强数据类型万博1manbetx.在选择属性之后,您可能需要调整模型中的数据类型。

限制

使用statflow图表时需要statflow许可证。

另请参阅

使用Simulink输入和输出的强数据类型万博1manbetx(Stateflow)

识别可疑的代码仪器(数据I / O)

检查身份证mathworks.codegen.CodeInstrumentation

识别有问题的代码检测。

描述

  • 生成的代码的仪器可能导致非优化结果。

  • 测试点需要全局内存,对于生产代码生成来说不是最优的。

可提供嵌入式编码器。

结果和建议的行动

条件 建议操作
接口参数未设置为推荐值。 在“配置参数”对话框中,单击代码生成>接口窗格中,将参数设置为推荐值。
块生成断言代码。 在“配置参数”对话框中设置启用模型验证块禁用所有一个块一个块地或全局地。
块输出信号有一个或多个测试点,如果您有嵌入式编码器许可证,则忽略测试点信号在“配置参数”对话框中清除。

从指定的块输出信号中移除测试点。对于每个信号,在信号属性对话框,清除测试点复选框。

或者,如果模型使用基于ert的系统目标文件,则选择忽略测试点信号复选框,以在代码生成期间忽略测试点。

能力和局限性

如果你有一个万博1manbetx仿真软件检查许可证,你可以排除块和图表从这个检查。

另请参阅

识别产生低效算法的块

检查身份证mathworks.codegen.UseRowMajorAlgorithm

识别产生低效算法的块。

描述

该检查根据模型的数组布局识别在生成的代码中生成低效算法的块。

可提供嵌入式编码器。

结果和建议的行动

条件 建议操作
配置参数阵列布局被设置为主修专栏用于列主代码生成。 禁用配置参数使用优化的行主阵列布局算法
配置参数阵列布局被设置为排大调用于行主代码生成。 选择配置参数使用优化的行主阵列布局算法

能力和局限性

  • 分析隐藏子系统中的内容。

另请参阅

检查MISRA C:2012的配置参数

检查身份证mathworks.misra.CodeGenSettings

确定可以影响MISRA C:2012兼容代码生成的配置参数。

描述

按照此检查的建议,将增加为嵌入式应用程序生成MISRA C:2012兼容代码的可能性。

可与嵌入式编码器和万博1manbetx仿真软件检查

结果和建议的行动

条件 建议操作
数学和数据类型
配置参数用除法进行定点网斜率计算没有设置为仅对整数的倒数使用除法 用除法进行定点网斜率计算仅对整数的倒数使用除法

配置参数INF或NAN块输出被设置为没有任何错误万博1manbetx支持非谓语形式的数字被设置为

配置参数INF或NAN块输出被设置为没有任何万博1manbetx支持非谓语形式的数字被设置为

什么时候万博1manbetx支持非谓语形式的数字是:

  • ,设置INF或NAN块输出警告

  • ,设置INF或NAN块输出警告错误

配置参数启用模型验证块被设置为使用本地设置让所有 启用模型验证块禁用所有
配置参数无向事件广播被设置为没有任何警告 无向事件广播错误
配置参数包裹溢出被设置为没有任何 设置配置参数包裹溢出警告错误
硬件实现
配置参数生产硬件signed整数除法被设置为未定义的 生产硬件signed整数除法地面
配置参数对有符号整数右移称为算术移位被选中。 清楚的对有符号整数右移称为算术移位
模拟目标
配置参数MATLAB函数的编译时递归极限设置的值不是0 MATLAB函数的编译时递归极限0
配置参数动态内存分配MATLAB函数被选中。 清楚的动态内存分配MATLAB函数
配置参数为MATLAB函数启用运行时递归被选中。 清楚的为MATLAB函数启用运行时递归
代码生成

配置参数位域声明符类型说明符被设置为uchar_T当选择这些参数时:

  • 将布尔数据打包成位域

  • 使用bitset存储状态配置

  • 使用bitset存储布尔数据

位域声明符类型说明符uint_T
配置参数铸造模式没有设置为标准兼容 铸造模式标准兼容
配置参数代码替换库没有设置为没有任何Autosar 4.0.

代码替换库没有任何Autosar 4.0.

配置参数外部模式被选中。 清楚的外部模式
配置参数生成共享常数被选中。 清楚的生成共享常数

配置参数包括评论清除。

选择包括评论
配置参数MAT-file日志被选中。

清楚的MAT-file日志

对于基于ert的目标系统,配置参数MATLAB用户评论清除。 选择MATLAB用户评论
配置参数的值最大标识符长度没有提供。 将值设置为与实现相关的限制。默认值是31
配置参数括号的水平没有设置为最大值(用括号指定优先级) 括号级别最大值(用括号指定优先级)

对于基于ert的目标系统,配置参数在函数声明中保留static关键字当时被清除文件的包装格式被设置为紧凑的紧凑型(带有单独的数据文件)

选择在函数声明中保留static关键字
配置参数用带符号的按位移位替换2的幂乘法被选中。 清楚的用带符号的按位移位替换2的幂乘法
配置参数共享代码的位置被设置为汽车

共享代码的位置共享位置

对于基于ert的目标系统,配置参数万博1manbetx支持连续时间被选中 清楚的万博1manbetx支持连续时间
对于基于ert的目标系统,配置参数万博1manbetx支持非内联的S函数被选中 清楚的万博1manbetx支持非内联的S函数
配置参数系统生成的标识符被设置为经典 系统生成的标识符缩短了
配置参数系统目标文件设置为基于grt的目标。 系统目标文件到基于ERET的目标。
配置参数对模型初始化使用动态内存分配被选中时代码接口包装被设置为可重用的功能

清楚的对模型初始化使用动态内存分配

请注意

选择只有当代码接口包装被设置为可重用的功能

行动的结果

点击修改所有将参数值更改为推荐值。

请注意

当你点击修改所有对于具有基于grt目标的模型,Model Advisor不会更新系统目标文件基于ert的系统的配置参数。

参数子检查依赖于参数记录的结果D在结果表中。结果是D-Warning,当前值列中的结果表状态前提约束未满足subchecks。更改参数后,重新运行检查。

请注意

某些子检查特定于基于ERE的系统的配置参数。单击时不会更新这些参数修改所有除非您将模型更改为基于ert的系统。

能力和局限性

此检查不会查看引用的模型。

另请参阅

检查不推荐用于Misra C:2012的块

检查身份证mathworks.misra.Blk万博1manbetxSupport

识别MISRA C:2012兼容代码生成不支持或不推荐的块万博1manbetx。

描述

按照此检查的建议,将增加为嵌入式应用程序生成MISRA C:2012兼容代码的可能性。

可与嵌入式编码器和万博1manbetx仿真软件检查

结果和建议的行动

条件 建议操作

在模型或子系统中找到了使用立方样条插值或外推方法的查找表块。具体的模块是:

考虑查找表块的其他插值和外推方法。

在模型或子系统中发现了已弃用的查查表块。具体的模块是:

  • 查找表

  • 查找表(二)

考虑更换已弃用的查找表块。
S函数建设者在模型或子系统中发现了块。 考虑用建议用于生产的块替换S-Function Builder块。
从工作空间在模型或子系统中发现了块 考虑用推荐用于生产的块替换From Workspace块。

在模型或子系统中发现了字符串块。具体的模块是:

考虑用推荐的生产区块替换String区块。

能力和局限性

你可以:

  • 在您的库模型上运行这个检查。

  • 分析库链接块的内容。

  • 分析隐藏子系统中的内容。

  • 排除块和图表从这个检查,如果你有万博1manbetx仿真软件检查许可证。

编辑时间检查。编辑时检查支持此检查。万博1manbetx

另请参阅

检查不支持的块名称万博1manbetx

检查身份证mathworks.misra.BlockNames

识别包含/

描述

按照此检查的建议,将增加为嵌入式应用程序生成MISRA C:2012兼容代码的可能性。

可与嵌入式编码器和万博1manbetx仿真软件检查

结果和建议的行动

条件 建议操作
包含/在模型或子系统中找到。 去除/从块名称。

能力和局限性

  • 在图书馆模型上运行。

  • 分析库链接块的内容。

  • 分析隐藏子系统中的内容。

  • 如果你有一个万博1manbetx仿真软件检查许可证,允许排除块和图表。

编辑时间检查。编辑时检查支持此检查。万博1manbetx

另请参阅

检查分配块的使用情况

检查身份证mathworks.misra.AssignmentBlocks

识别赋值没有块参数的块如果没有分配任何输出元素,则执行着手错误警告

描述

此检查适用于以下情况:赋值可以在下面的Simulink块库中找到万博1manbetx万博1manbetx>数学运作

按照此检查的建议,将增加为嵌入式应用程序生成MISRA C:2012兼容代码的可能性,以及符合CERT C、CWE、ISO/IEC TS 17961标准的代码。

可与嵌入式编码器和万博1manbetx仿真软件检查

结果和建议的行动

条件 建议操作
模型或子系统可能包含赋值没有块参数的未完成数组初始化的块如果没有分配任何输出元素,则执行着手错误警告

块参数设置如果没有分配任何输出元素,则执行到其中一个推荐值:

  • 错误,如果赋值block不在迭代器子系统中。

  • 警告,如果赋值块位于迭代器子系统中。

能力和局限性

  • 在图书馆模型上运行。

  • 分析库链接块的内容。

  • 分析隐藏子系统中的内容。

  • 如果你有一个万博1manbetx仿真软件检查许可证,允许排除块和图表。

编辑时间检查。编辑时间检查支持此检查。但是万博1manbetx,不支持以下检查条件,因为编辑时间检查无法确定赋值块位于迭代器子系统中。

块参数设置如果没有分配任何输出元素,则执行到其中一个推荐值:

  • 错误,如果赋值block不在迭代器子系统中。

  • 警告,如果赋值块位于迭代器子系统中。

另请参阅

在没有默认情况下检查切换盒式表达式

检查身份证mathworks.misra.SwitchDefault

识别没有默认大小写的开关大小写表达式。

描述

检查标志模型具有切换壳表达式的对象,而无需默认情况。

按照此检查的建议,将增加为嵌入式应用程序生成MISRA C:2012兼容代码的可能性,以及符合CERT C、CWE、ISO/IEC TS 17961标准的代码。

如果块是用Polyspace对齐的,则检查不会标记没有默认情况的块®注解。当您运行支票时,块与理由表列出了没有具有对齐的默认案例的块。

可与嵌入式编码器和万博1manbetx仿真软件检查

结果和建议的行动

条件 建议操作

模型对象有一个没有默认用例的开关用例表达式。

开关情况块,考虑选择块参数显示默认情况下要明确指定默认情况。

能力和局限性

你可以:

  • 在您的库模型上运行这个检查。

  • 排除块和图表从这个检查,如果你有万博1manbetx仿真软件检查许可证。

编辑时间检查。编辑时检查支持此检查。万博1manbetx

另请参阅

检查AutoSar Receiver接口的缺失错误端口

检查身份证mathworks.misra.AutosarReceiverInterface

识别没有匹配错误端口的AUTOSAR接收接口导入。

描述

按照此检查的建议,将增加为嵌入式应用程序生成MISRA C:2012兼容代码的可能性。检查标志AutoSAR接收器接口Inports缺少错误端口。下表标识了当缺少相应的错误端口时由检查标记的接收器接口端口的AutoSAR数据访问模式类型。

AUTOSAR数据访问模式类型 标记用支票吗?
ImplicitReceive 是的
ExplicitReceive 是的
排队xplicitreceive. 没有
ErrorStatus 没有
现代的 没有
iSupdated. 没有
端头 是的
ExplicitReceiveByVal 没有
否则 没有

当使用Polyspace注释确定错误端口时,检查不会标记错误端口的缺失。当您运行支票时,块与理由表列出了缺少的具有对齐方式的错误端口。

可与嵌入式编码器和万博1manbetx仿真软件检查

结果和建议的行动

条件 建议操作

AUTOSAR接收接口导入没有匹配的错误端口。

添加缺少的错误端口并映射到相应的AUTOSAR接收器接口输入端口。

当数据访问模式是时,Autosar接收器接口端口没有匹配的错误端口ImplicitReceiveExplicitReceive,或端头

添加缺少的错误端口并映射到相应的AUTOSAR接收器接口输入端口。

能力和局限性

你可以:

  • 分析顶层/根级模型。

  • 排除块和图表从这个检查,如果你有万博1manbetx仿真软件检查许可证。

另请参阅

检查用作总线元素名称的总线对象名称

检查身份证mathworks.misra.BusElementNames

标识用作总线元素名称的总线对象名称。

描述

使用此检查增加了为符合MISRA C:2012的嵌入式应用程序生成代码的可能性。检查标志了Simulink的实例。万博1manbetx总线对象名用作Simulink。万博1manbetx公共汽车元素名称。

可与嵌入式编码器和万博1manbetx仿真软件检查

结果和建议的行动

条件 建议操作
总线对象名称被用作总线元素名称。 更改标记的总线对象名称或总线元素名称,使它们不相同。

另请参阅

检查配置参数以进行安全编码标准

检查身份证mathworks.security.CodeGenSettings

确定可能影响安全编码标准遵从性的配置参数。

描述

在此检查的建议下,提高了符合CERT C,CWE,ISO / IEC TS 17961安全编码标准的代码的可能性。

可与嵌入式编码器和万博1manbetx仿真软件检查

结果和建议的行动

条件 建议操作
诊断

配置参数INF或NAN块输出被设置为没有任何错误万博1manbetx支持非谓语形式的数字被设置为

配置参数INF或NAN块输出被设置为没有任何万博1manbetx支持非谓语形式的数字被设置为

什么时候万博1manbetx支持非谓语形式的数字是:

  • ,设置INF或NAN块输出警告

  • ,设置INF或NAN块输出警告错误

配置参数启用模型验证块被设置为使用本地设置让所有 启用模型验证块禁用所有
配置参数无向事件广播被设置为没有任何警告 无向事件广播错误
配置参数包裹溢出被设置为没有任何 包裹溢出警告错误
硬件实现
配置参数生产硬件signed整数除法被设置为未定义的 生产硬件signed整数除法地面
配置参数对有符号整数右移称为算术移位被选中。 清楚的对有符号整数右移称为算术移位
模拟目标
配置参数MATLAB函数的编译时递归极限设置的值不是0 MATLAB函数的编译时递归极限0
配置参数动态内存分配MATLAB函数被选中。 清楚的动态内存分配MATLAB函数
配置参数为MATLAB函数启用运行时递归被选中。 清楚的为MATLAB函数启用运行时递归
代码生成
配置参数代码替换库没有设置为没有任何Autosar 4.0. 代码替换库没有任何Autosar 4.0.
配置参数外部模式被选中。 清楚的外部模式

配置参数包括评论清除。

选择包括评论
配置参数MAT-file日志被选中。 清楚的MAT-file日志
对于基于ert的目标系统,配置参数MATLAB用户评论清除。 选择MATLAB用户评论
配置参数用带符号的按位移位替换2的幂乘法被选中。 清楚的用带符号的按位移位替换2的幂乘法
对于基于ert的目标系统,配置参数万博1manbetx支持连续时间被选中 清楚的万博1manbetx支持连续时间
对于基于ert的目标系统,配置参数万博1manbetx支持非内联的S函数被选中 清楚的万博1manbetx支持非内联的S函数
配置参数系统目标文件设置为基于grt的目标。 系统目标文件到基于ERET的目标。
配置参数对模型初始化使用动态内存分配被选中。 清楚的对模型初始化使用动态内存分配

请注意

选择只有当代码接口包装被设置为可重用的功能

行动的结果

点击修改所有将参数值更改为推荐值。

请注意

当你点击修改所有对于具有基于grt目标的模型,Model Advisor不会更新系统目标文件基于ert的系统的配置参数。

参数子检查依赖于参数记录的结果D在结果表中。结果是D-Warning,当前值列中的结果表状态前提约束未满足subchecks。更改参数后,重新运行检查。

请注意

某些子检查特定于基于ERE的系统的配置参数。单击时不会更新这些参数修改所有除非您将模型更改为基于ert的系统。

另请参阅

安全的编码标准

检查是否存在不推荐用于安全编码标准的块

检查身份证mathworks.security.Block万博1manbetxSupport

识别不建议符合安全编码标准的块。

描述

在此检查的建议下,提高了符合CERT C,CWE,ISO / IEC TS 17961安全编码标准的代码的可能性。

可与嵌入式编码器和万博1manbetx仿真软件检查

结果和建议的行动

条件 建议操作

在模型或子系统中找到了使用立方样条插值或外推方法的查找表块。具体的模块是:

考虑查找表块的其他插值和外推方法。

在模型或子系统中发现了已弃用的查查表块。具体的模块是:

  • 查找表

  • 查找表(二)

考虑更换已弃用的查找表块。
S函数建设者在模型或子系统中发现了块。 考虑用建议用于生产的块替换S-Function Builder块。
从工作空间在模型或子系统中发现了块 考虑用推荐用于生产的块替换From Workspace块。

在模型或子系统中发现了字符串块。具体的模块是:

考虑用推荐的生产区块替换String区块。

能力和局限性

你可以:

  • 在您的库模型上运行这个检查。

  • 排除块和图表从这个检查,如果你有万博1manbetx仿真软件检查许可证。

编辑时间检查。编辑时检查支持此检查。万博1manbetx

另请参阅

识别有问题的子系统设置

检查身份证mathworks.codegen.QuestionableSubsysSetting

识别有问题的子系统块设置。

描述

在生成的代码中实现为void-void函数的子系统块使用全局内存来存储子系统I/O。

可提供嵌入式编码器。

结果和建议的行动

条件 建议操作
子系统块有子系统参数>函数包装选项设置为那种一次性的功能 设定子系统参数>函数包装参数汽车
子系统块有子系统参数>函数包装选项设置为可重用的功能 设定子系统参数>函数包装参数汽车

能力和局限性

如果你有一个万博1manbetx仿真软件检查许可证,你可以排除块和图表从这个检查。

另请参阅

检查行主要代码生成不支持的块万博1manbetx

检查身份证mathworks.codegen.rowmajorcodegen万博1manbetxsupport.

检查行主代码生成不支持的块。万博1manbetx

描述

此检查标识行主代码生成不支持的块。万博1manbetx

可提供嵌入式编码器。

结果和建议的行动

条件 建议操作
模型与行主数组布局的外部数据交互。 设置配置参数阵列布局排大调

能力和局限性

  • 分析隐藏子系统中的内容。

另请参阅

识别未设置阵列布局的TLC s -函数

检查身份证mathworks.codegen.rowmajorunsetsfunction.

识别未设置阵列布局的TLC s -函数。

描述

这个检查识别具有SSArrayLayout着手SS_UNSET. 默认情况下,每个S函数都具有SSArrayLayout属性设置为SS_UNSET.此设置禁用行主要代码生成的S函数。当配置参数时阵列布局被设置为排大调,则内嵌编码器报告错误。你可以通过改变行主代码生成的外部函数兼容性警告没有任何

可提供嵌入式编码器。

结果和建议的行动

条件 建议操作
配置参数阵列布局被设置为主修专栏用于列主代码生成。 设定SSArrayLayout财产主修专栏
配置参数阵列布局被设置为排大调用于行主代码生成。 设定SSArrayLayout财产排大调

能力和局限性

  • 分析所有被屏蔽子系统中的内容。

另请参阅

识别生成昂贵的定点和饱和代码的块

检查身份证mathworks.codegen.BlockSpecificQuestionableFxptOperations

确定可能导致非优化结果的固定点操作。

描述

某些块设置可能导致昂贵的定点和饱和代码。

结果和建议的行动

条件 建议操作
块生成昂贵的饱和代码。 检查应用程序是否需要设置功能块参数>信号属性>整数溢出饱和.否则,清楚整数溢出饱和参数,以获得生成代码中块的最有效实现。
产品块将信号与不匹配的斜率调整因子相乘。净斜率计算使用先乘法后移位的方法,这对于某些目标硬件来说是低效的。

设定优化>用除法进行定点网斜率计算参数,或仅对整数的倒数使用除法如果净斜率可以通过分数和划分比乘法更有效,并且在目标硬件上移动。

请注意

仅在满足某些简单性和准确度条件时才会发生这种优化。有关更多信息,请参阅处理净斜率计算(定点设计师)

产品块被配置为第一个输入的除法操作和第二个输入的乘法操作。 反转输入,使乘运算首先发生,除运算其次发生。
产品块被配置为执行多个除法操作。 将所有分母项相乘,然后使用级联进行单除法产品阻碍。
产品块被配置为执行许多乘法或除法运算。 将运算分割到几个块上,每个块执行一次乘法或除法运算。
作为除法操作的一部分产生的保护代码是多余的。 方法,验证模型在除法操作中不会引起异常,然后删除冗余保护代码优化>删除防止除法运算异常的代码“配置参数”对话框中的参数。
输入的数据类型范围总和块超出输出的数据类型范围,可能导致溢出或饱和。

更改输出和累加器数据类型,使范围等于或超过所有输入范围。

例如,如果模型有两个输入

  • int8(-128年至127年)

  • uint8.(0到255)

输出和累加器的数据类型范围必须等于或超过-128到255。一个int16(-32768 ~ 32767)数据类型满足此条件。

一个总和块的输入具有不等于输出的斜率调整因子的斜率调整因子。 更改数据类型,使输入、输出和累加器具有相同的斜率调整因子。
的净和总和块输入偏置不等于输出的偏置。 改变输出缩放的偏差,使净偏差调整为零。
的输入和输出极大极小块具有不同的数据类型。 更改输入或输出的数据类型。
输入的输入极大极小块具有与输出不同的斜率调整因子。 更改输入或输出的缩放比例。
初始条件离散时间积分器块用于初始化状态和输出。 设定功能块参数>初始条件设置参数状态(最有效)
事件的参数溢出比较为零块。这个块使用输入数据类型表示0。输入数据类型不能准确地表示0,因此将输入值与最接近的可表示值0进行比较。 选择可以表示零的输入数据类型。
以下发生参数溢出比较恒定的块。这个块使用输入数据类型来表示它的恒定值参数。的恒定值参数超出输入数据类型可以表示的范围。将输入信号与最接近的可增值值进行比较恒定值参数。 选择可以表示的输入数据类型恒定值参数或更改恒定值匹配输入数据类型的参数。

能力和局限性

  • 需要固定点设计器™许可证来生成定点代码。

  • 如果你有一个万博1manbetx仿真软件检查许可证,你可以排除块和图表从这个检查。

另请参阅

检查模型功能中缺少Const限定符

检查身份证mathworks.misra.ModelFunctionInterface

识别输入数据指针中缺少的const限定符。

描述

按照此检查的建议,将增加为嵌入式应用程序生成MISRA C:2012兼容代码的可能性。check标志没有const限定符的输入数据指针。

可与嵌入式编码器和万博1manbetx仿真软件检查

结果和建议的行动

条件 建议操作
没有为输入数据指针定义const限定符。 考虑将Const限定符添加到输入数据指针。

另请参阅

识别可疑的定点操作

检查身份证mathworks.codegen.questionableYxptoperations.

确定可能导致非优化结果的固定点操作。

描述

较低的效率代码可以由生成繁琐的乘法和分割操作,昂贵的转换代码,查找表块中的低效率以及昂贵的比较代码来引起较高的障碍。

结果和建议的行动

条件 建议操作
整数除法生成的代码较大。 在“配置参数”对话框中,单击硬件实现窗格中,设置生产硬件signed整数除法参数设置为推荐值。
查找表向量的输入值均匀间隔。 如果断点数据是不可调优的,则将数据调整为具有偶数的2次幂间隔。看到fixt_look1_func_approx.
对输入值的查找表向量进行量化时不是均匀间隔的,但非常接近均匀间隔。 如果断点数据是不可调优的,则将数据调整为具有偶数的2次幂间隔。看到fixpt_evenspace_cleanup
查找表向量的输入值均匀间隔,但间距不是2的功率。 如果断点数据是不可调优的,则将数据调整为具有偶数的2次幂间隔。看到fixt_look1_func_approx.
对于prelookup或n-d查找表块,索引搜索法等间距点. 断点数据没有2倍间距的幂。 如果断点数据不可用,请将数据调整为偶数,2倍间距。否则,请在“块参数”对话框中指定其他参数索引搜索法避免计算密集型划分操作。
n-D查找表断点数据的间隔不均匀且索引搜索法不是等间距点 如果断点数据是不可调优的,将数据调整为偶数,2的幂,然后设置索引搜索法等间距点
n-D查询表断点数据是均匀间隔的索引搜索法等间距点. 但是间距不是2的幂。 如果断点数据是不可调优的,则将数据调整为具有偶数的2次幂间隔。看到fixt_look1_func_approx.
n-D查询表断点数据是均匀间隔的,但间距不是2的乘方。同时,索引搜索法不是等间距点 索引搜索法等间距点. 此外,如果数据是不可调的,考虑均匀,功率为2的间距。
n-D查询表断点数据是均匀间隔的,间隔是2的乘方。但是,索引搜索法不是等间距点 索引搜索法等间距点
块在生成的代码中需要多字操作。 将输入的单词长度调整为操作,以便它们不超过处理器的最大字大小。有关更多信息,请参阅生成代码中的定点多字操作(定点设计师)
块需要繁琐的乘法。

限制乘法运算:

  • 因此产品整数大小不大于目标整数大小。

  • 推荐的尺寸。

产品块将信号与不匹配的斜率调整因子相乘。 改变输出的比例,使其斜率调整因子为输入斜率调整因子的乘积。
块用非零偏差相乘信号。 插入数据类型转换包含乘法运算的块前后的块。
输入关系操作符块具有不同的数据类型。
  • 更改数据类型和缩放的不变输入以匹配其他输入。

  • 插入数据类型转换前面的街区关系操作符块将两个输入转换为公共数据类型。

输入关系操作符块体具有不同的坡度调整系数。 改变任意一个输入的比例。
输出关系操作符块是恒定的。这可能会导致死代码,而死代码将被万博1manbetxSimulink编码器 检查您的模型设计并删除关系操作符阻塞或用常量替换它。

能力和局限性

  • 需要固定点设计器许可证来生成定点代码。

  • 如果你有一个万博1manbetx仿真软件检查许可证,你可以排除块和图表从这个检查。

另请参阅

识别生成昂贵的圆形代码的块

检查身份证mathworks.codegen.ExpensiveSaturationRoundingCode

检查生成昂贵的舍入代码的块。

描述

生成的舍入代码是低效的,因为整数舍入模式参数设置。

可提供嵌入式编码器。

结果和建议的行动

条件 建议操作
生成的代码效率很低。 设定功能块参数>整数舍入模式参数设置为推荐值。

能力和局限性

如果你有一个万博1manbetx仿真软件检查许可证,你可以排除块和图表从这个检查。

另请参阅

检查有符号整数的位操作

检查身份证mathworks.misra.CompliantCGIRConstructions

识别包含对有符号整万博1manbetx数的位操作的Simulink块。

描述

遵循此检查的建议,将增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性,以及符合CERT C和CWE标准的代码。

可与嵌入式编码器和万博1manbetx仿真软件检查

当模型中使用statflow时,此检查需要statflow许可证。

结果和建议的行动

条件 建议操作
该模型具有在符号整数上包含位操作的块。 考虑使用无符号整数进行按位运算。

能力和局限性

你可以:

  • 检查假设为整个模型生成代码。当子系统构建或导出函数生成代码时,检查可以将产品不正确。

  • 排除块和图表从这个检查,如果你有万博1manbetx仿真软件检查许可证。

另请参阅

检查递归函数调用

检查身份证mathworks.misra.RecursionCompliance

在状态流程图中识别递归函数调用。

描述

按照此检查的建议,将增加为嵌入式应用程序生成MISRA C:2012兼容代码的可能性。检查标志图表具有递归函数调用。

可与嵌入式编码器和万博1manbetx仿真软件检查

此检查需要Stateflow许可证。

结果和建议的行动

条件 建议操作

图表具有递归函数调用。

删除递归函数调用。

另请参阅

检查浮点值的平等和不等式操作

检查身份证mathworks.misra.CompareFloatEquality

标识浮点值上的相等和不等操作。

描述

检查标志源导致对浮点值进行相等或不等操作。

遵循此检查的建议,将增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性,以及符合CERT C和CWE标准的代码。

如果使用PolySpace注释,则该检查在浮点值上具有平等或不等式操作的标记块。当您运行支票时,块与理由表列出了具有良好理由的平等或不等式操作的块。

可与嵌入式编码器和万博1manbetx仿真软件检查

此检查需要Stateflow许可证。

结果和建议的行动

条件 建议操作

模型对象对浮点值具有平等或不等式操作。

考虑使用非浮点值进行平等或不等式操作。

能力和局限性

你可以:

  • 排除块和图表从这个检查,如果你有万博1manbetx仿真软件检查许可证。

另请参阅

检查整型字长

检查身份证mathworks.misra.IntegerWordLength

识别不符合硬件实现设置的整数字长

描述

检查标志整数,其字长度超过通过硬件实现设置允许的位数。

遵循此检查的建议,将增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性,以及符合CERT C和CWE标准的代码。

可与嵌入式编码器和万博1manbetx仿真软件检查

结果和建议的行动

条件 建议操作

模型对象包含不符合硬件实现设置的整数字长。

更新整数,使其长度不超过允许的位数。在“配置参数”对话框中可以查看允许的位数硬件实现>设备详细信息窗格。

能力和局限性

你可以:

  • 排除块和图表从这个检查,如果你有万博1manbetx仿真软件检查许可证。

另请参阅

检查块名称

检查身份证mathworks.codegen.blocknames.

的块名称是否代码透视图窗格中包含无效字符。

描述

属性中的块名称将在编辑时进行检查代码透视图窗格。检查报告块名称中的无效字符,但以下情况除外:

  • 忽略或不推荐用于代码生成的块

  • 虚拟子系统

该检查验证块名称是否符合以下准则:

形式

名称

  • 不是以数字开头的

  • 在块名称的开头不包括空格

  • 不使用双字节字符

  • 允许回车

允许的人物

名称

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

0 1 2 3 4 5 6 7 8 9

结果和建议的行动

条件 建议操作

块名称代码透视图窗格不符合指导原则。

更新块名称以符合指导原则。

能力和局限性

  • 在图书馆模型上运行。

  • 分析图书馆链接块的内容。

  • 分析隐藏子系统中的内容。

  • 允许排除区块和图表。

另请参阅