Windows下ARM Linux應用程式開發環境搭建說明
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程式沒什麼區別了。