主要内容

配置运行时环境的选择

当你使用仿真软件金宝app®软件创建和执行模型和使用代码生成器生成C或c++代码,考虑你的配置对于三个运行环境:

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

  • 生产硬件的运行时环境中部署应用程序投入生产。

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

一个运行时环境可以在多个服务能力,但仍在概念上不同的运行时环境。通常,MATLAB开发计算机测试硬件。通常,不同于生产硬件,和力量上都不如,MATLAB开发或测试硬件。许多类型的生产硬件可以做多运行一个可执行文件下载。

提供生产硬件的信息板和编译器使用时:

  • 你用Simuli金宝appnk仿真软件来模拟一个模型你后生成代码

  • 你使用代码生成器生成的代码部署生产硬件

软件使用,编译器信息得到bit-true协议整数和定点运算的结果进行仿真和代码生成的生产硬件。代码生成器使用这些信息来创建执行的代码以最大的效率。

当您生成代码进行测试测试硬件,提供测试硬件的信息,编译器使用。代码生成器使用这些信息来创建代码提供bit-true结果之间的协议:

  • 整数和定点操作进行模拟

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

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

可以实现bit-true协议结果即使生产和测试硬件是不同的。在C标准不完全定义行为,两种类型的编译器的硬件可以使用不同的默认值。

配置生产和测试硬件

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

通过选择配置生产硬件配置参数>硬件实现。默认情况下,硬件实现面板列表硬件板,设备供应商,设备类型只有参数字段。除非你已经安装了硬件支持包,金宝app硬件板列表值没有一个确定通过代码生成系统目标文件,有硬件支持包金宝app。在安装硬件支持包,还包括相应的硬件板名称列表。金宝app如果你选择了一个硬件板名称,参数,董事会出现。设置设备的细节,如数据大小和字节排序,点击设备详细信息

配置测试硬件配置参数>硬件实现>先进的参数窗格。使参数配置测试硬件细节,禁用配置参数>硬件实现>先进的参数>测试硬件是一样的生产硬件参数。代码生成的测试硬件环境中执行指定的测试硬件参数。代码的行为,就好像它是在环境中执行指定生产硬件。有关更多信息,请参见测试硬件方面的考虑

默认值和属性初始值的出现硬件实现面板时:

  • 你指定一个系统目标文件代码生成窗格。

  • 系统目标文件指定一个默认的微处理器及其硬件特性。

你不能改变参数,只有一个可能值。参数有多个可能的价值提供了一个有效的值的列表。如果你手动指定硬件属性硬件实现窗格中,验证这些值与系统目标文件一致。否则,生成的代码可以编译或执行失败,或可以执行,但产生不正确的结果。

硬件实现参数描述硬件和软件MATLAB编译器属性。代码生成器使用的信息产生代码的运行时环境尽可能高效地运行。生成的代码给bit-true协议整数和定点操作在模拟的结果,生产代码和测试代码。

具体参数的详细信息,请参阅硬件实现面板。看到的一个例子硬件实现面板功能,请参阅rtwdemo_targetsettings模型的例子。相关配置硬件实现的详细信息,请参见:

指定硬件板

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

硬件实现目标文件选择面板标识系统配置参数>代码生成

配置测试硬件,使用配置参数>硬件实现>先进的参数窗格。

使参数配置测试硬件细节,集ProdEqTarget

指定的硬件板的方法

如果 选择

菜单包括硬件板的名称,你想使用。

硬件板的名称。

如果你选择了一个硬件板名称,参数,董事会出现。

菜单不包括硬件板的名称,你想使用。

有硬件支持包金宝app

这个值打开支持包安装程序。金宝app你想要安装的支持包。金宝app在您安装的支持包之后,菜单包括相关硬件板名称金宝app。

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

没有一个

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

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

确定通过代码生成系统目标文件

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

指定设备供应商

指定供应商的微处理器的硬件设备,使用设备供应商参数。你的选择决定了可用的微处理器设备类型菜单。如果供应商的名字没有出现,选择定制的处理器。然后,使用设备类型参数指定的微处理器。

