注册新硬件设备
在硬件实现窗格中,您可以指定参数,描述目标硬件和MATLAB编译器属性®软件,使您能够:
观察目标硬件在模型模拟。
为生产或测试硬件生成优化的代码。
在目标硬件上直接测试或部署生成的代码。
的硬件实现面板支持一金宝app系列目标硬件。扩展范围,注册新的硬件设备使用target.Processor
和target.LanguageImplementation
类。
为新设备指定硬件实现
注册一个新的硬件设备:
创建一个
target.Processor
对象为新硬件设备。myProc = target.create (“处理器”,…“名字”,“MyProcessor”,…“制造商”,“MyManufacturer”);
创建一个
target.LanguageImplementation
对象语言实现细节。myLanguageImplementation = target.create (“LanguageImplementation”,…“名字”,“MyProcessorImplementation”);
指定语言的实现细节。
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;
副语言实现与硬件设备。
myProc。LanguageImplementations = myLanguageImplementation;
添加
target.Processor
对象内部数据库。objectsAdded = target.add (myProc);
在硬件实现窗格中,您现在可以设置设备供应商和设备类型来MyManufacturer
和MyProcessor
分别。
指定始终如一的硬件实现MATLAB会话
默认情况下,当你把目标对象添加到内部数据库,目标数据仅为当前可用MATLAB会话。您可以指定目标在MATLAB会话数据持久性。
创建一个
target.Processor
对象的一个新的硬件设备。myProc = target.create (“处理器”,…“名字”,“MyProcessor”,…“制造商”,“MyManufacturer”);existingImplementation = target.get (“LanguageImplementation”,…“胳膊Compatible-ARM皮层”);myProc。LanguageImplementations = existingImplementation;
添加
target.Processor
对象内部数据库和指定目标数据的持久性在MATLAB会话。objectsAdded = target.add (myProc,“UserInstall”,真正的);
target.update
函数。你可以从内部数据库中删除对象。
target.remove (objectsAdded);
target.clear
函数。
创建硬件实现通过修改现有的实现
如果现有的硬件实现包含大部分的值,你想要在新的硬件实现中,您可以快速创建新的实现通过创建和修改现有实现的一个副本。
创建一个
target.Processor
对象为新硬件设备。myProc = target.create (“处理器”,…“名字”,“MyProcessor”,…“制造商”,“MyManufacturer”);
创建一个
target.LanguageImplementation
对象复制现有的语言实现。myCopiedImplementation = target.create (“LanguageImplementation”,…“名字”,“MyCopiedImplementation”,…“复制”,“Atmel-AVR”);
指定所需的语言实现细节。例如,字节次序。
myCopiedImplementation。Endianess = target.Endianess.Big;
副语言实现与硬件设备。
myProc。LanguageImplementations = myCopiedImplementation;
添加
target.Processor
对象内部数据库。objectsAdded = target.add (myProc);
创建硬件实现通过重用现有的实现
如果你的硬件设备需要相同的硬件实现现有的实现,您可以重用现有的实现。
创建一个
target.Processor
对象为新硬件设备。myProc = target.create (“处理器”,…“名字”,“MyProcessor”,…“制造商”,“MyManufacturer”);
检索现有实现通过使用设备供应商的标识符和类型,例如,
“胳膊Compatible-ARM皮层”
。existingImplementation = target.get (“LanguageImplementation”,…“胳膊Compatible-ARM皮层”);
副语言实现与硬件设备。
myProc。LanguageImplementations = existingImplementation;
添加
target.Processor
对象内部数据库。objectsAdded = target.add (myProc);
验证硬件设备数据
验证数据完整性目标对象,使用IsValid
财产或验证
的方法target.Object
基类。
考虑一个例子,您创建一个target.Processor
对象,并将现有的语言实现与对象相关联。
myProcessor = target.create (“处理器”);myProcessor。LanguageImplementations = target.get (“LanguageImplementation”,…“胳膊Compatible-ARM皮层”);
myProcessor.IsValid
或myProcessor.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
对象。
检索
target.Processor
对象。proccesorObj = target.get (“处理器”,…“模拟Devices-ADSP-CM40x(手臂Cortex-M)”);
使用
target.create
函数创建一个target.Alias
对象。aliasProcessorObj = target.create (“别名”);
使用
target.Alias
对象属性指定替代标识符和原始目标对象。aliasProcessorObj。Name =“myShortName”;aliasProcessorObj。= proccesorObj;
添加
target.Alias
对象内部数据库。target.add (aliasProcessorObj);
检索原始
target.Processor
对象,运行:target.get (“处理器”,“myShortName”);
升级硬件设备的数据定义
升级现有的硬件设备定义,通过指定rtwTargetInfo.m
或sl_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,真的)
另请参阅
target.LanguageImplementation
|target.Processor