您的位置:首頁 > 技術(shù)方案 > 正文

JTAG在嵌入式系統(tǒng)開發(fā)全生命周期中的系統(tǒng)調(diào)試與測(cè)試關(guān)鍵角色

時(shí)間:2024-08-08 16:21:37 瀏覽:39

隨著摩爾定律的每轉(zhuǎn)變,設(shè)計(jì)人員在開發(fā)過程的每個(gè)階段都面臨著新的復(fù)雜程度的挑戰(zhàn)。芯片設(shè)計(jì)師不僅要在塊硅片上獲得正確的集成電路( IC) 邏輯、性能、功率和產(chǎn)量。

此外,系統(tǒng)開發(fā)人員必須將首次成功擴(kuò)展到板級(jí)參考設(shè)計(jì)、引導(dǎo)代碼、操作系統(tǒng) (OS) 端口和應(yīng)用軟件,更不用說閃存編程、制造測(cè)試方法和現(xiàn)場(chǎng)支持了。同時(shí),滿足緊迫的期限和成本目標(biāo)從未如此具有挑戰(zhàn)性。

改變瓶頸隨著硬件和軟件開發(fā)技術(shù)的發(fā)展,系統(tǒng)測(cè)試和調(diào)試的性質(zhì)也在不斷發(fā)展。摩爾定律不僅影響了處理器和內(nèi)存設(shè)計(jì),而且在集成系統(tǒng)功能、將操作系統(tǒng)(或?qū)崟r(shí)操作系統(tǒng) (RTOS))集成到嵌入式系統(tǒng)以及捆綁到嵌入式系統(tǒng)的應(yīng)用軟件數(shù)量方面也發(fā)生了類似的變化。終產(chǎn)品。

讓我們倒計(jì)時(shí)。在大規(guī)模集成 (LSI) 組件(至少 1000 個(gè)門)時(shí)代,中央處理器( CPU) 只是 CPU,受到當(dāng)時(shí)半導(dǎo)體工藝技術(shù)、功耗和產(chǎn)量的限制。

調(diào)試在很大程度上僅限于集成硬件功能、調(diào)整芯片間時(shí)序和驗(yàn)證邏輯功能的過程。系統(tǒng)軟件大約有數(shù)百 KB,并且受到預(yù)算內(nèi)存空間中可容納的代碼量的限制。

時(shí)代變了。如今,內(nèi)存空間和高CPU時(shí)鐘頻率“幾乎”。設(shè)計(jì)、調(diào)試和測(cè)試挑戰(zhàn)已經(jīng)從硬件組件集成和調(diào)試發(fā)展到系統(tǒng)硬件設(shè)計(jì)的仿真,先于 SOC 流片,再到系統(tǒng)軟件建模,然后是數(shù)百兆字節(jié) (MB) 的集成) 系統(tǒng)軟件。

在系統(tǒng)級(jí),當(dāng)今的大多數(shù)嵌入式設(shè)備都需要功能齊全的嵌入式操作系統(tǒng),運(yùn)行多個(gè)由內(nèi)存管理單元 (MMU) 管理的應(yīng)用程序,并且越來越多地提供某種網(wǎng)絡(luò)功能,例如局域網(wǎng) (LAN) 或無線網(wǎng)絡(luò)連接用于控制或網(wǎng)絡(luò)訪問數(shù)據(jù)庫或語音、數(shù)據(jù)和視頻服務(wù)。

當(dāng)代嵌入式解決方案的是具有數(shù)百萬個(gè)門的片上系統(tǒng) (SOC),將高速緩存、暫存器隨機(jī)存取存儲(chǔ)器 (RAM) 和外圍功能集成到一個(gè)芯片上;許多組件接口被埋在芯片內(nèi),不再可用于系統(tǒng)測(cè)試/調(diào)試的引腳或板級(jí)。CPU 內(nèi)核現(xiàn)在以數(shù)百兆赫茲(MHz) 的頻率運(yùn)行,并集成了許多硬件接口,因此歷史測(cè)試方法已不復(fù)存在。