指定设备类型

指定的微处理器的名字为你列出的设备支持金宝app设备供应商选择,使用设备类型参数。如果微处理器没有出现在菜单,改变设备供应商定制的处理器。然后,指定设备细节定制设备。

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

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

的比特数参数描述本族词大小微处理器和长度的字符,,int,数据。对于代码生成成功:

  • 钻头的长度必须是这样字符< =< =int< =

  • 钻头的长度必须是8的倍数,最多32。

  • 钻头的长度为数据必须不少于32。

rtwtypes.h文件定义了整数类型名称。您提供的值必须与定义的字大小一致的编译器h头文件。代码生成器将其整数类型名称映射到相应的仿真软件整数类型名称。金宝app

如果没有ANSI®C类型匹配的词大小可用,但更大的ANSI C类型是可用的,代码生成器使用更大的类型int8_T,uint8_T,int16_T,uint16_T,int32_T,uint32_T。当代码生成器使用更大的类型,产生的记录值(例如,MAT-file日志)可以具有不同的数据类型比模拟记录值。

应用程序可以使用一个整数数据的长度从1(无符号)或2(签署)位32位。如果整数长度匹配一个可用的类型的长度,类型的代码生成器使用。如果没有匹配的类型,代码生成器使用最小的可用的类型,可以保存数据,生成代码,不使用不必要的高阶位。例如,在硬件支持8位、16位、32位的整数,指定为24位信号金宝app,实现数据作为代码生成器int32_Tuint32_T

代码使用模拟整数数据不是最大限度地有效。这段代码可以是有用的在应用程序开发过程中模拟可用整数长度只有在生产硬件。仿真不影响执行的结果。

在代码生成过程中,软件的兼容性检查模型数据类型的数据类型指定为生产硬件。

  • 如果没有指定生产硬件的长度是32位的整数,该软件生成一个错误。

  • 如果模型中使用的数据类型的长度小于可用整数长度生产硬件,软件生成一个警告。

代码生成器的整数类型映射到仿真软件金宝app

代码生成器整数类型 金宝app仿真软件整数类型
boolean_T 布尔
int8_T int8
uint8_T uint8
int16_T int16
uint16_T uint16
int32_T int32
uint32_T uint32

为设备设置字节次序

字节次序参数指定是否使用的硬件大端字节序(首先最重要的字节)小端字节(最低有效字节第一)字节次序。如果离开了未指明的,代码生成器生成的代码,确定硬件的字节顺序。这个设置是最有效的。

集商舍入行为签署了整数的除法

ANSI C不完全定义商舍入方法编译器使用当一个带符号整数除以另一个。所以,是随具体的行为。如果两个整数是积极的,或者两者都是消极的,商必须舍去。如果整数是积极的,另一个是消极的,商可以向上或向下。

带符号整数除法轮参数指示代码生成器如何编译器轮带符号整数划分的结果。提供这个信息不会改变编译器的操作。它只描述行为代码生成器,它使用信息来优化代码生成的整数除法签署。参数值:

  • ——如果两个整数之间的商是,编译器选择接近零的整数结果。

  • 地板上——如果两个整数之间的商是,编译器选择的整数接近负无穷。

  • 未定义的——如果地板上不描述编译器行为或者行为是未知的,选择这个值。

避免选择未定义的。当代码生成器不知道编译器的签署了整数除法的舍入行为,模型构建生成额外的代码。

编译器商根据这些值舍入行为各不相同。

您可以获得签署的编译器实现整数除法的舍入编译器文档。如果文件不可用,你可以通过实验确定这种行为。

例子商舍入为零,地板,定义

N D 理想的N / D 地板上 未定义的

33

4

8.25

8

8

8

-33年

4

-8.25

8

9

89

33

4

-8.25

8

9

89

-33年

4

8.25

8

8

89

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

