畢業(yè)設計--基于jtag的嵌入式故障注入平臺_第1頁
已閱讀1頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  畢業(yè)設計(論文)題目: </p><p>  基于JTAG的嵌入式故障注入平臺 </p><p><b>  摘 要</b></p><p>  嵌入式系統(tǒng)由于有著功耗低,高實時,可剪裁等眾多優(yōu)點,已經(jīng)被越

2、來越多的應用在工業(yè)控制、交通管理、武器控制、航天、航空等關鍵領域。在這些領域中,嵌入式設備所處的工作環(huán)境都比較極端,系統(tǒng)發(fā)生故障的概率遠比正常情況高出很多倍。運行于這些關鍵領域的嵌入式系統(tǒng)如果出現(xiàn)了故障,就可能會帶來巨大的損失。因此為了保證嵌入式系統(tǒng)中的容錯機制正常工作,需要一種方法能夠在嵌入式系統(tǒng)投入實際使用之前對其進行測試,模擬實際應用中可能出現(xiàn)的問題,評測其可靠性。</p><p>  本課題設計并實現(xiàn)了一

3、種基于JTAG的嵌入式系統(tǒng)故障注入和分析平臺,通過控制其JTAG時序,使目標系統(tǒng)進入到硬件調(diào)試模式中,讀寫CPU或內(nèi)存中目標節(jié)點的數(shù)據(jù),實現(xiàn)注入故障。在硬件調(diào)試模式中,目標系統(tǒng)之上的操作系統(tǒng)進入掛起狀態(tài),暫停運行。從硬件調(diào)試模式回到正常模式后,操作系統(tǒng)會從掛起前正在執(zhí)行的指令地址繼續(xù)向下執(zhí)行,而忽略硬件調(diào)試模式中CPU或內(nèi)存數(shù)據(jù)的變化,這樣就達到了繞過操作系統(tǒng)的數(shù)據(jù)保護限制,從而完成故障注入的目的。</p><p&g

4、t;  為了實現(xiàn)故障注入的靈活性和對在一個平臺上對多種體系結構進行故障注入,本課題使用FPGA芯片作為故障注入目標的運行平臺,目標體系結構以軟IP核的形式運行在FPGA芯片中,使用DSP芯片作為故障注入核心控制器,控制測試數(shù)據(jù)的格式轉(zhuǎn)換、輸入輸出,與上位機的通信和JTAG時序的控制。</p><p>  關鍵詞:嵌入式;系統(tǒng)可靠性;硬件調(diào)試;故障注入;JTAG</p><p><b&

5、gt;  Abstract</b></p><p>  Because of the adventures such as low power dissipation, high real-time, and scalable of embedded systems, embedded systems have been more and more applied in key areas such

6、as industrial control, traffic management, arms control, aerospace and aviation. In these areas, embedded systems are working in an extremely environment, which caused much higher system failure probability than normal.

7、Failure of the embedded systems in these key areas will cause great loss. Therefore, in order to ensure fa</p><p>  This paper designs and implements a hardware fault injection and analysis platform based on

8、 JTAG aimed at embedded systems. Firstly, make the target system enter the hardware debugging mode by controlling its JTAG time series. And secondly, read or write the data in the CPU or memory of the target system. When

9、 coming back to normal mode, the operating system will continue to do its work from the point where it entered hardware debugging mode, ignoring the data change in the CPU and memory. In th</p><p>  For the

10、sake of the flexibility of the platform which means suitable for varies of target systems, this paper use FPGA chip as target system running environment, and the target system runs as a soft IP core in FPGA. This paper a

11、lso use a DSP chip as fault injector to do data format transfer, I/O, communication and JTAG controls.</p><p>  Keywords: embedded system, system dependability, hardware debugging, fault injection, JTAG</

12、p><p><b>  目 錄</b></p><p><b>  摘 要I</b></p><p>  AbstractII</p><p><b>  第1章 緒論1</b></p><p><b>  1.1課題背景1</

13、b></p><p>  1.2涉及到的技術2</p><p>  1.2.1容錯技術2</p><p>  1.2.2系統(tǒng)可靠性4</p><p>  1.2.3故障注入技術6</p><p>  1.3硬件調(diào)試技術8</p><p>  1.3.1 ICE調(diào)試技術8<

14、/p><p>  1.3.2 JTAG調(diào)試技術9</p><p>  1.4 FPGA技術及SOPC技術11</p><p>  1.5國內(nèi)外研究現(xiàn)狀12</p><p>  1.6課題的主要內(nèi)容和論文結構12</p><p>  第2章 故障注入工具整體方案14</p><p>  2

15、.1 JTAG規(guī)范14</p><p>  2.2 LEON3架構18</p><p>  2.2.1 簡介18</p><p>  2.2.2 LEON3特點19</p><p>  2.2.3 LEON3的容錯機制20</p><p>  2.2.4 LEON3的調(diào)試架構22</p>&l

16、t;p>  2.3 故障注入整體方案24</p><p>  第3章 故障注入工具具體設計實現(xiàn)27</p><p>  3.1 故障注入工具硬件電路設計27</p><p>  3.2 硬件故障注入器30</p><p>  3.2.1 硬件電路和USB固件設計30</p><p>  3.2.2 協(xié)

17、議轉(zhuǎn)換邏輯設計32</p><p>  3.2.3 故障注入指令設計36</p><p>  3.3 上位機控制軟件40</p><p>  3.3.1 硬件控制子模塊40</p><p>  3.3.2 USB通信子模塊42</p><p>  3.3.3 JTAG設備檢查子模塊43</p>

18、<p>  3.3.4 故障指令生成子模塊44</p><p>  第4章 實驗及結果分析46</p><p>  4.1 協(xié)議轉(zhuǎn)換邏輯仿真46</p><p>  4.2 故障注入實驗50</p><p>  第5章 總結與展望53</p><p><b>  致 謝54<

19、;/b></p><p><b>  參考文獻55</b></p><p><b>  第1章 緒論</b></p><p><b>  1.1課題背景</b></p><p>  嵌入式系統(tǒng)由于有著功耗低,高實時,可剪裁等眾多優(yōu)點,已經(jīng)被越來越多的應用在工業(yè)控制、交

20、通管理、武器控制、航天、航空等關鍵領域中,嵌入式系統(tǒng)的安全性和可靠性成為一個系統(tǒng)必須關心和解決的問題。在這些領域中,嵌入式設備所處的工作環(huán)境都比較極端,溫度、濕度、酸度、輻射、震動等都遠遠超過正常情況,系統(tǒng)發(fā)生故障的概率比起在正常環(huán)境下工作的嵌入式系統(tǒng)高出很多倍。運行于這些關鍵領域的嵌入式系統(tǒng)如果出現(xiàn)了故障,就可能會導致巨大的經(jīng)濟損失和時間損失。為了解決這個問題,近年來可靠性嵌入式系統(tǒng)和容錯機制領域的研究越來越多,為了保證嵌入式系統(tǒng)中的

21、容錯機制正常工作,需要一種方法能夠在嵌入式系統(tǒng)投入實際使用之前對其進行測試,模擬實際應用中可能出現(xiàn)的問題,評測其可靠性。</p><p>  評測可靠性的一種最顯而易見的方法就是使待評測的系統(tǒng)長時間運行,達到足夠長的時間,在運行過程中觀察并統(tǒng)計系統(tǒng)出現(xiàn)的錯誤和故障信息,對錯誤故障信息進行分析,得到系統(tǒng)的可靠性信息。但是這種方法在實際中很難操作,尤其是要評測一個高可靠系統(tǒng)的可靠性的時候,所以目前常用的可靠性評測方法

22、是通過人為主動地對目標系統(tǒng)進行故障注入,觀測目標系統(tǒng)對于故障的反應,分析并評測目標系統(tǒng)的可靠性。</p><p>  按照注入故障的層次進行分類,故障注入技術主要可以分為硬件故障注入和軟件故障注入兩種。軟件故障注入實現(xiàn)難度小,成本低,容易構建故障模型。但是由于現(xiàn)代操作系統(tǒng)都包含有保護機制,用來防止運行過程中CPU或者內(nèi)存中的數(shù)據(jù)被惡意修改,軟件故障注入方法無法在目標系統(tǒng)底層進行故障注入,這就導致軟件故障注入方法注

23、入故障的覆蓋率無法令人滿意。</p><p>  所以本課題使用硬件故障注入技術來進行故障注入。傳統(tǒng)的硬件故障注入有管腳級故障注入、重離子故障注入和電磁干涉故障注入等方法[1],但隨著芯片制造技術的提高,芯片制程越來越小,集成度越來越高,封裝密度越來越大,出現(xiàn)了大規(guī)模集成電路和超大規(guī)模集成電路,傳統(tǒng)的硬件故障注入方法很難訪問和修改目標數(shù)據(jù)。所以業(yè)界定義了JTAG協(xié)議,可以在沒有物理接觸的條件下訪問到芯片內(nèi)部的數(shù)據(jù)

24、。</p><p>  本課題設計并實現(xiàn)了一種基于JTAG的嵌入式系統(tǒng)故障注入和分析平臺,通過控制其JTAG時序,使目標系統(tǒng)進入到硬件調(diào)試模式中,讀寫CPU或內(nèi)存中目標節(jié)點的數(shù)據(jù),實現(xiàn)注入故障。在硬件調(diào)試模式中,目標系統(tǒng)之上的操作系統(tǒng)進入掛起狀態(tài),暫停運行。從硬件調(diào)試模式回到正常模式后,操作系統(tǒng)會從掛起前正在執(zhí)行的指令地址繼續(xù)向下執(zhí)行,而忽略硬件調(diào)試模式中CPU或內(nèi)存數(shù)據(jù)的變化,這樣就達到了繞過操作系統(tǒng)的數(shù)據(jù)保護

25、限制,從而完成故障注入的目的。</p><p>  為了實現(xiàn)故障注入的靈活性和對在一個平臺上對多種體系結構進行故障注入,本課題使用FPGA芯片作為故障注入目標的運行平臺,目標體系結構以軟IP核的形式運行在FPGA芯片中,使用DSP芯片作為故障注入核心控制器,控制測試數(shù)據(jù)的格式轉(zhuǎn)換、輸入輸出,與上位機的通信和JTAG時序的控制。</p><p><b>  1.2涉及到的技術<

26、;/b></p><p><b>  1.2.1容錯技術</b></p><p>  從第一臺電子計算機ENIAC問世之后,運行過程中由信號干擾和噪聲等引起的不可控制的錯誤就一直困擾著研究人員,從那時起研究人員就開始了對容錯技術的研究。1951年,第一臺商用計算機 UNIVAC誕生,這臺計算機標志著計算機進入商用時代。商用計算機對可靠性要求較高,所以這臺計算機采

27、用了奇偶校驗、雙重運算線路相互校驗等多種容錯技術,顯著的提高了系統(tǒng)的可靠性[2]。在這之后,計算機技術發(fā)展迅速,計算機體積和功耗越來越小,逐漸走向了家用和日常工作使用。在家用和日常工作使用的領域中,加入容錯技術帶來的成本增加和性能損失已經(jīng)遠遠超過了偶爾出現(xiàn)的錯誤帶來的損失,所以家用計算機領域基本沒有關注和使用容錯技術,只有軍事、航空、航天等對系統(tǒng)可靠性要求苛刻的領域才關注容錯技術并進行了研究。</p><p> 

28、 隨著大規(guī)模集成電路、超大規(guī)模集成電路和計算機技術的進步,計算機系統(tǒng)不再僅僅局限于高端商用領域和低端家用領域,而是進一步擴展到了工業(yè)控制、交通控制、通信、醫(yī)療、公共安全等與人們生活息息相關的領域。這些領域中的計算機系統(tǒng)如果發(fā)生了故障,不僅會對給人們的正常工作和生活造成不便,擾亂人們的正常生活秩序,更嚴重的還可能會帶來巨大的經(jīng)濟損失、時間損失,甚至會威脅到人們的生命財產(chǎn)安全,擾亂社會秩序。因此計算機的可靠性受到人們越來越多的關注。<

29、/p><p>  提高計算機系統(tǒng)可靠性的方法主要有兩種:避錯技術和容錯技術[3]。</p><p>  避錯技術[3]顧名思義主要是在錯誤發(fā)生之前就盡量避免錯誤的發(fā)生。避錯技術的實現(xiàn)方法主要有兩種:</p><p>  第一種是優(yōu)化系統(tǒng)設計,在軟硬件系統(tǒng)的設計階段對設計進行充分驗證,對于軟件系統(tǒng)進行充分的高覆蓋率的測試,對于硬件系統(tǒng)進行充分的仿真和模擬,確保系統(tǒng)按照設計

30、工作。改進元器件的生產(chǎn)工藝和生產(chǎn)流程,嚴格控制元器件的生產(chǎn)質(zhì)量,提高合格標準,降低計算機系統(tǒng)每一個部分的錯誤性,進而使整體系統(tǒng)的錯誤率維持在一個較低的水平。但是這種方法有很大的局限性,元器件生產(chǎn)工藝和生產(chǎn)流程的改進是一個緩慢量變的過程,很難在短期內(nèi)得到巨大的提升,而且也不可能無限的改進,元器件的質(zhì)量提升也無法完全將錯誤去除,只能盡量減少。此外,高規(guī)格的生產(chǎn)工藝會帶來很高的生產(chǎn)成本和勞動成本,在工藝提升到一定水平之后尤為明顯,每提升一點可

31、靠性都要付出高昂的代價。元器件的老化也會增加元器件出錯的概率。</p><p>  第二種是增加屏蔽,通過在系統(tǒng)的每一模塊之間和外殼上覆蓋一定厚度的抗輻射材料,減少模塊間干擾造成的數(shù)據(jù)突變和外界輻射造成的數(shù)據(jù)污染。屏蔽的方法在輻射嚴重的航空領域應用較多,而且得到了很好的效果。</p><p>  容錯技術[3]的方法是允許計算機系統(tǒng)運行時出現(xiàn)錯誤,當出現(xiàn)錯誤的時候要通過容錯技術及時檢查出錯

