主要内容

Simulink 创建 PIL 目标连接配置

PIL 的目标连接配置

使用目标连接配置和目标连接 API 为您的目标环境自定义处理器在环 (PIL) 仿真。

通过目标连接配置,您可以指定:

  • 目标连接 API 实现的配置名称。

  • 用于定义一组兼容的 Simulink® 模型的设置。例如,具有特定系统目标文件、模板联编文件和硬件实现的一组模型。

PIL 仿真需要集成第三方工具的目标连接 API 实现,用于:

  • 交叉编译生成的代码,创建在目标硬件上运行的 PIL 应用程序。

  • 在目标上下载、启动和停止应用程序。

  • Simulink 和目标之间的通信。

PIL 仿真可以有许多不同的目标连接配置。通过创建 sl_customization.m 文件并将其放在 MATLAB® 搜索路径中,向 Simulink 注册连接配置。

运行 PIL 仿真时,软件会确定具体要使用哪个可用的连接配置。软件寻找与在测模型兼容的连接配置。如果软件找到多个或未找到兼容的连接配置,软件将生成一条错误消息,其中包含有关解决问题的信息。

创建目标连接 API 实现

下图显示 PIL 目标连接 API 的组件。

Diagram shows components of PIL target connectivity API.

您必须提供三个 API 组件的实现:

  • 编译 API - 指定用于编译生成代码的 Simulink Coder™ 工具链或模板联编文件方法。

  • 启动程序 API - 控制 Simulink 如何启动和停止 PIL 可执行文件。

  • 通信 API - 自定义 Simulink 和 PIL 目标之间的连接。Embedded Coder® 为 TCP/IP 和串行通信提供主机端支持,您可以对其进行修改以用于其他协议。

以下步骤概述如何创建目标连接 API 实现。步骤中显示的示例代码摘自为自定义目标配置处理器在环 (PIL) 仿真中的 ConnectivityConfig.m

  1. 创建 rtw.connectivity.Config 的一个子类。

    ConnectivityConfig < rtw.connectivity.Config

  2. 在该子类中:

    • 实例化 rtw.connectivity.MakefileBuilder,这将配置编译过程。

      builder = rtw.connectivity.MakefileBuilder(componentArgs, ...
                                                 targetApplicationFramework, ...
                                                 exeExtension);

    • 创建 rtw.connectivity.Launcher 的子类,它使用第三方工具下载并执行应用程序。

      launcher = mypil.Launcher(componentArgs, builder);

  3. 配置主机-目标通信通道的 rtiostream API 实现。

    • 对于目标端,您必须提供用于通信的驱动代码,例如 TCP/IP 或串行通信。要将此代码集成到编译过程中,请创建 rtw.pil.RtIOStreamApplicationFramework 的子类。

    • 对于主机端,您可以使用提供的库进行 TCP/IP 或串行通信。实例化 rtw.connectivity.RtIOStreamHostCommunicator,它加载并初始化您指定的库。

      hostCommunicator = rtw.connectivity.RtIOStreamHostCommunicator(componentArgs, ...
                                                                     launcher, ...
                                                                     rtiostreamLib);

  4. 如果您需要所生成代码的执行时间探查,请创建一个计时器对象,该对象提供特定于硬件的计时器和相关联源文件的详细信息。有关详细信息,请参阅Specify Hardware Timer for Simulink

  5. 如果需要所生成代码的堆栈使用量探查,请指定从目标硬件获取堆栈使用量数据的驱动实现。驱动必须返回堆栈寄存器的值。如果不指定驱动,PIL 仿真会尝试使用默认通用驱动。有关详细信息,请参阅Implement Driver to Obtain Stack Usage Data During PIL Simulation

注意

每当您修改连接实现时,都要关闭并重新打开模型来刷新它们。

注册连接 API 实现

要在 Simulink 中将目标连接 API 实现注册为目标连接配置,请执行以下操作:

  1. 创建或更新 sl_customization.m 文件。在此文件中:

    • 创建一个目标连接配置对象,该对象指定目标连接 API 实现和兼容模型的配置名称之类的信息。

    • 调用 registerTargetInfo

  2. 将包含 sl_customization.m 的文件夹添加到搜索路径,并刷新您的自定义设置。

    addpath(sl_customization_path);
    sl_refresh_customizations;

有关详细信息,请参阅 rtw.connectivity.ConfigRegistry

验证目标连接配置

要在模型开发和代码生成的早期或独立于它们来验证您的目标连接配置,请使用提供的 piltest 函数。使用该函数,您可以运行一套测试。在测试中,该函数运行各种普通、SIL 和 PIL 仿真。该函数会比较结果,并在检测到仿真模式之间的差异时生成错误。

目标连接 API 示例

有关分步示例,请参阅:

  • 为自定义目标配置处理器在环 (PIL) 仿真

    此示例说明如何使用目标连接 API 创建一个自定义 PIL 实现。您可以检查配置编译过程以支持 PIL、下载和执行工具以及主机与目标之间通信通道的代码。要激活完全基于主机的 PIL 配置,请按照示例中的步骤操作。

  • 为处理器在环 (PIL) 仿真创建目标通信通道

    此示例说明如何实现一个通信通道以便与 Embedded Coder 产品和您的嵌入式目标结合使用。此通信通道支持不同进程之间的数据交换。PIL 仿真需要在开发计算机上运行的 Simulink 软件和在目标硬件上执行的部署代码之间交换数据。

    rtiostream 接口提供一个通用通信通道,您可以针对一系列连接类型以目标连接驱动形式实现该信道。此示例说明如何配置您自己的 TCP/IP 目标端驱动,以使用默认的主机端 TCP/IP 驱动来工作。默认 TCP/IP 通信允许主机和目标之间的高带宽通信,您可以使用它来传输数据,例如视频。

    注意

    如果您为您的 PIL 仿真自定义 rtiostream TCP/IP 实现,则您必须对连接的服务器端关闭纳格算法。如果纳格算法未关闭,您的 PIL 仿真可能以明显较慢的速度运行。matlabroot/toolbox/coder/rtiostream/src/rtiostreamtcpip/rtiostream_tcpip.c 文件说明如何关闭纳格算法:

    /* Disable Nagle's Algorithm*/
    option = 1;
    sockStatus = setsockopt(lFd,IPPROTO_TCP,TCP_NODELAY,(char*)&option,sizeof(option));  
    自定义 TCP/IP 实现的代码可能需要修改。

    示例还说明如何实现自定义目标连接驱动,例如,对通信通道的主机端和目标端使用串行、CAN 或 USB。

另请参阅

| | | | | |

主题