在 NI Linux RT 目标上为 LabVIEW Real-Time 或 VeriStand 创建共享库

更新 Nov 2, 2021

环境

软件

  • LabVIEW Real-Time Module
  • C/C++ Development Tools

操作系统

  • LabVIEW Real-Time (NI Linux Real-Time)

程式语言

  • C

通过 NI Linux Real-Time,您可以使用 Eclipse 完全用 C 或 C++ 编写开发、调试共享库并将其部署到开放嵌入式处理器。 本文介绍了如何将 C 或 C++ 代码编译为 *.so 共享库文件,通过使用 LabVIEW 或 VeriStand部署在 NI Linux RT 目标上。 本页底部提供了示例项目。
要为 NI Linux Real-Time 开发、调试和部署应用程序或可执行文件,请参阅为 NI Linux Real-Time 构建 C/C++ 应用程序

在继续之前,您可以从实时控制器与实时操作系统之间的兼容性中检查实时目标的操作系统。
 

安装

要使用适用于您的嵌入式系统的 GCC C 交叉编译器设置 Eclipse,请参考Getting Started with C/C++ Development Tools for NI Linux Real-Time, Eclipse Edition
如果您正在为 VeriStand 编译 .so 模型,请确保您已安装 NI VeriStand 模型框架(VeriStand Model Framework)。 请参阅如何安装NI VeriStand Model Framework?
 

创建 C/C++ 项目

  1. 运行C/C++ Development Tools for NI Linux Real-Time, Eclipse Edition。
  2. 出现提示时,选择一个用于存储 Eclipse 项目的文件夹,然后单击“确定”。
  3. 在 Eclipse 欢迎屏幕中,选择最右侧的 Workbench 图标以打开工作台视图。
  4. 导航到File>>New>>C Project 并选择Shared Library项目和Cross GCC 工具链,创建一个新 C/C++项目。
​​​​​
项目设置文件
  1. 选择 DebugRelease 配置进行创建。
  2. 当提示配置 Cross GCC 前缀和路径时,从下面的列表中为您的 NI Linux Real-Time 目标选择适当的路径和前缀,并显示在以下 Intel x64 目标的屏幕截图中:
前缀:
(基于ARM的目标,2013软件栈)
arm-none-linux-gnueabi-
(基于ARM的目标,2014和2017软件栈) arm-nilrt-linux-gnueabi-
(基于Intel x64的目标,2014和2017软件栈) x86_64-nilrt-linux-
路径:
(基于ARM的目标,2013软件栈) \<National Instruments>\ Eclipse\toolchain\gcc-4.4-arm\i386\bin
(基于ARM的目标,2014软件栈) \<National Instruments>\ Eclipse\14.0\arm\sysroots\i686-nilrtsdk-mingw32\usr\bin\armv7a-vfp-neon-nilrt-linux-gnueabi
(基于ARM的目标,2017软件栈) C:\build\17.0\arm\ sysroots\i686-nilrtsdk-mingw32\usr\bin\arm-nilrt-linux-gnueabi
(基于Intel x64的目标,2014软件栈) \<National Instruments>\Eclipse\14.0\x64\sysroots\i686-nilrtsdk-mingw32\usr\bin\x86_64-nilrt-linux
(基于Intel x64的目标,2017软件栈)C:\build\17.0\x64\ sysroots\i686-nilrtsdk-mingw32\usr\bin\x86_64-nilrt-linux
  1. 如果源文件夹不存在,右键单击您的项目文件夹并选择New>>Source Folder。 然后通过右键单击源文件夹并选择导入来导入 .c 文件。 选择 General>>File System,然后浏览到现有 C 代码的目录以导入 .c 文件。
  2. 完成后,您的项目浏览器窗格应该如下图所示。在这个例子中,engine.c是我们想要编译成so文件的C文件。如果你正在编译一个Veristand模型的so文件,你需要包含ni_modelframework.cni_modelframework.h。有关组件的位置,请参阅 NI VeriStand 模型框架简介
添加的文件.PNG
  1. Project Explorer选项卡中右键单击您的项目,然后选择Properties 。
  2. 在Properties窗口的左窗格中选择 C/C++ Build。 在Builder Settings选项卡下,从Builder Type下拉菜单中选择Internal Builder
  3. 在Properties窗口的左窗格中选择 C/C++ Build >> Settings。在Tool Settings选项卡中,导航至Cross GCC Compiler>>Miscellaneous 。在Other flags文本框中,在现有文本之后添加一个空格,然后输入以下值之一:
(基于ARM的目标,2017软件栈)-- sysroot = C:\ build\17.0\arm\sysroots\cortexa9-vfpv3-nilrt-linux-gnueabi
(基于Intel x64的目标,2017软件栈)-- sysroot = C:\ build\17.0\x64\sysroots\core2-64-nilrt-linux
  1. Tool Settings选项卡中,导航至Cross GCC Linker>>Miscellaneous,然后在“Linker flags文本框中输入以下值之一:
(基于ARM的目标,2017软件栈)-- sysroot = C:\ build\17.0\arm\sysroots\cortexa9-vfpv3-nilrt-linux-gnueabi
(基于Intel x64的目标,2017软件栈)-- sysroot = C:\ build\17.0\x64\sysroots\core2-64-nilrt-linu
  1. 在Properties窗口中导航到C/C++ General>>Paths and Symbols。转到Symbols选项卡,然后选择Add 。输入名称kNIOSLinux的符号,点击OK ,然后Apply
SetSymbol.PNG
  1. 在项目属性窗口中,选择C/C++ Build>>Settings,然后转到Tool Settings>>Cross GCC Compiler>>Miscellaneous部分。启用Position Independent Code选项,然后点击Apply
图片素材
  1. 转到C/C++ Build>>Settings>>Cross GCC Compiler,在Command文本框中添加一个空格然后输入-fvisibility = protected,以指示GCC将符号可见性设置为protected。点击 Apply
protected.png
  1. 转到Error Parsers选项卡。确保仅选择了GNU Assembler Error ParserGNU gmake Error Parser 7.0, GNU Linker Error Parser选项,然后点击ApplyOK关闭Properties窗口。
​​​​​​​​​​​​​​错误解析器
  1. 在 Project Explorer 选项卡中右键单击您的项目,然后选择 Build Project。 完成后将生成一个 .so 文件。

本文附上了两个示例项目。 您可以选择 File >> Import >> General >> Existing Project Into Workspace 将示例项目导入 Eclipse 的工作区。 然后替换 .c .h 文件并继续构建项目。
  • SimpleLibrary.zip 包含用于简单添加操作的项目。
  • EngineModel.zip 包含从 C:\VeriStand\20xx\ModelInterface\custom\examples\engine 创建的 VeriStand 模型的项目

下一步

您可以继续在 LabVIEW VeriStand 中导入和使用共享库。