32、誤并采取相應措施處理錯誤,使錯誤無法轉(zhuǎn)化為故障,計算機系統(tǒng)繼續(xù)正常運行。與避錯技術相比,容錯技術對元器件質(zhì)量要求更低,而且能夠更全面得處理隨機出現(xiàn)的錯誤,而不只是簡單地被動地預防錯誤發(fā)生。目前最常見的容錯機制是硬件冗余機制,就是通過添加一些正常工作需要之外的冗余硬件來檢查和修正錯誤。由于出錯是隨機的,而且是偶然的,所以參照“少數(shù)服從多數(shù)”的思想,提出了一種三模冗余設計。三模冗余設計是硬件冗余中的一種常用方法,每一個模塊都有三個完全相同的

33、冗余模塊同時執(zhí)行相同的運算,把三個模塊的運行結果中取多數(shù)相同的結果作為表決出的正確結果輸出[4]。三模冗余設計的示意圖如圖1-1所示。</p><p>  圖1-1 三模冗余設計示意圖[4]</p><p>  冗余機制的缺點是會使模塊的執(zhí)行速度降低(有的甚至低到原來的80%),占用資源和功耗增加(大約為原來的3.2倍)[5]。</p><p>  1.2.2系統(tǒng)

34、可靠性</p><p>  系統(tǒng)可靠性是指在規(guī)定環(huán)境和規(guī)定時間內(nèi),一個系統(tǒng)正常運行的可能性[6]。系統(tǒng)可靠性由硬件可靠性和軟件可靠性兩部分組成。軟件可靠性的影響因素主要來自于程序的漏洞,隨著軟件工程和軟件測試技術的發(fā)展,雖然完全解決程序漏洞是不可能的,但是能夠在測試期間就解決絕大多數(shù)漏洞,而且在使用過程中能夠通過更新來提高軟件可靠性。硬件可靠性的主要影響因素是硬件設計錯誤和自然環(huán)境干擾。目前硬件測試手段還遠不如軟

35、件測試手段完善,所以設計階段有些設計錯誤或者不合理設計很難被發(fā)現(xiàn),一旦硬件投入使用之后很難隨時進行更新。自然環(huán)境對硬件系統(tǒng)的干擾也不能忽視,尤其是在高溫、高濕度、高輻射的環(huán)境里硬件系統(tǒng)出錯的概率會明顯增加。</p><p>  對目標系統(tǒng)進行可靠度評測的方法主要有解析模型法、測量分析法和故障注入法三種[7]。</p><p>  解析模型法面向的對象是目標系統(tǒng)的設計,在投入使用之前對系統(tǒng)進

36、行可靠性評測。解析模型法使用馬爾科夫預測模型等模型來描述目標系統(tǒng)的設計,并求解模型得到系統(tǒng)可靠性信息。解析模型法假設系統(tǒng)出現(xiàn)故障的時間服從離散分布、均勻分布等概率分布,用工作狀態(tài)代表系統(tǒng)正確地運行,用失效狀態(tài)代表系統(tǒng)出現(xiàn)故障無法正常運行,用參數(shù)來表示目標系統(tǒng)從失效狀態(tài)回到工作狀態(tài)的概率和所用時間,最后進行求解。解析模型法的優(yōu)點在于在設計階段就可以對系統(tǒng)進行評測而不需要將目標系統(tǒng)制作出來,這大大節(jié)省了時間和成本。解析模型法的缺點是,為了便

37、于求解,構建模型的時候要對系統(tǒng)參數(shù)做很多簡化,同時故障發(fā)生的時間也不一定符合概率模型,加上求解模型過程中的誤差,導致解析模型法求解得到的系統(tǒng)可靠性與真實可靠性相差甚遠。</p><p>  測量分析法面向的對象是已經(jīng)生產(chǎn)出來的目標系統(tǒng)。測量分析法要求目標系統(tǒng)不間斷的長時間運行,觀察和統(tǒng)計目標系統(tǒng)的運行及故障情況,進而分析得到目標系統(tǒng)的可靠性信息。測量分析法的優(yōu)點在于,測量分析法的實驗結果是基于目標系統(tǒng)的實際運行和

38、檢測,所以評測得出的可靠性信息最準確,并且通過檢測可以為系統(tǒng)改進時應用解析模型法提供故障模型信息和故障發(fā)生時間的概率分布信息。測量分析法的缺點是:第一,加入了容錯技術的可靠計算機系統(tǒng)出現(xiàn)故障的概率非常低,這就使得觀測變得很困難,通常需要目標系統(tǒng)連續(xù)運行幾個月甚至幾年才能采集到足夠用于分析系統(tǒng)可靠性的信息,無法滿足快速發(fā)展的計算機系統(tǒng)的需求;第二,目標系統(tǒng)測試時的運行環(huán)境無法做到和實際應用環(huán)境相同,一些在極端應用環(huán)境里會出現(xiàn)的故障不會在測

39、試時發(fā)生,所以無法保證較高的故障覆蓋率。</p><p>  故障注入方法與測量分析法一樣面向的也是已經(jīng)生產(chǎn)出來的目標系統(tǒng),但是故障注入法人為地主動向目標系統(tǒng)注入故障,觀察目標系統(tǒng)對故障的反應和恢復能力,進而分析得出目標系統(tǒng)的可靠性信息,解決了測量分析法需要目標系統(tǒng)長時間運行來采集故障數(shù)據(jù)的缺點。故障注入法的優(yōu)點是評測速度快,實施簡單方便,故障覆蓋率高。故障注入法是當前評測計算機系統(tǒng)可靠性最常用的方法。</

40、p><p>  1.2.3故障注入技術</p><p>  故障注入技術最開始誕生于工業(yè)界,用于對工業(yè)用容錯計算機系統(tǒng)進行可靠性驗證。之后故障注入技術受到研究人員和高校的重視,用于驗證容錯機制,現(xiàn)在故障注入技術受到越來越廣的研究和關注。</p><p>  故障注入技術通過人為主動地向目標系統(tǒng)注入故障,觀察目標系統(tǒng)對故障的反應和恢復能力,進而分許得到系統(tǒng)可靠性信息。故障

41、注入法解決了測量分析法需要目標系統(tǒng)長時間運行來采集故障數(shù)據(jù)的缺點,而且通過構建故障樹模型,故障注入法能夠達到比測量分析法更高的故障覆蓋率。由于這些優(yōu)點,故障注入法已成為目前可靠性評測最常用的方法。</p><p>  1.2.3.1 故障注入技術分類</p><p>  目前隨著對故障注入技術的研究,出現(xiàn)了越來越多應用于可靠性評測的故障注入方法。這些故障注入方法可以通過故障注入實現(xiàn)手段、

42、故障注入對象(對象所處的階段)、注入故障類型、注入故障所在級別(底層還是上層)等進行分類[8]。</p><p>  按照故障注入的對象是設計階段仿真的目標系統(tǒng)還是已經(jīng)生產(chǎn)出來的真是目標系統(tǒng),可以將故障注入分為模擬故障注入和物理故障注入。模擬故障注入法針對的是設計階段的目標系統(tǒng),經(jīng)常和1.2.2中的解析模型法配合,對目標系統(tǒng)進行門級、RTL級、功能級抽象建模,對建立出來的系統(tǒng)抽象模型進行故障注入[8]。物理故障注