JTAG 的救援——邊界掃描測(cè)試聯(lián)合測(cè)試行動(dòng)小組 (JTAG) 在 1990 年代開始通過標(biāo)準(zhǔn)化串行掃描鏈方法(JTAG;IEEE 1149.1)來訪問片上資源和內(nèi)置的額外移位寄存器來解決板級(jí)測(cè)試問題進(jìn)入每個(gè) IC 的I/O路徑以進(jìn)行邊界掃描測(cè)試。

在邊界掃描測(cè)試出現(xiàn)之前,很難調(diào)試芯片組件下方的潛在焊料凸點(diǎn)問題。在電路板組裝之前,每個(gè) IC 都經(jīng)過測(cè)試以確保其完美運(yùn)行。因此,如果組裝好的印刷電路板PCB不能正常工作,則故障一定是由印刷電路板中的焊橋、間隙或缺陷引起的。但是,如果缺陷位于芯片組件下方,無法看到或不易修復(fù)怎么辦?

邊界掃描測(cè)試方法解決了這個(gè)問題。如圖 1 所示,添加了一條通過 I/O 寄存器的串行掃描路徑,并由每塊板獨(dú)有的復(fù)雜測(cè)試程序執(zhí)行,以幫助識(shí)別有故障的芯片或其他設(shè)備,以便對(duì)它們進(jìn)行返工或更換。在圖 1 的圖表中,每個(gè)灰色框代表一類設(shè)備功能,例如閃存、外圍設(shè)備、I/O 端口等。

1.png

圖 1. 用于邊界掃描測(cè)試的 JTAG 連接JTAG 方法提供了一種測(cè)試非常復(fù)雜的系統(tǒng)的方法,同時(shí)保持較低的引腳數(shù)。具體來說,無論掃描鏈寄存器路徑有多長(zhǎng),IEEE1149.1 規(guī)范只需要 5 個(gè)引腳用于 JTAG 連接。JTAG 測(cè)試訪問端口的標(biāo)準(zhǔn)引腳功能包括:

TRST 測(cè)試復(fù)位(從 JTAG 探針輸出到芯片以復(fù)位 JTAG 測(cè)試邏輯)TCK 測(cè)試時(shí)鐘(從 JTAG 探針輸出到芯片以設(shè)置 JTAG 掃描速率)TDI 測(cè)試數(shù)據(jù)輸入(串行測(cè)試數(shù)據(jù)輸入到芯片)TDO 測(cè)試數(shù)據(jù)輸出(串行測(cè)試數(shù)據(jù)從芯片輸出)TMS 測(cè)試模式選擇(通過 TCK 上升沿的狀態(tài)確定運(yùn)行或調(diào)試模式)幾家公司幾乎完全專注于邊界掃描測(cè)試,專注于 JTAG 硬件連接設(shè)備和基于主機(jī)的測(cè)試軟件工具,以使測(cè)試程序適應(yīng)每個(gè)電路板設(shè)計(jì)。

JTAG 的第二個(gè)角色——用于軟件/硬件調(diào)試的 CPU 內(nèi)核訪問鑒于 CPU 處理器內(nèi)核現(xiàn)在通過內(nèi)核中的集成緩存、本地片上總線、動(dòng)態(tài)分配內(nèi)存的 MMU 以及其他 SOC 外設(shè)和 I/O 塊,JTAG 路徑提供了到 CPU 內(nèi)部調(diào)試邏輯的直接連接。因此,我們現(xiàn)在有了一種觀察和控制程序執(zhí)行的方法。由于緩存和外圍設(shè)備已移至芯片上,因此調(diào)試邏輯也必須移至芯片上(下圖 2)。

2.png

圖 2. 用于軟件調(diào)試/開發(fā)的 JTAG 連接通過這種直接內(nèi)核訪問,基于主機(jī)的調(diào)試器軟件現(xiàn)在可以斷言“調(diào)試異?!?,重定向處理器以從調(diào)試邏輯寄存器而不是程序計(jì)數(shù)器獲取下一條指令,從而有效地控制處理器以執(zhí)行軟件調(diào)試操作:

