• <pre id="rw7vf"></pre>

            1. <strike id="rw7vf"></strike>

            2. <pre id="rw7vf"><small id="rw7vf"></small></pre>
              0
              • 聊天消息
              • 系統消息
              • 評論與回復
              登錄后你可以
              • 下載海量資料
              • 學習在線課程
              • 觀看技術視頻
              • 寫文章/發帖/加入社區
              會員中心
              創作中心

              完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

              3天內不再提示

              Arm調試架構基礎知識詳解

              sanyue7758 ? 來源:TrustZone ? 2024-01-02 10:45 ? 次閱讀

              調試是軟件開發的一個重要組成部分,通常是最消耗時間的(也因此非常昂貴)。錯誤可以是很難察覺、重現和修復的,而且也難以預料解決一個缺陷需要多長的時間。

              產品交付給客戶后,解決問題的成本顯著增加。在很多情況下,一個產品的銷售只有一個很小的時間窗口,如果產品晚了,它可能錯過市場的機會。因此,對于任何開發人員,系統所提供的調試工具是要考慮的一個重要因素。

              許多實用ARM處理器嵌入式系統只有有限的輸入/輸出設備。這意味著可能無法使用傳統的臺式機的調試方法(如實用printf()函數)。

              像很多IoT設備,都沒有屏顯或者串口。

              在過去,在這樣的系統中,開發人員可能會使用昂貴的硬件工具,如邏輯分析儀和示波器來觀察程序的行為。

              本書所描述的處理器是有高速緩存的一個復雜的片上系統,包含內存和許多其他功能模塊。在片外也許無法看到處理器的內部信號,因此無法通過連接邏輯分析儀等設備來監測它的行為。

              出于這個原因,ARM系統一般包含專門的硬件,以便為調試提供廣泛的控制和觀測模塊。

              ARM調試硬件

              Cortex-A系列處理器提供的硬件功能可以使調試工具提供可以明顯提高處理器控制活動非入侵性地收集大量的有關程序執行數據的水平。我們可以將硬件的功能分為兩類:入侵性和非入侵性。

              入侵性調試提供了能夠停止程序并單步執行的工具(在C源代碼或通過匯編語言指令單步執行),它可以通過一個外部設備連接到處理器芯片的JTAG引腳或(較少見)系統ROM中的調試監視代碼。

              JTAG是Joint Test Action Group的簡寫,是IEEE 1149.1規范,它最初設計用來測試電路板上的電子設備,但現在廣泛用于連接處理器調試。

              一個典型的JTAG連接有5個引腳:2個輸入、1個時鐘、1個復位和1個輸出。

              調試器提供了控制執行程序的能力,使我們能夠運行到某一點的代碼時暫停處理器、單步執行代碼和繼續執行,也可以在指定的指令上設置斷點(當處理器到達這條指令時,讓調試器控制它)。這些工作可以使用兩種不同的方法。

              (1)采用BKPT指令替代需要停止的指令可以產生軟件斷點。顯然,這只能用于存儲在RAM中的代碼,但優點是可以設置非常多的軟件斷點。該調試器軟件必須跟蹤記錄放置軟件斷點的位置以及該位置的原始操作碼,這樣當希望執行該斷點處的指令時,它可以放回原始代碼。

              (2)硬件斷點,使用處理器內置的比較器,當執行到指定地址時自動停止執行。這可以用在代碼空間中的任何地方,因為它們不需要修改代碼,但硬件只能提供數量有限的硬件斷點單元(Cortex-A系列通常只有4個)。調試工具可以支持更復雜的斷點(例如在一個地址范圍內的任意指令,或僅當指定序列事件發生或硬件在指定的狀態時停止任意指令)。數據觀察點讓調試器可以控制當一個特定的數據地址或地址范圍被讀取或寫入訪問時,產生調試控制。這些也可以稱為數據斷點。

              調試事件是指進程的某些部分正在被調試導致系統通知調試器的事件。調試事件可以是同步或異步的,斷點、BKPT指令和觀察點都是同步調試事件。當任何這些事件之一發生時,該處理器能以以下方式之一響應。

              ● 它可以忽略調試事件。

              ● 它可以引發一個調試異常。

              ● 根據調試狀態和控制寄存器(Debug Status and Control Register, DSCR)的設置,它會進入兩種調試模式:

              ? 監視調試模式;

              ? 停止調試模式。

              上述兩種調試模式都是侵入式調試的例子。

              (1)停止調試模式。在停止調試模式中,一個調試事件會使處理器進入調試狀態,該處理器被停止,并從系統的其他部分分離出來。這意味著,調試器可以顯示處理器所能看到的內存,內存管理和緩存操作的影響將變得可見。

              在調試狀態下,處理器從程序計數器指定的位置停止執行指令,并通過外部調試接口控制,尤其是使用錯誤指令轉移寄存器(Debug Instruction Transfer Register, DBGITR),這啟用了外部控制器,例如調試器來查詢處理器的現場,并控制所有后續的指令執行。處理器和系統狀態都是可以被修改的,因為處理器已經停止,它無法處理任何中斷,直到調試器重新啟動代碼執行。

              (2)監視調試模式。在監控調試模式中,調試事件會產生一個調試異常,無論是關于指令的執行產生的預取中止異常,還是數據訪問時產生的數據中止異常,這些都必須由軟件調試監視器處理。由于處理器仍然在運行,中斷仍然可以被響應。

              ARM跟蹤硬件

              非侵入性調試(在ARM文檔中通常稱為跟蹤)可以在執行時觀察處理器的行為,它可以記錄內存訪問的執行(包括地址和數據),并生成一個程序運行的跟蹤,查看外設訪問,堆和棧訪問以及變量的改變。

              對于許多實時體統,**不能使用入侵性調試的方法。**例如,考慮一個引擎管理系統,也許能夠在特定的地方停止處理器,但引擎將繼續運行,所以將無法做有用的調試,即使是在不太繁重的實時要求環境中,跟蹤也是非常有用的。

              非侵入性調試,或稱為“跟蹤”,是一種在不干擾或影響目標系統運行的前提下,觀察和記錄目標系統運行時行為的方法。這種方法特別適用于實時系統或那些不能接受中斷的系統。

              侵入式調試是一種在調試過程中需要直接干預和介入目標系統運行的調試方式。這種調試方式需要在目標系統的源代碼級別或匯編語言指令中停止程序并逐行執行它們。通過使用芯片JTAG引腳連接到內核的外部設備,或者通過調試監控代碼,開發人員可以實現對目標系統的直接控制和干預。

              侵入式調試的優點在于能夠深入了解目標系統的底層細節和運行狀態,幫助開發人員準確地定位和解決問題。但是,這種調試方式也存在一些缺點。首先,它需要對目標系統進行直接干預和介入,可能會對系統的正常運行造成干擾或破壞。其次,侵入式調試需要對目標系統的源代碼或匯編語言指令進行操作,這需要較高的技術水平和經驗,并且可能會引入新的錯誤或問題。

              因此,在選擇調試方式時,需要根據實際情況進行權衡和選擇。對于一些復雜或關鍵的系統,侵入式調試可能是必要的,但在大多數情況下,非侵入式調試或跟蹤可能是更合適的選擇。

              通常,跟蹤由連接到處理器的外部硬件模塊提供,這就是所謂的嵌入式跟蹤宏單元(Embedded Trace Macrocell, ETM)或程序跟蹤宏單元(Program Trace Macrocell, PTM),是基于ARM處理器系統的一個可選部分,SoC在設計時可以去除這個模塊以降低成本。

              這個模塊可以觀察(但不影響)處理器的行為,并能監視指令的執行和數據的訪問。

              關于捕獲跟蹤,有兩個主要的問題。

              第一個問題與如今非常高的處理器主頻有關,即使幾秒的操作也可能執行數萬億周期。顯然,要查詢如此多的信息將是非常困難的。

              第二個問題是,如今的處理器在一個周期中可能執行一個或多個64 bit緩存訪問,要記錄數據地址和數據值就需要非常大的寬帶。

              這就帶來一個的問題,芯片上可能只能提供少數引腳,并且這些輸出引腳只能用一個比處理器主頻更低的時鐘。如果處理器以速度為1 GHz的時鐘,每個周期生成100 bit的信息,但芯片只能以200MHz的速度輸出4 bit的跟蹤信息。

              為了解決這個問題,跟蹤宏單元將嘗試壓縮信息,以減少所需的寬帶。然而,處理這些問題的主要方法是控制跟蹤模塊,以便只收集所選擇的跟蹤信息。

              例如,我們可能只跟蹤執行流,而不記錄數據值,或我們只跟蹤一個特定外設或特定函數執行的數據訪問。

              由于處理器的速度和復雜性,捕獲其所有操作的信息是非常困難的和帶寬密集型的。因此,通常需要采用特定的策略和方法來僅捕獲所需的信息,從而有效地解決調試和故障排除問題。

              此外,將跟蹤信息存儲在芯片的內存緩沖區(嵌入式跟蹤緩沖區(ETB))是常見的辦法,這將緩解芯片獲取信息的速度問題,但在硅片面積(對應芯片的價格)會有額外的成本,并且會限定一個固定的可被捕獲的跟蹤信息量。

              B就是buffer

              ETB以循環方式存儲壓縮的跟蹤信息,連續的捕獲跟蹤信息直到停止。ETB的大小根據芯片的實現不同而變化,但通常8KB或16KB的緩沖區就足以容納對幾千行程序的跟蹤。

              在程序出現故障時,如果啟動了跟蹤緩沖區,則可以看到部分程序的歷史記錄,通過程序的歷史記錄,很容易通過程序查回去,看看在故障點前發生了什么。

              這對于調查間歇和實時故障特別有用,而這對傳統的需要停止和啟動處理器執行的調試方法是比較困難的。

              使用硬件跟蹤可以顯著地減少尋找故障所需的時間,跟蹤信息精確地顯示執行了什么,何時產生的以及訪問了什么數據。

              這種技術可以用于生成程序的calltrace,即記錄程序執行過程中函數或方法的調用序列。

              通過calltrace,可以了解在故障點前程序執行的具體流程和函數調用關系。這有助于分析問題的根本原因,確定是哪個函數或方法導致了故障,以及故障是如何產生的。

              ARM的CoreSight技術通過ETM提供了擴展功能,在特定的系統中它的存在和功能是由芯片設計者定義的。

              最近在找一個課程,看看能不能讓我去學習一下Verilog的實現,到時候有機會的話,可以分享的更加深入一點。

              CoreSight提供了一個非常強大的調試功能,它可以調試多處理器系統(非對稱和SMP),共享調試和跟蹤的引腳,在一段跟蹤時間內,具有對處理器的完全控制。

              嵌入式交叉觸發機制讓工具可以同步控制多個內核,例如,當一個內核遇到一個斷點,也將停止所有其他的內核。

              商業的調試工具可以使用跟蹤數據提供諸如處理器寄存器、內存及外設的實時視圖等功能,允許用戶對程序流進行單步向前或向后執行。

              分析工具可以利用這些數據顯示該程序在哪里花費的時間以及存在的性能瓶頸。

              代碼覆蓋工具可以使用跟蹤數據提供圖探究調用。

              OS信息調試器可以使用跟蹤信息(在某些情況下,額外的代碼插裝)提供高級別的系統上下文信息。

              像DS、勞特巴赫這些其實都是細分賽道,做的很深,國內這樣的企業好少~~~期待。

              在這里,我們列出了一些可用的CoreSight組件,并簡要說明其用途。

              先整個圖,看著會舒服點

              dc06aa04-a6eb-11ee-8b88-92fbcf53809c.png

              畫的真漂亮哈哈哈

              (1)調試訪問端口(DAP)。

              DAP是ARM的CoreSight系統的一個可選部分,不是每個設備都包含DAP,它使外部調試器直接訪問系統的內存空間,而無須使處理器進入調試狀態。在沒有DAP情況下,要讀取或寫入可能需要調試器停止處理器,并執行加載或存儲指令。DAP提供了一個外部調試工具來訪問系統中的所有的JTAG掃描鏈(因此可以訪問處理器的所有調試和跟蹤寄存器)

              (2)嵌入式交叉觸發(ECT)。

              ECT模塊是CoreSight的一個組件,可以包含在CoreSight系統中。其目的是將系統中的多個設備的調試功能鏈接在一起。例如,我們可以有兩個相互獨立的運行內核,在一個內核的運行程序上設置一個斷點時,如果可以在一個內核在斷點處停止時,讓另一個內核也停止下來(無論當前正在執行什么指令),那么將對調試工作非常有幫助。ECT中的交叉觸發矩陣和接口可以在內核和跟蹤宏單元之間傳遞調試狀態和控制信息。

              (3)AHB跟蹤宏單元。

              AMBA AHB跟蹤宏單元可以讓調試器看到系統內存總線上發生了什么。此信息不是直接從處理器ETM得到的,因為集成的內核無法確定這個數據來自緩存還是外部存儲器。

              (4)CoreSight串行線。

              CoreSight串行線調試通過使用調試訪問端口(DAP)給出了一個2引腳的連接,它的功能相當于5引腳的JTAG接口。

              (5)系統跟蹤宏單元(STM)。

              它為多處理器和進程提供了printf()風格的調試方法。系統中任何主設備運行的軟件都能夠通過使用非常簡單的代碼片段訪問STM通道,而無須知道其他軟件的使用,它會使能內核和用戶代碼的儀器化軟件的時間標記。時間標記的信息提供了相對于先前的事件的一個變化偏移量,這是非常有用的。

              (6)跟蹤內存控制器(TMC)。

              正如已經描述的,給芯片封裝添加額外的引腳會顯著地增加其成本。在多個內核設備(或其他模塊能產生跟蹤信息)的情況下,為經濟考慮很可能排除提供多個跟蹤端口的可能性。CoreSight跟蹤內存控制器可用于將多個跟蹤源合并到一個單一的總線上。控制可以在多個輸入源之間進行優先級考慮和選擇。跟蹤信息可以使用專門的跟蹤端口導出,通過JTAG或SWI串行線接口或通過復用SoC的I/O端口,可以存儲在一個ETB或系統內存中。

              程序員應該查閱所使用的設備的文檔,以確定哪些跟蹤功能和工具可以使用。

              調試監視器

              ARM架構為外部調試器提供了多種訪問的功能,這些功能模塊也可用于處理器的代碼,即所謂的調試監視器,它駐留在目標系統。

              監視系統是比較便宜的,因為它們可能并不需要額外的硬件。然而,它們需要占用系統的存儲器空間,而且只有當目標系統本身實際運行時才能使用。

              如果系統連起碼的正確啟動都無法成功的話,它們在系統上沒有什么價值。

              處理器的斷點和觀察點硬件可用于調試監視器。

              當選擇監視模式調試時,斷點單元可以通過ARM處理器上運行的代碼進行編程。如果執行了BKPT指令,或一個硬件斷點單元匹配,系統在監視模式下會有不同的行為。

              相比在外部硬件調試器控制下停止處理器,在監視模式下處理器會產生一個中止異常,并且它可以識別這是不是由調試事件產生的中止,然后調用監視代碼。

              舉個例子,假設有一個ARM處理器在運行一個程序,并且開發者想要在某個特定的代碼行上設置一個斷點。在監視模式下,開發者可以在目標系統上運行一個特殊的指令來編程斷點單元。當程序執行到這一行時,斷點單元會觸發并產生一個異常。處理器可以識別這個異常是由斷點引起的,然后執行預定義的監視代碼。這個監視代碼可以用于收集調試信息、記錄程序狀態或執行其他必要的調試任務。

              總的來說,監視系統是一種用于處理器調試的機制,允許開發者在不停止系統運行的情況下檢查程序狀態和行為。通過使用斷點和觀察點硬件,開發者可以在目標系統上設置斷點、觀察點或執行其他調試操作,從而更好地理解程序的執行流程和潛在問題。

              很多編寫源碼的IDE工具大概就是利用這個操作來實現的。所以說做編譯器真的有點東西。

              調試Linux應用程序

              Linux是一個多任務的操作系統,其每一個進程都有自己的進程地址空間,并完成私有頁表的映射,這會讓調試一些問題比較麻煩。

              我們可以大致定義兩個不同的調試Linux系統所使用的方法。

              (1)Linux應用程序,通常使用運行在目標上的GDB調試服務器與主計算機通信來進行調試,通常通過以太網。

              在調試會話發生時,內核將繼續正常運行,這種調試方法不會使用所提供的內置硬件調試設備,目標系統永久處于運行狀態,服務器接收到主機調試器的請求,然后接收命令,并提供數據傳回主機。

              主機調試器將加載請求發送給GDB服務器,GDB服務器通過啟動一個新的進程來運行需要調試的應用程序并做出響應。

              在開始執行前,它使用系統調用ptrace()控制應用程序的進程,這個進程中的所有信號被轉發到GDB服務器。

              任何發送到應用程序的信號將會進入GDB服務器,它可以處理信號或將其轉發給正在被調試的應用程序。

              為了設置斷點,GDB服務器會在代碼中所要求的位置插入一個產生SIGTRAP信號的代碼。

              當執行該代碼時,GDB服務器被調用,然后執行調試器任務,如檢查調用棧信息,變量或寄存器內容。

              (2)對于內核調試,需要使用JTAG調試器。

              當一個斷點被執行,系統就停止。

              這是最簡單的檢查問題的方法,如設備驅動程序加載或不正確操作,或內核引導失敗等問題。

              日常的常用場景

              另一種常見的方法是通過調用printk()函數。

              strace工具可以顯示關于用戶系統調用的信息。

              Kgdb是一個Linux內核的源代碼級調試器,它與GDB協同工作在單獨的機器上工作,可以用來檢查堆棧跟蹤和內核狀態視圖(如PC值、定時器內容和內存)。

              設備/dev/kmem可以提供內核內存的在線訪問。

              當然,Linux-aware JTAG調試器也可以用來調試線程,它通常只會停止所有的進程,無法在停止一個單獨的線程或進程同時讓其他線程運行。

              斷點可以設置在所有的線程或一個指定的線程上。

              由于存儲器映射取決于哪個進程是活動的,因此軟件斷點通常只能設置在一個特定進程進行映射時。

              ARM DS-5調試器可以通過gdbserver調試應用程序,通過JTAG調試Linux內核和Linux內核模塊。

              還有Trace32工具。

              小結

              最后這里拿幾個典型的核來說說調試架構。

              Corte-M3

              dc1eb612-a6eb-11ee-8b88-92fbcf53809c.pngCorte-M3系列微控制器的總體結構圖

              Corte-M3的調試系統基于ARM公司的“CoreSight(內核景象)”調試架構,對處理器上總線邏輯的控制使用另外的總線接口,即通過所謂的“調試訪問端口(Debug Access Port,DAP)”,把JTAG或串行線協議都轉換成DAP總線接口協議,再控制DAP來執行調試動作。

              CoreSight架構的另一部分用于跟蹤,在跟蹤蹤過程中,由跟蹤源產生的數據被裹成數據包,然后被送到“高級跟蹤總線(Advanced Tracking Bus,ATB)”上進行傳送。

              如果某SoC含有多個跟蹤源(如多核系統),則需要一種硬件(在CoreSight架構中,這種硬件被稱為ATB funnel)水平的ATB歸并器(merger),把各ATB數據流歸并成一條。

              歸并后的數據流都送往TPIU(Trace Port Interface Unit,跟蹤端口接口單元),TPIU再把數據導出到片外的跟蹤硬件設備數據總線和指令總線通過總線接口與代碼存儲器,外部存儲器,外部設備和內部設備進行連接。

              下面再詳細展開說說:

              Cortex-M3在內核水平上搭載了若干種調試相關的特性。

              最主要的就是程序執行控制,包括

              停機(Halting)、

              單步執行(Stepping)、

              指令斷點、

              數據觀察點、

              寄存器和存儲器訪問、

              性能速寫(Profiling),

              以及各種跟蹤機制。

              Cortex-M3的調試系統基于ARM最新的CoreSight架構。不同于以往的ARM處理器,內核本身不再含有JTAG接口。取而代之的是CPU提供稱為“調試訪問接口(DAP)”的總線接口。

              通過這個總線接口,可以訪問芯片的寄存器,也可以訪問系統存儲器,甚至可以在內核運行時訪問。

              對此總線接口的使用,是由一個調試端口(DP)設備完成的。DPs不屬于Cortex-M3內核,但它們是在芯片的內部實現的。

              目前,可用的DP包括SWJ-DP(既支持傳統的JTAG調試,也支持新的串行線調試協議),另一個SW-DP則去掉了對JTAG的支持。

              另外,也可以使用ARM CoreSignt產品家族的JTAG-DP模塊。

              這下就有3個DP可以選了,芯片制造商可以從中選擇一個,以提供具體的調試接口(通常都是選SWJ-DP)。

              Cortex-M3還能掛載一個所謂的“嵌入式跟蹤宏單元(ETM)”。

              ETM可以不斷地發出跟蹤信息,這些信息通過一個被稱為“跟蹤端口接口單元(TPIU)”的模塊送到內核的外部,再在芯片外面使用一個“跟蹤信息分析儀”,就可以把TIPU輸出的“已執行指令信息”捕捉到,并且送給調試主機——也就是PC。

              在Cortex-M3中,調試動作能由一系列的事件觸發,包括斷點、數據觀察點、fault條件或者是外部調試請求輸入的信號。

              當調試事件發生時,Cortex-M3可能會停機,也可能進入調試監視器異常handler。具體如何反應,則根據與調試相關寄存器的配置。

              與調試相關的還有其他的絕活?,F在要介紹的是“指令追蹤宏單元(ITM)”,它也有自己的辦法把數據送往調試器。

              通過把數據寫到ITM的寄存器中,調試器能夠通過跟蹤接口來收集這些數據,并且顯示或者處理它。此法不但容易使用,而且比JTAG的輸出速度更快。

              所有這些調試組件都可以由DAP總線接口來控制,Cortex-M3內核提供DAP接口。此外,運行中的程序也能控制它們,所有的跟蹤信息都能通過TPIU進行訪問。

              Zynq-7000 AP SoC

              Zynq-7000 AP SoC提供標準的JTAG(IEEE 1149.1)調試接口,包括一個在PS內部的ARM調試接口(DAP)和一個在PL內部的標準JTAG測試接口(TAP)。

              ARM DAP是ARM CoreSight調試框架的一部分,允許用戶使用行業標準的第三方調試工具。

              Xilinx TAP控制器在標準的JTAG功能上添加了一些支持PL的特性,包括PL調試、熔絲/BBRAM編程、片上XADC訪問等。

              更重要的是,它通過共享跟蹤緩沖及PL和PS的交叉觸發接口,達到允許在使用DAP調試ARM上的軟件的同時,使用TAP調試PL硬件。

              dc2d6630-a6eb-11ee-8b88-92fbcf53809c.pngJTAG調試接口的關鍵特性:

              支持JTAG 1149.1邊界掃描;

              兩個符合1149.1標準的TAP控制器——JTAG TAP控制器和ARM DAP;

              每個Zynq-7000家族的設備都有唯一的IDCODE;

              支持IEEE 1532在線編程(ISE),如熔絲編程、BRAM編程和XADC訪問;

              板級Flash編程;支持Xilinx Chipscope調試;

              使用ARM DAP的ARM CoreSight調試控制中心;

              通過DAP-AP端口實現系統地址空間直接訪問;

              使用MIO或者EMIO的外部跟蹤接口。

              之前的文章都是基于Corte-A系列。

              調試安全

              最后這里再啰嗦一點關于安全的知識。

              聯合測試行動小組(JTAG)國際標準測試協議已被業界廣泛應用。JTAG接口的主要功能在于將固件下載到設備芯片,并在程序運行時對軟件執行過程進行分析監測,監測內容包括CPU中的寄存器和內存中存儲的值,以實現對芯片內部測試及系統仿真、調試。

              芯片廠商通常將JTAG接口作為片上系統的一部分。例如,ARM公司在其處理器芯片的CoreSight調試架構中集成了這一接口。

              JTAG的使用提高了移動終端固件開發的便利性。但由于JTAG接口通常是開放的,因此,攻擊者可以找到芯片上JTAG接口的引腳并接入工具,實現對移動終端的攻擊。

              例如,可以破壞或禁用系統組件,提取固件代碼或加/解密密鑰,也可以插入未經授權的功能函數,獲得攻擊系統的后門,傳輸攻擊程序及分析設備漏洞等。由于通過JTAG可以同時訪問內存和處理器的信息,因此,基于JTAG接口實施攻擊比通過其他接口進行攻擊更為直接。

              我們可以聯合采用基于電路特性隱匿與基于認證的安全防護方法抵御基于JTAG接口的攻擊。

              (1)基于電路特性隱匿的JTAG接口攻擊防護

              這種防護的核心技術思想是在芯片的硬件電路上進行必要的修改,使攻擊者難以從物理層面接入。

              例如,修改芯片上JTAG的默認輸入電壓,使得攻擊者難以使用有效的電壓激活JTAG接口;

              修改引腳映射,即修改芯片上面JTAG引腳的布局,使攻擊者難以辨認哪些管腳被用于JTAG;

              熔絲的辦法,即如果固件已經被下載到芯片中,則特殊熔絲會被熔斷,并以刪除輸入/輸出端口的方式來禁用JTAG端口,使得開發者無法再使用JTAG。

              (2)基于認證的JTAG接口攻擊防護

              這種防護方法通常需要外置電路芯片,以完成JTAG的認證邏輯。

              例如,設置安全級別的方式,在JTAG接口引腳外繼續外接一個微控制器,通過“驗證-挑戰”的方式對接入的JTAG器件的權限進行認證。

              通過接收固定的字符,微控制器將會驗證當前的JTAG端口連接請求是否符合身份。在通過驗證后,微控制器將把當前外部器件發送的調試指令轉發給實際芯片的JTAG端口。

              另外,也可以在使用JTAG接口之前,強制要求需要輸入密碼或者使用JTAG帶有密鑰進行身份認證。

              最后也可以設計專屬的門控認證。

              其實一直都是停留于使用者的角度來認識Coresight以及調試軟件與工具,期待站在設計者的角度來認識Coresight。







              審核編輯:劉清

              聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
              • ARM
                ARM
                +關注

                關注

                134

                文章

                8727

                瀏覽量

                363162
              • 嵌入式系統
                +關注

                關注

                40

                文章

                3451

                瀏覽量

                128482
              • JTAG
                +關注

                關注

                6

                文章

                385

                瀏覽量

                71247
              • ARM處理器
                +關注

                關注

                6

                文章

                351

                瀏覽量

                41397
              • 調試器
                +關注

                關注

                1

                文章

                294

                瀏覽量

                23469
              • Cortex-A
                +關注

                關注

                0

                文章

                19

                瀏覽量

                34215

              原文標題:Arm調試架構篇

              文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關注!文章轉載請注明出處。

              收藏 人收藏

                評論

                相關推薦

                ARM架構基礎知識

                ARM處理器使用精簡指令集(RISC),ARM(Advanced RISC Machines)ARM是一家公司的簡稱,其次ARM指一系列處理器的統稱,同時
                發表于 09-15 11:51 ?5155次閱讀

                ARM基礎知識

                ARM基礎知識
                發表于 01-25 02:23

                【轉】變壓器基礎知識_制作流程_詳解

                變壓器基礎知識_制作流程_詳解
                發表于 08-05 21:35

                ARM架構基礎知識小結

                從單片機轉到ARM —— ARM架構基礎知識小結從單片機轉到ARM,主要需要學習ARM
                發表于 05-12 17:06

                ARM架構基礎知識小結

                從單片機轉到ARM,主要需要學習ARM架構,ARM相比單片機多了一些外設和總線。在僅僅是裸奔的情況下,如果熟悉了ARM
                發表于 05-22 10:50

                ARM架構基礎知識小結

                從單片機轉到ARM ―― ARM架構基礎知識小結
                發表于 12-29 06:16

                【HarmonyOS基礎知識】HarmonyOS系統架構

                這個視頻帶大家揭秘HarmonyOS基礎知識之HarmonyOS系統架構,一起來看看?
                發表于 01-19 18:32

                ARM架構基礎知識點匯總

                之所以更復雜,當然是為了跑更快以及更好地支持片上系統,所以在某種程度上來說對片上系統不是很了解的話那對于ARM架構的理解也不會那么深。ARM架構基礎
                發表于 12-13 06:26

                電子元器件基礎知識詳解

                電子元器件基礎知識詳解
                發表于 10-08 20:13 ?368次下載

                arm內核基礎知識介紹

                arm內核基礎知識介紹,有需要的朋友下來看看。
                發表于 01-08 14:44 ?12次下載

                淺談ARM處理器基礎知識

                淺談ARM處理器基礎知識
                發表于 01-14 12:31 ?16次下載

                FreeRTOS基礎知識詳解pdf下載

                FreeRTOS基礎知識詳解
                發表于 03-29 14:36 ?45次下載

                機器視覺基礎知識詳解模板

                機器視覺基礎知識詳解模板下載。
                發表于 05-28 14:48 ?13次下載

                詳解射頻微波基礎知識

                詳解射頻微波基礎知識
                的頭像 發表于 01-29 10:28 ?1929次閱讀

                無功補償原理基礎知識詳解

                無功補償原理基礎知識詳解
                的頭像 發表于 08-11 09:48 ?596次閱讀
                無功補償原理<b class='flag-5'>基礎知識</b><b class='flag-5'>詳解</b>
                91在线探花成人网站