Windows下通過ARM目標板上的gdbserver進行遠端偵錯的方法

來源:互聯網
上載者:User

標籤:gdbserver   armv4t   CodeSourcery   

因某種需要,要在Windows平台上進行程式開發,目標板是基於Micrel晶片(ARMv4t)做的,上面運行有Linux最小系統,只有最基本的命令,需要在Windows平台上交叉編譯能在ARMv4t上啟動並執行目標代碼,並且還要能進行遠端偵錯。基於這些需求,初步計劃按以下步驟進行: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的命令設定端點等就可以調試了。

Windows下通過ARM目標板上的gdbserver進行遠端偵錯的方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.