配置运行时环境选项

您所在的位置:网站首页 matlab要求电脑配置 配置运行时环境选项

配置运行时环境选项

2024-01-28 20:03| 来源: 网络整理| 查看: 265

配置运行时环境选项

当您使用 Simulink® 软件创建和执行模型并使用代码生成器生成 C 或 C++ 代码时,请针对最多三种运行时环境考虑您的配置:

在应用程序开发期间运行 MathWorks® 软件的 MATLAB® 开发计算机运行时环境。

生产硬件运行时环境,在该环境中部署用于生产的应用程序。

测试硬件运行时环境,在该环境中,您在部署之前测试正在开发的应用程序。

一个运行时环境可以提供多种功能,但各运行时环境在概念上仍然不同。通常,MATLAB 开发计算机是测试硬件。通常情况下,生产硬件与 MATLAB 开发或测试硬件不同,在功能上也不如后者强大。许多类型的生产硬件只能运行下载的可执行文件。

在下列情况下,会提供有关生产硬件板和配套使用的编译器的信息:

使用 Simulink 软件来仿真稍后要生成代码的模型

使用代码生成器生成用于在生产硬件上部署的代码

该软件使用硬件板和编译器信息来获得在仿真中和为生产硬件生成的代码中执行的整数和定点运算结果的位真一致性。代码生成器使用这些信息来创建以最高效率执行的代码。

生成用于在测试硬件上进行测试的代码时,请提供有关您使用的测试硬件板和编译器的信息。代码生成器使用此信息来创建代码,以提供以下结果之间的位真一致性:

在仿真中执行的整数和定点运算

在生产硬件上运行的生成代码

在测试硬件上运行的生成代码

即使生产硬件和测试硬件不同,您也可以获得结果的位真一致性。在 C 标准没有完全定义行为的情况下,这两种硬件的编译器可以使用不同的默认值。

配置生产和测试硬件

您可以为特定硬件板及其设备类型指定模型仿真或代码生成。例如,您可以设置数据大小、字节顺序和编译器行为,如整数舍入。您可以配置:

您使用的生产硬件和配套的编译器。这些信息会影响仿真和代码生成。请参阅影响普通模式仿真的生产硬件设置示例。

您使用的测试硬件和配套的编译器。这些信息仅影响代码生成。

通过选择配置参数 > 硬件实现来配置生产硬件。默认情况下,“硬件实现”窗格仅列出硬件板、设备供应商和设备类型参数字段。除非您已安装硬件支持包,否则硬件板会列出值无或由代码生成系统目标文件确定和获取硬件支持包。安装硬件支持包后,该列表还包含对应的硬件板名称。如果您选择一个硬件板名称,则显示该硬件板的参数。要设置设备详细信息(如数据大小和字节顺序),请点击设备详细信息。

在配置参数 > 硬件实现 > 高级参数窗格中配置测试硬件。要启用配置测试硬件详细信息的参数,请禁用配置参数 > 硬件实现 > 高级参数 > 测试硬件与生产硬件相同参数。为测试硬件生成的代码在由测试硬件参数指定的环境中执行。代码的行为就好像它在为生产硬件指定的环境中执行一样。有关详细信息,请参阅测试硬件注意事项。

在以下情况下,默认值和属性在硬件实现窗格中显示为初始值:

您在代码生成窗格中指定系统目标文件。

系统目标文件指定默认微处理器及其硬件属性。

您不能更改只有一个可能值的参数。具有多个可能值的参数会提供有效值的列表。如果您在硬件实现窗格中手动指定硬件属性,请确认这些值与系统目标文件一致。否则,生成的代码可能无法编译或执行,或者可能会执行但产生不正确的结果。

硬件实现参数向 MATLAB 软件描述硬件和编译器属性。代码生成器使用这些信息为运行时环境生成尽可能高效运行的代码。生成的代码为仿真、生产代码和测试代码中的整数和定点运算的结果提供位真一致性。

有关特定参数的详细信息,请参阅“硬件实现”窗格。要查看硬件实现窗格功能的示例,请打开 TargetSettings 示例模型。

openExample("TargetSettings");

有关配置硬件实现的详细信息,请参阅:

指定硬件板

指定设备供应商

指定设备类型

设置设备数据类型的位长度

设置设备的字节顺序

设置有符号整数除法的商舍入行为

设置有符号整数的算术右移行为

更新版本 14 的硬件配置

指定硬件板

指定运行从您的模型生成的代码的硬件板。为配置参数 > 硬件实现 > 硬件板选择值。

“硬件实现”窗格标识在配置参数 > 代码生成上选择的系统目标文件。

要配置测试硬件,请使用配置参数 > 硬件实现 > 高级参数窗格。

