主要内容

嵌入式编码器检查

嵌入式编码器检查概述

使用嵌入式编码器®Model Advisor检查以配置您的模型以生成代码。

另请参阅

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

检查身份证mathworks.codegen.PCG金宝appSupport

识别代码生成不支持或不推荐用于C/ c+金宝app+产品代码部署的块。

描述

这种检查部分地识别了不推荐用于C/ c++产品代码生成的模型构造。为金宝app®编码器™和Embedded Coder,这些模型构造标识出现在表中金宝appSimulink块支持金宝app

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

遵循此检查的建议可以增加生成符合CERT C、CWE和ISO/IEC TS 17961标准的代码的可能性。

可与嵌入式编码器和金宝app模型检查™

结果和建议措施

条件 建议的行动
模型或子系统包含不应该用于生产代码部署的块。 考虑替换结果中列出的块。单击可疑项列表中的元素以定位条件。
模型或子系统包含支持但不推荐用于生产代码生成的块。金宝app 检查支持说明,并遵循M金宝appodel Advisor提供的建议操作。

能力和限制

您可以:

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

  • 分析库链接块的内容。

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

  • 排除块和图表,如果你有金宝app仿真软件检查许可证。

编辑时间检查

编辑时检查支持此检查。金宝app

另请参阅

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

检查身份证mathworks.codegen.EfficientTunableParamExpr

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

描述

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

可与嵌入式编码器。

结果和建议措施

条件 建议的行动
优化抑制代码生成,以防止所选可调参数表达式的整数溢出。选择饱和码消除。 如果您有嵌入式编码器,并且正在使用基于ert的系统目标文件,请选择配置参数从可调参数表达式中删除饱和超出范围值的代码或者设置参数EfficientTunableParamExpr
该优化抑制了处理浮点到整数转换结果的代码生成值。选择转换码消除。 如果您有嵌入式编码器,并且正在使用基于ert的系统目标文件,请选择配置参数删除将NaN映射为零的浮点到整数转换的饱和代码或者设置参数EfficientMapNaN2IntZero

行动的结果

点击修改设置配置模型优化设置会影响代码生成的效率。没有安全问题:

  • 从可调参数表达式中删除饱和超出范围值的代码参数,如果您的模拟包含作为可调表达式项的参数的整个值范围,并且Simulink不会生成饱和警告。金宝app

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

能力和限制

  • 不能在库模型上运行。

  • 不允许排除块或图表。

另请参阅

识别生成昂贵的范围外检查代码的查找表块

检查身份证mathworks.codegen.LUTRangeCheckCode

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

描述

该检查验证以下块不会生成代码来防止落在有效断点值范围之外的输入:

这个检查也验证了这一点使用预查找的插值块不会生成代码来防止落在有效索引值范围之外的输入。

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

可与嵌入式编码器。

结果和建议措施

条件 建议的行动

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

更改块对话框上的设置,这样就不会生成超出范围的检查代码。

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

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

能力和限制

您可以:

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

  • 排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。

行动的结果

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

编辑时间检查

编辑时检查支持此检查。金宝app

另请参阅

检查逻辑块的输出类型

检查身份证mathworks.codegen.LogicBlockUseNonBooleanOutput

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

描述

该检查验证以下块的输出数据类型为布尔

  • 与常量比较

  • 与零比较

  • 检测变化

  • 检测减少

  • 检测跌落负

  • 检测跌落非阳性

  • 增加检测

  • 检测上升非阴性

  • 检测上升阳性

  • 间隔测试

  • 区间动态检验

  • 逻辑运算符

  • 关系操作符

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

可与嵌入式编码器。

结果和建议措施

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

能力和限制

您可以:

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

  • 排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。

另请参阅

行动的结果

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

检查硬件实现

检查身份证mathworks.codegen.HWImplementation

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

描述