* Run-control: Start, Stop, Single-Step, Step Into/Over (source or instruction)* 設(shè)置硬件和軟件斷點(diǎn)* 指定在斷點(diǎn)處要滿足的條件或要執(zhí)行的腳本* 控制目標(biāo)系統(tǒng)的復(fù)位和初始化*要調(diào)試的代碼或要編程到閃存中的代碼*執(zhí)行閃存編程和其他半托管實(shí)用程序請(qǐng)注意,在上述兩種應(yīng)用中,邊界掃描和軟件調(diào)試,JTAG 的作用只是提供物理層通信接口,類似于ISO開放系統(tǒng)互連模型中的 PHY 層。

支持哪些調(diào)試功能的協(xié)議體現(xiàn)在調(diào)試邏輯中,設(shè)計(jì)到 CPU 內(nèi)核和主機(jī)上運(yùn)行的調(diào)試器軟件功能中。

JTAG 調(diào)試優(yōu)點(diǎn)使用具有 JTAG 訪問權(quán)限的調(diào)試器的主要優(yōu)點(diǎn)是:

* JTAG 連接提供對(duì)否則隱藏的 CPU 內(nèi)核的直接訪問* JTAG接口不占用系統(tǒng) I/O 端口(串行、以太網(wǎng))* JTAG 調(diào)試方法使用很少或沒有系統(tǒng)內(nèi)存分配(如在監(jiān)視器中)* 沒有監(jiān)視器會(huì)隨著系統(tǒng)崩潰而崩潰(在電路板啟動(dòng)時(shí)沒有用)* JTAG 連接不需要目標(biāo)系統(tǒng)電源(一些僅 USB 探頭除外)* JTAG 調(diào)試器可以在不停止 CPU 的情況下“竊取周期”來讀取寄存器/內(nèi)存(假設(shè) CPU 中內(nèi)置的調(diào)試邏輯提供此功能)* JTAG 調(diào)試會(huì)話可以重置和/或初始化系統(tǒng)(注意:系統(tǒng)重置不是 JTAG 的一部分。相反,它是使用 JTAG 進(jìn)行遠(yuǎn)程調(diào)試的附屬物,可以通過網(wǎng)絡(luò)遠(yuǎn)程重置 JTAG 探針和目標(biāo)。) * JTAG 調(diào)試器可以在不干擾系統(tǒng)的情況下連接到調(diào)試邏輯JTAG 調(diào)試限制JTAG 調(diào)試連接并不能解決世界上所有的調(diào)試問題,因?yàn)榇嬖谝恍﹪?yán)重的限制:

1) 通過 JTAG 代碼并不是大型程序 (》20MB) 的快方式,尤其是對(duì)于依賴 10/100BaseT 以太網(wǎng)訪問的目標(biāo)系統(tǒng)。

2) 多核系統(tǒng)調(diào)試,其中多個(gè) CPU 內(nèi)核以菊花鏈方式連接在同一個(gè)掃描鏈上并且可以單獨(dú)訪問,但實(shí)現(xiàn)同步調(diào)試操作需要額外的片上硬件來避免與 JTAG 操作相關(guān)的打滑。

隨后,在發(fā)出異步JTAG 停止命令后可能會(huì)經(jīng)過數(shù)百個(gè) CPU 周期。這些功能的示例現(xiàn)在開始出現(xiàn),例如,Cavium Networks Octeon 系列中的全局處理器間控制邏輯,具有多達(dá) 16 個(gè)64 位cnMIPS 內(nèi)核。

3)“Printf”仍然為提取各種調(diào)試狀態(tài)提供了一個(gè)簡(jiǎn)單的補(bǔ)充。

其他調(diào)試功能并非所有調(diào)試功能本身都使用 JTAG 掃描鏈。例如,一些處理器包括收集跟蹤信息的能力,這是一種非常有價(jià)值的調(diào)試工具,因?yàn)樗梢酝ㄟ^分支和中斷跟蹤執(zhí)行,通??梢怨?jié)省數(shù)小時(shí)或數(shù)天的時(shí)間來尋找特別虛幻的錯(cuò)誤。

