主要内容

注册新硬件设备

硬件实现窗格中,您可以指定参数,描述目标硬件和MATLAB编译器属性®软件,使您能够:

  • 观察目标硬件在模型模拟。

  • 为生产或测试硬件生成优化的代码。

  • 在目标硬件上直接测试或部署生成的代码。

硬件实现面板支持一金宝app系列目标硬件。扩展范围,注册新的硬件设备使用target.Processortarget.LanguageImplementation类。

为新设备指定硬件实现

注册一个新的硬件设备:

  1. 创建一个target.Processor对象为新硬件设备。

    myProc = target.create (“处理器”,“名字”,“MyProcessor”,“制造商”,“MyManufacturer”);

  2. 创建一个target.LanguageImplementation对象语言实现细节。

    myLanguageImplementation = target.create (“LanguageImplementation”,“名字”,“MyProcessorImplementation”);

  3. 指定语言的实现细节。

    myLanguageImplementation。Endianess = target.Endianess.Little;myLanguageImplementation。AtomicIntegerSize = 64;myLanguageImplementation。AtomicFloatSize = 64;myLanguageImplementation。WordSize = 64;myLanguageImplementation.DataTypes.Char。大小= 8;myLanguageImplementation.DataTypes.Short。大小= 16;myLanguageImplementation.DataTypes.Int。大小= 32;myLanguageImplementation.DataTypes.Long。大小= 64;myLanguageImplementation.DataTypes.LongLong。Is金宝appSupported = true; myLanguageImplementation.DataTypes.LongLong.Size = 64; myLanguageImplementation.DataTypes.Float.Size = 32; myLanguageImplementation.DataTypes.Double.Size = 64; myLanguageImplementation.DataTypes.Pointer.Size = 32; myLanguageImplementation.DataTypes.SizeT.Size = 64; myLanguageImplementation.DataTypes.PtrDiffT.Size = 64;

  4. 副语言实现与硬件设备。

    myProc。LanguageImplementations = myLanguageImplementation;

  5. 添加target.Processor对象内部数据库。

    objectsAdded = target.add (myProc);

硬件实现窗格中,您现在可以设置设备供应商设备类型MyManufacturerMyProcessor分别。

指定始终如一的硬件实现MATLAB会话

默认情况下,当你把目标对象添加到内部数据库,目标数据仅为当前可用MATLAB会话。您可以指定目标在MATLAB会话数据持久性。

  1. 创建一个target.Processor对象的一个新的硬件设备。

    myProc = target.create (“处理器”,“名字”,“MyProcessor”,“制造商”,“MyManufacturer”);existingImplementation = target.get (“LanguageImplementation”,“胳膊Compatible-ARM皮层”);myProc。LanguageImplementations = existingImplementation;

  2. 添加target.Processor对象内部数据库和指定目标数据的持久性在MATLAB会话。

    objectsAdded = target.add (myProc,“UserInstall”,真正的);
    如果你随后在MATLAB工作区中修改对象然后想更新对象在内部数据库中,您可以使用target.update函数。

  3. 你可以从内部数据库中删除对象。

    target.remove (objectsAdded);
    从内部数据库,删除多个持久化对象使用target.clear函数。

创建硬件实现通过修改现有的实现

如果现有的硬件实现包含大部分的值,你想要在新的硬件实现中,您可以快速创建新的实现通过创建和修改现有实现的一个副本。

  1. 创建一个target.Processor对象为新硬件设备。

    myProc = target.create (“处理器”,“名字”,“MyProcessor”,“制造商”,“MyManufacturer”);

  2. 创建一个target.LanguageImplementation对象复制现有的语言实现。

    myCopiedImplementation = target.create (“LanguageImplementation”,“名字”,“MyCopiedImplementation”,“复制”,“Atmel-AVR”);

  3. 指定所需的语言实现细节。例如,字节次序。

    myCopiedImplementation。Endianess = target.Endianess.Big;

  4. 副语言实现与硬件设备。

    myProc。LanguageImplementations = myCopiedImplementation;

  5. 添加target.Processor对象内部数据库。

    objectsAdded = target.add (myProc);

创建硬件实现通过重用现有的实现