Simu金宝applink和金宝app仿真软件编码器软件需要两套目标规格。第一组描述最终的预期生产目标。第二组描述当前选择的目标。如果配置不匹配,代码生成器将创建额外的代码来模拟生产目标的行为。硬件属性的不一致或不规范可能导致目标硬件的代码生成效率低或不正确。

可与嵌入式编码器。

结果和建议措施

条件 建议的行动
硬件实现参数未设置为推荐值。

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

  • 字节次序ProdEndianess

  • 生产硬件有符号整数除法到四舍五入ProdIntDivRoundTo

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

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

  • 测试硬件有符号整数除法到四舍五入TargetIntDivRoundTo

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

另请参阅

运行时环境配置

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

检查身份证mathworks.codegen.SWEnvironmentSpec

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

描述

  • 金宝app对某些软件环境设置的支持可能导致低效的代码生成和非优化的结果。

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

  • Stateflow®具有弱Simulink I/O数据金宝app类型的图表会导致低效率的代码。

可与嵌入式编码器。

结果和建议措施

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

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

  • 金宝app支持:连续时间

  • 金宝app支持:非有限数

在“配置参数”对话框中清除金宝app支持非内联s函数

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

限制

在使用状态流程图时,需要获得状态流许可证。

另请参阅

使用Simulink输入和输出的强数据类型金宝app(Stateflow)

识别有问题的代码插装(数据I/O)

检查身份证mathworks.codegen.CodeInstrumentation

识别有问题的代码插装。

描述

  • 对生成的代码进行插装可能导致非最佳结果。

  • 测试点需要全局内存,并不是生产代码生成的最佳选择。

可与嵌入式编码器。

结果和建议措施

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

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

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

能力和限制

如果你有金宝app仿真软件检查许可证,您可以排除块和图表从此检查。

另请参阅

识别产生低效算法的块

检查身份证mathworks.codegen.UseRowMajorAlgorithm

识别产生低效算法的块。

描述

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

可与嵌入式编码器。

结果和建议措施

条件 建议的行动
配置参数阵列布局设置为列为主用于列主代码生成。 禁用配置参数使用针对行主数组布局优化的算法
配置参数阵列布局设置为用于生成行主代码。 选择配置参数使用针对行主数组布局优化的算法

能力和限制

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

另请参阅

检查MISRA C:2012的配置参数

检查身份证mathworks.misra.CodeGenSettings

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

描述

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

可与嵌入式编码器和金宝app仿真软件检查

结果和建议措施

条件 建议的行动
数学和数据类型
配置参数采用除法进行定点净斜率计算未设置为只对整数的倒数使用除法 采用除法进行定点净斜率计算只对整数的倒数使用除法

配置参数Inf或NaN块输出设置为没有一个错误而且金宝app支持非有限数设置为

配置参数Inf或NaN块输出设置为没有一个而且金宝app支持非有限数设置为

金宝app支持非有限数是:

  • ,设置Inf或NaN块输出警告

  • ,设置Inf或NaN块输出警告错误

配置参数模型验证块启用设置为使用本地设置让所有 模型验证块启用禁用所有
配置参数无定向事件广播设置为没有一个警告 无定向事件广播错误
配置参数换行溢出设置为没有一个 设置配置参数换行溢出警告错误
硬件实现
配置参数生产硬件有符号整数除法到四舍五入设置为未定义的 生产硬件有符号整数除法到四舍五入地板上
配置参数对有符号整数右移作为算术移位被选中。 清晰的对有符号整数右移作为算术移位
模拟目标
配置参数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的目标系统,配置参数金宝app支持连续时间被选中 清晰的金宝app支持连续时间
对于基于ert的目标系统,配置参数金宝app支持非内联s函数被选中 清晰的金宝app支持非内联s函数
配置参数系统生成的标识符设置为经典 系统生成的标识符缩短
配置参数系统目标文件设置为基于grt的目标。 系统目标文件到基于ert的目标。
配置参数对模型初始化使用动态内存分配当选中时代码接口封装设置为可重用的功能

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

