Linux下CodeBlocks遠端除錯ARM程式環境搭建
Codeblocks:Release 8.02、宿主機:ubuntu10.04、開發板:嵌入式linux作業系統。
1 Codeblocks配置交叉編譯環境
如下圖所示,由上到下的選擇,1處直接選擇即可。2處是你交叉編譯器安裝位置,3 4 5 6 可以在你交叉編譯器安裝位置下的bin目錄找到。
注:2處的Compiler's installation directory 目錄一定要設定正確,一定是交叉編譯工具鏈 bin 目錄的上一級目錄,比如我的是 /usr/local/arm/arm-linux-4.4.3/bin/ 目錄的上一級,即為 /usr/local/arm/arm-linux-4.4.3。
注:
2 arm-linux-gdb和gdbserver安裝方法
注:如上所述,arm-linux-gdb的安裝路徑建議是/usr/local/arm/arm-linux-4.4.3。
2.1 arm-linux-gdb的編譯安裝
下載gdb-6.8.tar.bz2至工作目錄,gdb原始碼下載:http://ftp.gnu.org/gnu/gdb/命令如下:
$tar -jxvf gdb-6.8.tar.bz2
$cd gdb-6.8
$./configure --target=arm-linux --enable-sim --prefix=/usr/local/arm/arm-linux-4.4.3
--prefix用於指定安裝路徑
$make
$sudo make install
完成後可以在/usr/local/arm/arm-linux-4.4.3/bin下找到arm-linux-gdb檔案
2.2 arm-linux-gdbserver的編譯安裝
進入/gdb/gdbserver,命令如下:
$cd gdb/gdbserver./configure --target=arm-linux --host=arm-linux
$make CC=arm-linux-gcc
(CC=arm-linux-gcc用於指定arm-linux編譯器)
編譯成功後在當前目錄下會生成gdbserver檔案,拷貝至開發板上(可放入開發板/usr/bin/目錄,這樣在任何目錄均可執行gdbserver命令)。
3 配置nfs共享檔案目錄
3.1 安裝NFS軟體包
Ubuntu 上預設是沒有安裝 Ubuntu nfs 伺服器的,因此我們首先安裝 Ubuntu nfs 伺服器端:$sudo apt-get install nfs-kernel-server
3.2 新增NFS共享檔案目錄
安裝完NFS伺服器等相關軟體後,需要指定用於共享的NFS目錄,其方法為在/etc/exports檔案裡面設定對應的目錄及相應的訪問許可權,每一行對應一個設定。
$sudo vi /etc/exports
在最後加入一行:/home/wcl/nfs_root/ *(rw,sync,no_root_squash)注: /rootfs 是要共享的目錄(必須保證真實存在,否則啟動nfs服務時會提示找不到該目錄), *代表允許所有的網段IP均可訪問, rw 是可讀寫許可權,sync 是資料同步寫入記憶體和硬碟,no_root_squash 是 Ubuntu nfs 客戶端分享目錄使用者的許可權,如果客戶端使用的是 root 使用者,那麼對於該共享目錄而言,該客戶端就具有 root 許可權。
修改掛載點的屬性:
$chmod 777 /home/wcl/nfs_root/
啟動 nfs 服務:
$sudo /etc/init.d/nfs-kernel-server start
在 nfs 服務已經啟動的情況下,如果修改了 /etc/exports 檔案,需要重啟 nfs 服務,以重新整理 nfs 的共享目錄 :
$sudo /etc/init.d/nfs-kernel-server restart
3.3 本機測試NFS服務
將已經設定好的 nfs 共享目錄 mount 到另一個目錄下,測試看能否成功,比如:$sudo mount -t nfs –o nolock 192.168.0.101:/home/wcl/nfs_root/ /mnt/nfs/
進入到 /mnt/nfs 目錄下檢視內容是否是掛載的 /home/wcl/nfs_root/ 目錄下的內容:
$cd /mnt/nfs/
$ls -l
注:如果出現 nfs mount device or resource busy ,這可能是因為多次掛載的原因,因此要先umount /mnt/nfs 一下 ,如果還是掛載不成功需要重系統來試試。
4 修改Codeblock工程的除錯屬性
這裡通過網路來實現gdb的遠端除錯,所以需要將宿主機的一個目錄掛載到開發板上,這裡直接通過 nfs 服務掛載即可。選擇什麼目錄隨意,建議掛載工程所在目錄到ARM需要的位置,比如將宿主機(地址192.168.0.101)的/home/wcl/nfs_root/目錄掛載到ARM板的/mnt/nfs/,則在ARM上執行 :
$mount -t nfs -o nolock 192.168.0.101:/home/wcl/nfs_root/ /mnt/nfs/
修改Codeblock專案的工程屬性,在專案名稱上點選右鍵,選擇屬性:
修改debug的ip地址和埠,埠任意(與ARM板上的gdbserver監聽埠一致即可),ip地址是ARM板的ip地址,這是為了連線開發板的gdbserver而設定的。
5 除錯示例
進入 nfs 掛載的共享目錄下,執行 gdbserver 服務:
$gdbserver 192.168.0.101:1111 ./bin/debug/TestGdb
這裡ip地址是宿主機的,埠自定,但是要和codeblock設定的一致。./bin/debug/TestGdb 為Codeblock生成的ARM二進位制可除錯檔案。
然後再在宿主機中開始除錯,如下圖所示: