• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 使用GDB調試嵌入式系統

    使用GDB調試嵌入式系統

    ——
    作者: 時間:2007-04-18 來源: 收藏
    GNU GCC是用于ARM, MIPS, SuperH, PowerPC, x86和其他32位處理器的許多高端系統的編譯器工具。作為GNU 的,GDB是一個免費的,開發人員可以用它來進行帶有GCC工具的的遠端調試。你可以通過一系列的端口或TCP/IP連接運行這一遠距離調試。  
     
    本文將介紹在你的主站點上需要哪些軟件和嵌入式設備,這樣有助于你能夠使用GDB調試嵌入式代碼。

    主機
    在主機站點上,你將必須需要一個GDB版本以作為目標處理器的調試器。賣方提供的GNU GCC工具應該附帶一個編譯好的可執行的GDB,否則,你必須從RedHat下載源代碼或者需要一個GNU FTP,然后自己建立調試器。如果你要運行一個Linux主機或者一個Windows的Cygwin,建立調試器是一個相對簡單的過程。

    目標“樹樁(stub)”
    GDB調試器與一個運行于目標處理器的小“樹樁(stub)”交流。主機調試器與一個使用簡單的支持讀寫注冊表和內存的協議交流。你將會發現GDB源目錄中有許多處理器體系的寫好的“樹樁”,比如sh-stub.c, i386-stub.c, and m68k-stub.c。

    如果你沒有找到一個適合的“樹樁”,在SourceForge上檢查gdbstubs工程。你需要編譯和連接合適的“樹樁”到目標嵌入程序和提供兩個通訊函數:getDebugChar()和putDebugChar()。你的系統初始化代碼也會調用set_debug_traps()函數來初始化“樹樁”和安裝必要的調試異常處理。

    編寫自己的“樹樁(stub)”
    如果你無法找到已經寫好的“樹樁”,你不得不自己編寫自己的“樹樁”。如果你對目標CPUx體系很熟悉的話,這樣的工程也不是很復雜。最簡單的方法就是對現成的“樹樁”進行更改?!皹錁丁敝薪^大多數的代碼都與通訊協議有關,可以可以不變地使用于不同處理器之間。

    你將需要更改內嵌匯編程序部分,這主要處理安裝和處理處理器的異常問題,包括斷點,單步,以及通用的保護錯誤。

    異常處理相對比較簡單:它們必須將CPU注冊存放在一個靜態緩沖器,然后輸入handle_exception()函數,這一函數帶有一個顯示異常原因的整數參數。handle_exception()函數然后取得對CPU的控制并處理與主機調試部分的所有通訊。你將需要對handle_exception()函數作一些特別是更改,但絕大部分的代碼都是可以利用的。

    GDB的GUI
    GDB是內嵌命令的工具。如果你適合于這一水平的工作,你將發覺用戶界面對基本的調試任務非常的快捷和方便。如果你覺得更適應使用GUI調試器,你也必須安裝GDB的GUI中的一個,比如Insight。

    如果你對這方面更多的知識感興趣,請查看extensiv online documentation on GDB(GDB中廣泛在線文檔)。

    David Brenan是一個具有15年經驗的開發人員,他的工作包括授過獎章的專用數字音頻產品的設計。


    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 天峻县| 明光市| 大同市| 吐鲁番市| 新绛县| 阳东县| 元阳县| 农安县| 察雅县| 克什克腾旗| 类乌齐县| 东辽县| 达州市| 中超| 盐津县| 年辖:市辖区| 三亚市| 乐至县| 华亭县| 南汇区| 常宁市| 文化| 扎赉特旗| 来安县| 邮箱| 中卫市| 万年县| 安丘市| 新河县| 香河县| 苗栗县| 大洼县| 鱼台县| 商都县| 朝阳县| 桐梓县| 兰考县| 丰宁| 晋中市| 彭泽县| 靖江市|