43、入法針對的是已經(jīng)生產(chǎn)出來的真實目標系統(tǒng),包括軟件故障注入和硬件故障注入兩種。</p><p>  軟件故障注入的原理是通過執(zhí)行特定的指令序列來更改CPU、內(nèi)存等在運行過程中的數(shù)據(jù)來注入故障。硬件故障注入的原理是通過額外的硬件系統(tǒng)對目標系統(tǒng)的產(chǎn)生影響,讀取或修改目標系統(tǒng)內(nèi)部的數(shù)據(jù)來注入故障[9]。硬件故障注入法的優(yōu)點是理論上能夠訪問任何想要訪問的位置,而不用專門對目標系統(tǒng)進行修改,不影響目標系統(tǒng)的正常工作流程。&l

44、t;/p><p>  按照附加的故障注入硬件系統(tǒng)和目標系統(tǒng)是否有接觸,硬件故障注入法可以分為非接觸式注入和接觸式注入,非接觸式注入通過輻射、激光、電磁干擾等手段來改寫目標系統(tǒng)內(nèi)部的數(shù)據(jù),主要包括電源干擾法、激光注入法和輻射引導法三種[10];接觸式注入通過與目標系統(tǒng)的物理連接直接更改目標節(jié)點的數(shù)據(jù),包括管腳級注入和基于JTAG的嵌入式故障注入。圖1-是完整的故障注入技術分類樹。</p><p>

45、;  圖1-2 故障注入技術分類樹</p><p>  1.2.3.2 硬件故障注入器模型</p><p>  硬件故障注入工具的基本結構如圖1-3所示,包括上位機控制軟件、故障注入器、行為監(jiān)視器、數(shù)據(jù)收集器和數(shù)據(jù)分析器[8]。</p><p>  上位機控制軟件的作用是控制整個故障注入的流程,從故障數(shù)據(jù)庫里提取準備注入的故障,構建并編碼故障樹,控制故障注入器向

46、目標系統(tǒng)注入故障、從數(shù)據(jù)分析器讀回分析結果并顯示。故障注入器是一個獨立于目標系統(tǒng)的硬件工具,作用是上位機控制軟件和目標系統(tǒng)之間的橋梁,與上位機控制軟件通信獲得故障向量,進行協(xié)議轉(zhuǎn)換,向目標系統(tǒng)進行實際的故障注入過程。行為監(jiān)視器和數(shù)據(jù)收集器的作用是觀察并記錄目標系統(tǒng)在故障注入器注入故障之后的運行狀況和異常情況。數(shù)據(jù)分析器的作用是分析行為監(jiān)視器和數(shù)據(jù)收集器收集到的目標系統(tǒng)的運行狀況參數(shù),得到目標系統(tǒng)的可靠性信息。</p>&l

47、t;p>  圖1-3 硬件故障注入器基本結構</p><p><b>  1.3硬件調(diào)試技術</b></p><p>  1.3.1 ICE調(diào)試技術</p><p>  為了解決集成電路復雜度越來越高,封裝密度越來越大帶來的調(diào)試難題,研究人員提出了在線仿真技術(ICE)。</p><p>  ICE的工作原理是使

48、用一個專門的硬件設備來模擬要調(diào)試的芯片,給目標程序提供一個和待調(diào)試系統(tǒng)一樣的模擬的運行環(huán)境,這個設備可以取代待調(diào)試芯片的作用,與系統(tǒng)里其他電路協(xié)同工作,并且可以提供斷電調(diào)試、監(jiān)視數(shù)據(jù)等功能。這個模擬待調(diào)試芯片的設備叫做在線仿真器,和待調(diào)試的目標系統(tǒng)(下位機)、進行調(diào)試的PC(上位機)共同組成了ICE調(diào)試架構。</p><p>  仿真器針對每一個待調(diào)試的芯片都要單獨設計,其內(nèi)部集成了用于調(diào)試的單步執(zhí)行、斷點、數(shù)據(jù)

49、監(jiān)視等功能,仿真器通過專用接口連接到待調(diào)試目標系統(tǒng)中,通過電纜連接到調(diào)試上位機[11]。圖1-4是一個典型的ICE 調(diào)試架構。</p><p>  ICE調(diào)試技術的主要缺點是不同型號、不同封裝的芯片都要使用不同的仿真器,這就導致了ICE調(diào)試技術缺乏通用性,一塊芯片生產(chǎn)出來之后通常要等很久才會出現(xiàn)這款芯片的仿真器,難以滿足市場的需求,這大大限制了仿真器的使用。</p><p>  圖1-4

50、 典型ICE調(diào)試結構</p><p>  1.3.2 JTAG調(diào)試技術</p><p>  為了解決ICE技術在內(nèi)的硬件調(diào)試技術面臨的困難,JTAG(Joint Test Action Group)成立了,目的是尋找一種新的方便的通用硬件調(diào)試技術來解決系統(tǒng)級和板級電路的測試問題。1990年IEEE批準了JTAG提出的調(diào)試架構,將其命名為Test Access Port and Bo

51、undary Scan Architecture,編號IEEE 1149.1-1990。</p><p>  JTAG的工作原理是在硬件電路設計時就將遵循JTAG協(xié)議的測試點和測試電路集成到硬件內(nèi)部,外界可以直接訪問到這些測試電路進行調(diào)試。</p><p>  JTAG 技術通過邊界掃描寄存器單元(Boundary Scan Cell , BSC)對芯片內(nèi)部的測試點進行讀寫[12]。當芯片

52、正常工作的時候,邊界掃描寄存器單元對芯片來說是透明的,不參與芯片的運行過程。當芯片處于調(diào)試狀態(tài)的時候,外界可以用過控制測試訪問接口(Test Access Point , TAP)控制器暫停芯片的運行,隔斷芯片的輸入輸出,通過TDI端口輸入測試數(shù)據(jù),控制邊界掃描寄存器單元通過移位操作將測試數(shù)據(jù)傳入芯片寄存器或輸入管腳,將輸出管腳的信號傳輸?shù)絋DO端口[13]。圖1-5展示了邊界掃描寄存器單元的結構。</p><p&g

53、t;  圖1-5 邊界掃描寄存器單元結構</p><p>  邊界掃描寄存器單元包圍在芯片周圍,以“菊花鏈”的形式相互連接起來形成邊界掃描測試鏈。一個芯片一般會提供幾個邊界掃描測試鏈,有的測試鏈負責測試總線,有的負責測試內(nèi)存,有的負責測試芯片管腳等等。邊界掃描單元可以通過時鐘信號Clk和測試訪問接口TAP控制器進行控制,順序的進行移位操作,將測試數(shù)據(jù)移位進芯片的輸入管腳,將芯片的輸出管腳信號移位出來。這樣就構建

54、起了一個完整的可以調(diào)試任意位置的數(shù)據(jù)通路,有TAP控制器來控制[14]。</p><p>  JTAG調(diào)試架構一般包含三個組成部分:集成有JTAG協(xié)議的待調(diào)試目標系統(tǒng)也叫下位機、用于調(diào)試的PC也叫上位機和協(xié)議轉(zhuǎn)換器[15],如圖 1-6所示。協(xié)議轉(zhuǎn)換器的作用是連接上位機和下位機,接收來自上位機的控制信號和測試數(shù)據(jù),將測試數(shù)據(jù)按照JTAG協(xié)議重新封裝,通過控制下位機的TAP端口對下位機進行調(diào)試。</p>