要启用配置测试硬件详细信息的参数,请将 ProdEqTarget 设置为 off。

如何指定硬件板

如果选择

菜单包含您要使用的硬件板的名称。

该硬件板的名称。

如果您选择一个硬件板名称,则显示该硬件板的参数。

菜单不包含要使用的硬件板的名称。

获取硬件支持包。

该值将打开支持包安装程序。安装所需的支持包。安装支持包后,菜单包括相关硬件板的名称。

模型配置使用系统目标文件 ert.tlc、realtime.tlc 或 autosar.tlc。

无。

没有为硬件实现指定硬件板。

模型配置不使用系统目标文件 ert.tlc、realtime.tlc 或 autosar.tlc。

由代码生成系统目标文件确定。

代码生成器使用指定的系统目标文件来确定硬件实现。

指定设备供应商

要指定硬件设备的微处理器供应商,请使用设备供应商参数。您的选择将决定设备类型菜单中的可用微处理器。如果没有显示供应商名称,请选择自定义处理器。然后,使用设备类型参数指定微处理器。

有关设备供应商和设备类型值的完整列表,请参阅Device vendor 和Device type。

要将设备供应商和设备类型值添加到硬件实现窗格中显示的默认设置,请参阅注册新硬件设备。

指定设备类型

要从设备供应商选项中列出的受支持设备中指定微处理器名称,请使用设备类型参数。如果微处理器未出现在菜单中,请将设备供应商更改为自定义处理器。然后,为您的自定义设备指定设备详细信息。

如果您选择系统目标文件为其指定默认硬件属性的设备类型,则属性将显示为初始值。您不能更改只具有一个可能选项的参数的值。具有多个可能值的参数会提供一个菜单。为您的硬件选择值。

设置设备数据类型的位长度

位数参数描述微处理器的原生字长以及 char、short、int 和 long 数据的位长度。要使代码生成成功,需要满足以下条件:

位长度必须是:char 测试硬件 > 配置测试硬件复选框。或者在命令行窗口中键入:

cs = getActiveConfigSet('your_model_name'); set_param(cs,'TargetUnknown','off');

对模型的这一更新将:

启用测试硬件与生产硬件相同 参数 (ProdEqTarget),将该参数设置为 'on'。

将生产设备供应商和类型参数 (ProdHWDeviceType) 的值复制到测试设备供应商和类型参数 (TargetHWDeviceType)。

要完成更新,请执行下列操作:

清除配置参数 > 硬件实现 > 高级参数 > 测试硬件 > 测试硬件与生产硬件相同复选框。仅在您的生产硬件和测试硬件不同时才应用此步骤。

在配置参数 > 硬件实现 > 高级参数中设置参数,以匹配您的生产和测试系统。

保存模型。

生产硬件注意事项

在配置生产硬件时,请考虑以下几点:

生产硬件可以具有不同于 MATLAB 开发计算机的字长和其他硬件特性。您可以在不同于生产硬件或 MATLAB 开发计算机的硬件上对代码进行原型构建。在生成代码时,代码生成器会解决这些差异。

Simulink 产品会使用生产硬件配置中的一些信息。使用这些信息,无需生成代码即可执行仿真,从而得到与执行生成的代码相同的结果。例如,通过这些结果可以检测生产硬件上出现的错误情况,例如硬件溢出。

代码生成器生成的代码提供与整数和定点运算的 Simulink 结果的位真一致性。模拟不可用数据长度的生成代码的运行效率低于非模拟情况。对于整数和定点结果,模拟不影响与 Simulink 的位真一致性。

如果在应用程序开发期间更改运行时环境,则在生成或重新生成代码之前,请重新配置新运行时环境的硬件实现参数。如果执行代码所在的硬件并非生成该代码的硬件,则对于仿真、生产代码和测试代码中的整数和定点运算的结果,并不能始终实现位真一致性。

要编译从模型生成的代码,请使用模型模块上的整数舍入模式参数来仿真您要使用的 C 编译器的舍入行为。此设置显示在可对有符号整数执行算术运算的模块(如 Product, Matrix Multiply 和 n-D Lookup Table 模块)的参数对话框中的信号属性窗格上。

对于大多数模块来说,整数舍入模式的值完全定义舍入行为。对于支持定点数据和最简单舍入模式的模块,有符号整数除法舍入方式的值也会影响舍入。有关详细信息,请参阅精度 (Fixed-Point Designer)。

当模型包含 Model 模块时,请将它们引用的模型配置为使用相同的硬件设置。

测试硬件注意事项

默认情况下,测试硬件配置与生产硬件的配置相同。您可以使用生成的代码在与生产环境相同的环境中进行测试。

如果测试环境和生产环境不同,您可以通过以下设置,使生成的代码在测试硬件上运行时就像在生产硬件上运行一样:

要启用测试硬件参数,请清除配置参数 > 硬件实现 > 高级参数 > 测试硬件 > 测试硬件与生产硬件相同复选框。或者,在命令行窗口中键入:

cs = getActiveConfigSet('your_model_name'); set_param(cs,'ProdEqTarget','off');

通过测试硬件 (Target*) 参数指定设备类型的详细信息。

如果选择指定默认微处理器及其硬件属性的系统目标文件,则这些默认值和属性将显示为初始值。

只有一个可能值的参数不能更改。如果修改硬件属性,请检查其值是否与系统目标文件一致。否则,生成的代码可能无法编译或执行,或者可能会执行但产生不正确的结果。

影响普通模式仿真的生产硬件设置示例

更改某些生产硬件设置(例如 ProdLongLongMode 和 ProdIntDivRoundTo)会影响普通模式的仿真结果。以下示例仿真具有四个输入的加法器。在第一次仿真中,ProdLongLongMode 处于禁用状态。在第二次仿真中,ProdLongLongMode 处于启用状态。在仿真输出图中,您会发现时间步范围 125-175 之间的输出值之间存在一些小的差异。

创建加法器模型。

model = 'hwSettingEffect'; new_system(model) open_system(model) pos = [140 140 200 340]; add_block('simulink/Math Operations/Add', ... [model '/sum_int32'], ... 'Inputs','++++', ... 'SaturateOnIntegerOverflow', ... 'on', ... 'Position', ... pos) pos = [75 155 105 175]; add_block('built-in/Inport',[model '/In1'],'Position',pos) set_param([model '/In1'], 'OutDataTypeStr', ... 'int32','PortDimensions','1','SampleTime','1'); add_line(model, 'In1/1','sum_int32/1') pos = [75 205 105 225]; add_block('built-in/Inport',[model '/In2'],'Position',pos) set_param([model '/In2'], 'OutDataTypeStr', ... 'int32','PortDimensions','1','SampleTime','1'); add_line(model, 'In2/1','sum_int32/2') pos = [75 255 105 275]; add_block('built-in/Inport',[model '/In3'],'Position',pos) set_param([model '/In3'], 'OutDataTypeStr', ... 'int32','PortDimensions','1','SampleTime','1'); add_line(model, 'In3/1','sum_int32/3') pos = [75 305 105 325]; add_block('built-in/Inport',[model '/In4'],'Position',pos) set_param([model '/In4'], 'OutDataTypeStr', ... 'int32','PortDimensions','1','SampleTime','1'); add_line(model, 'In4/1','sum_int32/4') pos = [275 230 305 250]; add_block('built-in/Outport',[model '/Out1'],'Position',pos) add_line(model, 'sum_int32/1','Out1/1')

指定输入数据、仿真时间和仿真输出格式。

t = 0:200; peakValue = 1.5e9; in1 = peakValue * sin(t*2*pi/100); in2 = peakValue * cos(t*2*pi/70); in3 = -peakValue * sin(t*2*pi/40); in4 = -peakValue * cos(t*2*pi/30); set = Simulink.SimulationData.Dataset; set = set.addElement(1, timeseries(int32(in1),t,'Name','sig1')); set = set.addElement(2, timeseries(int32(in2),t,'Name','sig2')); set = set.addElement(3, timeseries(int32(in3),t,'Name','sig3')); set = set.addElement(4, timeseries(int32(in4),t,'Name','sig4')); set_param(model, 'LoadExternalInput', 'on'); set_param(model, 'ExternalInput', 'set'); set_param(model, 'StopTime', '50'); set_param(model, 'ReturnWorkspaceOutputs', 'off');

禁用生产硬件设置并运行第一次仿真。

set_param(model, 'ProdLongLongMode', 'off'); [~, ~, y1] = sim(model, 200);

启用生产硬件设置并运行第二次仿真。

set_param(model, 'ProdLongLongMode', 'on'); [~, ~, y2] = sim(model, 200);

绘制仿真输出。

plot([y1 y2]); figure(gcf);

该行为差异归因于 Sum 模块中的累加器数据类型。累加器数据类型模块参数设置为 继承:通过内部规则继承。对于此示例,如果启用 C long long 数据类型,则生成的累加器数据类型的宽度为 64 位。否则,它的宽度为 32 位。视 Sum 模块的输入值不同,在 64 位累加器未进行饱和处理时,32 位累加器可能会进行饱和处理。因此,普通模式行为可能取决于 ProdLongLongMode 设置。在这两种情况下,普通模式行为和生产硬件行为会按位匹配。

相关主题“硬件实现”窗格Device vendorDevice type精度 (Fixed-Point Designer)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3