请注意

仅在以下情况下选择代码接口封装设置为可重用的功能

行动的结果

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

请注意

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

参数子检查取决于用标记的参数的结果D在结果表中。当结果是D-Warning,当前值列在结果表中的状态不满足先决条件约束对于子检查。修改参数后,请重新执行检查。

请注意

一些子检查是特定于基于ert的系统的配置参数的。单击时,这些参数不会更新修改所有除非你把模型改成基于ert的系统。

能力和限制

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

另请参阅

检查MISRA C:2012不推荐的块

检查身份证mathworks.misra.Blk金宝appSupport

识别MISRA C:2012兼容代码生成不支持或不推荐的代金宝app码块。

描述

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

可与嵌入式编码器和金宝app仿真软件检查

结果和建议措施

条件 建议的行动

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

考虑Lookup Table块的其他插值和外推方法。

在模型或子系统中发现已废弃的查找表块。具体的块有:

  • 查找表

  • 查找表(二维)

考虑替换已弃用的Lookup Table块。
s函数生成器在模型或子系统中找到块。 考虑将S-Function Builder块替换为推荐用于生产的块。
从工作空间在模型或子系统中找到块 考虑用推荐用于生产的块替换From Workspace块。

字符串块在模型或子系统中找到。具体的块有:

考虑将String块替换为推荐用于生产的块。

能力和限制

您可以:

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

  • 分析库链接块的内容。

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

  • 排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。

编辑时间检查。编辑时检查支持此检查。金宝app

另请参阅

检查不支持的块名称金宝app

检查身份证mathworks.misra.BlockNames

识别包含以下内容的块名/

描述

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

可与嵌入式编码器和金宝app仿真软件检查

结果和建议措施

条件 建议的行动
块名包含/在模型或子系统中找到。 删除/来自块名。

能力和限制

  • 在库模型上运行。

  • 分析库链接块的内容。

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

  • 如果你有金宝app仿真软件检查许可,允许排除块和图表。

编辑时间检查。编辑时检查支持此检查。金宝app

另请参阅

检查分配块的使用情况

检查身份证mathworks.misra.AssignmentBlocks

识别赋值没有block参数的块如果没有分配任何输出元素,则执行该操作设置为错误警告

描述

此检查适用于赋值下的Simulink块库中可用的块金宝app金宝app>数学操作

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

可与嵌入式编码器和金宝app仿真软件检查

结果和建议措施

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

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

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

  • 警告,如果赋值block在一个Iterator子系统中。

能力和限制

  • 在库模型上运行。

  • 分析库链接块的内容。

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

  • 如果你有金宝app仿真软件检查许可,允许排除块和图表。

编辑时间检查。编辑时检查支持此检查。金宝app但是,不支持以下检查条件,因为编辑时检查无法确定是否金宝app赋值block在一个Iterator子系统中。

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

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

  • 警告,如果赋值block在一个Iterator子系统中。

另请参阅

检查没有默认大小写的开关大小写表达式

检查身份证mathworks.misra.SwitchDefault

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

描述

检查标志模型对象具有没有默认大小写的开关大小写表达式。

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

如果使用Polyspace对块进行了验证,则检查不会标记没有默认情况的块®注释。当你运行检查时,带理由的块表列出了块,没有默认情况下,有一个理由。

可与嵌入式编码器和金宝app仿真软件检查

结果和建议措施

条件 建议的行动

模型对象有一个没有默认大小写的开关大小写表达式。

开关情况块,考虑选择块参数显示默认情况显式指定默认大小写。

能力和限制

您可以:

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

  • 排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。

编辑时间检查。编辑时检查支持此检查。金宝app

另请参阅

检查AUTOSAR接收机接口是否缺少错误端口

检查身份证mathworks.misra.AutosarReceiverInterface

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

描述