55、<p>  圖1-6 典型JTAG調(diào)試結構</p><p>  1.4 FPGA技術及SOPC技術</p><p>  FPFA全稱是現(xiàn)場可編程門陣列,屬于可編程邏輯器件的一種,在上世紀90年代獲得突飛猛進的發(fā)展,經(jīng)過這些年的發(fā)展,F(xiàn)PGA已經(jīng)成為嵌入式系統(tǒng)中很重要的一員[16]。FPGA是PAL(Programmable Array Logic,PAL)、GAL(Gene

56、ric Array Logic,GAL)、EPLD(Erasable Programmable Logic Device)、CPLD(Complex Programmable Logic Device)等可編程器件進一步發(fā)展的產(chǎn)物。FPGA與傳統(tǒng)ASIC相比,解決了傳統(tǒng)ASIC電路一旦設計完成就不能修改的缺點,隨時可以通過編程設計新電路,而且超大規(guī)模地SRAM電路也解決了傳統(tǒng)可編程邏輯器件門電路數(shù)量少的缺點。</p>&l

57、t;p>  SOPC全稱是可編程的片上系統(tǒng),以FPGA為基礎。SOPC技術的目的是將一個完整的系統(tǒng)包括嵌入式處理芯片、存儲系統(tǒng)、內(nèi)存等都實現(xiàn)在一個FPGA芯片里,使用IP核的技術復用電路設計,能夠大大簡化電路設計。SOPC因為其靈活、高效、可重用等特點廣泛應用于嵌入式領域中。</p><p>  1.5國內(nèi)外研究現(xiàn)狀</p><p>  在故障注入技術和工具的研究上,國外要領先于國內(nèi)

58、。</p><p>  國外目前成功研制了硬件故障注入器Messaline[17]、Fist[18]、Mars[19]等,和軟件故障注入器Fiat[20]、Ferrari[21]、Define[22]、Doctor[23]、Xception[24]等。FIAT能針對目標系統(tǒng)的內(nèi)存進行故障注入,破壞系統(tǒng)的內(nèi)存映像[20][25]。Doctor能夠針對分布式實時系統(tǒng)的處理器、內(nèi)存等進行故障注入[23][25]。Fer

59、rari使用UNIX的系統(tǒng)函數(shù)Ptrace在運行期間修改程序的內(nèi)存區(qū)域,讀寫內(nèi)存數(shù)據(jù)并且正在指令流程中插入指令[21][25]。Xception在目標處理器內(nèi)部直接編程調(diào)試硬件,并帶有許多故障觸發(fā)器來激活故障,在處理器內(nèi)部執(zhí)行檢測硬件來記錄目標系統(tǒng)故障注入后的詳細行為信息[24][25]。Jean Arlat,Yves Crouzet等對軟件故障注入和物理故障注入技術進行了比較[26]。Haissam Ziade, Rafic Ayou

60、bi等人對故障注入的工具做了總結[27]。</p><p>  在基于JTAG的故障注入領域,Hung-chi Lihn等提出了一種可多次使用的、低成本的、可靈活配置的 JTAG 體系結構[28]。Bradford G. Van Treuren等對于系統(tǒng)級的JTAG 邊界掃描調(diào)試提出了一些新的方法,用于數(shù)據(jù)及指令測試[29]。Bradford G.Van Treuren, Chen-Huan Chiang等使用邊

61、界掃描技術對海量存儲系統(tǒng)進行了測試[30]。Leon van de Log, Frank van der Heyden等提出了一種在線高速調(diào)試的 JTAG 體系擴展[31]。</p><p>  國內(nèi)在這個領域的研究起步較晚,主要有哈工大,中科院計算所、國防科技大學等研究機構對此進行了研究。目前哈工大已經(jīng)成功研制了 FIT -1[32]、HFI_2[33]、HFI_4[34]、HFI_1533B[35]等一系列故

62、障注入工具。哈工大的錢軍等提出了基于JTAG技術實現(xiàn)故障注入的思想[36]。陳招偉等針對ARM等一系列嵌入式CPU研究了調(diào)試工具[37]。</p><p>  1.6課題的主要內(nèi)容和論文結構</p><p>  本文設計并實現(xiàn)了基于JTAG的面向嵌入式系統(tǒng)的硬件故障注入器,并利用該工具針對LEON3處理器進行了故障注入實驗。主要研究內(nèi)容有:</p><p>  故障

63、注入整體方案設計;</p><p>  設計和實現(xiàn)硬件故障注入器,包括硬件電路設計、PCB設計、實現(xiàn)JTAG邏輯轉(zhuǎn)換和數(shù)據(jù)封裝、仿真驗證JTAG時序、定義故障注入指令等;</p><p>  設計與實現(xiàn)上位機控制軟件,包括界面設計、故障向量的設置與生成、與故障注入器之間的USB通信等;</p><p>  將LEON3處理器移植到實驗使用的FPGA芯片中并向其中注入

64、故障。</p><p><b>  本文共包含5章:</b></p><p>  第一章介紹了本課題的研究背景,并介紹了該領域容錯技術、可靠性、故障注入方法、硬件調(diào)試技術、FPGA等。</p><p>  第二章詳細研究了JTAG硬件調(diào)試協(xié)議的內(nèi)容和LEON3處理器的特點、容錯技術和調(diào)試架構,并在此設計了故障注入工具的整體結構。</p&g

65、t;<p>  第三章詳細說明了故障注入工具的具體設計與實現(xiàn)。</p><p>  第四章使用本課題設計的故障注入工作對LEON3處理進行了故障注入實驗,并對實驗結果進行了分析。</p><p>  第五章總結了本課題的工作并展望了本課題后續(xù)的改進工作。</p><p>  第2章 故障注入工具整體方案</p><p>  2

66、.1 JTAG規(guī)范</p><p>  IEEE1149.1-1900邊界掃描規(guī)范[38]中定義的JTAG邊界掃描架構如圖2-1所示,主要由四個主要部分組成:</p><p>  圖2-1 JTAG邊界掃描架構</p><p><b>  測試訪問端口</b></p><p>  測試訪問端口全稱是Test Acces

67、s Point,簡稱TAP 端口,TAP端口的作用是為邊界掃描測試鏈提供時鐘信號TCK,控制信號TMS,復位信號TRST,輸入數(shù)據(jù)TDI,并讀取輸出數(shù)據(jù)TDO,五個信號的作用分別是:</p><p>  TCK:全稱是Test Clock Input,測試時鐘輸入信號,IEEE1149.1-1900 規(guī)范中規(guī)定TCK為必選的輸入信號,為TAP控制器提供獨立的時鐘時序,TAP所有操作都要有這個TCK信號來驅(qū)動。&l

68、t;/p><p>  TMS:全稱是Test Mode Selection Input,測試模式選擇信號,TAP控制器16-狀態(tài)機的狀態(tài)轉(zhuǎn)換受TMS信號的控制,比如由運行狀態(tài)轉(zhuǎn)換為調(diào)試狀態(tài),TMS信號由TCK信號的上升沿驅(qū)動,是IEEE1149.1-1900規(guī)范中要求必選的輸入信號。</p><p>  TDI:全稱是Test Data Input,測試數(shù)據(jù)輸入信號,作用是為邊界掃描測試鏈提供

