主要内容

保护模型以隐藏内容

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

当对模型进行保护时,可以允许受保护模型下的用户:

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

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

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

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

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

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

创建受保护模型时:

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

  • 原始模型文件,带有.slx延伸,不改变。如果你通过a来保护模型模型块,模型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.如果未指定扩展名,则使用原扩展名模型模型中的Block指的是被保护的模型,而不是原模型。点击好吧

保护引用的模型

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

    “创建保护模型”对话框

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

  3. 如果您使用嵌入式编码器并指定基于ert的系统目标文件(例如,ert.tlc)为模型,则代码接口字段是可见的。

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

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

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

    • 顶级模特—指定通过独立接口访问代码。受保护型号下的用户可以运行模型用受保护的模型阻塞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的受保护模型报告。

    该报告载有:

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

      • 环境,提供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

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

    代码生成内容类型兼容性

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

    • 混淆的源代码

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

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

    • 混淆的源代码

    • 可读源代码

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

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

    • 可读源代码

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

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

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

  • 接口必须匹配。

  • 参数必须兼容。

嵌套保护模型需求和限制

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

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

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

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

  • 没有回调。

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

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

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

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

当需要保护的模型引用了其他受保护模型时,被引用的受保护模型必须满足上述要求。

当保护一个引用被保护模型的模型时,必须指定被引用的受保护模型的可调参数为可调参数。

请注意

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

相关的话题