遵循此检查的建议可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性。检查标志AUTOSAR接收器接口输入丢失错误端口。下表标识了当相应的错误端口缺失时由检查标记的接收机接口端口的AUTOSAR数据访问模式类型。

AUTOSAR数据访问模式类型 被Check标记?
ImplicitReceive 是的
ExplicitReceive 是的
QueuedExplicitReceive 没有
ErrorStatus 没有
ModeReceive 没有
IsUpdated 没有
EndToEndRead 是的
ExplicitReceiveByVal 没有
否则 没有

当使用Polyspace注释对错误端口进行校正时,检查不会标记缺失的错误端口。当你运行检查时,带理由的块表中列出了缺少的有理由的错误端口。

可与嵌入式编码器和金宝app仿真软件检查

结果和建议措施

条件 建议的行动

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

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

当数据访问方式为时,AUTOSAR接收机接口端口没有匹配错误端口ImplicitReceive,ExplicitReceive,或EndToEndRead

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

能力和限制

您可以:

  • 分析顶层/根级模型。

  • 排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。

另请参阅

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

检查身份证mathworks.misra.BusElementNames

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

描述

使用此检查可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性。检查标记Simulink的实例。金宝app总线对象名称作为Simulink。金宝app总线元素名称。

可与嵌入式编码器和金宝app仿真软件检查

结果和建议措施

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

另请参阅

  • MISRA C:2012,规则5.6

  • MISRA AC AGC,规则5.3

  • MISRA C指南

检查安全编码标准的配置参数

检查身份证mathworks.security.CodeGenSettings

确定可能影响符合安全编码标准的配置参数。

描述

遵循此检查的建议可以增加生成符合CERT C、CWE、ISO/IEC TS 17961安全编码标准的代码的可能性。

可与嵌入式编码器和金宝app仿真软件检查

结果和建议措施

条件 建议的行动
诊断

配置参数Inf或NaN块输出设置为没有一个错误而且金宝app支持非有限数设置为

配置参数Inf或NaN块输出设置为没有一个而且金宝app支持非有限数设置为

金宝app支持非有限数是:

  • ,设置Inf或NaN块输出警告

  • ,设置Inf或NaN块输出警告错误

配置参数模型验证块启用设置为使用本地设置让所有 模型验证块启用禁用所有
配置参数无定向事件广播设置为没有一个警告 无定向事件广播错误
配置参数换行溢出设置为没有一个 换行溢出警告错误
硬件实现
配置参数生产硬件有符号整数除法到四舍五入设置为未定义的 生产硬件有符号整数除法到四舍五入地板上
配置参数对有符号整数右移作为算术移位被选中。 清晰的对有符号整数右移作为算术移位
模拟目标
配置参数MATLAB函数的编译时递归极限是否设置为其他值0 MATLAB函数的编译时递归极限0
配置参数动态内存分配的MATLAB函数被选中。 清晰的动态内存分配的MATLAB函数
配置参数为MATLAB函数启用运行时递归被选中。 清晰的为MATLAB函数启用运行时递归
代码生成
配置参数代码替换库未设置为没有一个AUTOSAR 4.0 代码替换库没有一个AUTOSAR 4.0
配置参数外部模式被选中。 清晰的外部模式

配置参数包括评论清除。

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

请注意

仅在以下情况下选择代码接口封装设置为可重用的功能

行动的结果

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

请注意

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

参数子检查取决于用标记的参数的结果D在结果表中。当结果是D-Warning,当前值列在结果表中的状态不满足先决条件约束对于子检查。修改参数后,请重新执行检查。

请注意

一些子检查是特定于基于ert的系统的配置参数的。单击时,这些参数不会更新修改所有除非你把模型改成基于ert的系统。

另请参阅

安全编码标准

检查安全编码标准不推荐的块

检查身份证mathworks.security.Block金宝appSupport

识别不建议遵守安全编码标准的块。

描述

遵循此检查的建议可以增加生成符合CERT C、CWE、ISO/IEC TS 17961安全编码标准的代码的可能性。

可与嵌入式编码器和金宝app仿真软件检查

结果和建议措施

条件 建议的行动

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

考虑Lookup Table块的其他插值和外推方法。

在模型或子系统中发现已废弃的查找表块。具体的块有:

  • 查找表

  • 查找表(二维)

考虑替换已弃用的Lookup Table块。
s函数生成器在模型或子系统中找到块。 考虑将S-Function Builder块替换为推荐用于生产的块。
从工作空间在模型或子系统中找到块 考虑用推荐用于生产的块替换From Workspace块。

字符串块在模型或子系统中找到。具体的块有:

考虑将String块替换为推荐用于生产的块。

能力和限制

您可以:

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

  • 排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。

编辑时间检查。编辑时检查支持此检查。金宝app

另请参阅

识别有问题的子系统设置

检查身份证mathworks.codegen.QuestionableSubsysSetting

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

描述

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

可与嵌入式编码器。

结果和建议措施

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

能力和限制

如果你有金宝app仿真软件检查许可证,您可以排除块和图表从此检查。

另请参阅

检查行主代码生成不支持的块金宝app

检查身份证mathworks.codegen.RowMajorCodeGen金宝appSupport

检查行主代码生成不支持的块。金宝app

描述

该检查标识不支持行主代码生成的块。金宝app

可与嵌入式编码器。

结果和建议措施

条件 建议的行动
模型与行主数组布局中的外部数据进行接口。 设置配置参数阵列布局

能力和限制

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

另请参阅

识别带有未设置数组布局的TLC s -函数

检查身份证mathworks.codegen.RowMajorUnsetSFunction

识别带有未设置数组布局的TLC s -函数。

描述

这个检查确定了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)数据类型满足此条件。

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

能力和限制

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

  • 如果你有金宝app仿真软件检查许可证,您可以排除块和图表从此检查。

另请参阅

检查模型函数中是否缺少const限定符

检查身份证mathworks.misra.ModelFunctionInterface

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

描述

遵循此检查的建议可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性。check标记没有const限定符的输入数据指针。

可与嵌入式编码器和金宝app仿真软件检查

结果和建议措施

条件 建议的行动
没有为输入数据指针定义const限定符。 考虑向输入数据指针添加一个const限定符。

另请参阅

识别有问题的定点操作

检查身份证mathworks.codegen.QuestionableFxptOperations

确定可能导致非最佳结果的定点操作。

描述

效率较低的代码可能来自生成麻烦的乘除操作的块、昂贵的转换代码、查找表块的低效率以及昂贵的比较代码。

结果和建议措施

条件 建议的行动
整数除法生成的代码很大。 在“配置参数”对话框中,在硬件实现窗格中,设置生产硬件有符号整数除法到四舍五入参数设置为推荐值。
查找表向量的输入值间隔不均匀。 如果断点数据不可调,则将数据调整为偶数的2次幂间距。看到fixpt_look1_func_approx
在量子化时,输入值的查找表向量不是均匀间隔的,但它非常接近于均匀间隔。 如果断点数据不可调,则将数据调整为偶数的2次幂间距。看到fixpt_evenspace_cleanup
查找表向量的输入值是均匀间隔的,但间隔不是2的幂。 如果断点数据不可调,则将数据调整为偶数的2次幂间距。看到fixpt_look1_func_approx
对于预查找或n-D查找表块,索引检索法等距点.断点数据没有2次幂的间距。 如果断点数据不可调,则将数据调整为偶数的2次幂间距。否则,在块参数对话框中,指定一个不同的索引检索法避免计算量大的除法运算。
n-D查找表断点数据不是均匀间隔的索引检索法不是等距点 如果断点数据不可调,则将数据调整为偶数,间隔为2的幂,然后设置索引检索法等距点
n-D查找表断点数据均匀间隔索引检索法等距点.但是间隔不是2的幂。 如果断点数据不可调,则将数据调整为偶数的2次幂间距。看到fixpt_look1_func_approx
n-D查找表断点数据是均匀间隔的,但间隔不是2的幂。同时,索引检索法不是等距点 索引检索法等距点.此外,如果数据不可调,则考虑偶数的2次幂间距。
n-D查找表断点数据是均匀间隔的,间隔是2的幂。但是,索引检索法不是等距点 索引检索法等距点
块需要在生成的代码中进行多字操作。 调整操作输入的字长,使它们不超过处理器的最大字长。有关更多信息,请参见生成代码中的定点多字操作(定点设计师)
块需要繁琐的乘法。

