主要内容

保护模型以隐藏内容

当您希望与第三方共享模型而不泄露知识产权时,请保护该模型。通过将原始模型编译为引用模型,保护模型隐藏了原始模型的实现细节。受保护的模型包括派生文件,以支持您指定的可选功能。金宝app

当您保护一个模型时,您可以允许受保护模型的用户:

  • 打开模型的只读web视图,包括模型内容和块参数。

  • 在加速模式(默认)、快速加速模式和正常模式下模拟模型。

  • 为包含受保护模型的模型生成代码。

  • 为包含受保护模型的模型生成HDL代码。

  • 如果您有Embedded Coder,则通过独立接口为受保护的模型生成代码®并为模型指定一个基于ert的系统目标文件。

您可以选择对每个选项进行密码保护。如果您为这些选项之一选择密码保护,该软件将使用AES-256加密来保护支持文件。金宝app

当你创建一个受保护的模型:

  • 金宝app®创建模型的受保护版本,并将其存储在与源模型同名的文件中.slxp扩展。

  • 的原始模型文件.slx扩展,不改变。如果你保护模型通过模型块,模型Block不会改变。

  • 可选地,Simulink金宝app创建一个项目存档(.mlproj),它包含受保护的模型、受保护模型的控制模型,以及额外的支持文件。金宝app

此示例显示如何从引用模型创建受保护模型,以进行只读查看、模拟或代码生成。

准备父模型

配置模型块,以引用原始的引用模型。此步骤可防止模型在创建受保护模型时阻止成为受保护的引用。

  1. 打开引用要保护的模型的父模型。对于本例,打开模型sldemo_mdlref_basic

  2. 要运行工作流,请创建模型的本地副本sldemo_mdlref_counter你想要保护的。然后,您可以创建父模型的本地副本sldemo_mdlref_basic.您必须将父模型保存在与引用模型相同的文件夹中。

  3. 打开sldemo_mdlref_basic在本地保存的模型。确保模型CounterACounterB,CounterC引用sldemo_mdlref_counter在本地保存的模型。

  4. 为每一个模型块,打开块参数对话框,并指定扩展.slx模型名称字段。当模型和受保护的模型都存在于同一个文件夹中时,.slxp优先于.slx.如果不指定扩展名,则原扩展名模型模型中的块指的是受保护的模型,而不是原始模型。点击好吧

