主要内容

嵌入式编码器检查

嵌入式编码器检查概述

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

另请参阅

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

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

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

描述

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

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

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

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

结果和建议的行动

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

能力和限制

您可以:

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

  • 分析库链接块的内容。

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

  • 排除块和图表,如果你有金宝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 选择Stateflow图表属性在Simulink I/O中使用强数据类型金宝app。选择属性后,可能需要调整模型中的数据类型。

限制

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

另请参阅

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

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

检查身份证mathworks.codegen.CodeInstrumentation

识别有问题的代码工具。

描述

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

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

可与嵌入式编码器。

结果和建议的行动

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

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

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

能力和限制

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

另请参阅

识别生成低效算法的块

检查身份证mathworks.codegen.UseRowMajorAlgorithm

识别生成低效算法的块。

描述

该检查识别基于模型的数组布局生成的代码中产生低效算法的块。

可与嵌入式编码器。

结果和建议的行动

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

能力和限制

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

另请参阅

查看MISRA C:2012的配置参数

检查身份证mathworks.misra.CodeGenSettings

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

描述

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

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

结果和建议的行动

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

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

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

金宝app支持非有限数是:

  • ,设置info NaN块输出警告

  • ,设置info 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仿真软件检查

结果和建议的行动

条件 建议的行动

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

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

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

  • 查找表

  • 查阅表(2d)

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

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

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

能力和限制

您可以:

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

  • 分析库链接块的内容。

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

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

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

另请参阅

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

检查身份证mathworks.misra.BlockNames

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

描述

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

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

结果和建议的行动

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

能力和限制

  • 运行在库模型上。

  • 分析库链接块的内容。

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

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

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

另请参阅

检查分配块的使用情况

检查身份证mathworks.misra.AssignmentBlocks

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

描述

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

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

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

结果和建议的行动

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

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

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

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

能力和限制

  • 运行在库模型上。

  • 分析库链接块的内容。

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

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

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

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

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

  • 警告,如果赋值块位于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接收机接口端口没有匹配的错误端口ImplicitReceiveExplicitReceive,或EndToEndRead

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

能力和限制

您可以:

  • 分析顶层/根级模型。

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

另请参阅

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

检查身份证mathworks.misra.BusElementNames

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

描述

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

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

结果和建议的行动

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

另请参阅

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

检查身份证mathworks.security.CodeGenSettings

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

描述

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

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

结果和建议的行动

条件 建议的行动
诊断

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

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

金宝app支持非有限数是:

  • ,设置info NaN块输出警告

  • ,设置info 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仿真软件检查

结果和建议的行动

条件 建议的行动

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

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

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

  • 查找表

  • 查阅表(2d)

考虑替换已弃用的查找表块。
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)数据类型满足此条件。

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

能力和限制

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

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

另请参阅

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

检查身份证mathworks.misra.ModelFunctionInterface

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

描述

遵循此检查的建议增加了为嵌入式应用程序生成MISRA C:2012兼容代码的可能性。检查标志输入没有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仿真软件检查

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

结果和建议的行动

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

能力和限制

您可以:

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

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

另请参阅

检查递归函数调用

检查身份证mathworks.misra.RecursionCompliance

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

描述

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

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

此检查需要statflow许可证。

结果和建议的行动

条件 建议的行动

图表有一个递归函数调用。

删除递归函数调用。

另请参阅

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

检查身份证mathworks.misra.CompareFloatEquality

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

描述

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

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

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

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

此检查需要statflow许可证。

结果和建议的行动

条件 建议的行动

模型对象对浮点值进行相等或不等操作。

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

能力和限制

您可以:

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

另请参阅

检查整型字长

检查身份证mathworks.misra.IntegerWordLengths

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

描述

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

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

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

结果和建议的行动

条件 建议的行动

模型对象包含与硬件实现设置不兼容的整型字长。

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

能力和限制

您可以:

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

另请参阅

检查块名称

检查身份证mathworks.codegen.BlockNames

中的块名称代码的角度窗格中包含无效字符。

描述

类中的块名称进行编辑时检查代码的角度窗格。检查报告块名称中的无效字符,但以下字符除外:

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

  • 虚拟子系统

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

形式

名字

  • 不以数字开头吗

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

  • 不使用双字节字符

  • 允许回车

允许的字符

名字

A, b, c, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I

A, b, c, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I, I

0 1 2 3 4 5 6 7 8 9 _

结果和建议的行动

条件 建议的行动

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

更新区块名称以符合指南。

能力和限制

  • 运行在库模型上。

  • 分析库链接块的内容。

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

  • 允许排除方块和图表。

另请参阅