NI Linux Real-Time Eclipse版本的C / C ++开发工具入门指南

更新 Nov 8, 2023

环境

软件

  • LabVIEW
  • C/C++ Development Tools

操作系统

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

以下提供了入门指南的内容,该内容也需随产品一并安装在\ <National Instruments> \ Eclipse \ help目录中。若需要查看较大的图像,请从此页面所附的压缩文件夹中提取文件,或查看产品随附的入门内容。

本教程概述了如何使用用于NI Linux Real-Time Eclipse版的C / C ++开发工具以创建C / C ++项目,并如何从项目源代码生成可执行文件,以及如何在NI Linux Real-Time目标上运行和调试可执行文件。

安装

  1. 安装Java(建议使用Java SE 6或更高版本)。
    • NI Linux Real-Time 2017 Eclipse 版的 C & C++ 开发工具是一个 32 位应用程序。Java SE 的位数都必须与 Eclipse 应用程序的位数相匹配。
  2. 安装 用于NI Linux Real-Time Eclipse版的C / C ++开发工具,
    对于LabVIEW 2014至LabVIEW 2016,请安装
    适用于NI Linux Real-Time Eclipse 版 2014-2016的C / C ++开发工具
    对于LabVIEW 2017和LabVIEW 2018,请安装
    适用于NI Linux Real-Time Eclipse 版 2017-2018 的C / C ++开发工具

首次使用NI Linux Real-Time的C / C ++开发工具

请完成以下步骤,为首次使用NI Linux Real-Time Eclipse 版的C / C ++开发工具进行配置:

  1. 启动 NI Linux Real-Time Eclipse版的C / C ++开发工具。
  2. 出现提示时,选择一个存储Eclipse项目的文件夹,然后单击OK
    提示启用Use this as the default and do not ask again将项目文件夹另存为默认路径。
  3. 在Eclipse欢迎屏幕中,选择最右边的Workbench图标以打开操作页面。
  4. NI Linux Real-Time Eclipse版 C / C ++开发工具将在Perspectives Bar上显示Active Perspective,如下图所示。首次使用C / C ++开发工具时,Workbench将在C / C ++perspective中打开。

    在本教程的下一部分,您将在C / C ++ 
    perspective中创建一个新项目。


创建一个C / C ++项目

完成以下步骤,以在NI Linux Real-Time Eclipse版的C / C ++开发工具中创建一个C或C ++项目:
  1. 切换到C / C ++透视图。
  2. 选择File»New»Project以打开New Project Wizard。
  3. 展开C / C ++文件夹,然后依据您要使用的编程语言并选择C ProjectC ++ Project
  4. 单击Next并打开C Project页面。
  5. Project Name文本框中输入项目名称。
  6. Project type列表框中的Executable文件夹下,选择Hello World ANSI Project
    注意本教程将Hello Word ANSI Project用于指导目的。您可以选择适合您需求的任何项目类型。
  7. Toolchains列表框中选择Cross Gcc以启用cross-compilation,cross-compilation将配置编译器以创建用于嵌入式系统(例如您的NI Linux Real-Time目标)的可执行代码。

  8. 单击Next打开Basic Settings页面。
  9. Author ,Copyright notice ,Hello world greetingSource文本框中输入项目的基本属性资料。
    注意 Source文本框是指定开发电脑的硬盘驱动器上所存储项目源代码的目录。

  10. 单击Next打开Select Configurations页面。
  11. 启用Debug以将项目配置为允许调试的可执行文件,和/或启用Release以将项目配置为允许构建更小及更快的针对发布进行优化的可执行文件。
    注意对于本教程而言,请确保启用Debug
  12. 单击Next打开Cross GCC Command页面。
  13. Cross compiler prefix文本框中,请输入以下列表中的其一值,并在最后输入连字符(-),以为您的NI Linux Real-Time目标指定正确的编译器:
    • (ARM-based targets, 2013 software stack) arm-none-linux-gnueabi
    • (ARM-based targets, 2014 software stack) arm-nilrt-linux-gnueabi-
    • (ARM-based targets, 2017 software stack) arm-nilrt-linux-gnueabi-
    • (Intel x64-based targets, 2014 software stack) x86_64-nilrt-linux-
    • (Intel x64-based targets, 2017 software stack) x86_64-nilrt-linux-
  14. Cross compiler path文本框中,浏览到以下列表中指定的目标正确编译器的位置:
    • (ARM-based targets, 2013 software stack) \<National Instruments>\Eclipse\toolchain\gcc-4.4-arm\i386\bin
    • (ARM-based targets, 2014 software stack) \<National Instruments>\Eclipse\14.0\arm\sysroots\i686-nilrtsdk-mingw32\usr\bin\armv7a-vfp-neon-nilrt-linux-gnueabi
    • (ARM-based targets, 2017 software stack) C:\build\17.0\arm\sysroots\i686-nilrtsdk-mingw32\usr\bin\arm-nilrt-linux-gnueabi
    • (Intel x64-based targets, 2014 software stack) \<National Instruments>\Eclipse\14.0\x64\sysroots\i686-nilrtsdk-mingw32\usr\bin\x86_64-nilrt-linux
    • (Intel x64-based targets, 2017 software stack) C:\build\17.0\x64\sysroots\i686-nilrtsdk-mingw32\usr\bin\x86_64-nilrt-linux

  15. 单击Finish以创建您的项目并返回到Workbench页面。
