找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 6889|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

嵌入式硬件調(diào)試和軟件調(diào)試

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:155829 發(fā)表于 2016-12-20 10:53 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
相對(duì)于軟件調(diào)試而言,使用硬件調(diào)試器可以獲得更強(qiáng)大的調(diào)試功能和更優(yōu)秀的調(diào)試性能。硬件調(diào)試器的基本原理是通過(guò)仿真硬件的執(zhí)行過(guò)程,讓開(kāi)發(fā)者在調(diào)試時(shí)可以隨時(shí)了解到系統(tǒng)的當(dāng)前執(zhí)行情況。目前嵌入式系統(tǒng)開(kāi)發(fā)中最常用到的硬件調(diào)試器是ROM Monitor、ROM Emulator、In-Circuit Emulator和In-Circuit Debugger。
采用ROM Monitor方式進(jìn)行交叉調(diào)試需要在宿主機(jī)上運(yùn)行調(diào)試器,在目標(biāo)機(jī)上運(yùn)行ROM監(jiān)視器(ROM Monitor)和被調(diào)試程序,宿主機(jī)通過(guò)調(diào)試器與目標(biāo)機(jī)上的ROM監(jiān)視器建立通信連接,它們之間的通信遵循遠(yuǎn)程調(diào)試協(xié)議。ROM監(jiān)視器可以是一段運(yùn)行在目標(biāo)機(jī)ROM上的可執(zhí)行程序,也可以是一個(gè)專門的硬件調(diào)試設(shè)備,它負(fù)責(zé)監(jiān)控目標(biāo)機(jī)上被調(diào)試程序的運(yùn)行情況,能夠與宿主機(jī)端的調(diào)試器一同完成對(duì)應(yīng)用程序的調(diào)試。在使用這種調(diào)試方式時(shí),被調(diào)試程序首先通過(guò)ROM監(jiān)視器下載到目標(biāo)機(jī),然后在ROM監(jiān)視器的監(jiān)控下完成調(diào)試,目前使用的絕大部分ROM監(jiān)視器能夠完成設(shè)置斷點(diǎn)、單步執(zhí)行、查看寄存器、修改內(nèi)存空間等各項(xiàng)調(diào)試功能。
采用ROM Emulator方式進(jìn)行交叉調(diào)試時(shí)需要使用ROM仿真器,它通常被插入到目標(biāo)機(jī)上的ROM插槽中,專門用于仿真目標(biāo)機(jī)上的ROM芯片。在使用這種調(diào)試方式時(shí),被調(diào)試程序首先下載到ROM仿真器中,它等效于下載到目標(biāo)機(jī)的ROM芯片上,然后在ROM仿真器中完成對(duì)目標(biāo)程序的調(diào)試。ROM Emulator調(diào)試方式通過(guò)使用一個(gè)ROM仿真器,雖然避免了每次修改程序后都必須重新燒寫(xiě)到目標(biāo)機(jī)ROM中這一費(fèi)時(shí)費(fèi)力的操作,但由于ROM仿真器本身比較昂貴,功能相對(duì)來(lái)講又比較單一,因此只適應(yīng)于某些特定場(chǎng)合。
采用In-Circuit Emulator(ICE)方式進(jìn)行交叉調(diào)試時(shí)需要使用在線仿真器,它是仿照目標(biāo)機(jī)上的CPU而專門設(shè)計(jì)的硬件,可以完全仿真處理器芯片的行為,并且提供了非常豐富的調(diào)試功能。在使用在線仿真器進(jìn)行調(diào)試的過(guò)程中,可以按順序單步執(zhí)行,也可以倒退執(zhí)行,還可以實(shí)時(shí)查看所有需要的數(shù)據(jù),從而給調(diào)試過(guò)程帶來(lái)了很多的便利。嵌入式系統(tǒng)應(yīng)用的一個(gè)顯著特點(diǎn)是與現(xiàn)實(shí)世界中的硬件直接相關(guān),存在各種異變和事先未知的變化,從而給微處理器的指令執(zhí)行帶來(lái)各種不確定因素,這種不確定性在目前情況下只有通過(guò)在線仿真器才有可能發(fā)現(xiàn),因此盡管在線仿真器的價(jià)格非常昂貴,但仍然得到了非常廣泛的應(yīng)用。
采用In-Circuit Debugger(ICD)方式進(jìn)行交叉調(diào)試時(shí)需要使用在線調(diào)試器。由于ICE的價(jià)格非常昂貴,并且每種CPU都需要一種與之對(duì)應(yīng)的ICE,使得開(kāi)發(fā)成本非常高,一個(gè)比較好的解決辦法是讓CPU直接在其內(nèi)部實(shí)現(xiàn)調(diào)試功能,并通過(guò)在開(kāi)發(fā)板上引出的調(diào)試端口,發(fā)送調(diào)試命令和接收調(diào)試信息,完成調(diào)試過(guò)程。目前Motorola公司提供的開(kāi)發(fā)板上使用的是DBM調(diào)試端口,而ARM公司提供的開(kāi)發(fā)板上使用的則是JTAG調(diào)試端口,使用合適的軟件工具與這些調(diào)試端口進(jìn)行連接,可以獲得與ICE類似的調(diào)試效果。
軟件調(diào)試
軟件調(diào)試通常要在不同的層次上進(jìn)行,有時(shí)可能需要對(duì)嵌入式操作系統(tǒng)的內(nèi)核進(jìn)行調(diào)試,而有時(shí)可能僅僅只需要調(diào)試嵌入式應(yīng)用程序就可以了。在嵌入式系統(tǒng)的整個(gè)開(kāi)發(fā)過(guò)程中,不同層次上的軟件調(diào)試需要使用不同的調(diào)試方法。
嵌入式操作系統(tǒng)的內(nèi)核調(diào)試相對(duì)來(lái)講比較困難,這是因?yàn)樵趦?nèi)核中不便于增加一個(gè)調(diào)試器程序,而只能通過(guò)遠(yuǎn)程調(diào)試的方法,通過(guò)串口和操作系統(tǒng)內(nèi)置的"調(diào)試樁"(debug stub)進(jìn)行通信,共同完成調(diào)試過(guò)程。調(diào)試樁可以看成是一個(gè)調(diào)試服務(wù)器,它通過(guò)操作系統(tǒng)獲得一些必要的調(diào)試信息,并且負(fù)責(zé)處理宿主機(jī)發(fā)送來(lái)的調(diào)試命令。具體到嵌入式Linux系統(tǒng)內(nèi)核,調(diào)試時(shí)可以先在Linux內(nèi)核中設(shè)置一個(gè)調(diào)試樁,用作調(diào)試過(guò)程中和宿主機(jī)之間的通信服務(wù)器,然后就可以在宿主機(jī)中通過(guò)調(diào)試器的串口與調(diào)試樁進(jìn)行通信,并通過(guò)調(diào)試器控制目標(biāo)機(jī)上Linux內(nèi)核的運(yùn)行。
嵌入式應(yīng)用軟件的調(diào)試可以使用本地調(diào)試和遠(yuǎn)程調(diào)試兩種方法,相對(duì)于操作系統(tǒng)的調(diào)試而言,這兩種方式都比較簡(jiǎn)單。如果采用的是本地調(diào)試,首先要將所需的調(diào)試器移植到目標(biāo)系統(tǒng)中,然后就可以直接在目標(biāo)機(jī)上運(yùn)行調(diào)試器來(lái)調(diào)試應(yīng)用程序了;如果采用的是遠(yuǎn)程調(diào)試,則需要移植一個(gè)調(diào)試服務(wù)器到目標(biāo)系統(tǒng)中,并通過(guò)它與宿主機(jī)上的調(diào)試器共同完成應(yīng)用程序的調(diào)試。在嵌入式Linux系統(tǒng)的開(kāi)發(fā)中,遠(yuǎn)程調(diào)試時(shí)目標(biāo)機(jī)上使用的調(diào)試服務(wù)器通常是gdbserver,而宿主機(jī)上使用的調(diào)試器則是gdb,兩者相互配合共同完成調(diào)試過(guò)程。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表