在代跟蹤實(shí)現(xiàn)中,第二個(gè)調(diào)試邏輯塊以流水線時(shí)鐘速率(片外和板外)卸載跟蹤數(shù)據(jù),以便在用于控制 JTAG 操作的同一調(diào)試探針中收集。

原始的 ARM 嵌入式跟蹤宏單元 (ETM) 和 MIPS EJTAG 調(diào)試邏輯的 PCTrace 組件均未使用 JTAG 來上傳跟蹤數(shù)據(jù)。兩者都使用 JTAG 來設(shè)置操作模式,但每個(gè)都有自己獨(dú)立的并行總線、跟蹤協(xié)議和時(shí)鐘線,可在 CPU 運(yùn)行時(shí)卸載跟蹤數(shù)據(jù)。

這為三個(gè)限制奠定了基礎(chǔ):(1) 可靠地收集有效數(shù)據(jù)的頻率,(2) 在芯片上添加多達(dá) 20 個(gè)額外焊盤、封裝上的引腳以及使調(diào)試探針成本加倍的成本,以及 (3 ) 沒有實(shí)用的方法來在具有多個(gè) CPU 內(nèi)核的 SOC 中實(shí)現(xiàn)跟蹤收集。

片上跟蹤緩沖器下一階段的跟蹤技術(shù)開發(fā)使用片上跟蹤緩沖器來收集有關(guān)程序執(zhí)行流的數(shù)據(jù)。這種方法帶來雙重好處。首先,它支持以CPU 時(shí)鐘速率收集跟蹤數(shù)據(jù)。同時(shí),這種方法將成本降至,因?yàn)楦檾?shù)據(jù)是通過用于正?!斑\(yùn)行控制”調(diào)試的相同 JTAG 掃描鏈路徑/引腳上傳的。

ARM 的新嵌入式跟蹤緩沖器 (ETB) 和 MIPS 使用跟蹤控制塊 (TCB) 的新 PDTrace 為后續(xù)主機(jī)處理提供了全面的跟蹤信息,盡管芯片面積和成本有所增加。

英特爾 XScale 應(yīng)用處理器(IOP、IXC、IXP 和 PXA)在其實(shí)現(xiàn)中使用了這一主題的創(chuàng)造性變體。分支數(shù)據(jù)和分支計(jì)數(shù)數(shù)據(jù)不是收集每條指令的大量跟蹤狀態(tài)信息,而是收集在一個(gè)小得多的片上跟蹤緩沖區(qū)中。根據(jù)這些數(shù)據(jù),可以重建執(zhí)行流程,只是沒有實(shí)時(shí)標(biāo)記可用。

根據(jù)所使用的技術(shù)和片上緩沖區(qū)的大小,可以顯示的跟蹤數(shù)據(jù)量需要權(quán)衡取舍。因此,適用通常的成本與收益權(quán)衡。一定量的跟蹤信息總比沒有好,在典型的調(diào)試場(chǎng)景中,應(yīng)該考慮多少才是真正足夠的。

3.png

雖然大量的跟蹤信息提供了一種無需“檢測(cè)”代碼(這可能會(huì)影響性能)就可以分析代碼執(zhí)行情況的方法,但與之相關(guān)的開發(fā)工具成本也會(huì)增加。

表 1:JTAG 在整個(gè)開發(fā)和產(chǎn)品生命周期中的適用性和優(yōu)勢(shì)其他 JTAG 應(yīng)用除了硬件/軟件調(diào)試和邊界掃描測(cè)試,JTAG 連接還被各種工具供應(yīng)商用于直接在線閃存編程、發(fā)送命令腳本以在目標(biāo)板上執(zhí)行、編程現(xiàn)場(chǎng)可編程邏輯器件( FPLD),并為數(shù)字信號(hào)處理器(DSP) 等其他功能塊提供類似的專用調(diào)試功能。許多復(fù)雜的 IC 包括內(nèi)置的自測(cè)功能,這些功能通過 JTAG 啟動(dòng)和后分析。