69、測試輸入數(shù)據(jù)。TDI信號連接到邊界掃描測試鏈的輸入端,由TAP控制器控制,選擇連接到哪一條邊界掃描測試鏈,通過移位的方法將測試數(shù)據(jù)移位進邊界測試掃描單元。TDI信號由TCK信號的上升沿驅(qū)動,是IEEE1149.1-1900規(guī)范中要求必選的輸入信號。</p><p>  TDO:全稱是Test Data OutPut,測試數(shù)據(jù)輸出信號,作用是獲取邊界掃描測試鏈的輸出。TDO信號連接到邊界掃描測試鏈的輸出端,由TAP

70、控制器控制,選擇連接到哪一條邊界掃描測試鏈,通過移位的方法將邊界掃描測試鏈的輸出數(shù)據(jù)移位到TDO信號。TDO信號由TCK信號的下降沿驅(qū)動,是IEEE1149.1-1900規(guī)范中要求必選的輸出信號。</p><p>  TRST:全稱是Test Reset Input,測試復位輸入信號。TRST信號的作用是使TAP控制器回復復位到初始狀態(tài),當TRST電平為低電壓時該信號有效。IEEE1149.1-1900規(guī)范中要求

71、TRST信號為可選的輸入信號。如果TAP端口沒有接入TRST信號,可以通過連續(xù)提供五個TCK信號上升沿來實現(xiàn)TAP控制器的復位。</p><p><b>  測試訪問接口控制器</b></p><p>  測試訪問接口控制器,簡稱TAP控制器。TAP控制器是一個包含了16個狀態(tài)的有限狀態(tài)自動機,通過這16個狀態(tài)的轉(zhuǎn)換,TAP控制器能夠?qū)崿F(xiàn)解析JTAG控制指令,完成整個

72、數(shù)據(jù)流程。TAP控制器由TCK信號提供時鐘時序,接受TMS信號的控制進行狀態(tài)轉(zhuǎn)換,控制TDI輸入端口和TDO輸出端口之間接入哪一條邊界掃描測試鏈,通過TDI輸入端口向邊界掃描測試鏈提供測試數(shù)據(jù),通過TDO端口獲取邊界掃描測試鏈的輸出數(shù)據(jù)。TAP控制器的所有狀態(tài)轉(zhuǎn)換圖如圖2-2所示,其中六邊形代表16個狀態(tài),狀態(tài)之間的箭頭表示狀態(tài)之間的轉(zhuǎn)換條件:</p><p>  圖2-2 TAP控制器狀態(tài)轉(zhuǎn)換圖</p&

73、gt;<p>  TAP控制器所有狀態(tài)所代表的意義如下:</p><p>  Test-Logic Reset:測試邏輯復位狀態(tài),這個狀態(tài)是TAP控制器的初始狀態(tài),在這個狀態(tài)下邊界掃描架構停止工作,邊界掃描測試單元處于透明狀態(tài),待測芯片正常工作。系統(tǒng)開始通電工作時,TAP控制器處于這個狀態(tài),在工作中可以通過將TRST信號置為低電平或者在TCK信號中連續(xù)提供五個上升沿使TAP控制器回到該狀態(tài)。<

74、/p><p>  Run-Test/Idle:運行測試/空閑狀態(tài),這個狀態(tài)是一個在不同操作之間停留的一個中間狀態(tài),當TMS信號變?yōu)榈碗娖綍r,TAP控制器進入這個狀態(tài)等待TMS信號上升沿的來臨。在這個狀態(tài)下芯片停止運行,有些芯片會在這個狀態(tài)下會單步執(zhí)行一條指令流中指令。</p><p>  Select-DR-Scan:數(shù)據(jù)寄存器選擇狀態(tài)。當TAP控制器迎來TMS信號的第一個上升沿之后即進入這個

75、狀態(tài),進入該狀態(tài)之前應用執(zhí)行一條JTAG指令選定一個數(shù)據(jù)寄存器,該狀態(tài)會將該寄存器作為當前操作的對象。</p><p>  Capture-DR:數(shù)據(jù)捕獲狀態(tài),選定數(shù)據(jù)寄存器之后,TMS的下降沿會使TAP控制器進入數(shù)據(jù)捕獲狀態(tài),進入該狀態(tài)后,如果迎來TCK信號的上升沿,TAP控制器會將芯片的輸出信號通過移位的方法“捕獲”到對應的數(shù)據(jù)寄存器中。</p><p>  Shift-DR:數(shù)據(jù)移位

76、狀態(tài)。數(shù)據(jù)捕獲狀態(tài)完成之后,TMS信號應該保持低電平,TAP控制器進入數(shù)據(jù)移位狀態(tài),在TCK信號的驅(qū)動下,TAP控制器通過移位操作將TDI輸入信號的數(shù)據(jù)移位到選定的數(shù)據(jù)寄存器中,將數(shù)據(jù)捕獲狀態(tài)狀態(tài)中捕獲到的數(shù)據(jù)移位到TDO端口中輸出。</p><p>  Update-DR:數(shù)據(jù)寄存器更新狀態(tài)。TMS電平變?yōu)楦唠娖綍r,TAP控制器進入數(shù)據(jù)寄存器更新狀態(tài),在這個狀態(tài)下,每當TCK信號上升沿來臨時,TAP控制器控制數(shù)

77、據(jù)寄存器中存儲的數(shù)據(jù)加載到其圍繞的芯片管腳上,驅(qū)動核心電路工作,至此完成將數(shù)據(jù)輸入到待測電路中。</p><p>  上述過程可以重復進行,直到完成將所有測試數(shù)據(jù)都輸入到芯片中去。</p><p>  Select-IR-Scan:指令寄存器選擇狀態(tài)。當TAP控制器處于數(shù)據(jù)寄存器選擇狀態(tài)時,不在TMS信號中提供下降沿,而是一直維持TMS在高電平,下一個時鐘上升沿來臨時,TAP控制器將進入指

78、令寄存器選擇狀態(tài),這個狀態(tài)會選擇JTAG 指令寄存器而不再是數(shù)據(jù)寄存器作為當前操作對象。</p><p>  Capture-IR:指令寄存器獲取狀態(tài)。和數(shù)據(jù)寄存器獲取狀態(tài)類似,在這個狀態(tài)下,當TCK信號迎來一個上升沿的時候TAP控制器會控制CPU根據(jù)當前的JTAG指令產(chǎn)生一系列邏輯序列,并把該序列裝入到JTAG指令寄存器中。</p><p>  Shift-IR:指令寄存器移位狀態(tài)。和數(shù)

79、據(jù)寄存器移位狀態(tài)類似,在TCK信號迎來上升沿的時候,將TDI中的數(shù)據(jù)寫入JTAG指令寄存器,將指令寄存器獲取狀態(tài)中獲取的數(shù)據(jù)輸出到TDO端口中。</p><p>  Update-IR:指令寄存器更新狀態(tài)。和數(shù)據(jù)寄存器移位狀態(tài)類似,當TCK信號上升沿來臨時,將執(zhí)行JTAG指令寄存器中的指令,控制芯片完成相應操作并更新指令寄存器中的內(nèi)容。</p><p>  Exit1-DR/Exit2-D

