999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

MXT0106處理器調(diào)試環(huán)境的設(shè)計(jì)與實(shí)現(xiàn)

2011-01-01 00:00:00郝得寧蘭利東
電子產(chǎn)品世界 2011年6期

引言

隨著軟件開發(fā)規(guī)模的不斷擴(kuò)大,調(diào)試工具在軟件開發(fā)中的作用顯得越來越重要。針對(duì)嵌入式處理器的調(diào)試環(huán)境的搭建有很多的方法,包括在線仿真器、ROM(只讀存儲(chǔ)器)仿真器及類似于調(diào)試支持單元(Debug SupportUnit,簡(jiǎn)稱DSU)的硬件調(diào)試,而GDB(GNU的軟件調(diào)試器)完全是通過軟件方式實(shí)現(xiàn)調(diào)試。

本文針對(duì)國產(chǎn)SPARC,v8處理器,設(shè)計(jì)實(shí)現(xiàn)了其基于處理器硬件調(diào)試機(jī)制的GDB調(diào)試環(huán)境。

調(diào)試環(huán)境的硬件基礎(chǔ)

MXT01 06是北京時(shí)代民芯公司設(shè)計(jì)的一款SPARC V8體系結(jié)構(gòu)的嵌入式處理器,具有非常豐富的外設(shè)接口,只需加上存儲(chǔ)器和應(yīng)用相關(guān)的外圍電路,就可以構(gòu)成完整的單板計(jì)算機(jī)系統(tǒng)。

它具有片內(nèi)硬件調(diào)試功能,可以輔助軟件在目標(biāo)硬件上進(jìn)行調(diào)試。該部分功能包括兩個(gè)模塊:調(diào)試支持單元(DSU)和調(diào)試通訊連接模塊(如圖1所示)。對(duì)這兩個(gè)模塊的理解和使用,是開發(fā)調(diào)試環(huán)境的基礎(chǔ)。

調(diào)試支持單元

調(diào)試支持單元(DSU)可以通過任何在內(nèi)部總線上的主設(shè)備來調(diào)試處理器。通過DSU將處理器置于調(diào)試模式(進(jìn)入調(diào)試模式時(shí)流水線凍結(jié)),允許從外部調(diào)試處理器。DSU主設(shè)備在內(nèi)部總線上占有一個(gè)地址空間,通過這個(gè)地址空間,可以訪問處理器的寄存器和跟蹤緩沖區(qū)的內(nèi)容,CPU內(nèi)部的所有寄存器、cache(緩存)在總線上都有映射的空間,調(diào)試時(shí)直接由DSU按地址訪問。用戶也可以調(diào)試和/或從中斷的位置重新執(zhí)行。

DSU還有兩個(gè)斷點(diǎn)寄存器來匹配任何內(nèi)部的總線地址或者執(zhí)行的指令。

DSU通訊連接

DSU通訊連接包含一個(gè)串口,該串口在內(nèi)部總線上作為一個(gè)主設(shè)備。該串口支持簡(jiǎn)單的通信協(xié)議傳輸訪問參數(shù)和數(shù)據(jù)。連接命令由一個(gè)控制字節(jié)、32位地址和可選的寫入數(shù)據(jù)組成。數(shù)據(jù)以8位為基礎(chǔ)進(jìn)行發(fā)送:包括一個(gè)起始位、8位數(shù)據(jù)位和一個(gè)停止位。

通過通訊鏈路,可以對(duì)內(nèi)部總線上任何地址進(jìn)行讀/寫操作。通過設(shè)置長(zhǎng)度字段為n-1(其中n標(biāo)明傳輸字的長(zhǎng)度),可以進(jìn)行塊傳輸。其協(xié)議格式如圖2。

BMDEBUG調(diào)試環(huán)境

實(shí)現(xiàn)的調(diào)試環(huán)境運(yùn)行于PC機(jī)的Windows平臺(tái)上,具有源代碼級(jí)和匯編級(jí)的調(diào)試能力,能夠遠(yuǎn)程調(diào)試基于MXT0106處理器的程序。它和處理器配合工作,能最大限度地利用處理器的硬件調(diào)試支持單元,完成調(diào)試;并且和集成開發(fā)環(huán)境SPE—c很好地整合在一起。方便用戶使用。

體系結(jié)構(gòu)

調(diào)試器環(huán)境分為三層,從上到下分別為:用戶界面、調(diào)試核心、通訊模塊,整體結(jié)構(gòu)如圖3所示。

