<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 使用GDB調(diào)試嵌入式系統(tǒng)

          使用GDB調(diào)試嵌入式系統(tǒng)

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

          主機(jī)
          在主機(jī)站點(diǎn)上,你將必須需要一個(gè)GDB版本以作為目標(biāo)處理器的調(diào)試器。賣方提供的GNU GCC工具應(yīng)該附帶一個(gè)編譯好的可執(zhí)行的GDB,否則,你必須從RedHat下載源代碼或者需要一個(gè)GNU FTP,然后自己建立調(diào)試器。如果你要運(yùn)行一個(gè)Linux主機(jī)或者一個(gè)Windows的Cygwin,建立調(diào)試器是一個(gè)相對(duì)簡(jiǎn)單的過(guò)程。

          目標(biāo)“樹(shù)樁(stub)”
          GDB調(diào)試器與一個(gè)運(yùn)行于目標(biāo)處理器的小“樹(shù)樁(stub)”交流。主機(jī)調(diào)試器與一個(gè)使用簡(jiǎn)單的支持讀寫注冊(cè)表和內(nèi)存的協(xié)議交流。你將會(huì)發(fā)現(xiàn)GDB源目錄中有許多處理器體系的寫好的“樹(shù)樁”,比如sh-stub.c, i386-stub.c, and m68k-stub.c。

          如果你沒(méi)有找到一個(gè)適合的“樹(shù)樁”,在SourceForge上檢查gdbstubs工程。你需要編譯和連接合適的“樹(shù)樁”到目標(biāo)嵌入程序和提供兩個(gè)通訊函數(shù):getDebugChar()和putDebugChar()。你的系統(tǒng)初始化代碼也會(huì)調(diào)用set_debug_traps()函數(shù)來(lái)初始化“樹(shù)樁”和安裝必要的調(diào)試異常處理。

          編寫自己的“樹(shù)樁(stub)”
          如果你無(wú)法找到已經(jīng)寫好的“樹(shù)樁”,你不得不自己編寫自己的“樹(shù)樁”。如果你對(duì)目標(biāo)CPUx體系很熟悉的話,這樣的工程也不是很復(fù)雜。最簡(jiǎn)單的方法就是對(duì)現(xiàn)成的“樹(shù)樁”進(jìn)行更改?!皹?shù)樁”中絕大多數(shù)的代碼都與通訊協(xié)議有關(guān),可以可以不變地使用于不同處理器之間。

          你將需要更改內(nèi)嵌匯編程序部分,這主要處理安裝和處理處理器的異常問(wèn)題,包括斷點(diǎn),單步,以及通用的保護(hù)錯(cuò)誤。

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

          GDB的GUI
          GDB是內(nèi)嵌命令的工具。如果你適合于這一水平的工作,你將發(fā)覺(jué)用戶界面對(duì)基本的調(diào)試任務(wù)非常的快捷和方便。如果你覺(jué)得更適應(yīng)使用GUI調(diào)試器,你也必須安裝GDB的GUI中的一個(gè),比如Insight。

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

          David Brenan是一個(gè)具有15年經(jīng)驗(yàn)的開(kāi)發(fā)人員,他的工作包括授過(guò)獎(jiǎng)?wù)碌膶S脭?shù)字音頻產(chǎn)品的設(shè)計(jì)。


          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();