保护模型以隐藏内容
当您希望与第三方共享模型而不泄露知识产权时,请对模型进行保护。通过将原始模型编译为引用模型,保护模型会隐藏原始模型的实现细节。受保护的模型包括派生文件,以支持您指定的可选功能。
当您保护一个模型时,您可以允许受保护模型的用户:
打开模型的只读web视图,包括模型内容和块参数。
在加速模式(默认)、快速加速模式和普通模式下模拟模型。
为包含受保护模型的模型生成代码。
为包含受保护模型的模型生成HDL代码。
如果您有Embedded Coder,可以通过独立接口为受保护的模型生成代码®并为模型指定一个基于ert的系统目标文件。
您可以选择为每个选项设置密码保护。如果您为这些选项之一选择了-密码保护,软件将使用AES-256加密来保护支持的文件。
当你创建一个受保护的模型时:
动态仿真模块®创建模型的受保护版本,并将其存储在与源模型具有相同名称的文件中
.slxp
扩展。的原始模型文件
.slx
扩展,不更改。如果你保护模型通过模型块,模型Block不会改变。Simulink可选地创建一个项目存档(
.mlproj
),它包含受保护模型、受保护模型的控制模型,以及附加的支持文件。
此示例演示如何从引用模型创建受保护的模型,以进行只读查看、模拟或代码生成。
准备父模型
配置模型块中引用原始引用模型。此步骤可防止模型当您创建受保护的模型时,阻止成为受保护的引用。
打开引用您想要保护的模型的父模型。对于本例,打开模型
sldemo_mdlref_basic
.要运行工作流,请创建模型的本地副本
sldemo_mdlref_counter
你想要保护的人。然后,您可以创建父模型的本地副本sldemo_mdlref_basic
.您必须将父模型保存在与引用模型相同的文件夹中。打开
sldemo_mdlref_basic
您在本地保存的模型。确保模型块CounterA
,CounterB
,CounterC
引用sldemo_mdlref_counter
您在本地保存的模型。为每一个模型块,打开块参数对话框,并指定扩展名
.slx
在模型名称字段。当模型和受保护的模型都存在于同一个文件夹中时,.slxp
优先于.slx
.如果不指定扩展名,则原始的模型模型中的块指的是受保护的模型,而不是原始模型。点击好吧.
保护引用的模型
在
sldemo_mdlref_basic
模型,单击其中任何一个模型块。在Simulink工具条上模型块选项卡上,单击保护.在“创建受保护模型”对话框中,选择模拟而且使用生成的代码复选框。这些选项允许受保护模型用户模拟并为引用受保护模型的模型生成代码。如果您希望对受保护模型的功能进行密码保护,请输入至少4个字符的密码。每个选项可以有一个唯一的密码。
如果您有嵌入式Coder并指定一个基于ert的系统目标文件(例如,
ert.tlc
)为模型,则代码接口字段是可见的。在这个例子中,
sldemo_mdlref_basic
没有指定基于ert的系统目标文件,因此代码接口选项在“创建受保护模型”对话框中不可用。从代码接口下拉列表,选择其中一个选项:
模型参考
-通过模型引用代码接口指定代码访问,允许在模型引用层次结构中使用受保护的模型。受保护模型的用户可以从包含受保护模型的父模型生成代码。用户可以运行模型块SIL/PIL仿真与保护模型。顶级模特
—指定通过独立接口访问代码。受保护模型的用户可以运行模型块SIL/PIL仿真与保护模型。
从内容类型列表中,选择
混淆的源代码
隐藏受保护模型的源代码目的和逻辑。有关模型保护选项的更多信息,请参见内容类型.扩大模拟可调参数节并选择您希望受保护的模型用户能够在模拟期间调优的参数。
对于代码生成,具有非自动存储类的参数是可调的。有关更多信息,请参见模型块中使用的参数和信号的存储类.
在目标文件夹框中,为受保护的模型指定文件夹路径。默认值为当前工作文件夹。
若要自动收集、创建并打包使用受保护模型的支持文件,请设置内容来
受保护的模型(.slxp)和项目中的依赖项
.请注意
在共享项目之前,请检查项目是否包含必要的支持文件。如果缺少支持文件,为相关的管理模型模拟或生成代码可以帮助识别它们。将缺失的依赖项添加到项目中,并根据需要更新工具模型。
设置内容来
受保护的模型(.slxp)和项目中的依赖项
选择为受保护的模型创建控制模型复选框。工具模型包含在项目中,并为模型引用受保护模型的块。要进一步定制受保护的模型,您可以:
指定用于代码混淆的自定义混淆器。看到为受保护的模型指定自定义模糊器.
指定多个代码生成目标。看到创建具有多个目标的受保护模型.
为受保护的模型定义回调。看到为受保护模型定义回调函数.
点击创建.
项目档案(
.mlproj
),它包含受保护的模型、利用模型,以及出现在指定的目标文件夹中的支持文件。要测试受保护的模型,可以在Current Folder浏览器中双击项目存档的内容,并指定目标文件夹,从而提取项目存档的内容。或者,右键单击项目存档并单击这里提取.项目打开,提取的文件位于以项目存档命名的新文件夹中。当您从Simulink Editor中创建受保护的模型时,将生成受保护的模型报告,并将其作为受保护模型的一部分。对于本例,要查看受保护的模型报告,双击受保护的模型,或者右键单击该模型中的块上受保护的模型徽章图标,然后选择报告显示.
报告包含:
一个总结,包括以下表格:
环境,提供Simulink版本和其他产品版本,以及用于创建受保护模型的平台。
支持的功能、报告
在
,从
,或开启密码保护
对于受保护模型支持的每个可能功能。如果为多个目标配置受保护模型,则该表包含支持的目标列表。
一个接口报告,包括模型接口信息,如输入输出规格、导出功能信息、接口参数、数据存储等。
该报告不包含出现在非受保护模型的代码生成报告中的其他部分,例如代码度量报告和可跟踪性报告,因为这些报告包含关于模型设计的更多信息。
您可以测试受保护的模型,将其与原始模型进行比较。有关更多信息,请参见测试保护模型.
要在模型层次结构中使用受保护的模型,请通过模型块,例如包含在线束模型中的块。的模拟模式为模型引用受保护模型的块被设置为
加速器
.您不能更改模式。有关更多信息,请参见从第三方引用受保护的模型.
保护模型的其他方法
要从当前模型创建受保护的模型,使用以下选项之一:
在Simulink工具条上模拟选项卡上,单击保存按钮箭头,然后选择保护模式.
在Simulink工具条上C代码选项卡上,单击分享按钮箭头,然后选择生成保护模型.
要以编程方式创建受保护的模型,请使用Simulink.ModelReference.protect
函数。
受保护的模型要求和限制
当您创建受保护的模型时,请考虑以下需求:
你必须有一个仿真软件编码器™或HDL Coder™许可证来创建受保护的模型。
该模型必须在MATLAB上可用®路径。
模型不能有未保存的更改。
该模型使用保护期间活动的配置。不能更改受保护模型的配置。
如果模型包含变量,则受保护的模型只包含在保护期间活动的变量。
模型保护过程不保留回调。有关创建用于受保护模型的回调的更多信息,请参见为受保护模型定义回调函数
不要重命名受保护的模型或更改其后缀。如果这样做,模型将不可用,直到您恢复其原始名称和后缀。
为模型及其引用的模型使用唯一的名称。如果受保护模型引用与另一个受保护模型或另一个受保护模型的层次结构中的不同模型共享名称的模型,那么使用受保护模型就会受到限制。如果一个顶级模型引用两个受保护的模型,且它们具有这样的命名冲突,那么您就不能保护顶级模型,不能为顶级模型生成代码,也不能在软件在循环(SIL)、处理器在循环(PIL)或快速加速器模式中模拟顶级模型。
如果您的模型包含一个非内联的s函数,请为. mex文件使用唯一的名称。如果与MATLAB路径上的不同. mex文件存在名称冲突,则无法模拟受保护的模型。
模型还必须满足中列出的要求模型参考要求和限制.
代码生成要求和限制
要创建支持代码生成的受保护模型,您的模型必须满足以下要求:
受保护的模型必须使用正常、加速、软件在循环(SIL)或处理器在循环(PIL)模式和单个目标。
受保护的模型不能包含非内联的s函数。
不要选择代码生成>验证>测量函数执行时间复选框。如果您在保护模型时选择了这个选项,软件将关闭该参数并显示警告。
受保护的引用模型必须支持没有密码保护的代码生成。
受保护的模型必须与内容类型每个受保护的引用模型的。该表提供兼容性信息。
代码生成内容类型兼容性
受保护父模型内容类型 兼容的受保护引用模型内容类型 二进制文件
二进制文件
混淆的源代码
二进制文件
与“ObfuscateCode”
设置为“假”
二进制文件
二进制文件
与“ObfuscateCode”
设置为“假”
混淆的源代码
可读的源代码
混淆的源代码
混淆的源代码
可读的源代码
混淆的源代码
可读的源代码
当内容类型的受保护父模型和受保护引用模型不匹配时,代码生成应用内容类型这提供了更高级别的保护。例如,设置的受保护父模型
二进制文件
生成二进制文件
对于设置为的受保护引用模型混淆的源代码
.设置的受保护父模型可读的源代码
生成混淆的源代码
对于设置为的受保护引用模型混淆的源代码
.
要避免在包含受保护模型的模型的代码生成过程中出现错误:
受保护的模型名称必须与相同模型引用层次结构中的其他模型名称唯一。
接口必须匹配。
参数必须兼容。
嵌套的受保护模型需求和限制
要使受保护模型的接收者能够保护引用它的模型,受保护模型必须:
支持加速器模式。您必须选择模拟在“创建受保护模型”对话框或集合中
“模式”
来“加速器”
或“CodeGeneration”
使用Simulink.ModelReference.protect
函数。使用默认的
“CodeInterface”
设置:“模型参考”
.模拟时不使用密码保护。
没有回调。
在没有密码保护的情况下,支持受保护的父模型打算支持的操作。
使用一个内容类型这与预期的是一致的内容类型如果受保护父模型打算支持代码生成,则由受保护父模型的。以获取兼容的列表内容类型选项,请参见上一节中的表。
使用与受保护的父模型打算使用的相同编译器。
不引用与不同受保护模型或另一个受保护模型层次结构中的不同模型共享名称的模型。
如果要保护的模型引用被保护模型,则被引用的受保护模型必须满足上述要求。
当您保护引用受保护模型的模型时,您必须将被引用的受保护模型的可调参数指定为您所保护的模型的可调参数。
请注意
创建的受保护模型使用生成的HDL代码选项允许加密,并支持从引用受保护模型的模型生成模拟和HDL代码。你不能混淆HDL源代码,回调,或使用嵌套保护模型与此选项。要了解更多关于HDL代码生成限制的信息,请参见HDL代码生成的受保护模型限制(高密度脂蛋白编码器).