ANSI C没有定义正确的行为转变为编译器负整数。所以,是随具体的行为。的转变对一个带符号整数算术的转变选项指示代码生成器如何编译器实现对变化负整数。提供这个信息不会改变编译器的操作。它只描述行为代码生成器,它使用这些信息来优化代码生成的算法正确的转变。

如果C编译器实现了一个带符号整数正确的转变作为一个算术右移,选择的选项。否则,清晰的选择。算术右移了位空出的转变与最重要的价值,这表明在两个补数数量的标志符号。默认选中的选项。如果你的编译器处理转变为算术转变,这个设置是首选。

  • 当您选择该选项,代码生成器产生高效的代码时签署的Simulink仿真模型上执行算术转换整数。金宝app

  • 选择清除时,代码生成器产生完全便携但低效的代码来实现对算术的转变。

您可以获得算术右转变编译器的编译器实现文档。如果文件不可用,你可以通过实验确定这种行为。

更新发布14硬件配置

如果你的模型创建发布14和之前你没有更新模型,当前执行硬件设备配置参数(TargetUnknown)的值是“上”默认情况下。

更新您的模型,清晰的盒子配置参数>硬件实现>先进的参数>测试硬件>配置测试硬件再或者在命令窗口中,类型:

c = getActiveConfigSet ('your_model_name”);set_param (cs,“TargetUnknown”,“关闭”);

更新您的模型:

  • 使测试硬件是一样的生产硬件参数(ProdEqTarget),设置参数“上”

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

完成更新:

  1. 明确的盒子配置参数>硬件实现>先进的参数>测试硬件>测试硬件是一样的生产硬件。申请这一步只有在您的生产和测试硬件是不同的。

  2. 设置参数配置参数>硬件实现>先进的参数以匹配您的生产和测试系统。

  3. 保存模型。

硬件生产注意事项

当您配置生产硬件,考虑这些点:

  • 生产硬件可以有文字大小和其他硬件特征不同于MATLAB开发计算机。你可以在硬件原型代码不同于生产硬件或MATLAB开发的计算机。当生产代码,代码生成器占这些差异。

  • 仿真软件金宝app产品使用的一些信息在生产硬件配置。这些信息使模拟没有代码生成提供相同的结果作为执行生成的代码。例如,结果可以检测错误条件,出现在生产硬件,如硬件溢出。

  • 代码生成器生成的代码提供了与模型结果bit-true协议整数和定点操作。金宝app生成的代码,模拟无法有效数据长度小于没有仿真。模拟与仿真软件不影响bit-true协议为整数和定点的结果。金宝app

  • 如果你改变运行时环境在应用程序开发过程中,生成或重新生成代码之前,重新配置硬件实现新的运行时环境的参数。当代码执行的硬件没有生成,bit-true协议并不总是实现整数和定点操作结果的仿真、生产代码和测试代码。

  • 要编译代码生成自模型,使用整数舍入模式参数模型块来模拟的舍入行为意愿的C编译器。此设置出现在信号的属性窗格中块的参数对话框中可以执行签署了整数运算,如产品,矩阵相乘一天的查找表块。

  • 对于大多数街区,的价值整数舍入模式完全定义了舍入行为。支持定点数据块和最简单的舍入模式金宝app的价值带符号整数除法轮也会影响舍入。有关详细信息,请参见精度(定点设计师)

  • 当模型包含模型块,配置模型,他们引用使用相同的硬件设置。

测试硬件方面的考虑

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

如果测试和生产环境不同,您可以生成代码,测试硬件上运行,就好像它是运行在生产硬件:

  1. 使测试硬件参数,明确的盒子配置参数>硬件实现>先进的参数>测试硬件>测试硬件是一样的生产硬件。或者,在命令窗口类型:

    c = getActiveConfigSet ('your_model_name”);set_param (cs,“ProdEqTarget”,“关闭”);
  2. 指定设备类型的细节通过测试硬件(目标*)参数。

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

参数只有一个可能的值不能被改变。如果你修改硬件属性,检查他们的价值观是否与系统一致的目标文件。否则,生成的代码可以编译或执行失败,或可以执行,但产生不正确的结果。

例如生产影响正常模式模拟的硬件设置

改变一些生产硬件设置,例如,ProdLongLongModeProdIntDivRoundTo,会影响正常模式模拟结果。下面的例子模拟加法器与四个输入。在第一个模拟,ProdLongLongMode是禁用的。在第二个仿真,ProdLongLongMode启用。在模拟输出的情节,你观察时间步的小输出值之间的差异范围125 - 175。

模型=“hwSettingEffect”;new_system(模型)open_system(模型)%建立加法器pos = (140 140 200 340);add_block (“金宝app数学仿真软件/操作/添加”,(模型' / sum_int32 '),“输入”,“+ + + +”,“SaturateOnIntegerOverflow”,“上”,“位置”,pos) pos = (75 155 105 175);add_block (“内置/尺寸。”(模型' / in '),“位置”pos) set_param([模型' / in '),“OutDataTypeStr”,“int32”,“PortDimensions”,' 1 ',“SampleTime”,' 1 ');add_line(模型,“In1/1”,“sum_int32/1”)pos = (75 205 105 225);add_block (“内置/尺寸。”(模型“/ In2”),“位置”pos) set_param([模型“/ In2”),“OutDataTypeStr”,“int32”,“PortDimensions”,' 1 ',“SampleTime”,' 1 ');add_line(模型,“In2/1”,“sum_int32/2”)pos = (75 255 105 275);add_block (“内置/尺寸。”(模型' / In3 '),“位置”pos) set_param([模型' / In3 '),“OutDataTypeStr”,“int32”,“PortDimensions”,' 1 ',“SampleTime”,' 1 ');add_line(模型,“In3/1”,“sum_int32/3”)pos = (75 305 105 325);add_block (“内置/尺寸。”(模型' / In4 '),“位置”pos) set_param([模型' / In4 '),“OutDataTypeStr”,“int32”,“PortDimensions”,' 1 ',“SampleTime”,' 1 ');add_line(模型,“In4/1”,“sum_int32/4”)pos = (275 230 305 250);add_block (“内置/输出港”(模型/着干活的),“位置”、pos) add_line(模型,“sum_int32/1”,“Out1/1”)%指定输入数据t = 0:200;peakValue = 1.5 e9;in1 = peakValue * sin (t * 2 *π/ 100);in2 = peakValue * cos (t * 2 *π/ 70);in3 = -peakValue * sin (t * 2 *π/ 40);in4 = -peakValue * cos (t * 2 *π/ 30);设置= Si金宝appmulink.SimulationData.Dataset;设置= set.addElement (1, timeseries (int32 (in), t,“名字”,“sig1”));设置= set.addElement (timeseries (int32 (in2), t,“名字”,“sig2”));设置= set.addElement (3, timeseries (int32 (in3), t,“名字”,“sig3”));设置= set.addElement (4, timeseries (int32 (in4), t,“名字”,“sig4”));set_param(模型,“LoadExternalInput”,“上”);set_param(模型,“ExternalInput”,“设置”);set_param(模型,“StopTime”,“50”);%禁用生产硬件设置和运行模拟set_param(模型,“ProdLongLongMode”,“关闭”);(~,~,y1) = sim(模型,200);%启用生产硬件设置和运行第二个模拟set_param(模型,“ProdLongLongMode”,“上”);(~,~,y2) = sim(模型,200);情节((y1 y2));图(gcf);

行为的差异是由于蓄电池数据类型的总和块。的蓄电池数据类型块参数设置继承:继承通过内部规则。对于这个示例,结果蓄电池数据类型是64位宽的使用C很久很久数据类型是启用的。否则,它是32位宽。根据输入值和块,32位累加器可以当64位累加器不饱和。因此,正常模式行为可以依赖ProdLongLongMode设置。在这两种情况下,正常模式行为和生产硬件行为与位相匹配。

相关的话题