嵌入式系統(tǒng)縮小到我們現(xiàn)在在單個(gè)芯片上擁有完整系統(tǒng)的尺寸。您在上一個(gè)項(xiàng)目中成功使用的許多調(diào)試技術(shù)可能無(wú)法適應(yīng)新技術(shù)。您不能再依靠可靠的邏輯分析儀或在線仿真器(ICE)來(lái)公開您最新設(shè)計(jì)的所有內(nèi)部工作原理。高時(shí)鐘頻率,隱藏的探測(cè)點(diǎn)和實(shí)時(shí)軟件只是可能破壞您的調(diào)試工作并讓您撓頭的一些問(wèn)題。但是,您可以調(diào)整目標(biāo)嵌入式系統(tǒng)的設(shè)計(jì),以簡(jiǎn)化調(diào)試工作。盡早參與項(xiàng)目并提出可簡(jiǎn)化調(diào)試的硬件或軟件結(jié)構(gòu)。您的建議可能會(huì)影響內(nèi)存配置,I/O要求,處理器速度,機(jī)械布局,處理器架構(gòu)和實(shí)時(shí)規(guī)范的設(shè)計(jì)。您的早期參與將確保您不會(huì)遇到笨拙的調(diào)試設(shè)置或資源太少而無(wú)法滿足您的日程安排。
例如,應(yīng)用程序存儲(chǔ)的類型會(huì)對(duì)調(diào)試產(chǎn)生深遠(yuǎn)的影響。如果目標(biāo)應(yīng)用程序代碼駐留在ROM中,請(qǐng)確保可以替換等效的讀/寫內(nèi)存進(jìn)行調(diào)試。否則,您必須為每個(gè)程序更新創(chuàng)建ROM版本。此外,除非您的處理器具有片上調(diào)試功能,否則不能在基于ROM的代碼中引入斷點(diǎn)。許多最近的項(xiàng)目選擇閃存用于應(yīng)用程序存儲(chǔ),因?yàn)樗子诟乱赃M(jìn)行調(diào)試,并且具有簡(jiǎn)單且可能遠(yuǎn)程的現(xiàn)場(chǎng)修訂的額外好處。
更快的處理器,似乎是每個(gè)新項(xiàng)目的規(guī)范,也創(chuàng)建調(diào)試噩夢(mèng)。當(dāng)總線速度接近100 MHz時(shí),您將失去仿真器和邏輯分析儀的實(shí)時(shí)狀態(tài)顯示功能。即使在邊緣速度區(qū)域,調(diào)試連接也可以改變電路阻抗特性,足以引入自己的錯(cuò)誤。在選擇最新和最好的處理器之前,確保您的項(xiàng)目確實(shí)需要額外的速度。
隱藏的引腳
即使有合理的時(shí)鐘頻率,目標(biāo)硬件的物理接口也會(huì)令人沮喪調(diào)試工作。封裝引腳可能會(huì)阻止探測(cè),因?yàn)樗鼈兲?xì)或者隱藏在芯片下面。大規(guī)模ASIC甚至可能無(wú)法將所需的總線信號(hào)帶到外部引腳。這些情況可能會(huì)強(qiáng)制您創(chuàng)建與生產(chǎn)單元不匹配的離散組件調(diào)試目標(biāo)。然后,您可以花費(fèi)數(shù)小時(shí)追逐甚至可能不會(huì)出現(xiàn)在生產(chǎn)硬件中的錯(cuò)誤。機(jī)械接口問(wèn)題的另一個(gè)解決方案是購(gòu)買轉(zhuǎn)換器件,將芯片引腳分配轉(zhuǎn)換為與仿真器或邏輯分析器探頭兼容的東西。這些易碎的適配器可能會(huì)為目標(biāo)硬件調(diào)試預(yù)算增加1000美元。
處理器架構(gòu)也會(huì)影響嵌入式系統(tǒng)調(diào)試。例如,完全在片上高速緩存中執(zhí)行的程序循環(huán)不會(huì)出現(xiàn)在外部總線引腳上。是的,您可以對(duì)處理器進(jìn)行編程以顯示外部總線上的所有活動(dòng),但是會(huì)丟失緩存性能增強(qiáng)功能。 RISC處理器存在類似的調(diào)試問(wèn)題,包括用于并行指令執(zhí)行的多個(gè)執(zhí)行單元。如果您的軟件設(shè)計(jì)依賴于這些處理器功能才能正常運(yùn)行,則無(wú)法看到所有處理器活動(dòng)。
除硬件外,選擇最佳開發(fā)和操作系統(tǒng)軟件以節(jié)省調(diào)試時(shí)間。您最難忘的調(diào)試問(wèn)題可能包括實(shí)時(shí)軟件問(wèn)題。異步中斷,多處理器或多任務(wù)操作系統(tǒng)可以隱藏?zé)o法檢測(cè)的交互錯(cuò)誤。尋找可以處理系統(tǒng)面臨的實(shí)時(shí)問(wèn)題的調(diào)試工具和操作軟件。
您最常使用的調(diào)試軟件工具 - 主機(jī)調(diào)試器 - 為您提供目標(biāo)系統(tǒng)代碼可見性和執(zhí)行控制。主機(jī)調(diào)試器將大部分調(diào)試軟件集中在通用桌面PC上,并具有到目標(biāo)的通信通道。您可以在顯示寄存器,堆棧內(nèi)容和CPU狀態(tài)時(shí)啟動(dòng),停止,單步或斷點(diǎn)代碼。通過(guò)編譯器提供的程序信息,您可以訪問(wèn)源代碼,變量名稱和位置。一個(gè)好的調(diào)試器應(yīng)該能夠在幾個(gè)調(diào)試環(huán)境之間切換,例如目標(biāo)監(jiān)視器,ICE,指令模擬器和片上調(diào)試。調(diào)試器供應(yīng)商包括Mentor Graphics,Green Hills軟件,軟件開發(fā)系統(tǒng)和Wind River Systems。
您的編譯器也會(huì)影響調(diào)試效率。如果編譯器優(yōu)化代碼,則源文件不一定與目標(biāo)代碼匹配,因?yàn)榫幾g器可以重新排列指令或刪除不必要的代碼。您可以關(guān)閉優(yōu)化以進(jìn)行調(diào)試,但您的系統(tǒng)性能 - 以及可能的可見錯(cuò)誤 - 將會(huì)發(fā)生變化。當(dāng)然,答案是編寫完美優(yōu)化的代碼,以便您不需要編譯器的幫助。
線程挑戰(zhàn)調(diào)試
實(shí)時(shí)操作系統(tǒng)(RTOS)揭示了一個(gè)新的調(diào)試挑戰(zhàn)的世界。您調(diào)試共享重入代碼的多個(gè)程序線程。您必須能夠暫停或單步執(zhí)行一個(gè)線程并讀取寄存器而不停止其他線程。但要注意,這個(gè)專長(zhǎng)會(huì)導(dǎo)致其他線程的性能受到影響,因?yàn)閿帱c(diǎn)會(huì)調(diào)用處理程序來(lái)確定活動(dòng)線程。異步中斷和消息傳遞也會(huì)在實(shí)時(shí)調(diào)試問(wèn)題列表中排名很高。
目標(biāo)硬件和軟件并不是影響調(diào)試計(jì)劃和預(yù)算的唯一因素。您的調(diào)試配置定義了所需的設(shè)備,并確定何時(shí)可以開始使用。例如,如果您懷疑目標(biāo)硬件有延遲,則可能需要使用指令集模擬器開始調(diào)試。模擬器是大多數(shù)工具供應(yīng)商提供的低成本選項(xiàng),它們應(yīng)該與您用于實(shí)際硬件調(diào)試的調(diào)試器一起使用(圖1a)。您可以單步執(zhí)行并跟蹤應(yīng)用程序代碼的一部分,以發(fā)現(xiàn)許多邏輯和靜態(tài)錯(cuò)誤。大多數(shù)嵌入式應(yīng)用程序都是I/O密集型的,因此您還需要外設(shè)模擬器功能。指令集模擬器的主要缺點(diǎn)是其模擬速度低。您可能必須修改代碼的程序時(shí)間敏感區(qū)域以使仿真工作。
許多低預(yù)算的嵌入式項(xiàng)目使用圖1b中所示的配置啟動(dòng)調(diào)試過(guò)程。您可以在臺(tái)式PC上準(zhǔn)備,編譯和鏈接應(yīng)用程序軟件,然后使用目標(biāo)代碼對(duì)EPROM或一次性可編程(OTP)設(shè)備進(jìn)行編程并將其插入目標(biāo)。調(diào)試包括觀察操作并重復(fù)編輯 - 編譯 - 更新循環(huán),直到獲得所需的性能。您可以通過(guò)添加示波器或內(nèi)置LED可以觀察到的僅調(diào)試輸出指令來(lái)獲得洞察力。這種調(diào)試技術(shù)可能適用于簡(jiǎn)單的軟件項(xiàng)目,但它通常演變?yōu)楦娴姆椒ㄖ唬邕壿嫹治銎鞣椒ǎ哉业轿⒚畹能浖e(cuò)誤。
如果您的嵌入式系統(tǒng)硬件可以節(jié)省I/O端口和應(yīng)用程序空間,可以在代碼中添加一個(gè)簡(jiǎn)單的目標(biāo)監(jiān)視器進(jìn)行調(diào)試(圖1c)。您可以讀取寄存器,單步執(zhí)行,并在駐留在讀/寫內(nèi)存中的任何應(yīng)用程序代碼中引入斷點(diǎn)。雖然基于主機(jī)的調(diào)試器是可選的,但它的使用將減少所需的目標(biāo)應(yīng)用程序空間。目標(biāo)監(jiān)視器通過(guò)跳轉(zhuǎn)到目標(biāo)監(jiān)視器來(lái)替換每個(gè)斷點(diǎn)或單步位置處的指令來(lái)執(zhí)行運(yùn)行控制。當(dāng)程序執(zhí)行到達(dá)斷點(diǎn)時(shí),監(jiān)視器將恢復(fù)斷點(diǎn)指令,顯示當(dāng)前寄存器狀態(tài),并等待下一個(gè)命令。目標(biāo)監(jiān)視器的缺點(diǎn)是您犧牲了系統(tǒng)資源,無(wú)法調(diào)試基于ROM的代碼,并且您沒(méi)有實(shí)時(shí)的程序跟蹤功能。
因?yàn)榇蠖鄶?shù)嵌入式設(shè)計(jì)中缺少額外的資源,您可能需要升級(jí)到ROM仿真器來(lái)調(diào)試系統(tǒng)(圖1d)。 ROM仿真器用RAM替換目標(biāo)ROM,并提供到主機(jī)調(diào)試器的通信路徑。此調(diào)試設(shè)置為您提供與目標(biāo)監(jiān)視器相同的功能,而無(wú)需在目標(biāo)中使用不必要的資源。另一個(gè)優(yōu)點(diǎn)是您可以通過(guò)通信路徑輕松更新代碼。您將有一個(gè)更短的編輯,重新編譯,下載和調(diào)試周期。 ROM仿真器適用于大多數(shù)基于ROM的設(shè)計(jì),即使您選擇了不同的處理器,也可以在下一個(gè)項(xiàng)目中使用它。 Applied Microsystems的NetROM仿真器支持各種調(diào)試器,包括網(wǎng)絡(luò)連接(圖2)。
在ICE上放置錯(cuò)誤
傳統(tǒng)上,ICE是軟件調(diào)試的首選工具。 ICE的成本可高達(dá)25,000美元,但它是最強(qiáng)大,最有效的調(diào)試工具之一。您可以獲得實(shí)時(shí)程序跟蹤以及所有標(biāo)準(zhǔn)調(diào)試器功能。 ICE探針插入目標(biāo)系統(tǒng)并模擬處理器,ROM和RAM的功能(圖1e)。您可以在事件之前和之后指定復(fù)雜的觸發(fā)點(diǎn)并捕獲總線數(shù)據(jù)。由于大多數(shù)ICE供應(yīng)商都包含專有調(diào)試器,因此您可能需要學(xué)習(xí)兩個(gè)系統(tǒng)才能在調(diào)試配置之間切換。在目標(biāo)硬件可用之前,ICE還可以用作高速模擬器。 Huntsville Microsystems的SPS-1000系列仿真器支持Motorola 5xx/6xx和IBM 4xx PowerPC處理器。
盡管ICE可能是您發(fā)現(xiàn)微妙實(shí)時(shí)問(wèn)題的門票,但該技術(shù)已經(jīng)達(dá)到極限。提高處理器總線速度現(xiàn)在正在挑戰(zhàn)許多仿真器的功能。與任何其他調(diào)試工具一樣,ICE可以加載高速信號(hào)并引入與工具相關(guān)的錯(cuò)誤。嵌入復(fù)雜ASIC的處理器內(nèi)核的趨勢(shì)也使得ICE的使用變得不切實(shí)際。
邏輯分析儀,長(zhǎng)期以來(lái)是硬件工程師的最愛(ài),是其他有效的軟件調(diào)試工具(圖1f)。基本設(shè)置是將邏輯分析儀探頭連接到目標(biāo)硬件的各個(gè)引腳。然后,定義一個(gè)靠近問(wèn)題區(qū)域的觸發(fā)點(diǎn),并在觸發(fā)前的數(shù)千個(gè)時(shí)鐘周期內(nèi)捕獲總線和I/O數(shù)據(jù)。分析跟蹤地址和數(shù)據(jù)應(yīng)該會(huì)導(dǎo)致您遇到軟件錯(cuò)誤。雖然這種方法聽起來(lái)很簡(jiǎn)單,但邏輯分析儀很難設(shè)置。較舊的邏輯分析儀要求您輸入觸發(fā)點(diǎn)作為絕對(duì)地址,這些分析儀不顯示源代碼信息。此外,缺少外部信號(hào)和隱藏的表面安裝引腳可能無(wú)法連接到處理器地址和數(shù)據(jù)總線。與ICE一樣,邏輯分析儀也會(huì)隨著時(shí)鐘速率的增加而面臨帶寬限制。盡管存在這些限制并且由于項(xiàng)目預(yù)算縮減,但發(fā)現(xiàn)自己坐在邏輯分析儀前調(diào)試軟件并不會(huì)感到驚訝。
即使存在ICE和邏輯分析儀的問(wèn)題,儀器制造商也沒(méi)有放棄了。事實(shí)上,他們繼續(xù)推進(jìn)產(chǎn)品功能。 ICE和邏輯分析儀開始合并。較新的邏輯分析器可以從主機(jī)下載源文件或符號(hào)表,以啟用源代碼調(diào)試。泰克TLA 720系列邏輯分析儀包括主機(jī)調(diào)試器,可以對(duì)處理器進(jìn)行運(yùn)行控制并下載軟件更新。
硅片上調(diào)試
增加缺乏外部探測(cè)點(diǎn)和更高的總線速度迫使處理器制造商開發(fā)片上調(diào)試技術(shù)。將少量寄存器和串行端口添加到處理器的芯片中可實(shí)現(xiàn)遠(yuǎn)程執(zhí)行控制,而無(wú)需使用任何目標(biāo)內(nèi)存資源或I/O(圖1g)。您可以通過(guò)串行鏈路單步執(zhí)行,設(shè)置斷點(diǎn),設(shè)置或讀取內(nèi)存和寄存器到外部調(diào)試器。由于片上調(diào)試芯片通過(guò)硬件比較檢測(cè)地址,因此您可以在基于ROM的代碼中插入斷點(diǎn)。您可以在沒(méi)有其他調(diào)試技術(shù)所需的所有外部連接的情況下查看處理器。片上調(diào)試的另一個(gè)優(yōu)點(diǎn)是,很少有目標(biāo)硬件可以開始調(diào)試。如果可以為處理器供電,片上通信鏈路可能會(huì)工作。
制造商參考通過(guò)接口類型進(jìn)行片上調(diào)試。摩托羅拉使用BDM(后臺(tái)調(diào)試模式),而其他處理器廠商稱之為JTAG(聯(lián)合行動(dòng)測(cè)試組)調(diào)試。雖然處理器之間的細(xì)節(jié)不同,但BDM和JTAG接口將調(diào)試引腳與通用I/O引腳復(fù)用,以最大限度地減少片上調(diào)試的影響。 IEEE 1149.1定義了JTAG接口,設(shè)計(jì)人員將其設(shè)想為復(fù)雜IC邊界掃描測(cè)試的訪問(wèn)端口。到目前為止,調(diào)試軟件供應(yīng)商已經(jīng)成功地處理了處理器供應(yīng)商之間片上調(diào)試特性的差異。但是,正在努力使串行接口標(biāo)準(zhǔn)化并指定最低功能。
嵌入式調(diào)試方法包括簡(jiǎn)單的,有時(shí)是免費(fèi)的模擬器,以及價(jià)格超過(guò)25,000美元的仿真器/調(diào)試器組合。因此,為了最有效地利用您的時(shí)間和預(yù)算,您應(yīng)該在項(xiàng)目的早期計(jì)劃調(diào)試。您在設(shè)計(jì)階段的輸入可以簡(jiǎn)化調(diào)試,甚至無(wú)需昂貴的測(cè)試設(shè)備。此外,您應(yīng)該注意新的調(diào)試方法。處理器供應(yīng)商不斷尋求新的調(diào)試技術(shù),這些技術(shù)將通過(guò)快速時(shí)鐘速率和深度嵌入式內(nèi)核證明是有效的(參見附文“下一代調(diào)試”)。你可以打賭,調(diào)試世界將繼續(xù)改變。
下一代調(diào)試
制造商已將片上調(diào)試功能集成到當(dāng)今許多復(fù)雜處理器和內(nèi)核的芯片中。簡(jiǎn)單的串行接口和遠(yuǎn)程軟件產(chǎn)生令人印象深刻的調(diào)試系統(tǒng)。但是,這些串行調(diào)試系統(tǒng)缺少連接在線仿真器或邏輯分析儀時(shí)的實(shí)時(shí)跟蹤功能。捕獲的程序流跟蹤是一個(gè)很好的工具,用于跟蹤錯(cuò)誤的實(shí)時(shí)應(yīng)用程序中的錯(cuò)誤。
盡管如此,您可能沒(méi)有多久等待片上調(diào)試芯片帶來(lái)回到那些實(shí)時(shí)痕跡。最近推出的AMD的élanSC520微控制器包含一個(gè)256位緩存,可實(shí)時(shí)記錄程序分支。利用此信息和源代碼,主機(jī)調(diào)試軟件可以重建并顯示程序跟蹤(圖A)。可選的并行軟件調(diào)試接口僅在特殊的綁定部分提供,可在處理器和主機(jī)軟件之間進(jìn)行更高速的命令和數(shù)據(jù)交換。
泄漏你的膽量
調(diào)試工具需要花費(fèi)數(shù)百美元甚至數(shù)千美元,但設(shè)計(jì)師必須經(jīng)常用很少的信息做出購(gòu)買決策。是的,他們有大量的供應(yīng)商文獻(xiàn),廣告和白皮書,但這些信息遠(yuǎn)非客觀。您可以提供幫助。
您對(duì)嵌入式系統(tǒng)調(diào)試工具的體驗(yàn)和挫折可能會(huì)使其他EDN讀者免于無(wú)法安排的日程安排和浪費(fèi)的項(xiàng)目資金。所以,繼續(xù)讓世界知道你的感受。訪問(wèn)EDN針對(duì)嵌入式調(diào)試工具的新讀者評(píng)論在線存儲(chǔ)庫(kù)。您的意見可能會(huì)讓設(shè)計(jì)師受益,或者只是防止另一個(gè)錯(cuò)誤。無(wú)論哪種方式,EDN讀者都會(huì)感謝您的意見。
要輸入您的意見,請(qǐng)?jiān)L問(wèn)我們的嵌入式系統(tǒng)網(wǎng)頁(yè),并點(diǎn)擊讀者評(píng)論鏈接。只需訪問(wèn)該網(wǎng)站,選擇您使用的產(chǎn)品,然后輸入您的體驗(yàn)的簡(jiǎn)短摘要。我們將嘗試通過(guò)一些簡(jiǎn)單的規(guī)則來(lái)保持民事。
-
PCB打樣
+關(guān)注
關(guān)注
17文章
2968瀏覽量
21696 -
華強(qiáng)PCB
+關(guān)注
關(guān)注
8文章
1831瀏覽量
27749 -
華強(qiáng)pcb線路板打樣
+關(guān)注
關(guān)注
5文章
14629瀏覽量
43035
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論