用戶界面是調(diào)試器與用戶互動(dòng)的媒介,用戶可以通過該界面觀察調(diào)試的進(jìn)行過程:獲取處理器的當(dāng)前信息;修改被調(diào)試程序的某些狀態(tài),如寄存器、存儲(chǔ)器中的值,繼續(xù)執(zhí)行的位置等。

調(diào)試核心控制SPARC v8處理器調(diào)試的進(jìn)行。核心通過通訊模塊取得SPARC空間處理器的狀態(tài)和調(diào)試過程中的信息,向上返回用戶界面,又把從用戶界面接收到的控制信息經(jīng)過分析和處理后發(fā)給SPARC v8處理器。

通訊模塊在調(diào)試核心和與SPARCv8處理器的DSU調(diào)試接口之間建立連接,接收調(diào)試核心發(fā)來的命令,封裝成DSU接口能夠識(shí)別的幀,發(fā)送給DSU。同時(shí),還接收SPARC v8處理器發(fā)回的數(shù)據(jù)、解析數(shù)據(jù),向上送回調(diào)試核心。通訊模塊分為協(xié)議轉(zhuǎn)換和物理通訊接口兩個(gè)子部分。

用戶界面及實(shí)現(xiàn)

用戶界面作為與用戶的交互窗口,需要能夠完整地提供被調(diào)試處理器的所有信息和資源,并能夠有能力針對(duì)處理器的運(yùn)行狀態(tài)進(jìn)行控制,此外還需要有良好的視覺感,使用戶不會(huì)產(chǎn)生不易用的感覺。所以針對(duì)用戶界面主要實(shí)現(xiàn)以下功能:

1.源代碼視圖,該視圖提供調(diào)試需要的各種信息。另外可在可執(zhí)行的源代碼上標(biāo)注不同類型的斷點(diǎn)。斷點(diǎn)可以針對(duì)c級(jí)源代碼,也可針對(duì)匯編級(jí)源代碼。

2.堆棧視圖,該視圖提供函數(shù)之間的調(diào)用關(guān)系。包括調(diào)用順序和函數(shù)所在的文件位置。

3.斷點(diǎn)視圖、用于顯示用戶在源代碼中設(shè)置的所有斷點(diǎn)及斷點(diǎn)信息。

4.CPU視圖,用于顯示所有與硬件直接相關(guān)的信息,包括內(nèi)部寄存器、存儲(chǔ)器、片上外設(shè)寄存器、存儲(chǔ)器、cache、tracebuffer(跟蹤緩沖區(qū))等。

5.變量視圖,用于顯示程序中與變量相關(guān)的信息,如名稱、類型、值等。

6.表達(dá)式計(jì)算視圖,用于計(jì)算被調(diào)試程序中任伺合法變量或?qū)ο蟮闹怠?/p>

7.錯(cuò)誤報(bào)告,當(dāng)SPARC v8處理器出現(xiàn)陷阱、異常時(shí),調(diào)試器有一個(gè)單獨(dú)的向用戶報(bào)告錯(cuò)誤的機(jī)制。

核心調(diào)試器

核心調(diào)試器采用調(diào)試SPARC平臺(tái)ELF格式可執(zhí)行程序的SPARC-ELF—GDB調(diào)試器。其中符號(hào)表和表達(dá)式計(jì)算是兩個(gè)重要的功能。

符號(hào)表通常作為可執(zhí)行代碼的一部分存在于用戶希望調(diào)試的程序中。調(diào)試器參考符號(hào)表以建立源代碼與可執(zhí)行指令所在地址之間的映射關(guān)系。這種“狀態(tài)”信息對(duì)于設(shè)置斷點(diǎn)是必要的指導(dǎo)。符號(hào)表也包含程序中變量的信息,以便調(diào)試器能夠把源代碼級(jí)的變量或數(shù)據(jù)結(jié)構(gòu)映射到下位機(jī)的一個(gè)特殊位置或被調(diào)試程序數(shù)據(jù)存儲(chǔ)器中的某個(gè)位置。調(diào)試信息的產(chǎn)生通過在編澤時(shí)增加編譯選項(xiàng)GDWARF來使生成的EXE程序附加DWARF格式的調(diào)試信息,符合調(diào)試器的要求。

表達(dá)式計(jì)算部分能夠計(jì)算表達(dá)式值、申請(qǐng)操作數(shù)以及調(diào)用函數(shù),這些表達(dá)式、操作數(shù)和函數(shù)都是用戶特別指定的。用戶可以輸入一段短代碼,調(diào)試器應(yīng)根據(jù)被調(diào)試程序當(dāng)前執(zhí)行位置的結(jié)果計(jì)算結(jié)果。

調(diào)試控制

調(diào)試控制主要包括初始化、執(zhí)行控制、斷點(diǎn)控制、狀態(tài)檢測(cè)與報(bào)告等。

初始化

發(fā)送命令與SPARC v8處理器的DSU通信速率并建立連接。如果連接建立成功則繼續(xù)進(jìn)行,如果失敗則通知用戶。

根據(jù)配置表配置片上設(shè)備:調(diào)試器中包含一個(gè)默認(rèn)的配置表,該配置表用于默認(rèn)的用戶開發(fā)板。同時(shí),用戶也可以修改該開發(fā)表,根據(jù)需要配置片上設(shè)備。

下載程序:選擇需要調(diào)試的程序,解析其文件格式,利用DSU命令把該程序下載到存儲(chǔ)器內(nèi)。

控制運(yùn)行:通過修改pc和NPCf下一個(gè)程序計(jì)數(shù)器)寄存器值,控制程序開始執(zhí)行的起始地址。使用該功能可以從程序中的某一段開始執(zhí)行。

斷點(diǎn)

斷點(diǎn)(breakpoint)是用戶在調(diào)試過程中,希望程序停止的位置。當(dāng)用戶確定斷點(diǎn)位置后,調(diào)試器根據(jù)斷點(diǎn)所在地址,用“TA1”指令替換地址處的原始指令。當(dāng)程序運(yùn)行到此時(shí),由于“TA1”指令處理器會(huì)進(jìn)入調(diào)試狀態(tài)。被替換的原始指令由調(diào)試器保存,當(dāng)程序繼續(xù)執(zhí)行時(shí),把原始指令寫回原始位置。通過設(shè)置斷點(diǎn)可以完成用戶斷點(diǎn)的功能。

用戶斷點(diǎn)是最常用的斷點(diǎn),通常于調(diào)試的開始和調(diào)試中停止時(shí)設(shè)置。斷點(diǎn)標(biāo)注于c級(jí)源代碼或匯編級(jí)代碼上,當(dāng)程序運(yùn)行到斷點(diǎn)語句時(shí),程序運(yùn)行停止。除此之外,還可以使用斷點(diǎn)功能間接實(shí)現(xiàn)源代碼級(jí)單步,運(yùn)行到此,完成函數(shù)等執(zhí)行控制的功能。

執(zhí)行控制

調(diào)試控制(execution contr01)采用GDB調(diào)試器核心的功能,包括源代碼級(jí)單步、運(yùn)行到此、完成函數(shù)、全速運(yùn)行及單步執(zhí)行等:從用戶界面操作到執(zhí)行控制的過程轉(zhuǎn)換由GDB調(diào)試器完成。

不同于用戶斷點(diǎn)明顯標(biāo)注于源代碼之中,當(dāng)執(zhí)行源代碼級(jí)調(diào)試時(shí),斷點(diǎn)被調(diào)試器隱性的添加于被調(diào)試程序代碼之中。調(diào)試器根據(jù)源代碼與匯編指令之間的映射關(guān)系,在與源程序代碼一步相應(yīng)的一組匯編指令之后添加斷點(diǎn),以達(dá)到在用戶看來一次只運(yùn)行了一條源代碼。用戶斷點(diǎn)的另一種形式,在代碼中指定運(yùn)行停止的位置。與用戶斷點(diǎn)不同是,該斷點(diǎn)不必標(biāo)注在代碼中,當(dāng)程序運(yùn)行停止之后,該類斷點(diǎn)就不再起作用。即這種斷點(diǎn)僅僅中斷程序運(yùn)行一次。

完成函數(shù)功能用于直接完成正在調(diào)試的函數(shù)。使用斷點(diǎn)指令替換函數(shù)返回地址處的指令可以實(shí)現(xiàn)此功能。

全速運(yùn)行則發(fā)生在用戶設(shè)置完成斷點(diǎn),或在某個(gè)斷點(diǎn)之后調(diào)試完成希望繼續(xù)執(zhí)行被調(diào)試程序時(shí)。這時(shí)被調(diào)試程序“全速”執(zhí)行,當(dāng)執(zhí)行過程中發(fā)生調(diào)試事件,如碰到“TA 1”時(shí),執(zhí)行停止,處理器進(jìn)入調(diào)試模式:如果沒有遇到調(diào)試事件,則程序繼續(xù)運(yùn)行。