80、R/Exit1-IR/Exit2-IR/Pause-DR/Pause-IR:這六個狀態(tài)都是臨時狀態(tài),在這些狀態(tài)里,指令寄存器IR和數(shù)據(jù)寄存器DR中的數(shù)據(jù)都保持不變。</p><p>  通過以上TAP控制器的狀態(tài)轉(zhuǎn)換可以看出,JTAG的工作原理就是將數(shù)據(jù)寄存器或者指令寄存器置于TDI和TDO之間,并通過移位對其進行讀寫。</p><p>  JTAG指令寄存器IR</p>&

81、lt;p>  JTAG指令寄存器IR用于存儲從TDI移位移入的指令,TAP控制器對其中的指令進行解碼,確定要訪問的數(shù)據(jù)寄存器或者指令寄存器,對它們進行相應的讀寫操作。IEEE1149.1-1900中定義的常用指令有:BYPASS指令用于操作BYPASS旁路寄存器,INCODE指令用于操作設備識別寄存器,INTEST指令用來操作邊界掃描寄存器等等。</p><p><b>  數(shù)據(jù)寄存器</b

82、></p><p>  JTAG架構中的寄存器可以分為指令寄存器和數(shù)據(jù)寄存器,數(shù)據(jù)寄存器用來存放輸入和輸出數(shù)據(jù),上面提到的邊界掃描寄存器、旁路寄存器、設備識別寄存器都屬于數(shù)據(jù)寄存器[39]。</p><p>  2.2 LEON3架構</p><p><b>  2.2.1 簡介</b></p><p>  LEO

83、N系列處理器是目前嵌入式系統(tǒng)SOPC設計廣泛使用的一款32位微處理器核,由歐洲航空局開發(fā)。LEON系列處理器基于SPARC V8 RISC精簡指令集設計,源代碼使用VHDL代碼編寫,并且遵循GPL協(xié)議公開了源代碼,任何人都可以免費在自己的設計中根據(jù)自己的需要對其進行配置使用,應用非常廣泛,而且LEON3處理器有著容錯版本和非容錯版本,有利于驗證故障注入的效果,所以本論文以LEON3處理器作為實驗的目標系統(tǒng)。LEON3的結構框圖如圖2-3

84、所示。</p><p>  LEON系列處理器性能理想,最高可以達到0.85MIPS/MHz的速度,并且加入了容錯技術,LEON處理器提供了兩條邊界掃描測試鏈進行JTAG調(diào)試,一條測試鏈基于AMBA總線,一條測試鏈基于LEON處理器提供的在線調(diào)試單元DSU。本課題實驗中以LEON處理器為目標進行了故障注入實驗。</p><p>  圖2-3 LEON3處理器結構框圖</p>

85、<p>  2.2.2 LEON3特點</p><p>  LEON3處理器的主要特點是采用SPARC V8架構、加入了容錯設計和使用VHDL編程風格。</p><p>  SPARC全稱是可擴展處理器體系架構,是一個基于RISC精簡指令集的派生指令集結構,就是說除了定義了指令集以外還定義了寄存器結構、指令寄存器、數(shù)據(jù)寄存器等。SPARC架構處理器包含整數(shù)單元(IU)、浮點數(shù)單

86、元(FPU)、協(xié)處理器單元(CP)以及它們各自對應的寄存器[40]。LEON3則采用了SPARC V8的架構,使LEON3在擁有較高的性能的同時擁有廣泛的應用場景。</p><p>  LEON3同時也加入了容錯設計來適應高可靠性需求的應用場景,LEON3采用了多個層次上的容錯機制:奇偶校驗、三模表決冗余寄存器、流水線重啟、片上EDAC(檢錯和糾錯)等[41]。雖然現(xiàn)在常用的CPU幾乎都加入了一些常規(guī)的奇偶校驗等

87、容錯機制,不過LEON3的容錯機制遠比一般的CPU更加強大和全面。</p><p>  不同于傳統(tǒng)的“數(shù)據(jù)流”編碼風格不同,LEON3不只是簡單的以并發(fā)執(zhí)行的進程作為模塊,而是采用了一種“二進制”的設計方法。這種設計方法代碼可讀性強、抽象度高、仿真時間短,大大增加了LEON3的適應能力和可配置能力。</p><p>  2.2.3 LEON3的容錯機制</p><p&g

88、t;  為了適應高可靠性要求的應用場景,LEON3在多個層次上加入了容錯機制,主要針對SEU(瞬間錯誤)進行了著重處理。LEON3的容錯設計主要作用在于保護片上RAM塊,RAM塊的作用是存儲IU寄存器堆、FPU寄存器堆和Cache寄存器堆[41]。LEON3所使用的容錯技術主要有以下幾點:</p><p><b>  Cache的容錯</b></p><p>  Ca

89、che的使用對于提高CPU的性能非常重要,能夠加快CPU對內(nèi)存的讀寫速度。由于Cache的運行速度非常高,而且Cache內(nèi)部的數(shù)據(jù)量比較小,為了減少時間開銷,Cache使用了奇偶校驗作為主要容錯方法,添加了2個奇偶校驗位,1個奇校驗位,1個偶校驗位,能夠檢查出所有的錯誤。如果奇偶校驗過程中發(fā)現(xiàn)Cache中的數(shù)據(jù)出錯將會強制Cache不命中,丟掉其中的數(shù)據(jù),從RAM中重新獲取數(shù)據(jù)。</p><p>  除了奇偶校驗

90、法,LEON3的Cache系統(tǒng)還支持1-4路互聯(lián),每路的寬度為256Kb,每一條指令的32位中有一個有效位。Cache分為指令Cache和數(shù)據(jù)Cache兩種,指令Cache使用流方式來進行填充,目的是減少指令填充的延時,數(shù)據(jù)Cache使用寫直達方法讀取數(shù)據(jù),目的是保重Cache中的數(shù)據(jù)始終保持和RAM中的數(shù)據(jù)一致,這大大提高了數(shù)據(jù)Cache的容錯能力。</p><p><b>  寄存器文件的容錯<

91、;/b></p><p>  寄存器文件是LEON3處理器寄存器堆的實際存儲位置,主要存儲了IU寄存器堆和FPU寄存器堆。處理器內(nèi)部的寄存器使用非常頻繁,幾乎每一條指令都要訪問這些寄存器,所以寄存器堆的容錯能力對處理器的容錯能力至關重要。寄存器文件使用的容錯方法是采用2個奇偶校驗位,1個奇校驗,1個偶校驗,同時對每32位(一條指令寬度)都是用一個7位的BCH校驗就行檢查和容錯。</p><

92、;p><b>  觸發(fā)器的容錯</b></p><p>  三模表決冗余方法(TMR)是容錯技術里非常常用的一種方法,因為故障發(fā)生的概率比較低,三個冗余模塊中兩個或兩個以上模塊同時發(fā)生錯誤并且發(fā)生的錯誤一模一樣的概率非常非常低,所以三模表決冗余方法是一種很有效的容錯方法,容錯能力與奇偶校驗法相比高很多,而且不像奇偶校驗法主要用來檢查出錯誤但是容錯能力相對較低,但是損失的性能比奇偶校驗多

93、。因為觸發(fā)器的速度要求不像Cache和寄存器堆一樣高,LEON3處理器的觸發(fā)器都采用了三模表決冗余設計,將所有硬件模塊都增加為三倍冗余,三個冗余模塊的輸出都連接到一個多數(shù)表決器上來獲得三個模塊中的多數(shù)結果作為最終的正確結果。圖2-4是觸發(fā)器三模冗余設計的示意圖。</p><p>  圖2-4 觸發(fā)器三模冗余設計</p><p>  TMR寄存器模塊中,三個觸發(fā)器相互獨立,但是擁有同一個時

