色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > EDA/PCB > 調(diào)試你的嵌入式軟件

          調(diào)試你的嵌入式軟件

          ——
          作者: 時(shí)間:2006-12-19 來源: 收藏
          軟件調(diào)試工具的目的就是盡可能的揭露CPU內(nèi)部工作情況和軟件的執(zhí)行狀態(tài)。軟件開發(fā)者用不同的專業(yè)化工具來調(diào)試固件(具有軟件功能的硬件),而用來描述它們的術(shù)語卻容易引起混淆。下面就是這些工具的概述。
          內(nèi)部電路仿真器(in-circuit emulator, ICE)

          ICE是用來仿真CPU核心的設(shè)備,它可以在不干擾運(yùn)算器的正常運(yùn)行情況下,實(shí)時(shí)的檢測CPU的內(nèi)部工作情況。像桌面調(diào)試軟件所提供的:復(fù)雜的條件斷點(diǎn)、先進(jìn)的實(shí)時(shí)跟蹤、性能分析和端口分析這些功能,它也都能提供。

          ICE一般都有一個(gè)比較特殊的CPU,稱為外合(bond-out)CPU。這是一種被打開了封裝的CPU,并且通過特殊的連接,可以訪問到CPU的內(nèi)部信號(hào),而這些信號(hào),在CPU被封裝時(shí),是沒法“看到”的。

          當(dāng)和工作站上強(qiáng)大的調(diào)試軟件聯(lián)合使用時(shí),ICE就能提供你所能找到的最全面的調(diào)試功能。但I(xiàn)CE同樣有一些缺點(diǎn):昂貴;不能全速工作;同樣,并不是所有的CPU都可以作為外合CPU的,從另一個(gè)角度說,這些外合CPU也不大可能及時(shí)的被新出的CPU所更換。

          ROM監(jiān)控器(ROM monitor)

          ROM監(jiān)控器是一小程序,駐留在嵌入系統(tǒng)ROM中,通過串行的或網(wǎng)絡(luò)的連接和運(yùn)行在工作站上的調(diào)試軟件通信。這是一種便宜的方式,當(dāng)然也是最低端的技術(shù)。

          它除了要求一個(gè)通信端口和少量的內(nèi)存空間外,不需要其它任何專門的硬件。并提供了如下功能:下載代碼、運(yùn)行控制、斷點(diǎn)、單步步進(jìn)、以及觀察、修改寄存器和內(nèi)存。

          因?yàn)镽OM監(jiān)控器是操作軟件的一部分,只有當(dāng)你的應(yīng)用程序運(yùn)行時(shí),它才會(huì)工作。如果你想檢查CPU和應(yīng)用程序的狀態(tài),你就必須停下應(yīng)用程序,再次進(jìn)入ROM監(jiān)控器。

          在線調(diào)試(on-chip debugging, OCD)或在線仿真(on-chip emulator)

          特別的硅基材料以及定制和CPU管腳的串行連接,在這種特殊的CPU芯片上使用OCD,才能發(fā)揮出OCD的特點(diǎn)。用低端適配器就可以把OCD端口和主工作站以及前端調(diào)試軟件連接起來。從OCD的基本形式看來,它的特點(diǎn)和單一的ROM監(jiān)測器是一致的,但是不像后者需要專門的程序以及額外的通信端口。

          有兩種普遍的OCD接口:

          摩托羅拉的背景調(diào)試監(jiān)測(Motorola’s Background Debug Monitor,BDM)

          Joint Test Action Group(JTAG):雖然它最初開發(fā)出來是為了監(jiān)測IC和電路連接,但是這種串行接口擴(kuò)展了用途,包括對(duì)調(diào)試的支持。

          這些接口在底層方面的操作差異較大,但是BDM和JTAG仿真器給終端用戶提供同樣的便利。

          近來,更多的加強(qiáng)型OCD接口提供額外的管腳來收集實(shí)時(shí)跟蹤信息。顯而易見,用狹窄的串行接口來捕獲快速的實(shí)時(shí)跟蹤信息是比較吃力的。但是,高端調(diào)試軟件可以讓加強(qiáng)型OCD接口模擬ICE的功能,而且,這樣做的成本較低。

          另有一些高端軟件的調(diào)試包把通過邏輯分析器收集的實(shí)時(shí)跟蹤信息和標(biāo)準(zhǔn)OCD端口的運(yùn)行控制特征包含到一起了

          除了調(diào)試系統(tǒng)的高級(jí)工具,許多的項(xiàng)目能夠完美地使用諸如發(fā)光二極管(LED)、串口和示波器這樣的簡單設(shè)備調(diào)試。

          串行口


          許多嵌入式的主板都具有一個(gè)RS232串行口,它允許你將調(diào)試信息傳送到PC工作站上標(biāo)準(zhǔn)的COM口上。如果你的嵌入式對(duì)象還有剩余的內(nèi)存空間,你就可以使用標(biāo)準(zhǔn)的puts()、printf()或者相等同的函數(shù)來發(fā)送有用的調(diào)試信息。

          如果你正在使用Windows工作站,你就只需要運(yùn)行一個(gè)終端仿真器程序來顯示來自的嵌入式對(duì)象的調(diào)試信息。一個(gè)比較好的程序是HyperTerminal,它是Windows操作系統(tǒng)自帶的。我覺得一個(gè)更好的(免費(fèi))程序是Tera Term(Pro)。

          發(fā)光二極管

          一個(gè)簡單的狀態(tài)LED在某些系統(tǒng)上可能被當(dāng)作奢侈品,但是它能夠極為有效地幫助調(diào)試。(至少我會(huì)認(rèn)為沒有什么別的東西能夠提供類似的功能。)

          除了看到LED在代碼某個(gè)點(diǎn)處開始發(fā)光或者閃爍所帶來的提示之外,你還可以使用長或者短閃爍來表示大量的錯(cuò)誤和狀態(tài)報(bào)告——這只需要一點(diǎn)點(diǎn)想象力。這不是藝術(shù)的表現(xiàn),但是很多嵌入式系統(tǒng)的開發(fā)人員只有一兩個(gè)或者稍多的LED來調(diào)試小型嵌入式系統(tǒng)。

          示波器

          示波器可能是基本調(diào)試輔助工具中最強(qiáng)大的一個(gè),而且它不僅僅只能夠用于調(diào)試硬件。

          一個(gè)基本的模擬示波器就足夠了,但是有數(shù)字示波器會(huì)更好。好的示波器會(huì)有兩個(gè)或者更多的頻道,再加上一個(gè)額外的外部觸發(fā)脈沖輸入頻道,這個(gè)頻道帶有綜合觸發(fā)系統(tǒng)和延遲掃描。示波器能夠讓你看到你的程序?qū)ν獠慷丝诤屯庠O(shè)的訪問,并能夠監(jiān)測軟件的活動(dòng)。

          下面是在你調(diào)試嵌入式軟件的時(shí)候應(yīng)用示波器的幾種方法:

          • 對(duì)你需要觀察的針對(duì)活動(dòng)的事件使用一個(gè)空余的外部輸出插腳,或者用這個(gè)插腳來顯示活動(dòng)的情況。
          • 在函數(shù)開始的時(shí)候設(shè)置插腳,再在結(jié)束的時(shí)候拿掉它,以測量函數(shù)的執(zhí)行時(shí)間。你可以以類似的方式檢測中斷的潛伏時(shí)間。
          • 如果CPU卡在了循環(huán)里,那么就要檢查地址總線的狀態(tài),以大概地查看CPU卡在哪個(gè)地方了(當(dāng)然,這要假設(shè)你正在使用外部內(nèi)存)。
          • 檢測中斷路,以查找阻塞的中斷,或者檢測外設(shè)未正常初始化而導(dǎo)致的中斷缺失。
          • 大多數(shù)調(diào)試工具都無法在系統(tǒng)初始啟動(dòng)的時(shí)候提供任何幫助,但是你可以在系統(tǒng)周期性復(fù)位的時(shí)候使用示波器,用以觀察地址和數(shù)據(jù)總線的活動(dòng),以追蹤C(jī)PU在復(fù)位之后的活動(dòng)進(jìn)展。
          不要節(jié)約

          最后,不要在高質(zhì)量的調(diào)試工具上節(jié)約。盡管這些基本的工具都是極其有用的,但是更加昂貴和綜合的工具如果能夠節(jié)省你數(shù)周昂貴的調(diào)試和工程努力,那么它們就總是物有所值的。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          關(guān)鍵詞: 嵌入式

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