單步指僅運(yùn)行一步處理器就會(huì)回到調(diào)試模式下。這里的單步僅指匯編級(jí)單步,C一級(jí)的單步通過上面的斷點(diǎn)方式保證。

狀態(tài)檢測(cè)與報(bào)告

該模塊用于實(shí)時(shí)檢測(cè)下位機(jī)的狀態(tài),判斷下位機(jī)是處于運(yùn)行模式、調(diào)試模式還是錯(cuò)誤模式。檢測(cè)方式采用查詢方式,即根據(jù)上位機(jī)最近一次的控制,按照一定的時(shí)間間隔查詢下位機(jī)模式,根據(jù)查詢結(jié)果不同向調(diào)試器報(bào)告下位機(jī)狀態(tài)。

通信模塊

該層實(shí)現(xiàn)了調(diào)試核心與SPARC v8處理器之間建立連接的功能:發(fā)送DSU協(xié)議數(shù)據(jù)給SPARC v8處理器,從v8處理器接收DSU的反饋數(shù)據(jù)給調(diào)試核心。該模塊的主要的任務(wù)是控制PC機(jī)和DSU串口之間的通訊,以及協(xié)議的轉(zhuǎn)換,在軟硬件控制實(shí)現(xiàn)上都比較簡(jiǎn)單。

結(jié)語

本文討論了針對(duì)SPARC v8嵌入式處理器的軟件調(diào)試環(huán)境的設(shè)計(jì)實(shí)現(xiàn)。通過上面的工作,實(shí)現(xiàn)了MXT0106處理器的調(diào)試環(huán)境,并集成在SPE-C集成開發(fā)環(huán)境中,實(shí)現(xiàn)了統(tǒng)一的開發(fā)和調(diào)試功能。下一步,會(huì)進(jìn)一步提高調(diào)試器的健壯性,針對(duì)操作系統(tǒng)的調(diào)試需求,提供進(jìn)程監(jiān)控、任務(wù)統(tǒng)計(jì)等相關(guān)方面的工作。

主站蜘蛛池模板: 国产亚洲精品资源在线26u| 在线永久免费观看的毛片| 99在线免费播放| 高清不卡毛片| 91激情视频| 免费Aⅴ片在线观看蜜芽Tⅴ| 亚洲天堂区| 2019国产在线| 成人午夜精品一级毛片| 国产一级无码不卡视频| 国产伦片中文免费观看| 99久久国产自偷自偷免费一区| 99九九成人免费视频精品 | 亚洲va在线∨a天堂va欧美va| 亚洲无码视频图片| 亚洲欧美一区二区三区麻豆| 九九热精品免费视频| 国产欧美中文字幕| 国产一区二区三区在线观看免费| 美女视频黄频a免费高清不卡| 国产亚洲精品91| 一级毛片基地| 国产91久久久久久| 欧美成人看片一区二区三区| www.国产福利| 免费国产福利| 成人免费网站在线观看| 97色伦色在线综合视频| 97在线公开视频| 性激烈欧美三级在线播放| 在线观看无码a∨| 91九色国产porny| 另类欧美日韩| 亚洲国产精品美女| 欧美色图第一页| 精品人妻无码中字系列| 无码av免费不卡在线观看| 最新精品国偷自产在线| 91欧洲国产日韩在线人成| www中文字幕在线观看| 91亚洲精品国产自在现线| 高清久久精品亚洲日韩Av| 免费黄色国产视频| 乱人伦中文视频在线观看免费| 色综合久久综合网| 高潮毛片无遮挡高清视频播放| 国产午夜精品鲁丝片| 亚洲AV成人一区国产精品| 久久久久国产一级毛片高清板| 亚洲欧美日韩综合二区三区| 婷婷五月在线| AV无码国产在线看岛国岛| 免费精品一区二区h| 日韩天堂视频| 操操操综合网| 2019国产在线| 毛片网站免费在线观看| 久久99久久无码毛片一区二区| 青青极品在线| 日本午夜视频在线观看| 1769国产精品视频免费观看| 国产精品太粉嫩高中在线观看| 国内精自视频品线一二区| 99伊人精品| 国产成人久久777777| 国产精品播放| 亚洲成肉网| 伊人中文网| 黄色网站不卡无码| 九色视频在线免费观看| 国产又粗又猛又爽| 国产精品深爱在线| 日本精品视频| 67194亚洲无码| 国产男人的天堂| 亚洲欧美成aⅴ人在线观看| 91成人在线免费视频| 国产人免费人成免费视频| 欧美日韩综合网| 欧美第一页在线| 亚洲人免费视频| 久久国产免费观看|