94、鐘和數(shù)據(jù)源。如果運行過程中一個觸發(fā)器的計算結果出現(xiàn)錯誤,另外兩個觸發(fā)器的結果是正確的,那么就能通過表決機制得到正確結果。這樣做的好處是TMR模塊對于流水線上的其他部分類似于一個黑盒,不會對流水線的數(shù)據(jù)流和設計流程產(chǎn)生影響,而且當一個故障發(fā)生時在這個黑盒里就會被屏蔽,而不會沿著流水線傳播下去導致故障的積累。</p><p><b>  外部存儲器的容錯</b></p><p

95、>  由于存儲器的存儲結構比較連續(xù),所以外部存儲器中出現(xiàn)的錯誤主要是SEU引起的一位或連續(xù)多位的位翻轉(zhuǎn),所以外部存儲器的容錯方法采用了檢錯糾錯碼EDAC技術。</p><p>  EDAC技術是檢錯糾錯技術的統(tǒng)稱,常用的奇偶校驗碼、海明碼等都屬于EDAC技術,主要目的是在檢查到錯誤的同時盡量對錯誤進行修正。EDAC技術中不同的編碼方法容錯能力也不同,例如奇偶校驗碼只能檢查并修正一個碼字出現(xiàn)的錯誤[42],如

96、果出現(xiàn)偶數(shù)碼字的錯誤將無法檢測到,如果出現(xiàn)奇數(shù)個碼字錯誤將能夠檢測到錯誤但是無法進行糾錯。海明碼可以檢查和修正任意一個碼字出現(xiàn)的錯誤,但是存儲代價比較大。LEON3的外部存儲器使用了標準BCH編碼,即每32位使用7為的校驗和來檢錯糾錯,能夠檢測到2位錯誤并且糾正1位錯誤。</p><p><b>  主檢測模式</b></p><p>  如果對可靠性還有更高的要求,

97、則可以在處理器層次上使用類似TMR容錯技術,即增加一個冗余處理器,兩個處理器一個處于主模式,一個處于檢測模式,同時處理相同的輸入數(shù)據(jù)和時鐘輸入,輸出時對兩個處理器的輸出結果作對比,檢查是否計算出錯。這種方法能夠極大地提高可靠性。</p><p>  2.2.4 LEON3的調(diào)試架構</p><p>  LEON3實現(xiàn)了兩條邊界掃描測試鏈,一條基于內(nèi)部的AMBA總線,一條基于LEON3內(nèi)部的

98、DSU在線調(diào)試單元。LEON3架構中可以連接到TDI和TDO之間的寄存器共有6種:指令寄存器、旁路寄存器、掃描鏈選擇寄存器、設備識別寄存器、第一條邊界掃描鏈、第二條邊界掃描鏈。</p><p>  LEON3實現(xiàn)了以下JTAG調(diào)試指令:</p><p>  SCAN_N指令:選擇邊界掃描測試鏈指令。這條指令的作用是在邊界掃描選擇寄存器中寫入要使用的邊界掃描鏈編號,選定接下來要操作的邊界掃描

99、測試鏈。對應的二進制編碼是4’b0010。</p><p>  INTEST指令:內(nèi)部測試指令。這條指令的作用是將SCAN_N指令選定的邊界掃描測試鏈加載到TDI和TDO之間,并通過移位的方法將TDI上輸入的串行數(shù)據(jù)加載到芯片內(nèi)部,再將芯片的運行結果用移位的方法加載到TDO上輸出。對應的二進制編碼是4’b1100。</p><p>  EXTEST指令:外部測試指令。這條指令的作用是測試邊

100、界掃描鏈的連通性,將選定的掃描鏈加載到TDI和TDO之間,將TDI上的串行數(shù)據(jù)加載到芯片的輸出管腳,然后通過移位的方式將輸出移位到TDO上來測試是否聯(lián)通。對應的二進制編碼是4’b0000。</p><p>  INCODE指令:身份識別指令。這條指令的作用是將數(shù)據(jù)識別寄存器加載到TDI和TDO之間,讀取寄存器里存儲的與芯片相關的信息。</p><p>  BYPASS指令:穿透指令。這條指

101、令的作用是提供一個最短的穿過芯片的路徑。如果當前測試對象的當前掃描鏈上其余的數(shù)據(jù)寄存器,那么使用這條指令將非測試數(shù)據(jù)寄存器上連接一個1位的旁路寄存器來盡量減少路徑的長度。</p><p>  RESTART指令:退出調(diào)試狀態(tài),處理器繼續(xù)正常運行。對應的二進制編碼是4’b1110。</p><p>  LEON3的第二條掃描鏈基于內(nèi)部實現(xiàn)的在線調(diào)試單元DSU(Debug Support Un

102、it)實現(xiàn),目的是為硬件調(diào)試提供更快捷方便的方法??梢允褂肈SU在調(diào)試模式里訪問LEON的資源,比如存儲器和外設。DSU的結構如圖2-5所示:</p><p>  圖2-5 LEON3處理的DSU調(diào)試架構[43]</p><p>  2.3 故障注入整體方案</p><p>  基于JTAG的硬件故障注入工具主要有三部分組成:負責控制故障注入流程的上位機,也叫主控

103、機;負責實際注入故障的故障注入器;和待調(diào)試的目標系統(tǒng)。上位機通過USB接口與故障注入器相連,串行傳輸數(shù)據(jù),故障注入器通過JTAG直接和目標系統(tǒng)相連。圖2-6展示了故障注入工具的邏輯結構。</p><p>  圖2-6 硬件故障注入工具邏輯結構</p><p>  注入工作的步驟如下:首先故障注入系統(tǒng)建立起來的時候目標系統(tǒng)(本實驗里就是LEON3處理器)處于正常工作的狀態(tài),上位機控制軟件發(fā)

104、出注入故障的信號給硬件故障注入器,故障注入器首先通過改寫處理器DCR寄存器的值使目標系統(tǒng)進入調(diào)試模式,接下來故障注入器接收來自上位機的故障向量,解析這些故障向量并且模擬出相應的JTAG控制時序,根據(jù)注入故障的位置和類型,選擇邊界掃描測試鏈,將數(shù)據(jù)傳輸?shù)教幚砥髦?。圖2-7展示了故障注入工具的數(shù)據(jù)流。</p><p>  圖2-7 故障注入工具數(shù)據(jù)流圖</p><p>  在這個過程中,故障

105、注入工具繞過了操作系統(tǒng)的數(shù)據(jù)保護限制,成功把故障注入到了目標系統(tǒng)的總線、寄存器、內(nèi)存、外部存儲中,而當目標系統(tǒng)返回正常工作模式后會繼續(xù)斷點之前的指令繼續(xù)執(zhí)行,完成了在故障注入的過程。</p><p>  圖2-8展示了基于JTAG的硬件故障注入工具的具體模塊圖。其中上位機控制軟件的作用有:查詢故障向量數(shù)據(jù)庫、構建故障向量、設置故障注入的類型、設置目標平臺的類型、時間和數(shù)據(jù)、通過USB與硬件故障注入器進行通信、檢查

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論