在本教程的下一部分中,您将创建项目的可执行版本以使其能够运行。

创建C / C ++项目的构建

在运行项目之前,您需要通过创建项目的可执行内部版本来测试源代码是否已编译。完成以下步骤以创建C / C ++项目的可执行版本:
  1. 切换到C / C ++ Perspective。
  2. 如果要使模板适应您的应用程序需求,请修改模板源代码;如果选择空白项目,请输入C / C ++代码。就本教程而言,您无需更改Hello Word ANSI Project源代码。

  3. Project Explorer选项卡中右键单击您的项目,然后选择Properties

  4. Properties对话框的左窗格中选择C/C++ Build
  5. Builder type下拉菜单中选择Internal builder以进行调试配置。选择内部生成器使用NI Linux Real-Time Eclipse版本的C / C ++开发工具(而不是外部生成文件)来生成可执行文件。
    注意:出于本教程的目的,您只能使用Debug配置,但是本节也适用于Release配置。
  6. 在Properties对话框的左窗格中,选择C/C++ Build下的Settings
  7. Tool Settings选项卡中的Cross GCC Compiler下选择Miscellaneous
  8. (ARM-based targets) 在Other flags文本框中的现有文本之后添加一个空格,然后输入-mfpu = vfpv3 -mfloat-abi = softfp 。此步骤提高了浮点运算的性能。
  9. (2017 software stack) 完成以下步骤以指定sysroot的路径,该路径是标头和library的逻辑根目录。您需要指定sysroot的路径才能正确编译和链接应用程序。
    1. Other flags文本框中,在现有文本之后添加一个空格,然后输入以下列表中的值之一:
      • (ARM-based targets, 2017 software stack) --sysroot=C:\build\17.0\arm\sysroots\cortexa9-vfpv3-nilrt-linux-gnueabi
      • (Intel x64-based targets, 2017 software stack) --sysroot=C:\build\17.0\x64\sysroots\core2-64-nilrt-linux
    2. 在Tool Settings选项卡中的Cross GCC Linker下选择Miscellaneous。
    3. 在Linker flags文本框中,输入以下列表中的值之一:
      • (ARM-based targets, 2017 software stack) --sysroot=C:\build\17.0\arm\sysroots\cortexa9-vfpv3-nilrt-linux-gnueabi
      • (Intel x64-based targets, 2017 software stack) --sysroot=C:\build\17.0\x64\sysroots\core2-64-nilrt-linux
  10. (2017 software stack要从included的标头类中引发的语义错误,必须在C/C++ General中的Paths and SymbolsGNU CGNU C ++下包含以下目录。对于C ++入门示例, GNU C ++中也必须包含以下目录。
    • (ARM-based targets, 2017 software stack)
      • C:\ build \ 17.0 \ arm \ sysroots \ cortexa9-vfpv3-nilrt-linux-gnueabi \ usr \ include \ c ++ \ 4.9.2 \
      • C:\ build \ 17.0 \ arm \ sysroots \ cortexa9-vfpv3-nilrt-linux-gnueabi \ usr \ include \ c ++ \ 4.9.2 \ arm-nilrt-linux-gnueabi
      • C:\build\17.0\arm\sysroots\cortexa9-vfpv3-nilrt-linux-gnueabi\usr\include
    • (Intel x64-based targets, 2017 software stack) 
      • C:\build\17.0\x64\sysroots\core2-64-nilrt-linux\usr\include\c++\4.9.2
      • C:\build\17.0\x64\sysroots\core2-64-nilrt-linux\usr\include\c++\4.9.2\x86_64-nilrt-linux
      • C:\build\17.0\x64\sysroots\core2-64-nilrt-linux\usr\includ
  11. 单击Apply ,然后单击OK以关闭Properties对话框。
  12. 在Workbench区域中选择Project » Build Project以创建项目的可执行文件。
  13. 如果Build成功完成,Console选项卡将显示Build Finished,如下图所示。

    注意即使build成功,在Problem选项卡中也可能会出现'Program "g++" not found in PATH' or 'Program "gcc" not found in PATH"。 可以单击错误,然后选择Delete
在本教程的下一部分中,您准备通过将目标添加到项目中来在NI Linux Real-Time目标上运行可执行文件。

配置远程系统

在 NI Linux Real-Time目标上创建可执行文件之前,是需要先将目标添加到项目中。请完成以下步骤,将NI Linux Real-Time C / C ++开发工具中的目标配置为远程系统:

注意在继续执行本节中的步骤之前,请确保目标已启用安全外壳(SSH)。您可以使用Measurement&Automation Explorer(MAX)或使用目标上的DIP开关(如果可用)在目标上启用SSH。
  1. 选择Window »Open Perspective» Other 打开Open Perspective对话框。
  2. 选择Remote System Explorer

  3. 单击OK将Remote System Explorer Perspective添加到Workbench。
  4. 单击Define a connection to remote system按钮(如下图所示),以打开New Connection wizard向导。

  5. 选择General 文件夹下的SSH Only 
    注:您也可以选择Linux作为远程系统类型,但是由于连接到NI Linux Real-Time目标需要SSH,因此选择SSH Only通过预先选择SSH选项可以缩短配置步骤。
  6. 单击Next ​​打开Remote SSH Only System Connection页面。
  7. Parent profile下拉菜单中选择一个配置文件以包含远程系统连接。有关配置文件的信息,请参见用于Remote System Explorer Profiles topic of the C/C++ Development Tools for NI Linux Real-Time, Eclipse Edition Help,可从Workbench中选择Help»Help Contents
  8. Host Name文本框中输入NI Linux Real-Time终端的主机名或IP地址。
    提示您可以使用MAX来识别目标的主机名和IP地址。
  9. (可选)在DescriptionConnection Name文本框中输入描述或更改连接名称,以帮助您显示在 Remote System Explorer perspective中所识别的目标。

  10. 点击Finish
  11. 目标显示在Remote System Explorer perspective的Remote Systems选项卡中,如下图所示。
  12. 展开目标下的Sftp文件夹,以浏览目标上的文件。
  13. 出现提示时,输入分配给目标的用户名和密码,然后单击确定。默认用户名为admin ,默认密码为空密码。
    注意NI建议您设置密码以提高安全性。有关设置密码的信息,请参考Measurement&Automation Explorer帮助中的“登录到系统”主题,方法是从MAX中选择帮助»MAX帮助

注意如果连接弹出窗口不包含User ID字段,请在Remote System选项卡下的目标上单击鼠标右键,然后单击Properties。您可以通过更改Host类别中的Default User ID选项来更新用户ID输入。

成功登录后,您将建立到目标的SSH连接并允许将文件传输到该目标。在本教程的下一部分中,您将在目标上复制并运行C / C ++可执行文件。
 

在NI Linux实时目标上运行可执行的C / C ++

在本教程上,您的项目包含一个目标和一个可执行文件。完成以下步骤以在目标上运行C / C ++可执行文件:

  1. 选择Run»Run Configuration以打开运行配置对话框。
  2. 在左窗格中选择C / C ++ Remote Application
  3. 单击New launch configuration按钮(如下图所示),以指定用于在目标上运行可执行文件的设置。

  4. Connection下拉菜单中选择目标。
  5. 单击Remote Absolute File Path for C/C++ Applications文本框旁边的Browse按钮,以打开Select Remote C/C++ Application File对话框。
  6. 右键单击列表框中的My Home目录,然后选择New»Folder以在目标上创建一个文件夹,在该文件夹中放置可执行文件的副本。

  7. New folder name文本框中输入在上一步中创建的文件夹的名称

  8. 单击Finish以返回到Run Configuration对话框。
  9. 将您的项目名称(或您希望分配给可执行文件的任何名称)追加到Remote Absolute File Path for C/C++ Applications文本框中填充的文件路径
    注意此文本框指定目标上编译器将可执行文件复制到的文件路径(包括可执行文件名称)。在此示例中,文件路径读取/ home / admin / ProjectFolder / MyProjectName ,其中MyProjectName定义可执行文件名称,如下图所示。

  10. 单击Apply ,然后单击Run以在目标上复制并运行可执行文件。
  11. 程序执行将显示在Console选项卡中,如下图所示。

在本教程的下一部分,您将探索NI Linux Real-Time Eclipse版本的C / C ++开发工具中提供的调试功能。
 

调试C / C ++项目

NI Linux Real-Time Eclipse 版本的 C / C ++开发工具提供了用于调试项目的功能。完成以下步骤,以在于NI Linux Real-Time Eclipse 版本的 C / C ++开发工具中调试C / C ++项目:
  1. 选择Run»Debug Configuration以打开Debug Configurations对话框。
  2. 选择Debugger选项卡。
  3. 单击GDB debugger文本框旁边的Browse按钮。
  4. 按照以下列表中的说明选择正确的调试器:
    • (ARM-based targets, 2013 software stack) arm-none-linux-gnueabi-gdb.exe in the <National Instruments>\Eclipse\toolchain\gcc-4.4-arm\i386\bin directory
    • (ARM-based targets, 2014 software stack) arm-nilrt-linux-gnueabi-gdb.exe in the <National Instruments>\Eclipse\14.0\arm\sysroots\i686-nilrtsdk-mingw32\usr\bin\armv7a-vfp-neon-nilrt-linux-gnueabi directory
    • (ARM-based targets, 2017 software stack) arm-nilrt-linux-gnueabi-gdb.exe in the c:\build\17.0\arm\sysroots\i686-nilrtsdk-mingw32\usr\bin\arm-nilrt-linux-gnueabi directory
    • (Intel x64-based targets, 2014 software stack) x86_64-nilrt-linux-gdb.exe in the <National Instruments>\Eclipse\14.0\x64\sysroots\i686-nilrtsdk-mingw32\usr\bin\x86_64-nilrt-linux directory
    • (Intel x64-based targets, 2017 software stack) x86_64-nilrt-linux-gdb.exe in the c:\build\17.0\x64\sysroots\i686-nilrtsdk-mingw32\usr\bin\x86_64-nilrt-linux directory
  5. 点击Open

  6. 单击Apply,然后单击Debug以开始调试项目。
  7. 当NI Linux Real-Time Eclipse 版本的 C / C ++开发工具提示您切换Perspective时,请单击Yes 。

探索Debug Perspective

  • 左上角的 Debug 选项卡显示了每个正在运行的thread的calling stack

  • 右上方的Variables选项卡列出了源代码中的C / C ++变量。

  • 左中间的项目选项卡显示源代码,并在执行时突出显示行。
    提示您可以将光标悬停在源代码上,以显示有关函数或变量的详细信息。 

  • 要添加断点,请突出显示一行代码,然后选择Run»Toggle Breakpoint。断点在设置断点的位置挂起程序的执行。

探索Debug Toolbar


调试工具栏包括以下按钮:
Instruction Stepping Mode启用指令步进模式以在程序进入disassembled编代码时检查程序。
Drop to Frame在Debug视图中重新输入选定的stack frame。
Use Step Filters在Debug视图中启用步Step Filter。
Step Return继续执行到当前routine的末尾,然后继续执行到routine的调用者。
Step Over先执行当前行程序码,然后在执行routine。
 Step Into
先执行当前行程序码,包括所有routine,然后继续执行下一行。
Resume让Suspended的debug target恢复执行。
Suspend在debug target中停止在执行当前所选定的thread。
Terminate结束所选的debug session。
Disconnect从所选process中分离debugger(调试器)。