如果你的硬件设备需要相同的硬件实现现有的实现,您可以重用现有的实现。

  1. 创建一个target.Processor对象为新硬件设备。

    myProc = target.create (“处理器”,“名字”,“MyProcessor”,“制造商”,“MyManufacturer”);

  2. 检索现有实现通过使用设备供应商的标识符和类型,例如,“胳膊Compatible-ARM皮层”

    existingImplementation = target.get (“LanguageImplementation”,“胳膊Compatible-ARM皮层”);

  3. 副语言实现与硬件设备。

    myProc。LanguageImplementations = existingImplementation;

  4. 添加target.Processor对象内部数据库。

    objectsAdded = target.add (myProc);

验证硬件设备数据

验证数据完整性目标对象,使用IsValid财产或验证的方法target.Object基类。

考虑一个例子,您创建一个target.Processor对象,并将现有的语言实现与对象相关联。

myProcessor = target.create (“处理器”);myProcessor。LanguageImplementations = target.get (“LanguageImplementation”,“胳膊Compatible-ARM皮层”);
验证创建对象,运行myProcessor.IsValidmyProcessor.validate ()
myProcessor.IsValid
ans =逻辑0
myProcessor.validate ()
错误使用目标。处理器/验证目标数据验证失败。*未定义的属性“Name”在“处理器”对象。*“处理器”对象中未定义的标识符。
验证失败,因为这些target.Processor属性不是指定:

  • 的名字——处理器的名字

  • Id- - - - - -对象标识符

您可以指定一个处理器的名字,也指定了对象标识符。

myProcessor。Name =“MyProcessor”;
检查的有效性myProcessor
myProcessor.IsValid
ans =逻辑1
建立了对象的有效性。

请注意

当你使用target.add函数来注册一个目标对象,软件也检查对象的有效性。

硬件设备出口数据

你可以分享以前创建的硬件设备在计算机和用户数据。

对于这个示例,指定一个硬件设备并将其添加到一个内部数据库。

myProc = target.create (“处理器”,“名字”,“MyProcessor”,“制造商”,“MyManufacturer”);existingImplementation = target.get (“LanguageImplementation”,“胳膊Compatible-ARM皮层”);myProc。LanguageImplementations = existingImplementation;objectsAdded = target.add (myProc);
创建一个函数共享硬件设备的数据,运行:
target.export (myProc“文件名”,“exportMyProcFunction”)
target.export函数创建exportMyProcFunction.m在当前工作目录中。
函数registeredObjects = exportMyProcFunction(变长度输入宗量)%这个函数是使用目标数据导出生成的。%创建目标。处理器“MyManufacturer-MyProcessor”处理器= target.create (“处理器”);processor.LanguageImplementations (1) =target.get (“LanguageImplementation”,“胳膊Compatible-ARM皮层”);处理器。制造商=“MyManufacturer”;处理器。Name =“MyProcessor”;%目标对象添加到MATLAB的记忆registeredObjects =目标。add(处理器、变长度输入宗量{:});
现在,您可以使用生成的函数共享硬件设备数据在计算机和数据库用户。例如,在另一台计算机上运行此命令。
objectsAdded = exportMyProcFunction;
生成的函数再现target.Processor对象,MyManufacturer-MyProcessor,并将它添加到一个内部数据库。

为目标对象创建替代标识符

为目标对象,创建替代标识符使用target.Alias类。

例如,如果一个target.Processor对象有着悠久的类标识符,您可以创建一个target.Alias对象提供了一个简短的标识符target.Processor对象。

  1. 检索target.Processor对象。

    proccesorObj = target.get (“处理器”,“模拟Devices-ADSP-CM40x(手臂Cortex-M)”);

  2. 使用target.create函数创建一个target.Alias对象。

    aliasProcessorObj = target.create (“别名”);

  3. 使用target.Alias对象属性指定替代标识符和原始目标对象。

    aliasProcessorObj。Name =“myShortName”;aliasProcessorObj。= proccesorObj;

  4. 添加target.Alias对象内部数据库。

    target.add (aliasProcessorObj);
  5. 检索原始target.Processor对象,运行:

    target.get (“处理器”,“myShortName”);

升级硬件设备的数据定义

升级现有的硬件设备定义,通过指定rtwTargetInfo.msl_customization.m文件,使用target.upgrade函数。

rtwTargetInfo.m文件

假设你有硬件设备的定义rtwTargetInfo.m文件:

函数rtwTargetInfo (tr) %添加注册函数处理目标注册tr.registerTargetInfo (@loc_register_hardware);结束函数hw = loc_register_hardware hw = RTW.HWDeviceRegistry;hw。供应商=“MyManufacturer”;hw。类型=“MyDevice”;hw。别名= {};hw。平台={‘刺激’,‘目标’}; hw.setWordSizes([8 16 32 64 64 64 64 64 64 64 64]); hw.Endianess = 'Little'; hw.IntDivRoundTo = 'Zero'; hw.ShiftRightIntArith = true; hw.LargestAtomicInteger = 'Long'; hw.LargestAtomicFloat = 'Double'; end

升级文件中包含的数据定义,运行:

target.upgrade('rtwTargetInfo', 'myPathTo/rtwTargetInfo.m');
在当前文件夹,这个函数创建registerUpgradedTargets.m文件:
处理器函数= registerUpgradedTargets(变长度输入宗量)%这个函数是使用目标数据导出生成的。%创建目标。LanguageImplementation‘MyManufacturer-MyDevice LanguageImplementation = target.create (“LanguageImplementation”);languageimplementation。AtomicFloatSize = 64;languageimplementation。AtomicIntegerSize = 64;languageimplementation.DataTypes.Char。大小= 8;languageimplementation.DataTypes.Double。大小= 64;languageimplementation.DataTypes.Float。大小= 64;languageimplementation.DataTypes.Half。Is金宝appSupported = false; languageimplementation.DataTypes.Half.Size = 16; languageimplementation.DataTypes.Int.Size = 32; languageimplementation.DataTypes.Long.Size = 64; languageimplementation.DataTypes.LongLong.IsSupported = false; languageimplementation.DataTypes.LongLong.Size = 64; languageimplementation.DataTypes.Pointer.Size = 64; languageimplementation.DataTypes.PtrDiffT.Size = 64; languageimplementation.DataTypes.Short.Size = 16; languageimplementation.DataTypes.SizeT.Size = 64; languageimplementation.Name = 'MyManufacturer-MyDevice'; languageimplementation.WordSize = 64; % Create target.Processor 'MyManufacturer-MyDevice' processor = target.create('Processor'); processor.LanguageImplementations(1) = languageimplementation; processor.Manufacturer = 'MyManufacturer'; processor.Name = 'MyDevice'; % Add the target objects to MATLAB memory target.add(processor, varargin{:}); end

注册与MATLAB硬件设备,运行:

registerUpgradedTargets ()

如果你想注册持续在MATLAB会话,运行:

registerUpgradedTargets (UserInstall,真的)

sl_customization.m文件

假设你在一个有多个硬件设备定义sl_customization.m文件:

函数sl_customization (cm) % sl_customization函数来注册一个设备%与仿真软件供应商和类型。金宝app% sl_customization.m复制或重命名此文件。cm.registerTargetInfo (@loc_register_device);cm.registerTargetInfo (@loc_register_device2);cm.registerTargetInfo (@loc_createConfig);cm.registerTargetInfo (@locRegisterTfl);cm.CodeCoverageTools.add (“DummyCoverageToolForTesting”,…“HDummyCovTool”,…覆盖工具供应商);结束函数thisDev = loc_register_device thisDev = RTW.HWDeviceRegistry; thisDev.Vendor = 'MyDevVendor'; thisDev.Type = 'MyDevType'; thisDev.Alias = {}; thisDev.Platform = {'Prod', 'Target'}; thisDev.setWordSizes([8 16 32 32 32]); thisDev.LargestAtomicInteger = 'Char'; thisDev.LargestAtomicFloat = 'None'; thisDev.Endianess = 'Unspecified'; thisDev.IntDivRoundTo = 'Undefined'; thisDev.ShiftRightIntArith = true; thisDev.setEnabled({'IntDivRoundTo'}); end function thisDev = loc_register_device2 thisDev = RTW.HWDeviceRegistry; thisDev.Vendor = 'MyDevVendor'; thisDev.Type = 'MyDevType2'; thisDev.Alias = {}; thisDev.Platform = {'Prod', 'Target'}; thisDev.setWordSizes([8 16 32 32 32]); thisDev.LargestAtomicInteger = 'Char'; thisDev.LargestAtomicFloat = 'None'; thisDev.Endianess = 'Unspecified'; thisDev.IntDivRoundTo = 'Undefined'; thisDev.ShiftRightIntArith = true; thisDev.setEnabled({'IntDivRoundTo'}); end % local function function config = loc_createConfig config = rtw.connectivity.ConfigRegistry; config.ConfigName = 'Infineon->C16x, XC16x'; config.ConfigClass = 'pil_slcust.HostDemoConfig1'; config.SystemTargetFile = {'custom_target.tlc'}; config.TemplateMakefile = {'custom_target.tmf'}; config.TargetHWDeviceType = {'Infineon->C16x, XC16x'}; end function thisTfl = locRegisterTfl thisTfl(1) = RTW.TflRegistry; thisTfl(1).Name = 'myTFL1'; thisTfl(1).Description = 'Test'; thisTfl(1).TableList = {'tfl_table_Sum',... 'tfl_table_Product',... }; % Sum includes Add and Subtract thisTfl(1).BaseTfl = 'ANSI_C'; thisTfl(1).TargetHWDeviceType = {'*'}; end

