https://blog.csdn.net/feifansong/article/details/80255276
這是因為工作寫的一個文檔,主要是我們開發人員都不會Linux不會vi也不會命令行,於是研究了一下Windows系統調試ARM Linux程序的辦法,在這共享一下。
1. 概述
嵌入式Linux系統的應用程序開發,編譯器一般是gcc,一般都說是要在Linux虛擬機中進行開發和編譯。本文提供了一種能夠在Windows系統下編譯、調試Linux應用程序的方法,可大大簡化Linux軟件開發環境的搭建難度,保留原開發人員的操作習慣,讓Linux程序開發和開發VxWorks一樣方便快捷。
2. 軟件包
2.1. IDE環境:EclipseIDE for C/C++ Developers
地址:
Eclipse IDE for C/C++ Developers
Eclipse下載后,無需安裝配置,直接解壓到program files目錄即可運行,可放快捷方式到桌面。
2.2. 交叉編譯工具:Linaro GCC
地址:
編譯器版本選擇,建議與CPU官方開發包提供的版本一致或接近,不必要追求最新版本。Windows下的編譯器,命名一般為:gcc-linaro-4.9.4-2017.01-i686-mingw32_arm-linux-gnueabihf.tar.xz。帶有mingw32字樣的,就是Windows版的。
安裝方法:
將下載的包用7zip解壓到D:\gcc(winRAR似乎有問題,待確認),目錄結構如下:

其中主要的幾個目錄位置如下:
bin/ 交叉編譯工具目錄
arm-linux-gnueabihf/libc/usr/include Linux user-space程序頭文件目錄
添加環境變量:
解壓文件后,將D:\gcc\bin目錄,添加到系統PATH環境變量中(系統屬性-高級屬性-環境變量),確保在任何位置調用arm-linux-gnueabihf-gcc均能成功。
2.3. Cygwin環境
根據安裝向導進行在線安裝,隨本文檔提供離線安裝包
注意:
1、 源選擇國內的某個http://edu.cn源,或網上尋找合適的國內源(如163mirror)
2、 軟件包選擇一定要包含“man”包,其他開發包根據需要可以以后追加
安裝完成后,就可以在Windows環境使用Linux命令了
2.4. Linux API man庫
地址:Index of /pub/linux/docs/man-pages
需要下載兩個包:
man-pages
man-pages-posix
均可選擇最新版本下載
下載后解壓,將其中的man1~man7,man1p~man7p目錄,復制到Cygwin安裝目錄下Cygwin_base/usr/share/man,如果重名則選擇覆蓋。
完成后,打開Cygwin終端測試:
man aio
manpthread_mutex_lock
如果能正確打開對應的幫助文檔,說明安裝完成。
以后開發中,可以隨時通過man程序查看函數手冊。
3. 目標板准備
目標板應能正常運行Linux系統,與開發機網絡連通。在此基礎上,確保以下功能被配置正確。本章節的准備工作,一般可由內核或rootfs維護人員處理,應用程序開發工程師一般不需要處理。
3.1. 開啟SSH服務器
確保系統打開了SSH服務,一般在嵌入式Linux下,由dropbear提供該功能。
通過以下命令確認是否開啟:
ps | grep dropbear
如果沒有開啟,需要找內核和rootfs維護人員處理。
3.2. GDB Server
遠程調試依賴GDB Server功能,需要確保目標板上的GDB Server版本與開發環境中的一致,可復制位於GCC環境下的gdbserver到目標板。Windows下的gdbserver位於如下路徑:
D:\gcc\bin\gdbserver
3.3. 調試臨時目錄
程序開發調試時,會反復地把編譯好的應用程序復制到目標板的文件系統中。當目標板中Linux系統完全運行在Flash並無NFS文件系統時,下載文件的速度可能較慢,反復下載也可能導致Flash壽命提前結束。
為了提高調試效率,保證壽命,我們可以在目標板上申請一塊tmpfs內存目錄,調試程序都可以在該目錄下進行。
這里我們約定基於tmpfs的調試目錄為/run/app,后續文檔中說明的應用程序調試目錄均在此。
335x系統中,可修改/etc/default/volatiles/00_core,增加下面一行后自動創建app目錄:
d root root 1777 /run/app none
4. 應用程序開發
4.1. Eclipse配置
Window-Preference
搜索path
在C/C++的Source Lookup Path中,添加一個File System Dir.,路徑指向
D:\gcc\arm-linux-gnueabihf\libc\usr\include
並包含其子目錄

4.2. 創建連接
File – New –Other
Remote SystemExplorer – Connection
創建一個連接:

連接類型為Linux:

輸入HostName和IP地址:

下一步后,選擇文件傳輸方式為SSH方式:

下一步,選擇進程控制方式為通過系統shell控制
圖略,同上
下一步,選擇ssh.shells
圖略,同上
下一步,選擇ssh.terminals:
圖略,同上
點擊Finish完成。
測試
Window – View中打開Remote Systems窗口

右鍵Connect,當提示輸入密碼時,輸入目標板用戶名、密碼(通常為root,密碼空)

如果一切正常,可以展開SftpFiles查看目標板上的文件,右鍵SSH Terminals可以啟動一個ssh終端。
4.3. 創建工程
新建一個工程,選擇CProject

輸入工程名,工程類型選擇Executable—EmptyProject –Cross GCC

Cross GCC設置中,輸入gcc前綴和gcc路徑:

創建工程后,選擇工程屬性
C/C++ Build中,Builder選擇內建builder:InternalBuilder

完成配置后,編譯程序,應能成功:

4.4. 程序調試
打開DebugConfigurations

在C/C++ RemoteApplication下新建一個config.

在右側配置頁Main中
選擇Connection為之前創建的Linux目標板連接LINUX_PMC-1308V2
遠程運行程序路徑,選擇3.3調試臨時目錄中指定的調試目錄,並在后面追加調試程序名:/run/app/appdemo

在Debugger選項卡中,指定gdb程序名為arm-linux-gnueabihf-gdb

配置完成后,即可點擊對話框右下角Debug按鈕啟動調試。
剩下的工作,和Windows系統其他基於Eclipse的嵌入式開發環境下調試單片機程序、VxWorks程序沒什么區別了。