版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第2章ARM體系結(jié)構(gòu)
參考書:《ARM嵌入式處理器結(jié)構(gòu)與應(yīng)用基礎(chǔ)》馬忠梅,馬廣云,徐英慧,等北京航空航天大學(xué)出版社1第2章ARM體系結(jié)構(gòu)參考書:《ARM嵌入式處理器結(jié)構(gòu)與2.1ARM體系結(jié)構(gòu)概述2.1.1ARM體系結(jié)構(gòu)的特點(diǎn)0、概述:ARM公司ARM即AdvancedRISCMachines的縮寫。ARM公司是知識(shí)產(chǎn)權(quán)(IP)供應(yīng)商,成立于1990。ARM公司本身不生產(chǎn)芯片,靠轉(zhuǎn)讓設(shè)計(jì)許可,由合作伙伴公司來(lái)生產(chǎn)各具特色的芯片。ARM作為32位嵌入式RISC微處理器業(yè)界的領(lǐng)先供應(yīng)商,商業(yè)模式的強(qiáng)大之處在于它在世界范圍有超過(guò)100個(gè)合作伙伴——包括半導(dǎo)體工業(yè)的著名公司,從而保證了大量的開(kāi)發(fā)工具和豐富的第三方資源,它們共同保證了基于ARM處理器核的設(shè)計(jì)可以很快投入市場(chǎng)。22.1ARM體系結(jié)構(gòu)概述2.1.1ARM體系結(jié)構(gòu)的特ARM處理器的3大特點(diǎn)是:耗電少,成本低,功能強(qiáng);16/32位雙指令集;全球眾多合作伙伴保證供應(yīng)。ARM體系結(jié)構(gòu)基于精簡(jiǎn)指令集計(jì)算機(jī)(RISC)原理。傳統(tǒng)的CISC指令集計(jì)算機(jī)隨著計(jì)算機(jī)的發(fā)展引入了各種各樣的復(fù)雜指令,使得指令集和為實(shí)現(xiàn)這些指令的計(jì)算機(jī)體系結(jié)構(gòu)越來(lái)越復(fù)雜,已經(jīng)不堪重負(fù)。經(jīng)過(guò)大量的研究和分析,發(fā)現(xiàn)在CISC的指令集中,各種指令的使用頻度相差懸殊。大概有20%的指令被反復(fù)使用,使用量約占整個(gè)程序的80%;而有80%左右的指令則很少使用,其使用量約占整個(gè)程序的20%。 這就是所謂的20%—80%規(guī)律。
3ARM處理器的3大特點(diǎn)是:傳統(tǒng)的CISC指令集計(jì)算機(jī)隨著計(jì)算RISC指令集和相關(guān)的譯碼機(jī)制比復(fù)雜指令集計(jì)算機(jī)(CISC)的設(shè)計(jì)更簡(jiǎn)單。這種簡(jiǎn)單性得到了:高指令吞吐率;出色的實(shí)時(shí)中斷響應(yīng);體積小、性價(jià)比高的處理器宏單元。16位Thumb指令集,允許軟件16位編碼使占用的存儲(chǔ)器空間節(jié)省高達(dá)35%,然而保留了32位系統(tǒng)所有的優(yōu)勢(shì)。4RISC指令集和相關(guān)的譯碼機(jī)制比復(fù)雜指令集計(jì)算機(jī)(CISC)ARM還提供了兩個(gè)前沿特性——嵌入式ICE—RT邏輯和嵌入式跟蹤宏核系列,用于輔助嵌入式處理器核的、高集成的SoC器件的調(diào)試。允許在代碼的任何部分——甚至在ROM中設(shè)置斷點(diǎn)。ARM當(dāng)前有5個(gè)產(chǎn)品系列:ARM7、ARM9、ARM9E、ARM10和SecurCore。進(jìn)一步的產(chǎn)品來(lái)自于合作伙伴,例如IntelXScale微體系結(jié)構(gòu)和StrongARM產(chǎn)品。5ARM還提供了兩個(gè)前沿特性——嵌入式ICE—RT邏輯和嵌入式1.ARM的RISC型處理器結(jié)構(gòu)中央控制器沒(méi)有采用微程序的方式。采用了硬接線PLA的方式。減少?gòu)?fù)雜功能的指令,選用使用頻度最高的指令;簡(jiǎn)化處理器的結(jié)構(gòu),減少處理器的集成度;采用32位定長(zhǎng)指令。除了單機(jī)器周期執(zhí)行1條指令外,每條指令具有多種操作功能,提高了指令使用效率。采用流水線結(jié)構(gòu),使每一條指令平均在一個(gè)機(jī)器周期內(nèi)完成,以提高處理器的速度。采用多寄存器的結(jié)構(gòu),使指令的操作盡可能在寄存器之間進(jìn)行。采用Load/Store結(jié)構(gòu),即只有Load/Store(加載/存儲(chǔ))指令可與存儲(chǔ)器打交道,減少訪問(wèn)存儲(chǔ)器的頻度,節(jié)約指令執(zhí)行時(shí)間。為了進(jìn)一步提高指令和數(shù)據(jù)的存/取速度,有的還增加指令快存I—Cache和數(shù)據(jù)快存D—Cache;61.ARM的RISC型處理器結(jié)構(gòu)中央控制器沒(méi)有采用微程序的方2.Thumb指令集新型ARM體系結(jié)構(gòu)在32位指令集的基礎(chǔ)上又定義了16位的Thumb指令集,可以使程序存儲(chǔ)器更小。Thumb指令集比通常的8位和16位CISC/RISC處理器具有更好的代碼密度,而芯片面積只增加6%。72.Thumb指令集新型ARM體系結(jié)構(gòu)在32位指令集的基礎(chǔ)上3.多處理器狀態(tài)模式ARM可以支持7種處理器模式:用戶模式快中斷模式中斷模式管理模式中止模式系統(tǒng)模式未定義模式除了用戶模式外,其余的均為特權(quán)模式。這是ARM的特色之一。多處理器模式可以大大提高ARM處理器的效率,并方便操作系統(tǒng)的設(shè)計(jì)。83.多處理器狀態(tài)模式ARM可以支持7種處理器模式:84.嵌入式在線仿真調(diào)試ARM體系結(jié)構(gòu)的處理器芯片都嵌入了在線仿真ICE—RT邏輯由于ICE—RT邏輯的支持,便于通過(guò)JTAG來(lái)仿真調(diào)試ARM體系結(jié)構(gòu)芯片,從而可以省去價(jià)格昂貴的在線仿真器。在處理器核中還集成了嵌入式跟蹤宏單元(ETM),ETM可以用于監(jiān)控內(nèi)部總線,實(shí)時(shí)跟蹤指令和數(shù)據(jù)的執(zhí)行。94.嵌入式在線仿真調(diào)試ARM體系結(jié)構(gòu)的處理器芯片都嵌入了在線5.靈活和方便的接口ARM體系結(jié)構(gòu)具有協(xié)處理器接口,這樣,既可以使基本的ARM處理器內(nèi)核盡可能小,又可以方便地?cái)U(kuò)充各種功能。ARM允許接16個(gè)協(xié)處理器。ARM處理器核具有片上總線AMBA(AdvancedMicrocontrollerBusArchitecture)。AMBA定義了3組總線:先進(jìn)高性能總線AHB(AdvancedHighperformanceBus);先進(jìn)系統(tǒng)總線ASB(AdvancedSystemBus);先進(jìn)外圍總線APB(AdvancedPeripheralBus)。通過(guò)AMBA可以方便地?cái)U(kuò)充各種處理器及I/O,這樣,可以把DSP、其他處理器和I/O接口(如UART、定時(shí)器和接口等)都集成在一塊芯片中。105.靈活和方便的接口ARM體系結(jié)構(gòu)具有協(xié)處理器接口,這樣,既6、低電壓低功耗的設(shè)計(jì)由于ARM體系結(jié)構(gòu)的處理器主要用于手持式嵌入式系統(tǒng)之中,ARM體系結(jié)構(gòu)在設(shè)計(jì)中十分注意低功耗問(wèn)題。CMOS電路的功耗關(guān)系: Pc=(1/2)·f·VDD2·∑Ag·CLg式中,f為時(shí)鐘頻率;VDD為工作電源電壓;Ag是邏輯門在1個(gè)時(shí)鐘周期內(nèi)翻轉(zhuǎn)的次數(shù)(通常為2);CLg為門的負(fù)載電容。因此,ARM體系結(jié)構(gòu)的設(shè)計(jì)采用了以下措施:降低電源電壓,可工作在3.0V以下。減少門的翻轉(zhuǎn)次數(shù),當(dāng)某個(gè)功能電路不需要時(shí),禁止門翻轉(zhuǎn)。減少門的數(shù)目,即降低芯片的集成度。降低時(shí)鐘頻率(但也會(huì)損失系統(tǒng)的性能)。116、低電壓低功耗的設(shè)計(jì)由于ARM體系結(jié)構(gòu)的處理器主要用于手持2.1.2ARM處理器結(jié)構(gòu)1.ARM體系結(jié)構(gòu)是ARM體系結(jié)構(gòu):32位ALU;31個(gè)32位通用寄存器6個(gè)狀態(tài)寄存器32×8位乘法器32×32位桶形移位寄存器指令譯碼及控制邏輯指令流水線數(shù)據(jù)/地址寄存器。 如圖4—1所示122.1.2ARM處理器結(jié)構(gòu)1.ARM體系結(jié)構(gòu)12FIG4-113FIG4-1132.ARM的流水線結(jié)構(gòu)計(jì)算機(jī)中的1條指令的執(zhí)行可以分若干個(gè)階段:①取指,從存儲(chǔ)器中取出指令(fetch);②譯碼,指令譯碼(dec);③取操作數(shù),假定從寄存器組中取操作數(shù)(reg);④執(zhí)行運(yùn)算(ALU);⑤存儲(chǔ)器訪問(wèn),操作數(shù)與存儲(chǔ)器有關(guān)(mem);⑥結(jié)果寫回寄存器(res)。各個(gè)階段的操作相對(duì)都是獨(dú)立的。因此,采用流水線的重疊技術(shù)可以大大提高系統(tǒng)性能。142.ARM的流水線結(jié)構(gòu)計(jì)算機(jī)中的1條指令的執(zhí)行可以分若干個(gè)階ARM體系結(jié)構(gòu)的單周期3級(jí)流水線
圖4—5ARM單周期3級(jí)流水線取指譯碼執(zhí)行取指譯碼執(zhí)行取指譯碼執(zhí)行時(shí)間12315ARM體系結(jié)構(gòu)的單周期3級(jí)流水線圖4—5ARM單周期3.ARM存儲(chǔ)器結(jié)構(gòu)ARM架構(gòu)的處理器,有的帶有指令Cache和數(shù)據(jù)Cache,但片內(nèi)不帶有片內(nèi)RAM和片內(nèi)ROM,因此,系統(tǒng)所需的RAM和ROM須通過(guò)總線外接。系統(tǒng)所需的RAM和ROM(包括Flash)都通過(guò)總線連接,由于系統(tǒng)的地址范圍較大(232=4GB),有的片內(nèi)還帶有存儲(chǔ)器管理單元MMU。圖4—8ARM外接RAM和ROM163.ARM存儲(chǔ)器結(jié)構(gòu)ARM架構(gòu)的處理器,有的帶有指令Cach圖4—8ARM外接RAM和ROMROMoeRAMoeRAMwe3RAMwe2RAMwe1RAMwe0A1、A0沒(méi)有接入片內(nèi)地址線,他們是確定RAMwe3~RAMwe0的依據(jù)。17圖4—8ARM外接RAM和ROMROMoeRAMoeRA4.ARMI/O結(jié)構(gòu)ARM架構(gòu)中的處理器核和處理器內(nèi)核一般都沒(méi)有I/O部件和模塊,ARM架構(gòu)處理器的I/O可通過(guò)AMBA(先進(jìn)微控制總線架構(gòu))總線來(lái)擴(kuò)充。ARM架構(gòu)中的I/O直接存儲(chǔ)器存取DMA中斷結(jié)構(gòu)。
184.ARMI/O結(jié)構(gòu)ARM架構(gòu)中的處理器核和處理器內(nèi)(1) 存儲(chǔ)器映射I/O一般的I/O(如串行接口)有若干個(gè)寄存器:發(fā)送數(shù)據(jù)寄存器(只寫);數(shù)據(jù)接收寄存器(只讀);控制寄存器、狀態(tài)寄存器(只讀);中斷允許寄存器; 等。這些寄存器都需要相應(yīng)的I/O端口地址。ARM采用了存儲(chǔ)器映射I/O的方式,即把I/O端口地址作為特殊的存儲(chǔ)器地址。
19(1) 存儲(chǔ)器映射I/O19(2)直接存儲(chǔ)器存取DMAARM架構(gòu)的處理器一般都沒(méi)有DMA部件,只有在一些高檔的ARM架構(gòu)處理器中具有DMA的功能。
(3)中斷IRQ和快速中斷FIQ一般的ARM沒(méi)有DMA功能,為了能提高I/O處理能力,系統(tǒng)安排了快速中斷FIQ(FastInterrupt),而對(duì)普通I/O的中斷源仍安排了一般中斷IRQ。要提高中斷響應(yīng)的速度,在設(shè)計(jì)中可以采用以下辦法:提供大量后備寄存器,在中斷響應(yīng)及返回時(shí),作為保護(hù)現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)的上下文切換(ContextSwitching)之用。采用片內(nèi)RAM結(jié)構(gòu),這樣可以加速異常處理(包括中斷)的進(jìn)入時(shí)間。Cache和地址變換后備緩沖器TLB(TranslationLookasideBuffer)采用鎖住(Lockeddown)方式以確保臨界代碼段不受“不命中”所產(chǎn)生的影響。20(2)直接存儲(chǔ)器存取DMAARM架構(gòu)的處理器一般都沒(méi)有D5.ARM協(xié)處理器接口ARM可以通過(guò)增加協(xié)處理器來(lái)支持一個(gè)通用的指令集的擴(kuò)充;也可以通過(guò)未定義指令陷阱(Trap)來(lái)支持協(xié)處理器的軟件仿真。215.ARM協(xié)處理器接口ARM可以通過(guò)增加協(xié)處理器來(lái)支持一個(gè)通ARM可以擴(kuò)展16個(gè)協(xié)處理器,每個(gè)協(xié)處理器可有16個(gè)寄存器。MMU和保護(hù)單元的系統(tǒng)控制都采用CPl5協(xié)處理器;JTAG調(diào)試中的協(xié)處理器為CPl4,即調(diào)試通信通道DCC(DebugCommunicationChannel)協(xié)處理器號(hào)功能15系統(tǒng)控制14調(diào)試控制器13~8保留7~4用戶3~0保留22ARM可以擴(kuò)展16個(gè)協(xié)處理器,每個(gè)協(xié)處理器可有16個(gè)寄存器。6.ARM的AMBA接口ARM處理器內(nèi)核可通過(guò)內(nèi)部總線擴(kuò)充Cache等部件,或通過(guò)協(xié)處理器接口擴(kuò)充各種協(xié)處理器;也可以通過(guò)先進(jìn)微控制器總線架構(gòu)AMBA(AdvancedMicrocontrollerBusArehitecture)來(lái)擴(kuò)展不同體系架構(gòu)的宏單元及I/O部件。AMBA事實(shí)上已成為片上總線OCB(OnChipBus)標(biāo)準(zhǔn)。AMBA有如下3類總線:先進(jìn)高性能總線AHB(AdvancedHigh-performanceBus);先進(jìn)系統(tǒng)總線ASB(AdvancedSystemBus)先進(jìn)外圍總線APB(AdvancedPeripheralBus)。 AMBA結(jié)構(gòu)如圖4—9所示。236.ARM的AMBA接口ARM處理器內(nèi)核可通過(guò)內(nèi)部總線24247.ARM的JTAG調(diào)試接口JTAG的基本知識(shí)什么是JTAG? JTAG是JointTestActionGroup的縮寫,基于IEEE1149.1標(biāo)準(zhǔn)。使用JTAG的優(yōu)點(diǎn)JTAG的建立使得集成電路固定在PCB上,只通過(guò)邊掃描便可以通過(guò)測(cè)試。在ARM7TDMI處理器中,可以通過(guò)JTAG直接控制ARM的內(nèi)部總線,I/O口等信息,從而達(dá)到調(diào)試的目的。257.ARM的JTAG調(diào)試接口JTAG的基本知識(shí)25JTAG調(diào)試接口的結(jié)構(gòu)如圖4—10所示。測(cè)試訪問(wèn)端口TAP(TestAccessPort)控制器;旁路(Bypass)寄存器;指令寄存器;數(shù)據(jù)寄存器;與JTAG接口兼容的ARM架構(gòu)處理器。26JTAG調(diào)試接口的結(jié)構(gòu)如圖4—10所示。26處理器的每個(gè)引腳都有一個(gè)移位寄存單元,稱為邊界掃描單元BSC(BoundaryScanCell):BSC將JTAG電路與處理器核邏輯電路聯(lián)系起來(lái),同時(shí),隔離了處理器核邏輯電路與芯片引腳;所有邊界掃描單元的串聯(lián)構(gòu)成了邊界掃描寄存器BSR;BSR寄存器電路僅在進(jìn)行JTAG測(cè)試時(shí)有效,在處理器核正常工作時(shí)無(wú)效(直通)。27處理器的每個(gè)引腳都有一個(gè)移位寄存單元,稱為邊界掃描單元BSC芯核邏輯BSCBSCBSCBSCBSCBSC28芯核邏輯BSCBSCBSCBSCBSCBSC28
(1)JTAG的控制寄存器測(cè)試訪問(wèn)端口TAP控制器:對(duì)嵌入在ARM處理器核內(nèi)部的測(cè)試功能電路進(jìn)行訪問(wèn)控制,它是一個(gè)同步狀態(tài)機(jī)。通過(guò)測(cè)試模式選擇TMS和時(shí)鐘信號(hào)TCK來(lái)控制狀態(tài)的轉(zhuǎn)換,實(shí)現(xiàn)IEEEll49.1標(biāo)準(zhǔn)所確定的測(cè)試邏輯電路的工作時(shí)序。指令寄存器:它是串行移位寄存器,通過(guò)它可以串行輸入執(zhí)行各種操作指令。數(shù)據(jù)寄存器組:它是一組串行移位寄存器。操作指令被串行裝入由當(dāng)前指令所選擇的數(shù)據(jù)寄存器,隨著操作的進(jìn)行,測(cè)試結(jié)果被串行移出。其中:器件ID寄存器:讀出在芯片內(nèi)固化的ID號(hào)。旁路寄存器:1位移位寄存器,用1個(gè)時(shí)鐘的延遲把TDI連至TDO,使測(cè)試者在同一電路板測(cè)試循環(huán)內(nèi)訪問(wèn)其他器件。邊界掃描寄存器(掃描鏈):截取ARM處理器核與芯片引腳之間所有信號(hào),組成專用的寄存器鏈。29(1)JTAG的控制寄存器測(cè)試訪問(wèn)端口TAP控制器:
(2)JTAG測(cè)試信號(hào)TRST 測(cè)試復(fù)位輸入信號(hào),測(cè)試接口初始化。TCK 測(cè)試時(shí)鐘,在TCK時(shí)鐘的同步作用下,通過(guò)TDI和TDO引腳串行移入/移出數(shù)據(jù)或指令,同時(shí)也為測(cè)試訪問(wèn)端口TAP控制器的狀態(tài)機(jī)提供時(shí)鐘。TMS 測(cè)試模式選擇信號(hào),在TCK同步下控制測(cè)試接口狀態(tài)機(jī)的操作。TDI 測(cè)試數(shù)據(jù)輸入線,其串行輸入數(shù)據(jù)送至邊界掃描寄存器或指令寄存器(由TAP控制器的當(dāng)前狀態(tài)及已保存在指令寄存器中的指令來(lái)控制)。TDO 測(cè)試數(shù)據(jù)輸出線,把從邊界掃描鏈采樣的數(shù)據(jù)傳播至串行測(cè)試電路中的下一個(gè)芯片JTAG可以對(duì)同一塊電路板上多塊芯片進(jìn)行測(cè)試。連接方法如下:TRST、TCK和TMS信號(hào)并行接至各個(gè)芯片;前1塊芯片的TDO接至下1塊芯片的TDI。30(2)JTAG測(cè)試信號(hào)TRST 測(cè)試復(fù)位輸入信號(hào),(3)TAP狀態(tài)機(jī)測(cè)試訪問(wèn)端口TAP控制器是一個(gè)16狀態(tài)的有限狀態(tài)機(jī),為JTAG提供控制邏輯,控制進(jìn)入JTAG結(jié)構(gòu)中各種寄存器內(nèi)數(shù)據(jù)的掃描與操作。狀態(tài)轉(zhuǎn)移圖如圖4—11所示,在TCK同步時(shí)鐘上升沿的TMS引腳的邏輯電壓決定狀態(tài)轉(zhuǎn)移的過(guò)程。任一狀態(tài)下,讓TMS=1可以經(jīng)5個(gè)TCK回到復(fù)位狀態(tài)。由TDI引腳輸入到器件的掃描信號(hào)有2個(gè)狀態(tài)變化路徑:用于指令移入至指令寄存器,或用于數(shù)據(jù)移入至相應(yīng)的數(shù)據(jù)寄存器(該數(shù)據(jù)寄存器由當(dāng)前指令確定)。狀態(tài)圖中的每個(gè)狀態(tài)都是TAP控制器進(jìn)行數(shù)據(jù)處理所需要的,這些處理包括向引腳施加激勵(lì)信號(hào)、捕獲輸入數(shù)據(jù)、加載指令以及將邊界掃描寄存器中數(shù)據(jù)移入/移出31(3)TAP狀態(tài)機(jī)測(cè)試訪問(wèn)端口TAP控制器是一個(gè)16狀狀態(tài)轉(zhuǎn)換發(fā)生在TCK同步時(shí)鐘脈沖的上升沿32狀態(tài)轉(zhuǎn)換發(fā)生在TCK同步時(shí)鐘脈沖的上升沿32(4)JTAG接口控制指令控制指令用于控制JTAG接口各種操作,包括公用(Public)指令和私有(Private)指令。最基本的公用指令有:BYPASS旁路片上系統(tǒng)邏輯指令,用于未被測(cè)試的芯片,即把TDI與TDO旁路(1個(gè)時(shí)鐘延遲)。EXTEST片外電路測(cè)試指令,用于測(cè)試電路板上芯片之間的互連。如圖4—11中的引腳狀態(tài)被捕獲在captureDR;并在shiftDR狀態(tài)時(shí),通過(guò)TDO引腳把寄存器中數(shù)據(jù)移出,同時(shí)新的數(shù)據(jù)通過(guò)TDI引腳移入,該數(shù)據(jù)在更新updateDR狀態(tài)中用于邊界掃描寄存器輸出。IDCODE讀芯片ID碼指令,用于識(shí)別電路板上的芯片。此時(shí),ID寄存器在TDI與TDO引腳之間,在captureDR狀態(tài)中,芯片的ID復(fù)制至ID寄存器,然后在shiftDR狀態(tài)中移出。INTEST片內(nèi)測(cè)試指令,邊界掃描寄存器位于TDI與TDO引腳之間,處理器核邏輯輸入和輸出狀態(tài)被邊界掃描寄存器捕獲和控制。以上是ARM架構(gòu)最基本的公用指令,各種處理器核可以根據(jù)需要進(jìn)行擴(kuò)展。33(4)JTAG接口控制指令控制指令用于控制JTAG接口2.1.3ARM處理器內(nèi)核ARM體系結(jié)構(gòu)的處理器內(nèi)核有ARM7TDMI、ARM8、ARM9TDMI、ARM10TDMI及ARM11TDMI等。ARM7TDMI處理器內(nèi)核ARM7TDMI處理器是ARM7處理器系列成員之一,是目前應(yīng)用很廣的32位高性能嵌入式RISC處理器。TDMI后綴的含義:T 具有16位壓縮指令集Thumb;D 支持在片調(diào)試(Debug),允許處理器響應(yīng)調(diào)試請(qǐng)求暫停;M 增強(qiáng)型乘法器(Multiplier),比以前處理器性能更高,產(chǎn)生全64位結(jié)果;I 提供嵌入式ICE硬件,支持片上斷點(diǎn)調(diào)試。ARM7處理器核采用了3級(jí)流水線結(jié)構(gòu),指令執(zhí)行分為取指、譯碼和執(zhí)行等3個(gè)階段。ARM7TDMI的體系結(jié)構(gòu)圖如圖4—12所示。342.1.3ARM處理器內(nèi)核ARM體系結(jié)構(gòu)的處理器內(nèi)核有A113個(gè)掃描單元:包括ARM核所有I/O引腳、地址數(shù)據(jù)總線引腳和輸入輸出控制引腳。33個(gè)掃描單元:數(shù)據(jù)總線[D31:D0]和一個(gè)端點(diǎn)控制信號(hào)38個(gè)掃描單元:通過(guò)控制ICE宏單元,實(shí)現(xiàn)對(duì)ARM執(zhí)行指令的斷點(diǎn)、觀察點(diǎn)的控制。35113個(gè)掃描單元:33個(gè)掃描單元:38個(gè)掃描單元:35ARM7TDMI內(nèi)核的JTAG掃描鏈結(jié)構(gòu)(主要包括3條掃描鏈)ScanChain0:有113個(gè)掃描單元,包括ARM核的所有I/O,地址數(shù)據(jù)總線和輸入輸出控制信號(hào).這條鏈上的信號(hào)復(fù)雜,不易控制,但是,包含的信息豐富,可以通過(guò)這條鏈得到ARM7TDMI所有的內(nèi)核信息。36ARM7TDMI內(nèi)核的JTAG掃描鏈結(jié)構(gòu)(主要包括3條掃描鏈ScanChain1:有33個(gè)掃描單元,包括ARM核的數(shù)據(jù)總線和一個(gè)斷點(diǎn)控制信號(hào)。這是一條很有用的鏈,通過(guò)控制這條鏈,可以控制ARM核執(zhí)行指定的指令,從而實(shí)現(xiàn)對(duì)ARM的內(nèi)部寄存器,協(xié)處理器以及外部存儲(chǔ)器的讀寫操作。ScanChain2:有38個(gè)掃描單元,通過(guò)控制EmbeddedICE宏單元,實(shí)現(xiàn)對(duì)ARM執(zhí)行指令的斷點(diǎn)、觀察點(diǎn)控制。EmbeddedICE是集成在ARM內(nèi)核的中的嵌入式ICE防真器。通過(guò)對(duì)EmbeddedICE的控制,對(duì)EmbeddedICE中寄存器的讀取,可以獲得ARM內(nèi)核的狀態(tài),為程序設(shè)置斷點(diǎn)或讀取Debug通信通道。37ScanChain1:有33個(gè)掃描單元,包括ARM核的數(shù)據(jù)2.2.1數(shù)據(jù)類型ARM處理器支持下列數(shù)據(jù)類型:Byte 字節(jié),8位;(A31……A0)32位地址均有效.Halfword半字,16位(半字必須與2字節(jié)邊界對(duì)準(zhǔn))(A31……A1,0)偶數(shù)地址,A0為0;Word 字,32位(字必須與4字節(jié)邊界對(duì)準(zhǔn))。(A31……A2,0,0)地址是4的倍數(shù),A1,A0均為0.2.2ARM編程模型圖4—18ARM數(shù)據(jù)類型存儲(chǔ)圖見(jiàn)ARM的存儲(chǔ)結(jié)構(gòu)382.2.1數(shù)據(jù)類型2.2ARM編程模型圖4—18ARM體系結(jié)構(gòu)支持表4—3所列的7種處理器模式。表4—3處理器模式處理器模式說(shuō)明用戶user正常程序執(zhí)行模式FIOfiq支持高速數(shù)據(jù)傳送或通道處理IRQirq用于通用中斷處理管理svc操作系統(tǒng)保護(hù)模式系統(tǒng)復(fù)位后的缺省模式中止abt實(shí)現(xiàn)虛擬存儲(chǔ)器和/或存儲(chǔ)器保護(hù)未定義und支持硬件協(xié)處理器的軟件仿真系統(tǒng)sys運(yùn)行特權(quán)操作系統(tǒng)任務(wù)2.2.2處理器模式異常模式特權(quán)模式39ARM體系結(jié)構(gòu)支持表4—3所列的7種處理器模式。表4—3模式的改變?cè)谲浖刂葡驴梢愿淖兡J剑煌獠恐袛嗷虍惓L幚硪部梢砸鹉J桨l(fā)生改變。大多數(shù)應(yīng)用程序在用戶模式下執(zhí)行。當(dāng)處理器工作在用戶模式時(shí),正在執(zhí)行的程序不能訪問(wèn)某些被保護(hù)的系統(tǒng)資源;用戶模式下不能改變模式,除非異常(Exception)發(fā)生。這允許操作系統(tǒng)來(lái)控制系統(tǒng)資源的使用。除用戶模式外的其他6種模式稱為特權(quán)模式。特權(quán)模式服務(wù)于中斷或異常;特權(quán)模式可以訪問(wèn)被保護(hù)的資源;特權(quán)模式下可以改變模式。關(guān)于模式的說(shuō)明:40模式的改變關(guān)于模式的說(shuō)明:40系統(tǒng)模式。不能由任何其他模式進(jìn)入該模式;它與用戶模式擁有完全相同的寄存器。然而它是特權(quán)模式,不受用戶模式的限制。它供需要訪問(wèn)系統(tǒng)資源的操作系統(tǒng)任務(wù)使用,但希望避免使用與異常模式有關(guān)的附加寄存器。避免使用附加寄存器保證了當(dāng)任何異常出現(xiàn)時(shí),都不會(huì)使任務(wù)的狀態(tài)不可靠。除用戶模式和系統(tǒng)模式之外的5種模式稱作異常模式。當(dāng)特定的異常出現(xiàn)時(shí),進(jìn)入相應(yīng)的模式。每種模式都有某些附加的寄存器,以避免異常出現(xiàn)時(shí)用戶模式的狀態(tài)不可靠。41系統(tǒng)模式。412.2.3處理器工作狀態(tài)ARM處理器有兩種工作狀態(tài):ARM:這種狀態(tài)下執(zhí)行32位字對(duì)準(zhǔn)的ARM指令;取指時(shí)程序計(jì)數(shù)器的PC.1和PC.0均為0Thumb:這種狀態(tài)下執(zhí)行半字對(duì)準(zhǔn)的16位Thumb指令。取指時(shí)程序計(jì)數(shù)器的PC.0為0,而使用PC.1位選擇另一個(gè)半字。ARM處理器可以在兩種工作狀態(tài)之間切換。ARM和Thumb之間狀態(tài)的切換不影響處理器的模式或寄存器的內(nèi)容。422.2.3處理器工作狀態(tài)ARM處理器有兩種工作狀態(tài):42ARM處理器在ARM和Thumb兩種工作狀態(tài)之間切換的方法:① 進(jìn)入Thumb狀態(tài)。當(dāng)操作數(shù)寄存器的狀態(tài)位(位[0])為1時(shí),執(zhí)行BX指令進(jìn)入Thumb狀態(tài)。如果處理器在Thumb狀態(tài)進(jìn)入異常,則當(dāng)異常處理(IRQ、FIQ、Undef、Abort和SWI)返回時(shí),自動(dòng)轉(zhuǎn)換到Thumb狀態(tài)。② 進(jìn)入ARM狀態(tài)。當(dāng)操作數(shù)寄存器的狀態(tài)位(位[0])為0時(shí),執(zhí)行BX指令進(jìn)入ARM狀態(tài)。處理器進(jìn)行異常處理(IRQ、FIQ、Reset、Undef、Abort和SWI)時(shí),把PC放入異常模式鏈接寄存器中,從異常向量地址開(kāi)始執(zhí)行也可以進(jìn)入ARM狀態(tài)。43ARM處理器在ARM和Thumb兩種工作狀態(tài)之間切換的方法:ARM處理器總共有37個(gè)寄存器:31個(gè)通用寄存器,包括程序計(jì)數(shù)器PC。這些寄存器是32位的。6個(gè)狀態(tài)寄存器。這些寄存器也是32位的,但只使用了其中的12位。37個(gè)寄存器不能被同時(shí)看到,處理器狀態(tài)和工作模式?jīng)Q定哪些寄存器編程者可見(jiàn)。2.2.4寄存器組織44ARM處理器總共有37個(gè)寄存器:2.2.4寄存器組織44SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_svcCPRSCPRSCPRSCPRSCPRSCPRSCPRSR15(PC)R15(PC)R15(PC)R15(PC)R15(PC)R15(PC)R15(PC)R14_fiqR14_irqR14_undR14_abtR14_svcR14R14R13_fiqR13_irqR13_undR13_abtR13_svcR13R13R12_fiqR12R12R12R12R12R12R11_fiqR11R11R11R11R11R11R10_fiqR10R10R10R10R10R10R9_fiqR9R9R9R9R9R9R8_fiqR8R8R8R8R8R8R7R7R7R7R7R7R7R6R6R6R6R6R6R6R5R5R5R5R5R5R5R4R4R4R4R4R4R4R3R3R3R3R3R3R3R2R2R2R2R2R2R2R1R1R1R1R1R1R1R0R0R0R0R0R0R0快中斷模式中斷模式未定義模式中止模式管理模式系統(tǒng)模式用戶模式異常模式特權(quán)模式**黃色表明用戶或系統(tǒng)模式使用的一般寄存器已被異常模式特定的另一寄存器所替代45SPSR_fiqSPSR_irqSPSR_undSPSR_a1.通用寄存器通用寄存器(R0~R15)可分成3類:(1)不分組寄存器R0~R7R0~R7是不分組寄存器,在所有的處理器模式下,它們每一個(gè)都訪問(wèn)同樣的32位物理寄存器。它們是真正的通用寄存器,沒(méi)有體系結(jié)構(gòu)所隱含的特殊用途。(2)分組寄存器R8~R14R8~R14是分組寄存器。它們每一個(gè)訪問(wèn)的物理寄存器取決于當(dāng)前的處理器模式。每種處理器模式有專用的分組寄存器用于快速異常處理。若要訪問(wèn)特定的物理寄存器而不依賴于當(dāng)前的處理器模式,則要使用規(guī)定的名字。461.通用寄存器通用寄存器(R0~R15)可分成3類:46寄存器R8~R12各有兩組物理寄存器。一組為FIQ模式,另一組為除FIQ以外的其他模式。第1組訪問(wèn)R8_fiq~R12_fiq,第二組訪問(wèn)R8_usr~R12_usr。獨(dú)立的FIQ模式允許快速中斷處理。寄存器R13、R14各有6個(gè)分組的物理寄存器。1個(gè)用于用戶模式和系統(tǒng)模式,而其他5個(gè)分別用于5種異常模式。訪問(wèn)時(shí)需要指定其模式名。名字形式如下:R13_<mode>R14_<mode>其中,<mode>可以從usr、svc、abt、und、irq和fiq6種模式中選取一個(gè)。
47寄存器R8~R12各有兩組物理寄存器。一組為FIQ模式,另一寄存器R13通常用作堆棧指針,稱作SP。每種異常模式都有自己的分組R13。通常R13應(yīng)當(dāng)被初始化成指向異常模式分配的堆棧。在異常處理程序的入口將用到的其他寄存器的值保存到堆棧中。返回時(shí),重新將這些值加載到寄存器。這種異常處理方法保證了異常出現(xiàn)后不會(huì)導(dǎo)致執(zhí)行程序的狀態(tài)不可靠。48寄存器R13通常用作堆棧指針,稱作SP。48寄存器R14用作子程序鏈接寄存器,也稱為鏈接寄存器LR(LinkRegister)。當(dāng)執(zhí)行帶鏈接轉(zhuǎn)移(BL)指令時(shí),R14得到R15的拷貝。在其他情況下,將R14當(dāng)做通用寄存器。類似地,當(dāng)中斷或異常出現(xiàn)時(shí),或中斷或異常程序執(zhí)行BL指令時(shí),相應(yīng)的分組寄存器R14_svc、R14_irq、R14_fiq、R14_abt和R14_und用來(lái)保存R15的返回值。49寄存器R14用作子程序鏈接寄存器,也稱為鏈接寄存器LR(Li應(yīng)用提示:FIQ模式有7個(gè)分組的寄存器R8~R14映射為R8_fiq~R14_fiq。在ARM狀態(tài)下,F(xiàn)IQ處理中使用R8~R14沒(méi)必要保存。User、IRQ、Supervisor、Abort和Undefined模式每一種都包含兩個(gè)分組的寄存器R13和R14的映射,允許每種模式都有自己的堆棧和鏈接寄存器。50應(yīng)用提示:50(3)程序計(jì)數(shù)器R15寄存器R15用作程序計(jì)數(shù)器PC。在ARM狀態(tài),位[1:0]為0,位[31:2]保存PC。在Thumb狀態(tài)下,位[0]為0,位[31:1]保存PC。程序計(jì)數(shù)器用于特殊場(chǎng)合。① 讀程序計(jì)數(shù)器。指令讀出的R15的值是指令地址加上8個(gè)字節(jié)。由于ARM指令始終是字對(duì)準(zhǔn)的,所以讀出結(jié)果值的位[1:0]總是0(在Thumb狀態(tài)下,情況有所變化)。讀PC主要用于快速地對(duì)臨近的指令和數(shù)據(jù)進(jìn)行位置無(wú)關(guān)尋址,包括程序中的位置無(wú)關(guān)轉(zhuǎn)移。②
寫程序計(jì)數(shù)器。寫R15的通常結(jié)果是將寫到R15中的值作為指令地址,并以此地址發(fā)生轉(zhuǎn)移。由于ARM指令要求字對(duì)準(zhǔn),通常希望寫到R15中值的位[1:0]=0b00。51(3)程序計(jì)數(shù)器R15512.程序狀態(tài)寄存器在所有處理器模式下都可以訪問(wèn)當(dāng)前程序狀態(tài)寄存器CPSR(CurrentProgramStatusRegister)。CPSR包含條件碼標(biāo)志、中斷禁止位、當(dāng)前處理器模式以及其他狀態(tài)和控制信息。每種異常模式都有一個(gè)程序狀態(tài)保存寄存器SPSR(SavedProgramStatusRegister)。當(dāng)異常出現(xiàn)時(shí),SPSR用于保存CPSR的狀態(tài)。CPSR和SPSR的格式如下:M0M1M2M3M4TFIDNM(RAZ)VCZN31302928876543210條件碼狀態(tài)標(biāo)志位中斷禁止控制位Thumb控制位模式控制位保留位,用做以后的擴(kuò)展522.程序狀態(tài)寄存器M0M1M2M3M4TFIDNM(RAZ)(1)條件碼標(biāo)志N、Z、C、V(Negative、Zero、Carry、overflow)位稱作條件碼標(biāo)志(ConditionCodeFlag),經(jīng)常以標(biāo)志(Flag)引用。CPSR中的條件碼標(biāo)志可由大多數(shù)指令檢測(cè)以決定指令是否執(zhí)行。通常條件碼標(biāo)志通過(guò)執(zhí)行下述指令進(jìn)行修改比較指令(CMN、CMP、TEQ、TST)一些算術(shù)運(yùn)算、邏輯運(yùn)算和傳送指令,它們的目的寄存器不是R15。這些指令中大多數(shù)同時(shí)有標(biāo)志保留變量和標(biāo)志設(shè)置變量,后者通過(guò)在指令助記符后加上字符“S”來(lái)選定。加“S”表示進(jìn)行標(biāo)志設(shè)置。53(1)條件碼標(biāo)志53(2)控制位程序狀態(tài)寄存器PSR(ProgramStatusRegister)的最低8位I、F、T和M[4:0]用作控制位。當(dāng)異常出現(xiàn)時(shí)改變控制位。處理器在特權(quán)模式下時(shí)也可由軟件改變。中斷禁止位:I置1,則禁止IRQ中斷;F置1,則禁止FIQ中斷。T位:T=0,指示執(zhí)行ARM指令;T=l,指示執(zhí)行Thumb指令。模式位:MO、M1、M2、M3和M4(M[4:0])是模式位,這些位決定處理器的工作模式,如表4—4所列。54(2)控制位54M[4:0]模式可訪問(wèn)的寄存器l0000用戶PC、R14~R0、CPSR10001FIQPC、R14_fiq~R8_fiq、R7~R0、CPSR、SPSR_fiq10010IRQPC、R14_irq、R13_irq、R12~R0、CPSR、SPSR_irq10011管理PC、R14_svc、R13_svc、R12~R0、CPSR、SPSR_svc10111中止PC、R14_abt、R13_abt、R12~R0、CPSR、SPSR_abt11011未定義PC、R14_und、R13_und、R12~R0、CPSR、SPSR_und11111系統(tǒng)PC、R14~R0、CPSR表2—4模式位55M[4:0]模式可訪問(wèn)的寄存器l0000用戶PC、R143.Thumb狀態(tài)的寄存器集Thumb狀態(tài)下的寄存器集是ARM狀態(tài)下的寄存器集的子集。程序員可以直接訪問(wèn)8個(gè)通用寄存器(R0~R7)、PC、SP、LR和CPSR。每一種特權(quán)模式都有一組SP、LR和SPSR。如下圖:563.Thumb狀態(tài)的寄存器集56Thumb狀態(tài)的R0~R7與ARM狀態(tài)的R0~R7是一致的。Thumb狀態(tài)的CPSR和SPSR與ARM狀態(tài)的CPSR和SPSR是一致的。Thumb狀態(tài)的SP映射到ARM狀態(tài)的R13。Thumb狀態(tài)的LR映射到ARM狀態(tài)的R14。Thumb狀態(tài)的PC映射到ARM狀態(tài)的PC(R15)。在Thumb狀態(tài)下,寄存器R8~R15(高寄存器)并不是標(biāo)準(zhǔn)寄存器集的一部分。匯編語(yǔ)言編程者能夠有限制地訪問(wèn)它,可以將其用做快速暫存存儲(chǔ)器,可以將R0~R7(低寄存器)中寄存器的值傳送到R8~R15(高寄存器)57Thumb狀態(tài)的R0~R7與ARM狀態(tài)的R0~R7是一致的。58582.2.5異常異常由內(nèi)部或外部源產(chǎn)生并引起處理器處理一個(gè)事件,例如外部中斷或試圖執(zhí)行未定義指令都會(huì)引起異常。在處理異常之前,處理器狀態(tài)必須保留,以便在異常處理程序完成后,原來(lái)的程序能夠重新執(zhí)行。同一時(shí)刻可能出現(xiàn)多個(gè)異常。ARM支持7種類型的異常。異常出現(xiàn)后,強(qiáng)制從異常類型對(duì)應(yīng)的固定存儲(chǔ)器地址開(kāi)始執(zhí)行程序。這些固定的地址稱為異常向量(ExceptionVectors)。表4—5列出了異常的類型以及處理這些異常的處理器模式。592.2.5異常表4—5列出了異常的類型以及處理這些異異常類型模式正常地址高向量地址復(fù)位管理0x000000000xFFFF0000未定義指令未定義0x000000040xFFFF0004軟件中斷(SWl)管理0x000000080xFFFF0008預(yù)取中止(取指令存儲(chǔ)器中止)中止0x0000000C0xFFFF000C數(shù)據(jù)中止(數(shù)據(jù)訪問(wèn)存儲(chǔ)器中止)中止0x000000100xFFFF0010IRQ(中斷)IRQ0x000000180xFFFF0018FIQ(快速中斷)FIQ0x000000lC0xFFFF001C表4—5異常處理模式60異常類型模式正常地址高向量地址復(fù)位管理0x0000000當(dāng)異常出現(xiàn)時(shí),異常模式分組的R14和SPSR用于保存狀態(tài)。R14保存程序計(jì)數(shù)器PC(R15);SPSR保存當(dāng)前狀態(tài)寄存器CPSR;當(dāng)處理異常返回時(shí),把SPSR傳送到CPSR,R14傳送到PC。這可用兩種方法自動(dòng)完成:使用帶“S”的數(shù)據(jù)處理指令,將PC作為目的寄存器;使用帶恢復(fù)CPSR的多加載指令。61當(dāng)異常出現(xiàn)時(shí),異常模式分組的R14和SPSR用于保存狀態(tài)。6關(guān)于異常的說(shuō)明:① 復(fù)位。處理器上一旦有復(fù)位輸入,ARM處理器立刻停止執(zhí)行當(dāng)前指令。復(fù)位后,ARM處理器在禁止中斷的管理模式下,從地址0x00000000或OxFFFF0000開(kāi)始執(zhí)行指令。② 未定義指令異常。當(dāng)ARM處理器執(zhí)行協(xié)處理器指令時(shí),它必須等待任一外部協(xié)處理器應(yīng)答后,才能真正執(zhí)行這條指令。若協(xié)處理器沒(méi)有響應(yīng),就會(huì)出現(xiàn)未定義指令異常。若試圖執(zhí)行未定義的指令,也會(huì)出現(xiàn)未定義指令異常。未定義指令異常可用于在沒(méi)有物理協(xié)處理器(硬件)的系統(tǒng)上,對(duì)協(xié)處理器進(jìn)行軟件仿真,或在軟件仿真時(shí)進(jìn)行指令擴(kuò)展。62關(guān)于異常的說(shuō)明:62軟件中斷異常。 軟件中斷異常指令SWI(SoftWareInterrupt)進(jìn)入管理模式,以請(qǐng)求特定的管理(操作系統(tǒng))函數(shù)。④ 預(yù)取中止異常(取指令存儲(chǔ)器中止)。存儲(chǔ)器系統(tǒng)發(fā)出存儲(chǔ)器中止(Abort)信號(hào)。響應(yīng)取指激活的中止,標(biāo)記所取的指令無(wú)效。若處理器試圖執(zhí)行無(wú)效指令,則產(chǎn)生預(yù)取中止異常。若指令未執(zhí)行(例如指令在流水線中發(fā)生了轉(zhuǎn)移),則不發(fā)生預(yù)取中止。63軟件中斷異常。63⑤ 數(shù)據(jù)中止異常(數(shù)據(jù)訪問(wèn)存儲(chǔ)器中止)。存儲(chǔ)器系統(tǒng)發(fā)出存儲(chǔ)器中止信號(hào)。響應(yīng)數(shù)據(jù)訪問(wèn)(加載或存儲(chǔ))激活中止,標(biāo)記數(shù)據(jù)為無(wú)效。在后面的任何指令或異常改變CPU狀態(tài)之前,數(shù)據(jù)中止異常發(fā)生。⑥ 中斷請(qǐng)求(IRQ)異常。通過(guò)處理器上的IRQ輸入引腳,由外部產(chǎn)生IRQ異常。IRQ異常的優(yōu)先級(jí)比FIQ異常的低。當(dāng)進(jìn)入FIQ處理時(shí),會(huì)屏蔽掉IRQ異常。⑦ 快速中斷請(qǐng)求(FIQ)異常。通過(guò)處理器上的FIQ輸入引腳,由外部產(chǎn)生FIQ異常。FIQ被設(shè)計(jì)成支持?jǐn)?shù)據(jù)傳送和通道處理,并有足夠的私有寄存器,從而在這樣的應(yīng)用中可避免對(duì)寄存器保存的需求,減少了上下文切換的總開(kāi)銷。64⑤ 數(shù)據(jù)中止異常(數(shù)據(jù)訪問(wèn)存儲(chǔ)器中止)。存儲(chǔ)器系統(tǒng)發(fā)出存儲(chǔ)器表4—6異常優(yōu)先級(jí)優(yōu)先級(jí)異常1(最高)復(fù)位2數(shù)據(jù)中止3FIQ4IRQ5指令預(yù)取中止6(最低)未定義指令、SWI異常的優(yōu)先級(jí):65表4—6異常優(yōu)先級(jí)優(yōu)先級(jí)異常1(最高)復(fù)位2數(shù)據(jù)中止2.2.6存儲(chǔ)器和存儲(chǔ)器映射I/0ARM體系結(jié)構(gòu)允許使用現(xiàn)有的存儲(chǔ)器和I/O器件進(jìn)行各種各樣的存儲(chǔ)器系統(tǒng)設(shè)計(jì)。1.地址空間ARM體系結(jié)構(gòu)使用232個(gè)8位字節(jié)的單一、線性地址空間。將字節(jié)地址作為無(wú)符號(hào)數(shù)看待,范圍為0~232—1。將地址空間看作由230個(gè)32位的字組成。每個(gè)字的地址是字對(duì)準(zhǔn)的,故地址可被4整除。字對(duì)準(zhǔn)地址是A的字由地址為A、A+1、A+2和A+3的4個(gè)字節(jié)組成。地址空間也看作由231個(gè)16位的半字組成,每個(gè)半字的地址是半字對(duì)準(zhǔn)的,故地址可被2整除。半字對(duì)準(zhǔn)地址是A的半字由地址為A和A+1的2個(gè)字節(jié)組成。662.2.6存儲(chǔ)器和存儲(chǔ)器映射I/066地址計(jì)算通常由普通的整數(shù)指令完成。這意味著若計(jì)算的地址在地址空間中上溢或下溢,通常就會(huì)環(huán)繞,計(jì)算結(jié)果縮減模232。然而,為了減少以后地址空間擴(kuò)展的不兼容,程序應(yīng)該編寫成使地址的計(jì)算結(jié)果位于0~232—1的范圍內(nèi)。大多數(shù)轉(zhuǎn)移指令通過(guò)把指令指定的偏移量加到PC的值上來(lái)計(jì)算目的地址,然后把結(jié)果寫回到PC。計(jì)算公式如下: 目的地址=當(dāng)前指令的地址+8+偏移量 如果計(jì)算結(jié)果在地址空間中上溢或下溢,則指令因地址環(huán)繞從而是不可預(yù)知的。因此,向前轉(zhuǎn)移不應(yīng)當(dāng)超出地址0xFFFFFFFF,向后轉(zhuǎn)移不應(yīng)當(dāng)超出地址Ox00000000。每條指令執(zhí)行之后,根椐指令正常的順序執(zhí)行,則: 目的地址=當(dāng)前指令的地址+4 若計(jì)算從地址空間的頂部溢出,那么從技術(shù)上講,結(jié)果是不可預(yù)知的。換句話說(shuō),程序在執(zhí)行完地址OxFFFFFFFC的指令后,不應(yīng)當(dāng)依據(jù)順序執(zhí)行來(lái)執(zhí)行地址Ox00000000的指令。67地址計(jì)算通常由普通的整數(shù)指令完成。這意味著若計(jì)算的地址在地址2.存儲(chǔ)器格式對(duì)于字對(duì)準(zhǔn)的地址A,地址空間規(guī)則要求:地址位于A的字由地址為A、A+1、A+2和A+3的字節(jié)組成;地址位于A的半字由地址為A和A+1的字節(jié)組成;地址位于A+2的半字由地址為A+2和A+3的字節(jié)組成;地址位于A的字由地址為A和A+2的半字組成。682.存儲(chǔ)器格式68存儲(chǔ)系統(tǒng)使用兩種映射方法:小端對(duì)齊方式存儲(chǔ)系統(tǒng)(低字節(jié)在前高字節(jié)在后):字對(duì)準(zhǔn)地址中的字節(jié)或半字是該地址中字的最低有效字節(jié)或半字;半字對(duì)準(zhǔn)地址中的字節(jié)是該地址中的半字的最低有效字節(jié)。地址A+1的字節(jié)地址A+2的字節(jié)地址A的字節(jié)地址A的半字地址A+2的半字地址A的字3124231615870地址A+3的字節(jié)小端對(duì)齊方式存儲(chǔ)系統(tǒng)69存儲(chǔ)系統(tǒng)使用兩種映射方法:地址A+1的字節(jié)地址A+2的字節(jié)地大端對(duì)齊方式存儲(chǔ)系統(tǒng)(高字節(jié)在前低字節(jié)在后)
:字對(duì)準(zhǔn)地址中的字節(jié)或半字是該地址中字的最高有效字節(jié)或半字;半字對(duì)準(zhǔn)地址中的字節(jié)是該地址中的半字的最高有效字節(jié)。對(duì)于字對(duì)準(zhǔn)地址A,圖4-22表明了地址A中的字,地址A和地址A+2中的半字,以及地址A、A+1、A+2和A+3中的字節(jié)在每種存儲(chǔ)系統(tǒng)中是如何互相映射的。地址A+2的字節(jié)地址A+1的字節(jié)地址A+3的字節(jié)地址A+2的半字地址A的半字地址A的字3124231615870地址A的字節(jié)大端對(duì)齊方式存儲(chǔ)系統(tǒng)70大端對(duì)齊方式存儲(chǔ)系統(tǒng)(高字節(jié)在前低字節(jié)在后):地址A+2的3.非對(duì)準(zhǔn)的存儲(chǔ)器訪問(wèn)問(wèn)題ARM體系結(jié)構(gòu)通常希望所有的存儲(chǔ)器訪問(wèn)能適當(dāng)?shù)貙?duì)準(zhǔn)。用于字訪問(wèn)的地址通常應(yīng)當(dāng)字對(duì)準(zhǔn);用于半字訪問(wèn)的地址通常應(yīng)當(dāng)半字對(duì)準(zhǔn);未按上述方式對(duì)準(zhǔn)的存儲(chǔ)器訪問(wèn)稱作非對(duì)準(zhǔn)的存儲(chǔ)器訪問(wèn)。若在ARM態(tài)執(zhí)行期間,將沒(méi)有字對(duì)準(zhǔn)的地址寫到PC(R15)中,那么結(jié)果地址的位[1:0]被忽略。若在Thumb態(tài)執(zhí)行期間,將沒(méi)有半字對(duì)準(zhǔn)的地址寫到PC(R15)中,則地址的位[0]通常忽略。當(dāng)執(zhí)行無(wú)效代碼時(shí),從R15讀值的結(jié)果對(duì)ARM狀態(tài)執(zhí)行來(lái)說(shuō)總是位[1:0]為0,對(duì)Thumb狀態(tài)執(zhí)行來(lái)說(shuō)總是位[0]為0。713.非對(duì)準(zhǔn)的存儲(chǔ)器訪問(wèn)問(wèn)題714.存儲(chǔ)器映射I/OARM系統(tǒng)的輸入輸出空間與存儲(chǔ)器空間統(tǒng)一編址;完成I/O功能的標(biāo)準(zhǔn)方法是使用存儲(chǔ)器地址映射I/O地址。從存儲(chǔ)器映射I/O地址加載(讀入)用于輸入。向存儲(chǔ)器映射I/O地址存儲(chǔ)用于輸出。思考題:
分析比較8086CPU、8051CPU、和ARM在程序空間、數(shù)據(jù)空間和輸入/輸出空間結(jié)構(gòu)上的異同點(diǎn)?724.存儲(chǔ)器映射I/O思考題: 分析比較8086CPU、805第2章ARM體系結(jié)構(gòu)
參考書:《ARM嵌入式處理器結(jié)構(gòu)與應(yīng)用基礎(chǔ)》馬忠梅,馬廣云,徐英慧,等北京航空航天大學(xué)出版社73第2章ARM體系結(jié)構(gòu)參考書:《ARM嵌入式處理器結(jié)構(gòu)與2.1ARM體系結(jié)構(gòu)概述2.1.1ARM體系結(jié)構(gòu)的特點(diǎn)0、概述:ARM公司ARM即AdvancedRISCMachines的縮寫。ARM公司是知識(shí)產(chǎn)權(quán)(IP)供應(yīng)商,成立于1990。ARM公司本身不生產(chǎn)芯片,靠轉(zhuǎn)讓設(shè)計(jì)許可,由合作伙伴公司來(lái)生產(chǎn)各具特色的芯片。ARM作為32位嵌入式RISC微處理器業(yè)界的領(lǐng)先供應(yīng)商,商業(yè)模式的強(qiáng)大之處在于它在世界范圍有超過(guò)100個(gè)合作伙伴——包括半導(dǎo)體工業(yè)的著名公司,從而保證了大量的開(kāi)發(fā)工具和豐富的第三方資源,它們共同保證了基于ARM處理器核的設(shè)計(jì)可以很快投入市場(chǎng)。742.1ARM體系結(jié)構(gòu)概述2.1.1ARM體系結(jié)構(gòu)的特ARM處理器的3大特點(diǎn)是:耗電少,成本低,功能強(qiáng);16/32位雙指令集;全球眾多合作伙伴保證供應(yīng)。ARM體系結(jié)構(gòu)基于精簡(jiǎn)指令集計(jì)算機(jī)(RISC)原理。傳統(tǒng)的CISC指令集計(jì)算機(jī)隨著計(jì)算機(jī)的發(fā)展引入了各種各樣的復(fù)雜指令,使得指令集和為實(shí)現(xiàn)這些指令的計(jì)算機(jī)體系結(jié)構(gòu)越來(lái)越復(fù)雜,已經(jīng)不堪重負(fù)。經(jīng)過(guò)大量的研究和分析,發(fā)現(xiàn)在CISC的指令集中,各種指令的使用頻度相差懸殊。大概有20%的指令被反復(fù)使用,使用量約占整個(gè)程序的80%;而有80%左右的指令則很少使用,其使用量約占整個(gè)程序的20%。 這就是所謂的20%—80%規(guī)律。
75ARM處理器的3大特點(diǎn)是:傳統(tǒng)的CISC指令集計(jì)算機(jī)隨著計(jì)算RISC指令集和相關(guān)的譯碼機(jī)制比復(fù)雜指令集計(jì)算機(jī)(CISC)的設(shè)計(jì)更簡(jiǎn)單。這種簡(jiǎn)單性得到了:高指令吞吐率;出色的實(shí)時(shí)中斷響應(yīng);體積小、性價(jià)比高的處理器宏單元。16位Thumb指令集,允許軟件16位編碼使占用的存儲(chǔ)器空間節(jié)省高達(dá)35%,然而保留了32位系統(tǒng)所有的優(yōu)勢(shì)。76RISC指令集和相關(guān)的譯碼機(jī)制比復(fù)雜指令集計(jì)算機(jī)(CISC)ARM還提供了兩個(gè)前沿特性——嵌入式ICE—RT邏輯和嵌入式跟蹤宏核系列,用于輔助嵌入式處理器核的、高集成的SoC器件的調(diào)試。允許在代碼的任何部分——甚至在ROM中設(shè)置斷點(diǎn)。ARM當(dāng)前有5個(gè)產(chǎn)品系列:ARM7、ARM9、ARM9E、ARM10和SecurCore。進(jìn)一步的產(chǎn)品來(lái)自于合作伙伴,例如IntelXScale微體系結(jié)構(gòu)和StrongARM產(chǎn)品。77ARM還提供了兩個(gè)前沿特性——嵌入式ICE—RT邏輯和嵌入式1.ARM的RISC型處理器結(jié)構(gòu)中央控制器沒(méi)有采用微程序的方式。采用了硬接線PLA的方式。減少?gòu)?fù)雜功能的指令,選用使用頻度最高的指令;簡(jiǎn)化處理器的結(jié)構(gòu),減少處理器的集成度;采用32位定長(zhǎng)指令。除了單機(jī)器周期執(zhí)行1條指令外,每條指令具有多種操作功能,提高了指令使用效率。采用流水線結(jié)構(gòu),使每一條指令平均在一個(gè)機(jī)器周期內(nèi)完成,以提高處理器的速度。采用多寄存器的結(jié)構(gòu),使指令的操作盡可能在寄存器之間進(jìn)行。采用Load/Store結(jié)構(gòu),即只有Load/Store(加載/存儲(chǔ))指令可與存儲(chǔ)器打交道,減少訪問(wèn)存儲(chǔ)器的頻度,節(jié)約指令執(zhí)行時(shí)間。為了進(jìn)一步提高指令和數(shù)據(jù)的存/取速度,有的還增加指令快存I—Cache和數(shù)據(jù)快存D—Cache;781.ARM的RISC型處理器結(jié)構(gòu)中央控制器沒(méi)有采用微程序的方2.Thumb指令集新型ARM體系結(jié)構(gòu)在32位指令集的基礎(chǔ)上又定義了16位的Thumb指令集,可以使程序存儲(chǔ)器更小。Thumb指令集比通常的8位和16位CISC/RISC處理器具有更好的代碼密度,而芯片面積只增加6%。792.Thumb指令集新型ARM體系結(jié)構(gòu)在32位指令集的基礎(chǔ)上3.多處理器狀態(tài)模式ARM可以支持7種處理器模式:用戶模式快中斷模式中斷模式管理模式中止模式系統(tǒng)模式未定義模式除了用戶模式外,其余的均為特權(quán)模式。這是ARM的特色之一。多處理器模式可以大大提高ARM處理器的效率,并方便操作系統(tǒng)的設(shè)計(jì)。803.多處理器狀態(tài)模式ARM可以支持7種處理器模式:84.嵌入式在線仿真調(diào)試ARM體系結(jié)構(gòu)的處理器芯片都嵌入了在線仿真ICE—RT邏輯由于ICE—RT邏輯的支持,便于通過(guò)JTAG來(lái)仿真調(diào)試ARM體系結(jié)構(gòu)芯片,從而可以省去價(jià)格昂貴的在線仿真器。在處理器核中還集成了嵌入式跟蹤宏單元(ETM),ETM可以用于監(jiān)控內(nèi)部總線,實(shí)時(shí)跟蹤指令和數(shù)據(jù)的執(zhí)行。814.嵌入式在線仿真調(diào)試ARM體系結(jié)構(gòu)的處理器芯片都嵌入了在線5.靈活和方便的接口ARM體系結(jié)構(gòu)具有協(xié)處理器接口,這樣,既可以使基本的ARM處理器內(nèi)核盡可能小,又可以方便地?cái)U(kuò)充各種功能。ARM允許接16個(gè)協(xié)處理器。ARM處理器核具有片上總線AMBA(AdvancedMicrocontrollerBusArchitecture)。AMBA定義了3組總線:先進(jìn)高性能總線AHB(AdvancedHighperformanceBus);先進(jìn)系統(tǒng)總線ASB(AdvancedSystemBus);先進(jìn)外圍總線APB(AdvancedPeripheralBus)。通過(guò)AMBA可以方便地?cái)U(kuò)充各種處理器及I/O,這樣,可以把DSP、其他處理器和I/O接口(如UART、定時(shí)器和接口等)都集成在一塊芯片中。825.靈活和方便的接口ARM體系結(jié)構(gòu)具有協(xié)處理器接口,這樣,既6、低電壓低功耗的設(shè)計(jì)由于ARM體系結(jié)構(gòu)的處理器主要用于手持式嵌入式系統(tǒng)之中,ARM體系結(jié)構(gòu)在設(shè)計(jì)中十分注意低功耗問(wèn)題。CMOS電路的功耗關(guān)系: Pc=(1/2)·f·VDD2·∑Ag·CLg式中,f為時(shí)鐘頻率;VDD為工作電源電壓;Ag是邏輯門在1個(gè)時(shí)鐘周期內(nèi)翻轉(zhuǎn)的次數(shù)(通常為2);CLg為門的負(fù)載電容。因此,ARM體系結(jié)構(gòu)的設(shè)計(jì)采用了以下措施:降低電源電壓,可工作在3.0V以下。減少門的翻轉(zhuǎn)次數(shù),當(dāng)某個(gè)功能電路不需要時(shí),禁止門翻轉(zhuǎn)。減少門的數(shù)目,即降低芯片的集成度。降低時(shí)鐘頻率(但也會(huì)損失系統(tǒng)的性能)。836、低電壓低功耗的設(shè)計(jì)由于ARM體系結(jié)構(gòu)的處理器主要用于手持2.1.2ARM處理器結(jié)構(gòu)1.ARM體系結(jié)構(gòu)是ARM體系結(jié)構(gòu):32位ALU;31個(gè)32位通用寄存器6個(gè)狀態(tài)寄存器32×8位乘法器32×32位桶形移位寄存器指令譯碼及控制邏輯指令流水線數(shù)據(jù)/地址寄存器。 如圖4—1所示842.1.2ARM處理器結(jié)構(gòu)1.ARM體系結(jié)構(gòu)12FIG4-185FIG4-1132.ARM的流水線結(jié)構(gòu)計(jì)算機(jī)中的1條指令的執(zhí)行可以分若干個(gè)階段:①取指,從存儲(chǔ)器中取出指令(fetch);②譯碼,指令譯碼(dec);③取操作數(shù),假定從寄存器組中取操作數(shù)(reg);④執(zhí)行運(yùn)算(ALU);⑤存儲(chǔ)器訪問(wèn),操作數(shù)與存儲(chǔ)器有關(guān)(mem);⑥結(jié)果寫回寄存器(res)。各個(gè)階段的操作相對(duì)都是獨(dú)立的。因此,采用流水線的重疊技術(shù)可以大大提高系統(tǒng)性能。862.ARM的流水線結(jié)構(gòu)計(jì)算機(jī)中的1條指令的執(zhí)行可以分若干個(gè)階ARM體系結(jié)構(gòu)的單周期3級(jí)流水線
圖4—5ARM單周期3級(jí)流水線取指譯碼執(zhí)行取指譯碼執(zhí)行取指譯碼執(zhí)行時(shí)間12387ARM體系結(jié)構(gòu)的單周期3級(jí)流水線圖4—5ARM單周期3.ARM存儲(chǔ)器結(jié)構(gòu)ARM架構(gòu)的處理器,有的帶有指令Cache和數(shù)據(jù)Cache,但片內(nèi)不帶有片內(nèi)RAM和片內(nèi)ROM,因此,系統(tǒng)所需的RAM和ROM須通過(guò)總線外接。系統(tǒng)所需的RAM和ROM(包括Flash)都通過(guò)總線連接,由于系統(tǒng)的地址范圍較大(232=4GB),有的片內(nèi)還帶有存儲(chǔ)器管理單元MMU。圖4—8ARM外接RAM和ROM883.ARM存儲(chǔ)器結(jié)構(gòu)ARM架構(gòu)的處理器,有的帶有指令Cach圖4—8ARM外接RAM和ROMROMoeRAMoeRAMwe3RAMwe2RAMwe1RAMwe0A1、A0沒(méi)有接入片內(nèi)地址線,他們是確定RAMwe3~RAMwe0的依據(jù)。89圖4—8ARM外接RAM和ROMROMoeRAMoeRA4.ARMI/O結(jié)構(gòu)ARM架構(gòu)中的處理器核和處理器內(nèi)核一般都沒(méi)有I/O部件和模塊,ARM架構(gòu)處理器的I/O可通過(guò)AMBA(先進(jìn)微控制總線架構(gòu))總線來(lái)擴(kuò)充。ARM架構(gòu)中的I/O直接存儲(chǔ)器存取DMA中斷結(jié)構(gòu)。
904.ARMI/O結(jié)構(gòu)ARM架構(gòu)中的處理器核和處理器內(nèi)(1) 存儲(chǔ)器映射I/O一般的I/O(如串行接口)有若干個(gè)寄存器:發(fā)送數(shù)據(jù)寄存器(只寫);數(shù)據(jù)接收寄存器(只讀);控制寄存器、狀態(tài)寄存器(只讀);中斷允許寄存器; 等。這些寄存器都需要相應(yīng)的I/O端口地址。ARM采用了存儲(chǔ)器映射I/O的方式,即把I/O端口地址作為特殊的存儲(chǔ)器地址。
91(1) 存儲(chǔ)器映射I/O19(2)直接存儲(chǔ)器存取DMAARM架構(gòu)的處理器一般都沒(méi)有DMA部件,只有在一些高檔的ARM架構(gòu)處理器中具有DMA的功能。
(3)中斷IRQ和快速中斷FIQ一般的ARM沒(méi)有DMA功能,為了能提高I/O處理能力,系統(tǒng)安排了快速中斷FIQ(FastInterrupt),而對(duì)普通I/O的中斷源仍安排了一般中斷IRQ。要提高中斷響應(yīng)的速度,在設(shè)計(jì)中可以采用以下辦法:提供大量后備寄存器,在中斷響應(yīng)及返回時(shí),作為保護(hù)現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)的上下文切換(ContextSwitching)之用。采用片內(nèi)RAM結(jié)構(gòu),這樣可以加速異常處理(包括中斷)的進(jìn)入時(shí)間。Cache和地址變換后備緩沖器TLB(TranslationLookasideBuffer)采用鎖住(Lockeddown)方式以確保臨界代碼段不受“不命中”所產(chǎn)生的影響。92(2)直接存儲(chǔ)器存取DMAARM架構(gòu)的處理器一般都沒(méi)有D5.ARM協(xié)處理器接口ARM可以通過(guò)增加協(xié)處理器來(lái)支持一個(gè)通用的指令集的擴(kuò)充;也可以通過(guò)未定義指令陷阱(Trap)來(lái)支持協(xié)處理器的軟件仿真。935.ARM協(xié)處理器接口ARM可以通過(guò)增加協(xié)處理器來(lái)支持一個(gè)通ARM可以擴(kuò)展16個(gè)協(xié)處理器,每個(gè)協(xié)處理器可有16個(gè)寄存器。MMU和保護(hù)單元的系統(tǒng)控制都采用CPl5協(xié)處理器;JTAG調(diào)試中的協(xié)處理器為CPl4,即調(diào)試通信通道DCC(DebugCommunicationChannel)協(xié)處理器號(hào)功能15系統(tǒng)控制14調(diào)試控制器13~8保留7~4用戶3~0保留94ARM可以擴(kuò)展16個(gè)協(xié)處理器,每個(gè)協(xié)處理器可有16個(gè)寄存器。6.ARM的AMBA接口ARM處理器內(nèi)核可通過(guò)內(nèi)部總線擴(kuò)充Cache等部件,或通過(guò)協(xié)處理器接口擴(kuò)充各種協(xié)處理器;也可以通過(guò)先進(jìn)微控制器總線架構(gòu)AMBA(AdvancedMicrocontrollerBusArehitecture)來(lái)擴(kuò)展不同體系架構(gòu)的宏單元及I/O部件。AMBA事實(shí)上已成為片上總線OCB(OnChipBus)標(biāo)準(zhǔn)。AMBA有如下3類總線:先進(jìn)高性能總線AHB(AdvancedHigh-performanceBus);先進(jìn)系統(tǒng)總線ASB(AdvancedSystemBus)先進(jìn)外圍總線APB(AdvancedPeripheralBus)。 AMBA結(jié)構(gòu)如圖4—9所示。956.ARM的AMBA接口ARM處理器內(nèi)核可通過(guò)內(nèi)部總線96247.ARM的JTAG調(diào)試接口JTAG的基本知識(shí)什么是JTAG? JTAG是JointTestActionGroup的縮寫,基于IEEE1149.1標(biāo)準(zhǔn)。使用JTAG的優(yōu)點(diǎn)JTAG的建立使得集成電路固定在PCB上,只通過(guò)邊掃描便可以通過(guò)測(cè)試。在ARM7TDMI處理器中,可以通過(guò)JTAG直接控制ARM的內(nèi)部總線,I/O口等信息,從而達(dá)到調(diào)試的目的。977.ARM的JTAG調(diào)試接口JTAG的基本知識(shí)25JTAG調(diào)試接口的結(jié)構(gòu)如圖4—10所示。測(cè)試訪問(wèn)端口TAP(TestAccessPort)控制器;旁路(Bypass)寄存器;指令寄存器;數(shù)據(jù)寄存器;與JTAG接口兼容的ARM架構(gòu)處理器。98JTAG調(diào)試接口的結(jié)構(gòu)如圖4—10所示。26處理器的每個(gè)引腳都有一個(gè)移位寄存單元,稱為邊界掃描單元BSC(BoundaryScanCell):BSC將JTAG電路與處理器核邏輯電路聯(lián)系起來(lái),同時(shí),隔離了處理器核邏輯電路與芯片引腳;所有邊界掃描單元的串聯(lián)構(gòu)成了邊界掃描寄存器BSR;BSR寄存器電路僅在進(jìn)行JTAG測(cè)試時(shí)有效,在處理器核正常工作時(shí)無(wú)效(直通)。99處理器的每個(gè)引腳都有一個(gè)移位寄存單元,稱為邊界掃描單元BSC芯核邏輯BSCBSCBSCBSCBSCBSC100芯核邏輯BSCBSCBSCBSCBSCBSC28
(1)JTAG的控制寄存器測(cè)試訪問(wèn)端口TAP控制器:對(duì)嵌入在ARM處理器核內(nèi)部的測(cè)試功能電路進(jìn)行訪問(wèn)控制,它是一個(gè)同步狀態(tài)機(jī)。通過(guò)測(cè)試模式選擇TMS和時(shí)鐘信號(hào)TCK來(lái)控制狀態(tài)的轉(zhuǎn)換,實(shí)現(xiàn)IEEEll49.1標(biāo)準(zhǔn)所確定的測(cè)試邏輯電路的工作時(shí)序。指令寄存器:它是串行移位寄存器,通過(guò)它可以串行輸入執(zhí)行各種操作指令。數(shù)據(jù)寄存器組:它是一組串行移位寄存器。操作指令被串行裝入由當(dāng)前指令所選擇的數(shù)據(jù)寄存器,隨著操作的進(jìn)行,測(cè)試結(jié)果被串行移出。其中:器件ID寄存器:讀出在芯片內(nèi)固化的ID號(hào)。旁路寄存器:1位移位寄存器,用1個(gè)時(shí)鐘的延遲把TDI連至TDO,使測(cè)試者在同一電路板測(cè)試循環(huán)內(nèi)訪問(wèn)其他器件。邊界掃描寄存器(掃描鏈):截取ARM處理器核與芯片引腳之間所有信號(hào),組成專用的寄存器鏈。101(1)JTAG的控制寄存器測(cè)試訪問(wèn)端口TAP控制器:
(2)JTAG測(cè)試信號(hào)TRST 測(cè)試復(fù)位輸入信號(hào),測(cè)試接口初始化。TCK 測(cè)試時(shí)鐘,在TCK時(shí)鐘的同步作用下,通過(guò)TDI和TDO引腳串行移入/移出數(shù)據(jù)或指令,同時(shí)也為測(cè)試訪問(wèn)端口TAP控制器的狀態(tài)機(jī)提供時(shí)鐘。TMS 測(cè)試模式選擇信號(hào),在TCK同步下控制測(cè)試接口狀態(tài)機(jī)的操作。TDI 測(cè)試數(shù)據(jù)輸入線,其串行輸入數(shù)據(jù)送至邊界掃描寄存器或指令寄存器(由TAP控制器的當(dāng)前狀態(tài)及已保存在指令寄存器中的指令來(lái)控制)。TDO 測(cè)試數(shù)據(jù)輸出線,把從邊界掃描鏈采樣的數(shù)據(jù)傳播至串行測(cè)試電路中的下一個(gè)芯片JTAG可以對(duì)同一塊電路板上多塊芯片進(jìn)行測(cè)試。連接方法如下:TRST、TCK和TMS信號(hào)并行接至各個(gè)芯片;前1塊芯片的TDO接至下1塊芯片的TDI。102(2)JTAG測(cè)試信號(hào)TRST 測(cè)試復(fù)位輸入信號(hào),(3)TAP狀態(tài)機(jī)測(cè)試訪問(wèn)端口TAP控制器是一個(gè)16狀態(tài)的有限狀態(tài)機(jī),為JTAG提供控制邏輯,控制進(jìn)入JTAG結(jié)構(gòu)中各種寄存器內(nèi)數(shù)據(jù)的掃描與操作。狀態(tài)轉(zhuǎn)移圖如圖4—11所示,在TCK同步時(shí)鐘上升沿的TMS引腳的邏輯電壓決定狀態(tài)轉(zhuǎn)移的過(guò)程。任一狀態(tài)下,讓TMS=1可以經(jīng)5個(gè)TCK回到復(fù)位狀態(tài)。由TDI引腳輸入到器件的掃描信號(hào)有2個(gè)狀態(tài)變化路徑:用于指令移入至指令寄存器,或用于數(shù)據(jù)移入至相應(yīng)的數(shù)據(jù)寄存器(該數(shù)據(jù)寄存器由當(dāng)前指令確定)。狀態(tài)圖中的每個(gè)狀態(tài)都是TAP控制器進(jìn)行數(shù)據(jù)處理所需要的,這些處理包括向引腳施加激勵(lì)信號(hào)、捕獲輸入數(shù)據(jù)、加載指令以及將邊界掃描寄存器中數(shù)據(jù)移入/移出103(3)TAP狀態(tài)機(jī)測(cè)試訪問(wèn)端口TAP控制器是一個(gè)16狀狀態(tài)轉(zhuǎn)換發(fā)生在TCK同步時(shí)鐘脈沖的上升沿104狀態(tài)轉(zhuǎn)換發(fā)生在TCK同步時(shí)鐘脈沖的上升沿32(4)JTAG接口控制指令控制指令用于控制JTAG接口各種操作,包括公用(Public)指令和私有(Private)指令。最基本的公用指令有:BYPASS旁路片上系統(tǒng)邏輯指令,用于未被測(cè)試的芯片,即把TDI與TDO旁路(1個(gè)時(shí)鐘延遲)。EXTEST片外電路測(cè)試指令,用于測(cè)試電路板上芯片之間的互連。如圖4—11中的引腳狀態(tài)被捕獲在captureDR;并在shiftDR狀態(tài)時(shí),通過(guò)TDO引腳把寄存器中數(shù)據(jù)移出,同時(shí)新的數(shù)據(jù)通過(guò)TDI引腳移入,該數(shù)據(jù)在更新updateDR狀態(tài)中用于邊界掃描寄存器輸出。IDCODE讀芯片ID碼指令,用于識(shí)別電路板上的芯片。此時(shí),ID寄存器在TDI與TDO引腳之間,在captureDR狀態(tài)中,芯片的ID復(fù)制至ID寄存器,然后在shiftDR狀態(tài)中移出。INTEST片內(nèi)測(cè)試指令,邊界掃描寄存器位于TDI與TDO引腳之間,處理器核邏輯輸入和輸出狀態(tài)被邊界掃描寄存器捕獲和控制。以上是ARM架構(gòu)最基本的公用指令,各種處理器核可以根據(jù)需要進(jìn)行擴(kuò)展。105(4)JTAG接口控制指令控制指令用于控制JTAG接口2.1.3ARM處理器內(nèi)核ARM體系結(jié)構(gòu)的處理器內(nèi)核有ARM7TDMI、ARM8、ARM9TDMI、ARM10TDMI及ARM11TDMI等。ARM7TDMI處理器內(nèi)核ARM7TDMI處理器是ARM7處理器系列成員之一,是目前應(yīng)用很廣的32位高性能嵌入式RISC處理器。TDMI后綴的含義:T 具有16位壓縮指令集Thumb;D 支持在片調(diào)試(Debug),允許處理器響應(yīng)調(diào)試請(qǐng)求暫停;M 增強(qiáng)型乘法器(Multiplier),比以前處理器性能更高,產(chǎn)生全64位結(jié)果;I 提供嵌入式ICE硬件,支持片上斷點(diǎn)調(diào)試。ARM7處理器核采用了3級(jí)流水線結(jié)構(gòu),指令執(zhí)行分為取指、譯碼和執(zhí)行等3個(gè)階段。ARM7TDMI的體系結(jié)構(gòu)圖如圖4—12所示。1062.1.3ARM處理器內(nèi)核ARM體系結(jié)構(gòu)的處理器內(nèi)核有A113個(gè)掃描單元:包括ARM核所有I/O引腳、地址數(shù)據(jù)總線引腳和輸入輸出控制引腳。33個(gè)掃描單元:數(shù)據(jù)總線[D31:D0]和一個(gè)端點(diǎn)控制信號(hào)38個(gè)掃描單元:通過(guò)控制ICE宏單元,實(shí)現(xiàn)對(duì)ARM執(zhí)行指令的斷點(diǎn)、觀察點(diǎn)的控制。107113個(gè)掃描單元:33個(gè)掃描單元:38個(gè)掃描單元:35ARM7TDMI內(nèi)核的JTAG掃描鏈結(jié)構(gòu)(主要包括3條掃描鏈)ScanChain0:有113個(gè)掃描單元,包括ARM核的所有I/O,地址數(shù)據(jù)總線和輸入輸出控制信號(hào).這條鏈上的信號(hào)復(fù)雜,不易控制,但是,包含的信息豐富,可以通過(guò)這條鏈得到ARM7TDMI所有的內(nèi)核信息。108ARM7TDMI內(nèi)核的JTAG掃描鏈結(jié)構(gòu)(主要包括3條掃描鏈ScanChain1:有33個(gè)掃描單元,包括ARM核的數(shù)據(jù)總線和一個(gè)斷點(diǎn)控制信號(hào)。這是一條很有用的鏈,通過(guò)控制這條鏈,可以控制ARM核執(zhí)行指定的指令,從而實(shí)現(xiàn)對(duì)ARM的內(nèi)部寄存器,協(xié)處理器以及外部存儲(chǔ)器的讀寫操作。ScanChain2:有38個(gè)掃描單元,通過(guò)控制EmbeddedICE宏單元,實(shí)現(xiàn)對(duì)ARM執(zhí)行指令的斷點(diǎn)、觀察點(diǎn)控制。EmbeddedICE是集成在ARM內(nèi)核的中的嵌入式ICE防真器。通過(guò)對(duì)EmbeddedICE的控制,對(duì)EmbeddedICE中寄存器的讀取,可以獲得ARM內(nèi)核的狀態(tài),為程序設(shè)置斷點(diǎn)或讀取Debug通信通道。109ScanChain1:有33個(gè)掃描單元,包括ARM核的數(shù)據(jù)2.2.1數(shù)據(jù)類型ARM處理器支持下列數(shù)據(jù)類型:Byte 字節(jié),8位;(A31……A0)32位地址均有效.Halfword半字,16位(半字必須與2字節(jié)邊界對(duì)準(zhǔn))(A31……A1,0)偶數(shù)地址,A0為0;Word 字,32位(字必須與4字節(jié)邊界對(duì)準(zhǔn))。(A31……A2,0,0)地址是4的倍數(shù),A1,A0均為0.2.2ARM編程模型圖4—18ARM數(shù)據(jù)類型存儲(chǔ)圖見(jiàn)ARM的存儲(chǔ)結(jié)構(gòu)1102.2.1數(shù)據(jù)類型2.2ARM編程模型圖4—18ARM體系結(jié)構(gòu)支持表4—3所列的7種處理器模式。表4—3處理器模式處理器模式說(shuō)明用戶user正常程序執(zhí)行模式FIOfiq支持高速數(shù)據(jù)傳送或通道處理IRQirq用于通用中斷處理管理svc操作系統(tǒng)保護(hù)模式系統(tǒng)復(fù)位后的缺省模式中止abt實(shí)現(xiàn)虛擬存儲(chǔ)器和/或存儲(chǔ)器保護(hù)未定義und支持硬件協(xié)處理器的軟件仿真系統(tǒng)sys運(yùn)行特權(quán)操作系統(tǒng)任務(wù)2.2.2處理器模式異常模式特權(quán)模式111ARM體系結(jié)構(gòu)支持表4—3所列的7種處理器模式。表4—3模式的改變?cè)谲浖刂葡驴梢愿淖兡J?;外部中斷或異常處理也可以引起模式發(fā)生改變。大多數(shù)應(yīng)用程序在用戶模式下執(zhí)行。當(dāng)處理器工作在用戶模式時(shí),正在執(zhí)行的程序不能訪問(wèn)某些被保護(hù)的系統(tǒng)資源;用戶模式下不能改變模式,除非異常(Exception)發(fā)生。這允許操作系統(tǒng)來(lái)控制系統(tǒng)資源的使用。除用戶模式外的其他6種模式稱為特權(quán)模式。特權(quán)模式服務(wù)于中斷或異常;特權(quán)模式可以訪問(wèn)被保護(hù)的資源;特權(quán)模式下可以改變模式。關(guān)于模式的說(shuō)明:112模式的改變關(guān)于模式的說(shuō)明:40系統(tǒng)模式。不能由任何其他模式進(jìn)入該模式;它與用戶模式擁有完全相同的寄存器。然而它是特權(quán)模式,不受用戶模式的限制。它供需要訪問(wèn)系統(tǒng)資源的操作系統(tǒng)任務(wù)使用,但希望避免使用與異常模式有關(guān)的附加寄存器。避免使用附加寄存器保證了當(dāng)任何異常出現(xiàn)時(shí),都不會(huì)使任務(wù)的狀態(tài)不可靠。除用戶模式和系統(tǒng)模式之外的5種模式稱作異常模式。當(dāng)特定的異常出現(xiàn)時(shí),進(jìn)入相應(yīng)的模式。每種模式都有某些附加的寄存器,以避免異常出現(xiàn)時(shí)用戶模式的狀態(tài)不可靠。113系統(tǒng)模式。412.2.3處理器工作狀態(tài)ARM處理器有兩種工作狀態(tài):ARM:這種狀態(tài)下執(zhí)行32位字對(duì)準(zhǔn)的ARM指令;取指時(shí)程序計(jì)數(shù)器的PC.1和PC.0均為0Thumb:這種狀態(tài)下執(zhí)行半字對(duì)準(zhǔn)的16位Thumb指令。取指時(shí)程序計(jì)數(shù)器的PC.0為0,而使用PC.1位選擇另一個(gè)半字。ARM處理器可以在兩種工作狀態(tài)之間切換。ARM和Thumb之間狀態(tài)的切換不影響處理器的模式或寄存器的內(nèi)容。1142.2.3處理器工作狀態(tài)ARM處理器有兩種工作狀態(tài):42ARM處理器在ARM和Thumb兩種工作狀態(tài)之間切換的方法:① 進(jìn)入Thumb狀態(tài)。當(dāng)操作數(shù)寄存器的狀態(tài)位(位[0])為1時(shí),執(zhí)行BX指令進(jìn)入Thumb狀態(tài)。如果處理器在Thumb狀態(tài)進(jìn)入異常,則當(dāng)異常處理(IRQ、FIQ、Undef、Abort和SWI)返回時(shí),自動(dòng)轉(zhuǎn)換到Thumb狀態(tài)。② 進(jìn)入ARM狀態(tài)。當(dāng)操作數(shù)寄存器的狀態(tài)位(位[0])為0時(shí),執(zhí)行BX指令進(jìn)入ARM狀態(tài)。處理器進(jìn)行異常處理(IRQ、FIQ、Reset、Undef、Abort和SWI)時(shí),把PC放入異常模式鏈接寄存器中,從異常向量地址開(kāi)始執(zhí)行也可以進(jìn)入ARM狀態(tài)。115ARM處理器在ARM和Th
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 怎樣構(gòu)思原創(chuàng)繪畫課程設(shè)計(jì)
- 怎么做銷售培訓(xùn)課程設(shè)計(jì)
- 可充電設(shè)備用充電裝置相關(guān)項(xiàng)目實(shí)施方案
- 農(nóng)村生活污水處理設(shè)施技術(shù)標(biāo)準(zhǔn)
- 德國(guó)旅游環(huán)境問(wèn)題研究報(bào)告
- 2023-2024學(xué)年山東省鄆城一中高三下學(xué)期質(zhì)量檢查數(shù)學(xué)試題試卷
- 邯鄲魏縣四年級(jí)英語(yǔ)試卷
- 北京郵電大學(xué)《企業(yè)經(jīng)營(yíng)模擬》2021-2022學(xué)年第一學(xué)期期末試卷
- 2024電腦外包合同范文
- 2024策劃合同范本范文
- 婦幼保健科醫(yī)生述職報(bào)告婦幼保健工作的案例分析和效果評(píng)估
- 新時(shí)代高職院?!叭奈逅摹眲趧?dòng)教育體系構(gòu)建探索
- 03J114-1 輕集料空心砌塊內(nèi)隔墻
- 瀝青路面彎沉溫度修正
- 施工現(xiàn)場(chǎng)安全守則
- 園藝與植物培育行業(yè)發(fā)展趨勢(shì)
- 聚積道德法治立足生活本位 論文
- 文學(xué)和道德的關(guān)系
- 康復(fù)科護(hù)士的言語(yǔ)障礙患者康復(fù)護(hù)理技術(shù)
- 2024年中國(guó)融通集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 醫(yī)院患兒跌倒應(yīng)急預(yù)案演練方案
評(píng)論
0/150
提交評(píng)論