1. 程式人生 > >Windows下ARM Linux應用程式開發環境搭建說明

Windows下ARM Linux應用程式開發環境搭建說明

這是因為工作寫的一個文件,主要是我們開發人員都不會Linux不會vi也不會命令列,於是研究了一下Windows系統除錯ARM Linux程式的辦法,在這共享一下。

1. 概述

嵌入式Linux系統的應用程式開發,編譯器一般是gcc,一般都說是要在Linux虛擬機器中進行開發和編譯。本文提供了一種能夠在Windows系統下編譯、除錯Linux應用程式的方法,可大大簡化Linux軟體開發環境的搭建難度,保留原開發人員的操作習慣,讓Linux程式開發和開發VxWorks一樣方便快捷。

2. 軟體包

2.1. IDE環境:EclipseIDE 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、 源選擇國內的某個edu.cn源,或網上尋找合適的國內源(如163mirror)

2、 軟體包選擇一定要包含“man”包,其他開發包根據需要可以以後追加

安裝完成後,就可以在Windows環境使用Linux命令了

2.4. Linux API man庫

需要下載兩個包:

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程式沒什麼區別了。