保护引用模型

  1. sldemo_mdlref_basic模型,点击其中任何一个模型块。在Simuli金宝appnk工具条上模型块选项卡上,单击保护

    “创建受保护模型”对话框

  2. 在“创建受保护模型”对话框中,选择模拟而且使用生成的代码复选框。这些选项允许受保护的模型用户模拟并为引用受保护模型的模型生成代码。如果要对受保护模型的功能进行密码保护,请输入至少四个字符的密码。每个选项可以有一个唯一的密码。

  3. 如果您有嵌入式Coder并指定基于ert的系统目标文件(例如,ert.tlc)为模型,则为代码接口场可见。

    在这个例子中,sldemo_mdlref_basic没有指定基于ert的系统目标文件,因此代码接口选项在“创建受保护模型”对话框中不可用。

    代码接口下拉列表,选择以下选项之一:

    • 模型参考-通过模型引用代码接口指定代码访问,允许在模型引用层次结构中使用受保护的模型。受保护模型的用户可以从包含受保护模型的父模型生成代码。用户可以运行模型block SIL/PIL模拟与受保护的模型。

    • 顶级模特—指定通过独立接口访问代码。受保护模型的用户可以运行模型block SIL/PIL模拟与受保护的模型。

  4. 内容类型列表中,选择混淆的源代码隐藏受保护模型的源代码目的和逻辑。有关模型保护选项的详细信息,请参见内容类型

  5. 扩大模拟可调参数部分,并选择您希望受保护的模型用户能够在模拟期间调优的参数。

    对于代码生成,具有非自动存储类的参数是可调的。有关更多信息,请参见模型块中使用的参数和信号的存储类

  6. 目标文件夹框中,指定受保护模型的文件夹路径。默认值为当前工作文件夹。

  7. 若要自动收集、创建和打包受保护模型的支持文件,请设置金宝app内容项目中的受保护模型(.slxp)和依赖项

    请注意

    在共享项目之前,请检查项目是否包含必要的支持文件。金宝app如果缺金宝app少支持文件,为相关的控制模型模拟或生成代码可以帮助识别它们。将缺失的依赖项添加到项目中,并根据需要更新利用模型。

  8. 设置内容项目中的受保护模型(.slxp)和依赖项选择为受保护的模型创建控制模型复选框。线束模型包含在项目中,并为模型引用受保护模型的块。

    利用引用受保护模型sldemo_mdlref_counter.slxp的模型块来管理模型。

  9. 要进一步定制受保护的模型,您可以:

  10. 点击创建

    工程项目档案(.mlproj),它包含受保护的模型、控制模型和支持文件,出现在指定的目标文件夹中。金宝app要测试受保护的模型,通过在Current Folder浏览器中双击项目存档并指定目标文件夹来提取项目存档的内容。或者,右键单击项目存档并单击这里提取.项目打开,解压缩的文件位于以项目存档命名的新文件夹中。

  11. 当您从Simulink Editor中创建受保护模型时,将生成受保护模型报告,并将其作为受金宝app保护模型的一部分。对于本例,要查看受保护的模型报告,双击受保护的模型或右键单击控制模型块上的受保护模型徽章图标并选择报告显示

    sldemo_mdlref_counter的Protected Model报告。

    该报告包括:

    • 一个总结,包括以下表格:

      • 环境,提供Simulink版本和其他金宝app产品版本,以及用于创建受保护模型的平台。

      • 金宝app支持的功能、报告,或开启密码保护对于受保护的模型支持的每种可能的功能。金宝app如果为多个目标配置受保护的模型,则此表包含受支持的目标列表。金宝app

    • 一个接口报告,包括输入输出规范、导出功能信息、接口参数、数据存储等模型接口信息。

    该报告不包含出现在非受保护模型的代码生成报告中的其他部分,例如代码度量报告和可跟踪性报告,因为这些报告包含关于模型设计的更多信息。

  12. 您可以测试受保护的模型,将其与原始模型进行比较。有关更多信息,请参见测试受保护模型

  13. 要在模型层次结构中使用受保护的模型,请通过模型块,例如包含在线束模型中的块。的模拟模式模型引用受保护模型的块加速器.不能更改模式。有关更多信息,请参见从第三方引用受保护的模型

保护模型的其他方法

要从当前模型创建一个受保护的模型,请使用以下选项之一:

  • 在Simuli金宝appnk工具条上模拟选项卡,单击保存按钮箭头,然后选择保护模式

  • 在Simuli金宝appnk工具条上C代码选项卡,单击分享按钮箭头,然后选择生成受保护模型

要以编程方式创建受保护模型,请使用金宝appSimulink.ModelReference.protect函数。

受保护模型的要求和限制

当您创建一个受保护的模型时,请考虑以下需求:

  • 你必须有一个金宝app仿真软件编码器™或HDL Coder™许可证来创建受保护的模型。

  • 该模型必须在MATLAB中可用®路径。

  • 模型不能有未保存的更改。

  • 该模型使用保护期间活动的配置。您不能更改受保护模型的配置。

  • 如果模型包含变量,那么受保护的模型只包括在保护期间活动的变量。

  • 模型保护过程不保留回调。有关创建用于受保护模型的回调的详细信息,请参见定义受保护模型的回调

  • 不要重命名受保护的模型或更改其后缀。如果您这样做,模型将不可用,直到恢复其原始名称和后缀。

  • 为模型及其引用的模型使用唯一的名称。如果受保护模型引用的模型与另一个受保护模型的层次结构中的不同模型共享名称,则使用受保护模型会受到限制。如果顶级模型引用了两个具有此类命名冲突的受保护模型,则无法保护顶级模型、为顶级模型生成代码,或在软件在环(SIL)、处理器在环(PIL)或快速加速器模式中模拟顶级模型。

  • 如果您的模型包含非内联的s函数,请为. mex文件使用唯一的名称。如果与MATLAB路径上的其他. mex文件有名称冲突,则无法模拟受保护的模型。

