1、先在Windows平臺上交叉編譯一個簡單的C語言程序,并上傳到開發板上,能正常運行即可;
2、交叉編譯gdbserver,并上傳到開發板;
3、進行遠程調試。
按上述計劃,首先要找一個Windows環境下的交叉編譯環境,參考了http://www.veryarm.com/arm-none-linux-gnueabi-gcc 下載了arm-2011.03-41-arm-none-linux-gnueabi.exe Windows安裝版(個人感覺在Windows下用安裝版比較好,解壓版需要設定PATH),安裝成功后,用C寫了一個簡單的Hello,World!,使用如下命令進行編譯:
arm-none-linux-gnueabi-gcc hello.c -o hello
目標板與Windows主機通過以太網和串口進行連接,以太網用來上傳文件,串口用于進行終端訪問。目標板與Windows主機使用tfpt進行文件傳遞。Windows上運行有tftp server,如下圖:

通過串口終端在目標板上運行如下命令下載Windows主機上編譯的hello程序:
tftp -gr hello 10.32.2.10
使用命令chmod 755 hello添加執行權限后執行時,出現下述錯誤提示:
Illegal Instruction
這說明程序能運行,但指令不對,這有可能是在Windows上交叉編譯時沒有指定具體目標架構的原因(在Ubuntu下使用上述命令進行交叉編譯的程序可以正常執行)。為了解決這個問題,首先通過串口終端查看了目標板啟動時的信息,了解到ARM芯片是armv4t架構,接著使用arm-none-linux-gnueabi-gcc --target-help查看交叉編譯器支持的ARM架構類型,發現該命令通過-march=option可以指定目標類型,于是,編譯命令改為:
arm-none-linux-gnueabi-gcc -march=armv4t hello.c -o hello -g
編譯成的程序在目標機上能夠運行?。ㄟ\氣不錯)
第一步完成,接下來交叉編譯gdbserver。先前安裝的arm-2011.03-41-arm-none-linux-gnueabi.exe包含有在Windows下運行的arm-none-linux-gnueabi-gdb.exe命令,要進行遠程調試,需要在目標板上運行gdbserver。于是上gdb官網(http://ftp.gnu.org/gnu/gdb) 下載gdb7.6的代碼。突然一想,既然arm-2011.03-41-arm-none-linux-gnueabi.exe包含有Windows上執行的gdb,那是不是也包含有在Linux上運行行的gdbserver呢?進入安裝目錄一搜索,Bingo,果然有,在安裝目錄CodeSourcery\\\\Sourcery_G _Lite\\\\arm-none-linux-gnueabi\\\\libc\\\\armv4t\\\\usr\\\\bin下,運氣不錯。把該目錄下的gdbserver放到目標版上后,果真能運行。第二步完成(俺有時還是比較懶的,在Windows下就不再自己編譯了)
第三步就相對容易了,在目標板上運行命令啟動gdbserver:
./gdbserver 10.32.2.80:3333 hello
上述命令中的IP是目標板自己的IP地址,端口號自己指定,只要不沖突就行,后面的hello是包含調試信息的被調試程序。然后在Windows下運行arm-none-linux-gnueabi-gdb.exe,進入gdb提示符后后,執行target remote 20.32.2.80:3333就聯上目標板的gdbserver了,然后再在gdb提示符下執行file hello,這個是在Windows下加載被調試的程序,之后就按gdb的命令設置端點等就可以調試了。

更多關于云服務器,域名注冊,虛擬主機的問題,請訪問三五互聯官網:m.shinetop.cn

贊(0)
聲明:本網站發布的內容(圖片、視頻和文字)以原創、轉載和分享網絡內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。郵箱:3140448839@qq.com。本站原創內容未經允許不得轉載,或轉載時需注明出處:三五互聯知識庫 » Windows下通過ARM目標板上的gdbserver進行遠

登錄

找回密碼

注冊