文件目錄:
安裝
- 安裝Java(建議使用Java SE 6或更高版本),可以從http://www.java.com/getjava下載。
- 安裝適用於NI Linux Real-Time Eclipse Edition的C/C++ Development Tools。
對於LabVIEW 2014至LabVIEW 2016,請安裝C/C++ Development Tools for NI Linux Real-Time, Eclipse Edition 2014-2016。
對於LabVIEW 2017和LabVIEW 2018,請安裝C/C++ Development Tools for NI Linux Real-Time, Eclipse Edition 2017-2018。
首次使用NI Linux Real-Time Eclipse Edition的C/C++ Development Tools
完成以下步驟,為首次使用的NI Linux Real-Time Eclipse Edition進行設定:
- 啟動C/C++ Development Tools for NI Linux Real-Time, Eclipse Edition。
- 在彈出視窗中,選擇一個儲存Eclipse專案的資料夾,然後點擊OK 。
| | Tip: 勾選"Use this as the default and do not ask again",將專案資料夾設為預設位置。 |
- 在Eclipse歡迎畫面中,選擇最右邊的Workbench圖示以打開操作介面。
- C/C++ Development Tools for NI Linux Real-Time, Eclipse Edition,在Perspectives Bar上標註了Active Perspective,如下圖所示。首次開啟時,Workbench將開啟於C/C++ perspective。
接著,我們要在C/C++ perspective中建立一個新專案。
建立一個C/C++專案
完成以下步驟,以在C/C++ Development Tools
建立一個C/C++專案:
- 切換到C/C++ Perspective。
- 選擇File»New»Project以打開New Project Wizard。
- 展開C/C++資料夾,然後根據要使用的程式語言選擇C Project或C++ Project 。
- 點擊“Next”打開“ C Project”頁面。
- 在“Project name”中輸入專案名稱。
- 在“Project type”中的Executable資料夾下,選擇“ Hello World ANSI Project ”。
| 注意! 本教學將使用Hello Word ANSI Project作為範例。您可以選擇適合您需求的任何專案類型。 |
- 在“Toolchains listbox”中選擇“Cross GCC ”以啟用cross-compilation,cross-compilation將設定編譯器以建立用於嵌入式系統(例如您的NI Linux Real-Time Target裝置)的執行檔。
- 點擊“Next”打開“Basic Settings”頁面。
- 在Author, Copyright notice, Hello world greeting和Source中輸入專案的基本屬性。
| 注意! “Source”為指定開發電腦硬碟上儲存專案原始碼的路徑目錄。 |
- 點擊“Next”打開“Select Configurations”頁面。
- 啟用“Debug”以將專案設定為允許Debug執行檔,和/或啟用"Release"以將專案設定為允許構建更小,更快的針對發布進行優化的執行檔。
| 注意! 對於本教學而言,請確保啟用Debug 。 |
- 點擊“Next”打開“ Cross GCC命令”頁面。
- 在“Cross compiler prefix”文字框中,輸入以下清單中的值之一,並在最後輸入連字符(-),以為您的NI Linux Real-Time Target指定正確的編譯器:
- (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-
- 在“Cross compiler path”文字框中,為你的RT target選到以下清單中指定的正確編譯器的位置:
- (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
- 點擊“Finish”以建立您的專案並返回到workbench畫面。
在下一部份教學裡,您將建立專案的可執行版本以使其能夠執行。
Build C / C ++專案
在執行專案之前,您需要透過建立專案的可執行內部版本來測試源程式碼是否已編譯。完成以下步驟以建立C / C ++專案的可執行版本:
- 切換到C / C ++ Perspective。
- 如果要使模板符合您的應用程式需求,請修改模板內的原始碼;如果選擇空白專案,請輸入C / C ++程式碼。就本教學而言,您無需更改Hello Word ANSI Project原始碼。
- 在“Project Explore”頁卡中右鍵點擊您的專案,然後選擇“Properties” 。
- 在“Properties”對話框的左視窗中選擇“ C / C ++ Build ”。
- 從“ Builder type”下拉菜單中選擇“Internal builder”以進行debug設定。選擇Internal builder使用NI Linux Real-Time Eclipse Edition的C / C ++開發工具(而不是外部生成文件)來生成執行檔。
| 注意! 本教學示範使用“Debug”,但是本段教學也適用於“Release”設定。 |
- 在“Properties”對話框的左視窗中,選擇“ C / C ++ Build”下的“Settings ”。
- 在“Tool Settings”頁面中的“Cross GCC Compiler”下選擇“Miscellaneous ” 。
- (基於ARM的target)在“Other flags”文字框中的現有字串之後添加一個空格,然後輸入-mfpu = vfpv3 -mfloat-abi = softfp 。此步驟提高了浮點運算的效能。
- (2017 software stack)完成以下步驟以指定sysroot的路徑,該路徑是標頭檔和libraries的邏輯根目錄。您需要指定sysroot的路徑才能正確編譯和鏈接應用程式。
- 在“Other flags”文字框中,在現有文本之後添加一個空格,然後輸入以下列表中的值之一:
(基於ARM的 target,2017 software stack)-- sysroot = C:\build\17.0\arm\sysroots\cortexa9-vfpv3-nilrt-linux-gnueabi
(基於Intel x64的 target,2017 software stack)-- sysroot = C:\build\17.0\x64\sysroots\core2-64-nilrt-linux - 在“Tool Settings”頁面中的“Cross GCC Linker”下選擇“Miscellaneous ” 。
- 在Linker flags文字框中,輸入以下清單中的值之一:
(基於ARM的 target,2017 software stack)-- sysroot = C:\build\17.0\arm\sysroots\cortexa9-vfpv3-nilrt-linux-gnueabi
(基於Intel x64的 target,2017 software stack)-- sysroot = C:\build\17.0\x64\sysroots\core2-64-nilrt-linux
- (2017software stack)要消除由included的標頭類別中引發的語義錯誤,必須在C / C ++ General中的 Paths and Symbols, GNU C or GNU C++下包含以下目錄。對於C ++入門範例, GNU C ++中也必須要包含以下目錄。
(基於ARM的 target,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
(基於Intel x64的 target,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 - 點擊“Apply ” ,然後點擊“OK”關閉“Properties”對話框。
- 在workbench區中選擇Project»Build Project以建立專案的執行檔。
- 如果Build成功完成,則“Console”視窗中將顯示“Build Finished”,如下圖所示。
| 注意! 即使build成功,在“Problem”視窗中也可能會出現 'Program "g++" not found in PATH'” 或 'Program "gcc" not found in PATH' 的error。 可以右鍵點擊錯誤,然後選擇Delete。 |
在本教學的下一部份中,您準備透過將RT Target增加到專案中來在NI Linux Real-Time target上執行執行檔。
設定遠端系統
在執行上一節中在NI Linux Real-Time target上建立的執行檔之前,需要將RT target添加到專案中。完成以下步驟,以將NI Linux Real-Time C / C ++開發工具中的target設定為遠端系統:
| 注意! 在繼續執行本節中的步驟之前,請確保RT target已啟用SSH。您可以使用Measurement&Automation Explorer(MAX)或使用RT Target上的DIP開關(如果可用)在RT target上啟用SSH。 |
- 選擇Window»Open Perspective»Other 打開Open Perspective對話框。
- 選擇“Remote System Explorer” 。
- 點擊“OK”將“Remote System Explorer”perspective 增加到workbench。
- 點擊“Define a connection to remote system”按鈕(如下圖所示),以開啟“New Connection wizard"。
- 選擇General 資料夾下的SSH Only 。
| 注意! 您也可以選擇Linux作為遠端系統類型,但是由於連接到NI Linux Real-Time target需要SSH,因此預先選擇SSH Only可以縮短設定步驟。 |
- 點擊“Next”打開“ Remote SSH Only System Connection”頁面。
- 從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”。
- 在Host Name文字框中輸入NI Linux Real-Time終端的主機名或IP地址。
| 您可以使用MAX來識別RT Target的主機名和IP地址。 |
- (Optional)在“Description”和“Connection Name”文字框中輸入描述或更改連接名稱,以幫助您在RT Target顯示在 Remote System Explorer perspective中時辨識您的RT Target。
- 點擊Finish。
- RT Target顯示在“Remote Systems perspective中的“Remote System”頁面卡中,如下圖所示。
- 展開RT target下的Sftp Files資料夾,以瀏覽RT target上的檔案。
- 出現提示時,輸入設定的使用者名稱和密碼,然後點擊OK。預設使用者名為admin ,預設密碼為空。
| 注意! NI建議您設定密碼以提高安全性。有關設定密碼的資訊,請參考Measurement&Automation Explorer幫助中的“Logging in to your System”主題,您能從MAX中選擇“Help”»“ MAX Help” 。 |
| 注意! 如果連接彈出窗口不包含“User ID”輸入欄位,請在“Remote System”頁面下的RT Target上點擊滑鼠右鍵,然後點擊“Properties”。您可以透過更改Host類別中的Default User ID選項來更新使用者ID輸入。 |
成功登錄後,您將建立到RT Target的SSH連接並允許將檔案傳輸到該目標。在本教學的下一部份中,您將在RT Target上複製並執行C / C ++執行檔。
在NI Linux Real-Time 裝置上執行C / C ++
本教學到目前為止,您的專案包含一個RT Target和一個執行檔。完成以下步驟以在RT Target上執行C / C ++執行檔:
- 選擇Run»Run Configuration以打開執行設定對話框。
- 在左視窗中選擇“ C / C ++ Remote Application”。
- 點擊New launch configuration按鈕(如下圖所示),以指定用於在RT Target上運行執行檔的設置。
- 從“Connection”下拉式選單中選擇目標。
- 點擊“ Remote Absolute File Path for C/C++ Applications”文字框旁邊的“Browse”按鈕,以打開“Select Remote C/C++ Application File”對話框。
- 右鍵點擊清單中的“My Home”,然後選擇“New»Folder”以在RT Target上建立一個資料夾,在該資料夾中放置執行檔的copy。
- 在“New folder name”文字框中輸入在上一步中建立的資料夾的名稱。
- 點擊Finish以返回到“Run Configuration”對話框。
- 將您的專案名稱(或您希望設定給給執行檔的任何名稱)添加到“ Remote Absolute File Path for C/C++ Applications”文字框中的檔案路徑。
| 注意! 此文字框指定target上編譯器將執行檔複製到的文件路徑(包括執行檔名稱)。在此範例中,檔案路徑讀取/home/admin/ProjectFolder/MyProjectName ,其中MyProjectName定義執行檔名稱,如下圖所示。 |
- 點擊“Apply” ,然後點擊“Run”以在RT Target上複製並執行執行檔。
- 程式執行將顯示在“Console”視窗中,如下圖所示。
下一部份教學會說明NI Linux Real-Time Eclipse Edition的C / C ++開發工具中提供的debug功能。
Debug C / C ++專案
C/C++ Development Tools for NI Linux Real-Time, Eclipse
提供了用於debug專案的功能,以下步驟說明如何debug C / C ++專案:
- 選擇Run»Debug Configuration以打開debug設定對話框。
- 選擇“Debugger”頁面。
- 點擊GDB debugger文字框旁邊的“Browse”按鈕。
- 按照以下清單中的說明選擇正確的debugger:
(基於ARM的target,2013 Software Stack) <National Instruments>\Eclipse\toolchain\gcc-4.4-arm\i386\bin資料夾中的arm-none-linux-gnueabi-gdb.exe
(基於ARM的target,2014 Software Stack) <National Instruments>\Eclipse\14.0\arm\sysroots\i686-nilrtsdk-mingw32\usr\bin\armv7a-vfp-neon-nilrt-linux-gnueabi 資料夾中的 arm-nilrt-linux-gnueabi-gdb.exe
(基於ARM的target,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
(基於x64的Intel target,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
(基於x64的Intel 的target,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 - 點擊Open。
- 點擊“Apply” ,然後點擊“Debug”以開始Debug專案。
- 當提示您切換Perspective時,請點擊“Yes” 。
-
探索Debug Perspective
- 左上角的“Debug”頁面顯示每個正在執行的thread的calling stack。
- 右上方的“Variables”頁面列出了原始碼中的C / C ++ 變數。
- 畫面中間偏左的部份會顯示原始碼,並在執行時highlight正在執行的程式碼。
| 您可以將滑鼠懸在原始碼上,以顯示有關函式或變數的詳細資訊。 | |
- 要插入斷點,請highlight該行程式碼,然後選擇“Run»Toggle Breakpoint” 。則程式在執行時會暫停在已設置斷點的位置。
探索Debug Toolbar
Debug Toolbar包括以下按鈕:
| Instruction Stepping Mode | 啟用指令步單步進行模式以在程式進入disassembled編程式碼時檢查程式。 |
| Drop to Frame | 在“Debug” view 中重新進入選定的stack frame。 |
| Use Step Filters | 在“debug” view中啟用Step Filter。 |
| Step Return | 繼續執行到當前routine的最末尾,然後繼續回頭執行routine的呼叫者。 |
| Step Over | 執行目前此行程式碼。 |
| Step Into | 執行目前此行程式碼,包括所有routines,然後繼續執行下一行。 |
| Resume | 讓Suspended的debug target恢復執行。 |
| Suspend | 在debug target中停止執行當前選定的thread。 |
| Terminate | 結束所選的debug session。 |
| Disconnect | 從所選process中分離(detach) debugger。 |