升级RTW.HWDeviceRegistry数据定义文件,运行:

target.upgrade('sl_customization', 'myPathTo/sl_customization.m')

在当前文件夹,这个函数创建registerUpgradedTargets.m文件:

函数targetobject = registerUpgradedTargets(变长度输入宗量)%这个函数是使用目标数据导出生成的。%创建目标。LanguageImplementation‘MyDevVendor-MyDevType LanguageImplementation = target.create (“LanguageImplementation”);languageimplementation。AtomicIntegerSize = 8;languageimplementation.DataTypes.Char。大小= 8;languageimplementation.DataTypes.Double。大小= 64;languageimplementation.DataTypes.Float。大小= 32;languageimplementation.DataTypes.Half。Is金宝appSupported = false;languageimplementation.DataTypes.Half。大小= 16;languageimplementation.DataTypes.Int。大小= 32; languageimplementation.DataTypes.Long.Size = 32; languageimplementation.DataTypes.LongLong.IsSupported = false; languageimplementation.DataTypes.LongLong.Size = 64; languageimplementation.DataTypes.Pointer.Size = 32; languageimplementation.DataTypes.PtrDiffT.Size = 32; languageimplementation.DataTypes.Short.Size = 16; languageimplementation.DataTypes.SizeT.Size = 32; languageimplementation.Endianess = target.Endianess.Unspecified; languageimplementation.Name = 'MyDevVendor-MyDevType'; languageimplementation.WordSize = 32; % Create target.Processor 'MyDevVendor-MyDevType' processor = target.create('Processor'); processor.LanguageImplementations(1) = languageimplementation; processor.Manufacturer = 'MyDevVendor'; processor.Name = 'MyDevType'; % Create target.LanguageImplementation 'MyDevVendor-MyDevType2' languageimplementation2 = target.create('LanguageImplementation'); languageimplementation2.AtomicIntegerSize = 8; languageimplementation2.DataTypes.Char.Size = 8; languageimplementation2.DataTypes.Double.Size = 64; languageimplementation2.DataTypes.Float.Size = 32; languageimplementation2.DataTypes.Half.IsSupported = false; languageimplementation2.DataTypes.Half.Size = 16; languageimplementation2.DataTypes.Int.Size = 32; languageimplementation2.DataTypes.Long.Size = 32; languageimplementation2.DataTypes.LongLong.IsSupported = false; languageimplementation2.DataTypes.LongLong.Size = 64; languageimplementation2.DataTypes.Pointer.Size = 32; languageimplementation2.DataTypes.PtrDiffT.Size = 32; languageimplementation2.DataTypes.Short.Size = 16; languageimplementation2.DataTypes.SizeT.Size = 32; languageimplementation2.Endianess = target.Endianess.Unspecified; languageimplementation2.Name = 'MyDevVendor-MyDevType2'; languageimplementation2.WordSize = 32; % Create target.Processor 'MyDevVendor-MyDevType2' processor2 = target.create('Processor'); processor2.LanguageImplementations(1) = languageimplementation2; processor2.Manufacturer = 'MyDevVendor'; processor2.Name = 'MyDevType2'; targetObjects = [processor, processor2]; % Add the target objects to MATLAB memory target.add(targetObjects, varargin{:}); end

注册与MATLAB的硬件设备定义,运行:

registerUpgradedTargets ()

如果你想注册持续在MATLAB会话,运行:

registerUpgradedTargets (UserInstall,真的)

另请参阅

|

相关的话题