限制乘法操作:

  • 所以乘积整数的大小不大于目标整数的大小。

  • 到推荐的尺寸。

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

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

的输入关系操作符块体有不同的坡度调节因子。 改变任意一个输入的比例。
的输出。关系操作符Block是常数。这可能会导致死代码被删除金宝app仿真软件编码器 检查您的模型设计,或者删除关系操作符阻塞或用常量替换它。

能力和限制

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

  • 如果你有金宝app仿真软件检查许可证,您可以排除块和图表从此检查。

另请参阅

识别生成昂贵舍入代码的块

检查身份证mathworks.codegen.ExpensiveSaturationRoundingCode

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

描述

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

可与嵌入式编码器。

结果和建议措施

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

能力和限制

如果你有金宝app仿真软件检查许可证,您可以排除块和图表从此检查。

另请参阅

检查有符号整数上的位操作

检查身份证mathworks.misra.CompliantCGIRConstructions

识别包含有符号整数金宝app按位操作的Simulink块。

描述

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

可与嵌入式编码器和金宝app仿真软件检查

请注意

如果模型包含状态流元素,则需要状态流许可。

结果和建议措施

条件 建议的行动
该模型包含对有符号整数进行逐位操作的块。 考虑使用无符号整数进行逐位操作。

能力和限制

您可以:

  • 检查假设为整个模型生成了代码。当代码由子系统构建或导出函数生成时,检查可能产生错误的结果。

  • 排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。

另请参阅

检查递归函数调用

检查身份证mathworks.misra.RecursionCompliance

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

描述

遵循此检查的建议可以增加为嵌入式应用程序生成符合MISRA C:2012的代码的可能性。检查标记有递归函数调用的图表。

可与嵌入式编码器和金宝app仿真软件检查

请注意

如果模型包含状态流元素,则需要状态流许可。

结果和建议措施

条件 建议的行动

Chart有一个递归函数调用。

删除递归函数调用。

另请参阅

检查浮点值上的相等和不相等操作

检查身份证mathworks.misra.CompareFloatEquality

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

描述

检查标记对浮点值进行相等或不相等操作的源。

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

如果使用Polyspace注释对浮点值进行了验证,则该检查不会标记具有相等或不相等操作的块。当你运行检查时,带理由的块该表列出具有相等或不相等操作的块。

可与嵌入式编码器和金宝app仿真软件检查

请注意

如果模型包含状态流元素,则需要状态流许可。

结果和建议措施

条件 建议的行动

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

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

能力和限制

您可以:

  • 排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。

另请参阅

检查整型字长

检查身份证mathworks.misra.IntegerWordLengths

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

描述

该检查标记字长超过硬件实现设置允许的比特数的整数。

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

可与嵌入式编码器和金宝app仿真软件检查

请注意

如果模型包含状态流元素,则需要状态流许可。

结果和建议措施

条件 建议的行动

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

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

能力和限制

您可以:

  • 排除块和图表从此检查,如果您有金宝app仿真软件检查许可证。

另请参阅

检查块名称

检查身份证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 _

结果和建议措施

条件 建议的行动

的块名称代码的角度窗格不符合指导方针。

更新块名称以符合指导方针。

能力和限制

  • 在库模型上运行。

  • 分析库链接块的内容。

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

  • 允许排除块和图表。

另请参阅