模型还必须满足中列出的要求模型参考要求和限制

代码生成要求和限制

要创建支持代码生成的受保护模型,您的模型必须满足以下要求:金宝app

  • 受保护的模型必须使用正常、加速器、软件在环(SIL)或处理器在环(PIL)模式和单个目标。

  • 受保护的模型不能包含非内联的s函数。

  • 不要选择代码生成>验证>测量函数执行时间复选框。如果在保护模型时选择了此选项,软件将关闭该参数并显示警告。

  • 受保护的引用模型必须支持在没有密码保护的情况下生成代码。金宝app

  • 受保护的模型必须与内容类型每个受保护的引用模型的。该表提供兼容性信息。

    代码生成内容类型兼容性

    受保护的父模型内容类型 兼容的受保护引用模型内容类型
    二进制文件
    • 二进制文件

    • 混淆的源代码

    二进制文件“ObfuscateCode”设置为“假”
    • 二进制文件

    • 二进制文件“ObfuscateCode”设置为“假”

    • 混淆的源代码

    • 可读的源代码

    混淆的源代码
    • 混淆的源代码

    可读的源代码
    • 混淆的源代码

    • 可读的源代码

    内容类型的受保护父模型和受保护引用模型不匹配时,代码生成应用内容类型这提供了更高级别的保护。例如,设置的受保护的父模型二进制文件生成二进制文件对于设置为的受保护引用模型混淆的源代码.设置的受保护的父模型可读的源代码生成混淆的源代码对于设置为的受保护引用模型混淆的源代码

要避免在包含受保护模型的模型的代码生成过程中出现错误:

  • 受保护的模型名称必须与同一模型引用层次结构中的其他模型名称唯一。

  • 接口必须匹配。

  • 参数必须兼容。

嵌套的受保护模型要求和限制

为了使受保护模型的接收者能够保护引用它的模型,您的受保护模型必须:

  • 金宝app支持加速模式。您必须选择模拟在“创建保护模型”对话框或set中“模式”“加速器”“CodeGeneration”使用金宝appSimulink.ModelReference.protect函数。

  • 使用默认值“CodeInterface”设置:“模型参考”

  • 模拟时不使用密码保护。

  • 没有回调。

  • 金宝app在没有密码保护的情况下,支持受保护的父模型打算支持的操作。

  • 使用一个内容类型这是与预期相一致的内容类型如果受保护的父模型打算支持代码生成,则受保护的父模型。金宝app获取兼容的列表内容类型选项,请参见前一节中的表格。

  • 使用与受保护的父模型打算使用的相同的编译器。

  • 不引用与不同的受保护模型或另一个受保护模型的层次结构中的不同模型共享名称的模型。

如果需要保护的模型引用了受保护模型,则被引用的受保护模型必须满足上述条件。

当您保护引用受保护模型的模型时,必须将引用的受保护模型的可调参数指定为您正在保护的模型的可调参数。

请注意

属性创建的受保护模型使用生成的HDL代码选项允许加密,并支持从引用受保护模型的模型生成模拟和HDL代码。金宝app使用此选项,您不能混淆HDL源代码,不能进行回调,也不能使用嵌套的受保护模型。要了解有关HDL代码生成限制的更多信息,请参见HDL代码生成的受保护模型限制(高密度脂蛋白编码器)

相关的话题