秋霞电影网午夜鲁丝片无码,真人h视频免费观看视频,囯产av无码片毛片一级,免费夜色私人影院在线观看,亚洲美女综合香蕉片,亚洲aⅴ天堂av在线电影猫咪,日韩三级片网址入口

歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > PPT文檔下載  

微型計(jì)算機(jī)原理及應(yīng)用(第二版)章-課件8

  • 資源ID:253368403       資源大?。?span id="mzebxcnn0" class="font-tahoma">2.61MB        全文頁數(shù):209頁
  • 資源格式: PPT        下載積分:10積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要10積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 微信支付   
驗(yàn)證碼:   換一換

 
賬號:
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

微型計(jì)算機(jī)原理及應(yīng)用(第二版)章-課件8

第,8,章 總線,8.1,概述,,8.2 ARM,處理器,,8.3 Inter PXA 27X,介紹,,習(xí)題,8.1.1 PXA27X,概述,PXA27X,是一種高性能、低功耗,(,可達(dá)到,MIPS/mW),、功能強(qiáng)勁的,SOC,處理器,它采用,Intel,公司的,XScale,結(jié)構(gòu)。在,PXA27X,中包括了除浮點(diǎn)運(yùn)算指令之外的全部,ARM V5TE,的指令集,同時還包括,Intel,公司的整數(shù)無線,MMX,指令。這就使得該處理器的指令功能及對多媒體信號的處理能力十分強(qiáng)大。,8.1,概 述,,PXA270,有兩種封裝形式:,13?mm?×?13?mm,的,FVBGA,和,23?mm?×?23?mm,的,PBGA,。前者有,356,條球狀引線而后者有,360,條球狀引線。,PXA27X,的結(jié)構(gòu)框圖如圖,8.1,所示。在圖,8.1,中,實(shí)線框起來的各個部分組成了,PXA27X,芯片,實(shí)線框之外是芯片外接的部分。,由圖,8.1,可以看到,在硬件上,PXA27X,包括如下部分:,PXA27X,內(nèi)部集成有,4,個體的,SRAM,,每個體,64?KB,,,4,個體共,256?KB,。,PXA27X,內(nèi)部有,LCD,控制器,可以支持顯示分辨度達(dá),800?×?600,像素的,LCD,顯示。   該處理器集成有存儲器控制器,(,見圖,8.1,虛線框部分,),,該控制器提供了各種控制信號,用以支持芯片外部外接,SDRAM,、閃速存儲器、,PC,卡等存儲器件的工作。在,PXA27X,外部最多可接,1?GB,的,SDRAM,、,384?MB,的閃速存儲器。,圖,8.1 PXA27X,處理器結(jié)構(gòu)框圖,,PXA27X,內(nèi)部集成有,USB,主控制器,也集成有,USB,的客戶控制器。這樣一來,在未來的工作中,,PXA27X,既可工作為主控制器,又可以作為系統(tǒng)中的客戶接受其他,USB,主控制器的管理。,PXA27X,集成有電源管理模塊,對芯片上電、睡眠、看門狗等多種功能實(shí)施管理。,PXA27X,有時鐘管理模塊,能對片內(nèi)多種時鐘進(jìn)行管理。,在,PXA27X,中集成了多種外設(shè)接口,在圖,8.1,的左側(cè)可以看到,許多經(jīng)常用到的外設(shè),(,總線,),接口均已集成在芯片中。同時,這些外設(shè),(,總線,),接口引線中,有許多都是可以雙重定義或多重定義的,既可以定義為某種外設(shè)的接口信號引線,當(dāng)不用該外設(shè)時,這些引線又可以用作通用的輸入,/,輸出信號線,這就是圖,8.1,中所標(biāo)的通用,I/O(GPI/O),。,為測試芯片方便,,PXA27X,還集成有,JTAG,接口。   通過上面的描述,我們可以了解到,PXA27X,處理器的大致組成。顯然,其結(jié)構(gòu)是比較復(fù)雜的,功能也非常強(qiáng)。在本章后面的內(nèi)容中,將對,PXA27X,的某些部分進(jìn)行詳細(xì)講述,但不可能將所有內(nèi)容全都說清楚,因?yàn)?PXA27X,所涉及的內(nèi)容實(shí)在太多了。,8.1.2 Intel XScale,結(jié)構(gòu),當(dāng)前,在廠家設(shè)計(jì),SOC,時,都是將多個處理器的功能整合到,SOC,中,例如將,ARM,與,DSP,、,MCU,與,DSP,集成在,SOC,中。集成電路加工技術(shù)使線條寬度達(dá)到幾十納米,使這種多個處理器的結(jié)合成為現(xiàn)實(shí)。,Intel XScale,結(jié)構(gòu)的處理器就是這種理念的體現(xiàn)。,1,.,Intel XScale,結(jié)構(gòu)處理器硬件,Intel XScale,結(jié)構(gòu)處理器硬件結(jié)構(gòu)框圖如圖,8.2,所示。,圖,8.2 XScale,結(jié)構(gòu)框圖,,2,.,Intel XScale,硬件結(jié)構(gòu)說明,由圖,8.2,可以看到這種結(jié)構(gòu)的處理器是由哪些部分構(gòu)成的。下面將簡單說明硬件的各部分。,Intel XScale,是以,ARM,公司的,RISC,處理器,ARM V5TE,為基礎(chǔ)的,再將功能監(jiān)視單元,CP14,、配置寄存器,CP15,、乘法,/,累加器,CP0(,協(xié)處理器,),等,16,個協(xié)處理器整合進(jìn)去,使得由,Intel XScale,為處理器核的,PXA27X,系列的處理器具有很強(qiáng)的處理能力。,在,Intel XScale,核中還集成了具有單指令多數(shù)據(jù),(SIMD),結(jié)構(gòu)的協(xié)處理器,能夠完成整數(shù)的,MMX,指令及,SIMD,擴(kuò)展指令,(SSE),,更有利于多媒體信號的處理。   在,Intel XScale,中,有三部分高速緩存,Cache,及相應(yīng)的存儲器管理單元,無疑對提高,Intel XScale,的總體性能大為有利。,Intel XScale,具有對外的協(xié)處理器接口,還可以外接諸如,DSP,這樣的處理器。在,PXA270,中就可外接專門用于多媒體處理的單指令流多數(shù)據(jù)流,(SIMD),協(xié)處理器。,,Intel XScale,中有對嵌入式系統(tǒng)非常重要的兩類中斷:一般中斷,IRQ,和快速中斷,FIQ,。   在,Intel XScale,中還包括用于測試的,DEBUG,及,JTAG,。   顯然,在,Intel XScale,中還有超級流水線、分支預(yù)測等一系列提高性能的硬件措施??紤]到讀者將來主要是應(yīng)用,SOC,芯片構(gòu)成嵌入式系統(tǒng)而不是設(shè)計(jì),SOC,芯片,對于,Intel XScale,更詳細(xì)的內(nèi)容不再說明。,,8.2 ARM,處理器,8.2.1 ARM,處理器系列,,,ARM,處理器是由,ARM,公司設(shè)計(jì)的,這是一家專門設(shè)計(jì),IP(,知識產(chǎn)權(quán),),的供應(yīng)商。該公司既不生產(chǎn)芯片也不生產(chǎn)整機(jī),只賣,IP,核。但該公司所設(shè)計(jì)的,ARM,處理器是,32,位的,RISC,處理器,由于其性能高、功耗低、性價比高,已被全球各大半導(dǎo)體公司所使用。,,1,.,ARM,體系結(jié)構(gòu),ARM,體系結(jié)構(gòu)從誕生至今共有六個版本,從,V1,到,V6,。顯然,版本低的功能要差一些,版本愈高功能愈強(qiáng)。,ARM,公司依據(jù)不同的體系結(jié)構(gòu)版本設(shè)計(jì)出多種,ARM,處理器。這些處理器在功能上有一些差異,這就形成了,ARM,處理器的多種不同變種,主要的有如下幾種:,1)? T,變種,T,變種是指在,ARM,處理器中包含有,Thumb,指令集。,ARM,處理器指令的長度是固定的,所有的指令均為,32,位。在其,T,變種中除,32,位指令外還包括指令長度為,16,位的,Thumb,指令集。,,2)? M,變種,M,變種在,ARM,指令集中包含有,4,條長乘法指令,這些指令能完成,32,位,×?32,位,=?64,位的乘法及,32,位,×?32,位,+?64,位,=?64,位的乘加運(yùn)算的功能。,3)? E,變種,E,變種為增強(qiáng),DSP(,數(shù)字信號處理器,),指令變種,在該變種的,ARM,指令集中包含一些典型的完成,DSP,算法的一些指令。,,4)? J,變種   該變種將,Java,加速器,Jazelle,加到,ARM,處理器中,可以大大提高,Java,程序的運(yùn)行速度。,5)? SIMD,變種   該變種將單指令流多數(shù)據(jù)流的系統(tǒng)結(jié)構(gòu)思想加入到,ARM,處理器中,這可以有效地提高對多媒體信號,——,音頻及視頻信號的處理能力。,,2,.,ARM/Thumb,體系結(jié)構(gòu)命名,目前正在使用的,ARM/Thumb,體系結(jié)構(gòu)版本如表,8.1,所示。 由表,8.1,可以看到,在,PXA27X,中所集成的,ARM v5TE,版本的處理器已經(jīng)具有相當(dāng)好的性能。,表,8.1 ARM,的體系結(jié)構(gòu)版本,8.2.2 ARM,處理器的工作模式及寄存器,1,.,ARM,處理器的工作模式,ARM,處理器會運(yùn)行在如下,7,種工作模式之下:,1),用戶模式,usr,大多數(shù)應(yīng)用程序都工作在用戶模式之下,在此模式之下應(yīng)用程序不能使用受操作系統(tǒng)保護(hù)的資源。也就是說,用戶模式具有較低的資源利用級別。,,2),特權(quán)模式,svc,這是供操作系統(tǒng)使用的一種保護(hù)模式。操作系統(tǒng)工作在特權(quán)模式之下,原則上允許它控制系統(tǒng)的所有資源。,3),數(shù)據(jù)中止模式,abt,該模式用于實(shí)現(xiàn)虛擬存儲器或?qū)Υ鎯ζ鞯谋Wo(hù)。,4),未定義指令中止模式,und,這種模式用于對硬件協(xié)處理器軟件仿真。,,5),一般中斷請求模式,irq,這種模式用于一般的外部中斷請求,類似于前面,8086,的,INTR,。,6),快速中斷請求模式,fiq,該模式支持高速數(shù)據(jù)傳送或通道方式,其具有更高的優(yōu)先級。,7),系統(tǒng)模式,sys,系統(tǒng)模式主要為操作系統(tǒng)任務(wù)所用,它與用戶模式使用完全一樣的寄存器。但在該摸式下,任務(wù)可以使用系統(tǒng)的所有資源,在這種意義上講它也屬于特權(quán)模式。,,2,.,ARM,處理器的內(nèi)部寄存器,從本書前面的章節(jié)中已經(jīng)看到,要學(xué)好、用好某種處理器,必須掌握好其內(nèi)部寄存器。這對后面的指令系統(tǒng)、編程及應(yīng)用都很重要。對于,ARM,處理器來說也是這樣,讀者必須認(rèn)真理解該處理器的,37,個內(nèi)部寄存器。,ARM,的內(nèi)部寄存器如表,8.2,所示。,表,8.2,不同工作模式下的寄存器,在,ARM,處理器的,37,個寄存器中,包括,31,個通用寄存器和,6,個狀態(tài)寄存器。所有這些寄存器都是,32,位的。   由表,8.2,可以看到,,ARM,處理器工作在不同模式之下,所使用的寄存器是不一樣的。一種模式對應(yīng)一組寄存器,這一組寄存器包括通用寄存器,R0,~,R14,、程序計(jì)數(shù)器,PC,和一個或兩個狀態(tài)寄存器。這些寄存器中,有一些是共用的,有一些則是不同模式所私有的。,,1),通用寄存器   通用寄存器為,R0,~,R15,,它們又分為,3,類:   ● 不分組寄存器,R0,~,R7,這,8,個,32,位的寄存器是為每一種,ARM,處理器運(yùn)行模式所用,也就是說在每種模式下使用的同一個物理寄存器。在使用中必須注意到,當(dāng)中斷或異常發(fā)生時,要進(jìn)行模式切換,這時就需要保護(hù)這些寄存器的內(nèi)容免遭破壞,以便在中斷,(,異常,),返回時能接著中斷,(,異常,),前的狀態(tài)繼續(xù)執(zhí)行。,● 分組寄存器,R8,~,R14,這些寄存器在不同模式下訪問的不是一個物理寄存器。 由表,8.2,可以看到,當(dāng)在,fiq,模式時,使用的是與,R8,~,R14,對應(yīng)的另外,7,個寄存器,R8_fiq,~,R14_fiq,。在,fiq,模式下,原,R8,~,R14,不再使用。在實(shí)際應(yīng)用中,當(dāng)響應(yīng),fiq,中斷進(jìn)入服務(wù)程序時,若服務(wù)程序不使用,R8,~,R14,,則它們的內(nèi)容可不必保護(hù)。,由表,8.2,還可以看到,對于,R13,和,R14,來說,除了在,fiq,模式下使用,R13_fiq,和,R14_fiq,之外,在特權(quán)、中止、未定義及一般中斷模式下,也分別對應(yīng)自己的,R13,和,R14,。這在編程使用,ARM,處理器時應(yīng)予以注意,可以使用戶保護(hù)現(xiàn)場,(,斷點(diǎn),),的操作更加簡單。   另外,在使用中經(jīng)常將,R13,用作堆棧指針,(,指示器,),。當(dāng)然,也可以用其他寄存器作為堆棧指針。,,R14,稱為連接寄存器,(,記為,LR),,它除了用作通用寄存器之外,還有兩種特殊用途:,(1),每種模式自己的,R14,中存放當(dāng)前子程序的返回地址,當(dāng)子程序結(jié)束時,利用,R14,很容易返回主程序。具體細(xì)節(jié)見本節(jié)后面的內(nèi)容。,(2),當(dāng)異常發(fā)生時,可將該異常的特定的,R14,設(shè)置為此異常的返回地址,當(dāng)該異常結(jié)束時,就很容易返回到異常發(fā)生時的程序。,● 程序計(jì)數(shù)器,(PC)R15,程序計(jì)數(shù)器在概念上與前面幾章所描述的,80X86,的指令指針類似,但由于,ARM,的特點(diǎn),它又有許多特殊的地方。   在,ARM,中,指令長度均為,32,位,而地址都是按字節(jié)編址的。因此,在這種情況下,,,由于,ARM,的指令都必須按,32,位字對齊,故,PC,的最低兩位必須為,0,。當(dāng),ARM,工作在,Thumb,狀態(tài)下時,,PC,的最低位必須為,0,。因?yàn)?Thumb,的指令全都是,16,位的。當(dāng)為改變程序執(zhí)行順序?qū)懭?PC,時,必須注意保證上述要求;否則將會產(chǎn)生不可預(yù)知的結(jié)果。,由于,ARM,采用流水線技術(shù),當(dāng)用指令讀出,PC,值時,讀出的,PC,值應(yīng)是該指令的地址加,8,。顯然,在,Thumb,狀態(tài)下,用指令讀出,PC,值時,讀出的,PC,值應(yīng)是該指令的地址加,4,。,,2),程序狀態(tài)寄存器   程序狀態(tài)寄存器有兩種:當(dāng)前程序狀態(tài)寄存器,CPSR,和備份程序狀態(tài)寄存器,SPSR,。前者是所有模式所共用的,而后者則是在特定的異常模式下每個模式自己所特有的,由表,8.2,可以看得很清楚。,CPSR,和,SPSR,的格式是一樣的,如圖,8.3,所示為,CPSR,的格式。,圖,8.3,程序狀態(tài)寄存器格式,由圖,8.3,可以看到,程序狀態(tài)寄存器包括如下幾部分:   ● 條件標(biāo)志位   圖,8.3,中,,N,、,Z,、,C,、,V,四位稱為條件標(biāo)志位,與前面第,2,章中所描述的,8086,的對應(yīng)標(biāo)志位非常類似。,N,:負(fù)標(biāo)志位。當(dāng)兩數(shù)運(yùn)算結(jié)果最高位為,1,時,,N=1,,表示運(yùn)算結(jié)果為負(fù)數(shù)。若結(jié)果最高位為,0,,則,N=0,,表示運(yùn)算結(jié)果為一正數(shù)。實(shí)際上它與,8086,的符號標(biāo)志位,SF,沒有什么區(qū)別。,Z,:零標(biāo)志位。它與,8086,的零標(biāo)志位,ZF,是一樣的,不再解釋。,,C,:進(jìn)位標(biāo)志。該位與,8086,的進(jìn)位標(biāo)志位,CF,不太一樣: 當(dāng)執(zhí)行加法指令結(jié)果有進(jìn)位時,C﹦1,;結(jié)果沒有進(jìn)位時,C﹦0,。 當(dāng)執(zhí)行減法指令結(jié)果有借位時,C﹦0,;結(jié)果沒有借位時,C﹦1,。,V,:溢出標(biāo)志位。可與,8086,的溢出標(biāo)志位,OF,一樣理解。   ●,Q,標(biāo)志位   在,ARM,處理器的,E,系列,(,帶有增強(qiáng),DSP,指令,),或,v5,以上版本中,設(shè)置,Q,標(biāo)志,用于標(biāo)志執(zhí)行增強(qiáng),DSP,指令時是否發(fā)生溢出。,● 控制位   圖,8.3,中最低,8,位為,CPSR,的控制位。它們用于對,ARM,功能的控制,利用指令可以修改這些控制位。,a.,中斷禁止位,其中,I,位與,80X86,中,IF,的功能是一樣的,但定義相反。在這里,當(dāng),I=0,時,允許,irq,中斷;當(dāng),I=1,時,禁止,irq,中斷。 與,I,位雷同,當(dāng),F=0,時,允許,fiq,中斷;當(dāng),F=1,時,禁止,fiq,中斷。,b. ?T,控制位,T,控制位用于控制,ARM,處理器執(zhí)行,ARM,的,32,位指令和,Thumb,的,16,位指令之間進(jìn)行切換。,當(dāng),T=0,時,,ARM,處理器執(zhí)行,ARM,的,32,位指令;   當(dāng),T=1,時,,ARM,處理器執(zhí)行,Thumb,的,16,位指令。 在,v5,及以上版本非,T,變種的,ARM,處理器中,,T,控制位的定義為:   當(dāng),T=0,時,,ARM,處理器執(zhí)行,ARM,的,32,位指令;   當(dāng),T=1,時,執(zhí)行下一條指令引起未定義異常。,c.,模式控制位,CPSR,中的,M0,~,M4,這,5,位用以控制,ARM,的運(yùn)行模式,它們的不同編碼可以規(guī)定,ARM,的模式。具體的規(guī)定及在此模式下可以使用的寄存器如表,8.3,所示。,表,8.3,模式控制位及模式下可訪問的寄存器,在表,8.3,中,用,0bxxxxx,表示,0b,之后為二進(jìn)制編碼。   同時,表,8.3,中更加明確地指出了不同模式下可以訪問的內(nèi)部寄存器。   ● 其他位   在,CPSR,中,除了上面定義的各位外,剩余的許多位尚未定義,留作今后擴(kuò)展之用。,SPSR,的各位定義與,CPSR,相同,不需再作說明。,,3,.,ARM,處理器的存儲系統(tǒng),1),尋址空間,ARM,的內(nèi)存以字節(jié)編址,最大地址空間為,232,,用十六進(jìn)制表示為從,0X00000000,到,0XFFFFFFFF,。在,ARM,中,0X,后面的字符表示為十六進(jìn)制數(shù)。,ARM,的地址空間也可以看做是,230,個,32,位的字單元或者是用,231,個,16,位的半字單元構(gòu)成。,在前面的章節(jié)中已經(jīng)說過,在,PC,中加上帶符號的偏移量可以實(shí)現(xiàn)程序的轉(zhuǎn)移。在,ARM,中也是這樣,執(zhí)行轉(zhuǎn)移指令可以實(shí)現(xiàn)程序的轉(zhuǎn)移。轉(zhuǎn)移的目的地址為:     當(dāng)前,(,轉(zhuǎn)移,),指令的地址,+?8?+,偏移量   在前面講述,8086,段內(nèi)相對轉(zhuǎn)移時,目的地址是當(dāng)前指令的地址加,2(,短轉(zhuǎn)移,),或加,3(,近轉(zhuǎn)移,),再加位移量。在,ARM,中加,8,是因?yàn)槠渲杏兄噶盍魉€而且,ARM,指令的長度都是,4,個字節(jié)。,,2),內(nèi)存存儲格式   在,ARM,存儲器中,數(shù)據(jù)在內(nèi)存中的存放有兩種格式:,(1),小端格式。這種存儲格式是一個,4,個字節(jié)的字或一個兩個字節(jié)的半字,總是小地址存放低字節(jié),大地址存放高字節(jié)。其規(guī)則與前面的,80X86,是一樣的。例如,一個,32,位的字,0XA9876543,,存放在內(nèi)存起始地址為,0X30000000,的順序單元中,則最低字節(jié),43,放入最小的,0X30000000,單元、,65,放入,0X30000001,單元,后面的字節(jié)依次存放。,,(2),大端格式。大端格式與上述小端格式的存放順序剛好相反,即小地址存放高字節(jié),大地址存放低字節(jié)。 小端格式通常是,ARM,的缺省配置,通過硬件輸入可以配置存儲格式。,3) ?I/O,地址映射   如同前面提到的,,ARM,處理器采用內(nèi)存與接口地址統(tǒng)一編址的方案。也就是說,內(nèi)存與接口共用一個,4?G,的地址空間,其中一部分分配給接口作為接口地址,其他部分用作內(nèi)存地址。用于內(nèi)存的接口不能用,而用于接口的內(nèi)存也不能用。,8.2.3 ARM,指令系統(tǒng),ARM,是一種,RISC(,精減指令集計(jì)算機(jī),),處理器,相對于,CISC(,復(fù)雜指令集計(jì)算機(jī),),要簡單一些。但是,這是一種近幾年才開發(fā)出來的高性能的,32,位處理器,其指令功能是很強(qiáng)的,相對也比較復(fù)雜。本小節(jié)僅對,ARM,的指令系統(tǒng)進(jìn)行一般性的介紹。,,1,.,ARM,指令的一般格式,1),格式   一條典型的,ARM,指令的一般語法格式如下:,{}{},,,,,,,其中:,opcode,為操作碼助記符,例如加法指令用,ADD,表示。,cond,為指令的執(zhí)行條件碼,詳見下文。,S,用于決定該指令的執(zhí)行是否影響,CPSR,。,Rd,表示目標(biāo)寄存器。,Rn,表示保存第,1,個操作數(shù)的寄存器。,sthifter_oprand,表示第,2,個操作數(shù)的寄存器。,,2),條件碼   在,ARM,中定義的條件碼與,8086,有許多類似的地方,讀者可對照理解。,ARM,的條件碼如表,8.4,所示。,圖,8.4 ARM,的移位操作,,(a) LSL; (b) LSR; (c) ASR; (d) ROR; (e) RRX,表,8.4 ARM,處理器的條件碼,,2,.尋址方式,有關(guān)尋址方式的概念前面第,3,章中已經(jīng)說明,此處僅介紹,ARM,處理器的一些最基本的尋址方式。,1),寄存器尋址   操作數(shù)在寄存器中的尋址方式稱為寄存器尋址。例如:,ADD R1,,,R2,,,R3,;完成,R2+R3→R1,,2),立即尋址   操作數(shù)為立即數(shù)。但,ARM,的立即數(shù)定義比較特殊,不是任意一個數(shù)都能定義為立即數(shù)。只有一個,8,位數(shù),循環(huán)右移偶數(shù)次,(0,、,2,、,4,、,6,…,30),,并且最多為循環(huán)右移,30,次,方可構(gòu)成,32,位的二進(jìn)制數(shù)。   例如,,0XFF,、,0X104,、,0XFF0,、,0X3F0,、,0XFF00,、,0XF000000F,等是合法的。而,0X101,、,0XFF1,等是非法的。,,3),寄存器移位尋址   這種尋址方式是,ARM,處理器所特有的,在第,2,個寄存器操作數(shù)與第,1,個操作數(shù)進(jìn)行某種運(yùn)算之前,可先進(jìn)行移位操作。例如指令:,ADD R3,,,R2,,,R1,,,LSL #3,該指令是先將,R1,的內(nèi)容邏輯左移,3,次,再與,R2,的內(nèi)容相加,結(jié)果放在,R3,中。,,ARM,處理器中的移位操作是針對,32,位的,概念上有些與,8086,一樣,有些則不一樣,具體說明如下:,LSL,——,邏揖左移;,LSR,——,邏揖右移;,ASR,——,算術(shù)右移;,ROR,——,循環(huán)右移;,RRX,——,大循環(huán)右移,即包括進(jìn)位標(biāo)志在內(nèi)的循環(huán)右移。,圖,8.4 ARM,的移位操作,,(a) ?LSL,;,(b) ?LSR,;,(c) ?ASR,;,(d) ?ROR,;,(e) RRX,,4),寄存器間接尋址   寄存器的內(nèi)容作為操作數(shù)的地址。例如指令:,LDR R0,,,[R3],該指令的操作就是以,R3,的內(nèi)容作為操作數(shù)的地址,由該地址讀一個,32,位的字放在,R0,中。,5),變址尋址   在此尋址方式中,操作數(shù)的地址是由寄存器的內(nèi)容加上一個帶符號的位移量來決定的,位移量的范圍在,±4 KB,之間。例如:,LDR R1,,,[R4,,,#8],該指令是從,R4,的內(nèi)容加上,8,的內(nèi)存地址開始,順序取,4,個字節(jié)放在,R1,中。,,6),多寄存器尋址   該尋址方式可用一條指令進(jìn)行批量數(shù)據(jù)的傳送。例如:,LDMIA R0,,,{R5-R8},該指令能將,R0,的內(nèi)容所指向的內(nèi)存字到,R0,的內(nèi)容,+12,所指向的內(nèi)存字,(,共,4,個字,),順序讀出并存放在,R5,、,R6,、,R7,和,R8,中。,,7),相對尋址   與,8086,一樣,相對尋址用于轉(zhuǎn)移指令,在這里還用于子程序調(diào)用。該尋址方式以,PC,為基準(zhǔn),在其上加上帶符號的位移量,從而改變了,PC,的內(nèi)容,也就改變了程序的執(zhí)行順序,達(dá)到轉(zhuǎn)移的目的。位移量指出目的地址與現(xiàn)行指令之間的相對距離。,,ARM,處理器在執(zhí)行,BL,指令時要做兩件事:,(1),將,BL,下一條指令的地址存入,R14(,即,LR),中。,(2),將,PC,的內(nèi)容加上指令中所帶的經(jīng)過運(yùn)算的,24,位帶符號的位移量,(,已變?yōu)?32,位,),構(gòu)成新的,PC,的內(nèi)容。,24,位帶符號的位移量的運(yùn)算是先將其符號位擴(kuò)展為,32,位,再將擴(kuò)展后的,32,位左移,2,位,這就是經(jīng)過運(yùn)算后的,32,位的位移量。,上述過程看起來似乎很復(fù)雜,但在實(shí)際編程中是非常簡單的,在使用轉(zhuǎn)移指令時,只需在指令中給出轉(zhuǎn)移或調(diào)用的標(biāo)號就可以了。上述復(fù)雜的計(jì)算是由匯編程序來完成的,編程人員無須關(guān)心。   但是,編程人員應(yīng)當(dāng)知道,在指令中包含的是,24,位的帶符號,(,用補(bǔ)碼表示,),的位移量,并且在計(jì)算目的地址時又符號擴(kuò)展左移了,2,位。因此,位移量相當(dāng)于帶符號的,26,的二進(jìn)制數(shù),這就規(guī)定了程序轉(zhuǎn)移的范圍大致在,-32?MB,到,+32?MB,之間。   為了說明如何使用,BL,,用圖,8.5,表示調(diào)用子程序的情況。,圖,8.5,用,BL,指令調(diào)用子程序的過程,在圖,8.5,中,利用一條橫線代表一條指令。當(dāng),ARM,執(zhí)行,BL,指令時,它會自動將其下一條指令的地址保存在,R14,中。然后,根據(jù),24,位的位移量,程序轉(zhuǎn)向,FUNCT11,去執(zhí)行一個子程序。在子程序結(jié)束時,可用指令,MOV PC,,,R14(,也可以用別的指令,),返回主程序。,,3,.,ARM,的指令系統(tǒng),1),內(nèi)存訪問指令   ● 語法格式,ARM,的訪內(nèi)指令有,4,種形式,它們的構(gòu)造格式如下:,(1),零偏移格式:,{}{}{},,,,,(2),前索引偏移,在傳送前將偏移量加到,Rn,中。格式為:,{}{},,,<[Rn,,,Flexoffset]>{},,(3),相對偏移,標(biāo)號地址必須在當(dāng)前指令的,±4?KB,范圍內(nèi)。格式為:,{}{},,,label,,(4),后索引偏移,在傳送后將偏移量加到,Rn,中。格式為:,{}{},,,<[Rn],,,Flexoffset>,上面格式中,可選后綴項(xiàng),B,表示字節(jié);可選后綴項(xiàng),T,若存在,即使處理器在特權(quán)模式下,也將該指令看成是在用戶模式之下;,Rd,為要加載或存儲的內(nèi)部寄存器;,Rn,為存儲器的基地址;,Flexoffset,為偏移量;,label,為標(biāo)號,表示相對偏移;!為可選后綴,有!后綴的指令將包括偏移量的地址寫回,Rn,中。,● 指令列表,(1),用于字及字節(jié)操作的訪內(nèi)指令。用于字及字節(jié)操作的訪內(nèi)指令如表,8.5,所示。,表,8.5,用于字及字節(jié)操作的訪內(nèi)指令,,(2),批量訪內(nèi)指令。批量訪內(nèi)指令使用前面提到的多寄存器尋址,可以實(shí)現(xiàn)數(shù)據(jù)的批量寫入內(nèi)存和讀出內(nèi)存。數(shù)據(jù)的堆棧操作也具有類似的情況,但是如前第,3,章所描述的,堆棧操作是先進(jìn)后出的,這是堆棧操作指令的基本特征。有關(guān)一般傳送和堆棧操作指令如表,8.6,所示。,表,8.6,一般批量傳送與堆棧傳送對應(yīng)表,上面的指令中所包括后綴的含義如下:,IA,——,事后遞增方式;,IB,——,事先遞增方式;,DA,——,事后遞減方式;,DB,——,事先遞減方式;,FD,——,滿棧遞減方式;,IB,——,空棧遞減方式;,DA,——,滿棧遞增方式;,DB,——,空棧遞增方式。,有關(guān)一般批量傳送舉例如下:,STMIA R9!,,{,R0,,,R1,,,R3,,,R5,}   該指令是以事后遞增的方式將,R0,、,R1,、,R3,、,R5,這,4,個寄存器的內(nèi)容放在,R9,的內(nèi)容為地址的內(nèi)存單元中,如圖,8.6,所示。,圖,8.6,指令,STMTA,的執(zhí)行結(jié)果,在,ARM,處理器中,利用,R13,作為堆棧指針,堆??梢允沁f增的也可以是遞減的。在以往的,CPU,中,,8086,是遞減的而,MCS,—,51,是遞增的,而,ARM,則具有這兩種能力。例如,將,R0,到,R7,這,8,個寄存器壓棧和出棧可用下面的指令:,STMFD R13!,,,{R0-R7},,LDMFD R13!,,,{R0-R7},,2),數(shù)據(jù)處理指令,ARM,的數(shù)據(jù)處理指令包括:數(shù)據(jù)傳送指令、算術(shù)運(yùn)算指令和邏輯運(yùn)算指令?,F(xiàn)將常用的指令列于表,8.7,中。,表,8.7 ARM,的數(shù)據(jù)處理指令,在這些數(shù)據(jù)處理指令中,許多與前面,8086,的指令類似,但又有自己的特點(diǎn)。   指令,MOV,的語法格式為:,MOV {}{S},,,,其中:,{},具有可選條件,可有條件執(zhí)行,也可以無條件執(zhí)行;,,為目標(biāo)寄存器;,,為第二操作數(shù),非常靈活,可以是前面所提到的立即數(shù)、寄存器,也可以是經(jīng)過移位的寄存器;,,{S},為可選項(xiàng),若指令中有,S,,當(dāng)指令中,Rd,為,R15,時,則將當(dāng)前模式下的,SPSR,復(fù)制到,CPSR,中;若,Rd,不為,R15,,則指令執(zhí)行將影響狀態(tài)寄存器中的條件標(biāo)志位,N,和,Z,,若有移位則有可能影響,C,標(biāo)志位。若指令中沒有,S,,則不影響標(biāo)志位。 舉例如下,若在,irq,中斷服務(wù)程序中最后出現(xiàn)指令:,MOVS PC, R14,該指令將,R14(LR),的內(nèi)容復(fù)制到,PC,中,同時,將,SPSR_irq,的內(nèi)容復(fù)制到,CPSR,中。   對于本類中的其他指令不再詳細(xì)介紹,僅舉幾條指令予以說明如下:,ADD R0,,,R1,,,R2,;,這條加法指令的功能很簡單,即,R1+R2→R3,。   下面的指令可以實(shí)現(xiàn),R3R4R5,-,R6R7R8→R0R1R2,的,96,位整數(shù)減法運(yùn)算,最后的結(jié)果放在,R0R1R2,中。,SUBS R2,,,R5,,,R8,,SBCS R1, R4,,,R7,,SBC R0,,,R3,,,R6,若要對操作數(shù)先取反再傳送,可用數(shù)據(jù)取反傳送指令:,MVN R4,,,R5,;將,R5,取反后送,R4,,3),乘法指令,ARM,的乘法指令包括,32,位乘法和,64,位乘法,有如表,8.8,所示的,6,條乘法指令。,ARM,的乘法指令同樣非常靈活,功能很強(qiáng)。,32,位的,MLA,指令的語法格式為:,MLA {}{S},,,,,,,,,,該指令可以帶條件,可以影響標(biāo)志位,完成,Rm?×?Rs?+?Rn→Rd,。,64,位的,SMULL,指令的語法格式為,SMULL {}{S},,,,,,,,,,表,8.8 ARM,的乘法指令,同樣,該指令可以帶條件,可以影響標(biāo)志位,完成,Rm×Rs=64,位積。,64,位積的高,32,位放,RdHi,,低,32,位放,RdLo,中。   其他指令不再解釋。舉例如下:,MUL R1,,,R2,,,R3,該指令完成,R2×R3→R1,。,UMULL R0,,,R1,,,R2,,,R3,該指令完成,R2×R3,,乘積高,32,位放,R1,,低,32,位放,R0,。,SMLALLES R6,,,R7,,,R8,,,R9,這是一條有條件執(zhí)行的指令,實(shí)現(xiàn),R8,與,R9,相乘得到,64,位的積,再加上,R7 R6,連到一起的,64,位,相加后的,64,位結(jié)果放在,R7 R6,中。該指令執(zhí)行結(jié)果還將影響標(biāo)志位。,,4),轉(zhuǎn)移指令,ARM,的轉(zhuǎn)移指令有如表,8.9,所示的,4,種。,B,及,BL,指令的語法格式為:,B{L}{},表,8.9 ARM,的轉(zhuǎn)移指令,其中:   有,L,,規(guī)定將當(dāng)前的,PC,值,(,該指令的下一條指令的地址,),保存在,R14(LR),寄存器中;無,L,則不保存此,PC,值。該指令可帶有前表,8.4,所列的條件,就構(gòu)成了條件轉(zhuǎn)移指令。   指令中給出轉(zhuǎn)移的目標(biāo)地址,,,實(shí)際轉(zhuǎn)移范圍如前所述,大致在,±32?MB,之間。   由于,BL,保存返回地址,因此它可以用于子程序調(diào)用。,BLX,指令有兩種語法格式:,BLX {}Rm,,BLX label,執(zhí)行上述指令,首先將該指令下一條指令的地址,(,返回地址,),存入,R14,;而后轉(zhuǎn)移到由,Rm,所指定的絕對地址上或由,label,所決定的相對地址上去執(zhí)行。   值得注意的是:若,Rm,的最低有效位為,1(,即,bit0?=?1),,或者使用了,BLX ?label,形式的指令,則將,ARM,切換到,Thumb,指令集上去執(zhí)行。,BX,指令可使程序產(chǎn)生轉(zhuǎn)移,也可使,ARM,切換到,Thumb,指令集上去執(zhí)行。其格式為,BX {}Rm,該指令使,ARM,轉(zhuǎn)移到,Rm,的內(nèi)容所規(guī)定的地址上執(zhí)行。,Rm,的最低位不用作地址,(32,位指令地址最低,2,位總為,0,;而,16,位指令地址最低位總為,0),。當(dāng)最低位為,1,時,則將,ARM,切換到,Thumb,指令集上去執(zhí)行。當(dāng),Rm,的最低位為,0,時,則其第,1,位,(,即,bit1),不能為,1,。因?yàn)榇藭r轉(zhuǎn)移地址上執(zhí)行的仍然是,32,位指令。,,5)? ARM,協(xié)處理器指令,ARM,支持,16,個協(xié)處理器,(CP,0,~,CP,15,),,在執(zhí)行程序過程中,每一個協(xié)處理器只執(zhí)行與自己有關(guān)的指令。當(dāng)協(xié)處理器不能執(zhí)行屬于該處理器的指令時,會產(chǎn)生未定義指令異常。協(xié)處理器指令有,5,條,如表,8.10,所示。,表,8.10 ARM,的協(xié)處理器指令,指令,CDP,的語法格式為:,CDP{},,,,,,,,,,,,,,,{},其中:,,為指令執(zhí)行的條件,也就是說該指令是可以帶條件的,也可以無條件;,,為協(xié)處理器的編號;,,為協(xié)處理器將要執(zhí)行的第,1,個操作碼;,,為可選協(xié)處理器將要執(zhí)行的第,2,個操作碼;,,均為協(xié)處理器寄存器。,指令,MCR,的格式如下:,MCR{},,,,,,,,,,,,,,,{},格式中各部分的解釋同上,其中,Rd,為,ARM,的寄存器,其內(nèi)容將被傳送到協(xié)處理器的寄存器中。例如:,MCR p14,,,3,,,R7,,,c7,,,c11,,,6,該指令是將,ARM,的,R7,傳送到協(xié)處理器,CP14,的寄存器,C7,和,C11,中,操作碼,1,和,2,分別為,3,和,6,。,,6),其他指令,ARM,處理器還有許多指令,下面將一些常用的指令列于表,8.11,中,并說明如下。,表,8.11 ARM,的一些其他指令,指令,MRS,的格式為,MRS {},,,,由指令格式可以看到,該指令可以有條件也可以無條件執(zhí)行;,Rd,為目標(biāo)寄存器;,PSR,可以是,CPSR,也可以是,SPSR,,由指令決定。例如,指令,MRS R3,,,SPSR,該指令將當(dāng)前模式下的,SPSR,的內(nèi)容傳送到寄存器,R3,中。 指令,MSR,的格式為,MSR {}_,,,,,MSR {}_,,,,其中:,{},為可選的條件項(xiàng)。,,為,CPSR,或,SPSR,。,舉例如下:,SWP R1,,,R2,,,[R3],該指令從,R3,的內(nèi)容為地址的內(nèi)存單元中讀出數(shù)據(jù)放入,R1,中,同時將,R2,的內(nèi)容存入該內(nèi)存單元中。   軟件中斷指令,SWI,和斷點(diǎn)中斷指令,BKPT,的執(zhí)行過程將在后面再作說明。   以上對,ARM,處理器的主要指令做了最簡單的介紹,以期使讀者對指令系統(tǒng)能大致了解。至于,16,位的,Thumb,指令,此處不再說明。,8.2.4 ARM,的異常中斷處理,1)? ARM,異常的種類   異常是由處理器內(nèi)部或外部產(chǎn)生的引起處理器處理的一個事件。在概念上,它與前面,80X86,中的異常非常類似。,ARM,支持,7,種異常,各種異常的類型以及處理這些異常的處理程序的起始地址如表,8.12,所示。,表,8.12 ARM,的異常及其處理程序的起始地址,在,ARM,中,可以配置上述異常的處理程序的起始地址,(,異常中斷向量,),為正常地址或高向量地址。,ARM,的異常規(guī)定了不同的優(yōu)先級,優(yōu)先級序號小的優(yōu)先級高,而序號大的優(yōu)先級低。,2) ?ARM,處理器的異常中斷響應(yīng)過程   從應(yīng)用的角度出發(fā),我們認(rèn)為異常,(,尤其是,irq,和,fiq),對將來的應(yīng)用十分重要,下面將逐一加以說明。,● 復(fù)位   一旦復(fù)位啟動,(,復(fù)位有效再變?yōu)闊o效,),,,ARM,處理器立刻停止執(zhí)行指令,并開始執(zhí)行下列操作:,R14,不確定,SPSR,不確定,CPSR[4:0]?=?0b10011,——,即進(jìn)入特權(quán)模式,CPSR[5]?=?0,——,使,T=0,,進(jìn)入,ARM,狀態(tài),CPSR[6]?=?1,——,使,F=1,,禁止,fiq,中斷,CPSR[7]?=?1,——,使,I=1,,禁止,irq,中斷,如果配置為正常地址,則,PC=0X00000000,;若為高向量地址,則,PC=0XFFFF0000,。   這樣一來,一旦復(fù)位啟動,ARM,,它永遠(yuǎn)都會從規(guī)定的配置地址開始執(zhí)行。,● 未定義指令異常   當(dāng),ARM,執(zhí)行未定義的指令,或者在執(zhí)行協(xié)處理器指令時未能收到協(xié)處理器的響應(yīng)時,均會產(chǎn)生未定義指令異常。一旦異常發(fā)生,,ARM,將執(zhí)行下面的一系列操作:,R14_und?=,該未定義指令的下一條指令的地址,SPSR_und?=?CPSR,,CPSR[4:0]?=?0b11011,——,即進(jìn)入未定義模式,CPSR[5]?=?0,——,使,T=0,,進(jìn)入,ARM,狀態(tài),CPSR[6]?=,不改變,CPSR[7]?=?1,——,使,I=1,,禁止,irq,中斷,如果配置為正常地址,則,PC?=?0X00000004,;若為高向量地址,則,PC?=?0XFFFF0004,。   從上述過程可以看到,當(dāng)執(zhí)行一條未定義指令時,會產(chǎn)生未定義異常,響應(yīng)中將其下一條指令的地址保存在,R14_und,中,并且將,CPSR,的內(nèi)容放在,SPSR_und,中。修改,CPSR,,進(jìn)入未定義模式。然后轉(zhuǎn)向未定義異常處理程序的首地址,0X00000004(,或者,0XFFFF0004),。其示意圖如圖,8.7,所示。,圖,8.7,未定義異常響應(yīng)、處理及返回過程,在,ARM,響應(yīng)未定義異常時,處理器自動保護(hù)下一條指令的地址,(,即該未定義指令所對應(yīng)的,PC,再加,4),和當(dāng)時的,CPSR,。在處理程序結(jié)束時,利用一條,MOVS PC,,,R14,指令便可以恢復(fù),CPSR,并返回主程序執(zhí)行。,● 軟件中斷指令,SWI,當(dāng),ARM,執(zhí)行軟件中斷指令,SWI,時,,ARM,會自動完成如下操作:,R14_svc?=,該未定義指令的下一條指令的地址,SPSR_svc?=?CPSR,,CPSR[4:0]?=?0b10011,——,即進(jìn)入特權(quán)模式,CPSR[5]?=?0,——,使,T=0,,進(jìn)入,ARM,狀態(tài),CPSR[6]?=,不改變,CPSR[7]?=?1,——,使,I=1,,禁止,irq,中斷   如果配置為正常地址,則,PC?=?0X00000008,;若為高向量地址,則,PC?=?0XFFFF0008,。   軟件中斷的響應(yīng)、處理及返回過程可用圖,8.8,來描述。,圖,8.8 SWI,指令的響應(yīng)、處理及返回過程,由圖,8.8,可以看到,當(dāng),ARM,執(zhí)行,SWI,指令時,首先將其下一條指令的地址,(,即,SWI,指令所對應(yīng)的,PC,再加上,4),保存在,R14,中,并將當(dāng)時的,CPSR,保存在,SPSR_svc,中。修改,CPSR,的部分內(nèi)容:進(jìn)入特權(quán)模式、禁止,irq,、使工作于,ARM,狀態(tài),然后轉(zhuǎn)向軟件服務(wù)程序的首地址,0X00000008(,或,0XFFFF0008),,開始執(zhí)行軟件中斷服務(wù)程序。   同樣,在處理程序結(jié)束時,利用一條,MOVS PC, R14,指令便可以恢復(fù),CPSR,并返回主程序執(zhí)行。,● 預(yù)取中止異常   在指令預(yù)取時,若目標(biāo)地址是非法的,則存儲器系統(tǒng)發(fā)出標(biāo)記信號,使所取指令無效,若,ARM,執(zhí)行該無效指令就會產(chǎn)生預(yù)取中止異常。當(dāng),ARM,執(zhí)行斷點(diǎn)中斷指令時,也會發(fā)生預(yù)取中止異常。,ARM,響應(yīng)預(yù)取中止異常的過程如下:,R14_abt?=,該未定義指令的下一條指令的地址,(,中止指令的,PC+4),,SPSR_abt?=?CPSR,,CPSR[4:0]?=?0b10111,——,即進(jìn)入特權(quán)模式,CPSR[5]?=?0,——,使,T?=?0,,進(jìn)入,ARM,狀態(tài),CPSR[6]?=,不改變,CPSR[7]?=?1,——,使,I?=?1,,禁止,irq,中斷   如果配置為正常地址,則,PC?=?0X0000000C,;若為高向量地址,則,PC?=?0XFFFF000C,。   圖,8.9,描述了預(yù)取中止異常響應(yīng)處理及返回的過程。,圖,8.9,預(yù)取中止異常的響應(yīng)、處理及返回過程,在圖,8.9,中,由處理程序返回時,若要回到預(yù)取中止指令,(,或,BKPT),上執(zhí)行,就用,SUBS PC, R14, #4,指令。因?yàn)樵陧憫?yīng)時,,R14,中保存的是,PC?+?4,的值,(,指向預(yù)取中止指令的下一條指令,),,所以必須先將其值減,4,再送到,PC,中。若要返回到預(yù)取中止指令的下一條指令,就用,MOVS PC, R14,指令,如圖,8.9,中虛線所示。,● 數(shù)據(jù)中止異常   當(dāng)執(zhí)行存儲器數(shù)據(jù)訪問指令時,由存儲器系統(tǒng)發(fā)出中止信號,使訪問數(shù)據(jù)無效,則可產(chǎn)生數(shù)據(jù)中止異常。其響應(yīng)過程如下:,R14_abt?=,該未定義指令的下一條指令的地址,+?4(,或中止指令的,PC?+?8),,SPSR_abt?=?CPSR,,CPSR[4:0]?=?0b10111,——,即進(jìn)入特權(quán)模式,CPSR[5]?=?0,——,使,T=0,,進(jìn)入,ARM,狀態(tài),,CPSR[6]?=,不改變,CPSR[7]?=?1,——,使,I?=?1,,禁止,irq,中斷   如果配置為正常地址,則,PC?=?0X00000010,;若為高向量地址,則,PC?=?0XFFFF0010,。   圖,8.10,描述了數(shù)據(jù)中止異常響應(yīng)處理及返回的過程。,圖,8.10,數(shù)據(jù)中止異常的響應(yīng)、處理及返回過程,在圖,8.10,中,由處理程序返回時,若要回到數(shù)據(jù)中止指令上執(zhí)行,就用,SUBS PC, R14, #8,指令。因?yàn)樵陧憫?yīng)時,,R14,中保存的是,PC?+?8,的值,(,指向數(shù)據(jù)中止指令地址加,8),。所以,若要返回到數(shù)據(jù)中止指令,則必須將,R14?-8,的值放,PC,。若要使程序返回到數(shù)據(jù)中止指令的下一條指令,就用,SUBS PC, R14,,,#4,指令,如圖,8.10,中虛線所示。,● 一般中斷請求,irq,如同,80X86,一樣,,ARM,是在一條指令結(jié)束時查詢有無中斷請 求,(irq,和,fiq),發(fā)生的。對一般中斷請求,irq,的響應(yīng)過程執(zhí)行如下操作:,R14_irq?=,執(zhí)行指令的下一條指令的地址,+?4(,或中斷發(fā)生時指令的,PC?+?8),,SPSR_irq?=?CPSR,,CPSR[4:0]?=?0b10010,——,即進(jìn)入,irq,模式,CPSR[5]?=?0,——,使,T=0,,進(jìn)入,ARM,狀態(tài),CPSR[6]?=,不改變,CPSR[7]?=?1,——,使,I?=?1,,禁止,irq,中斷,如果配置為正常地址,則,PC?=?0X00000018,;若為高向量地址,則,PC?=?0XFFFF0018,。   上述,irq,的響應(yīng)過程及處理與返回的過程如圖,8.11,所示。 由圖,8.11,可以看到,在,ARM,響應(yīng),irq,時,在,R14(LR),中保存的是發(fā)生,irq,時正在執(zhí)行指令的地址,也就是它所對應(yīng)的,PC,再加,8,,這是由,ARM,的流水線結(jié)構(gòu)所決定的,見圖,8.11,箭頭所示。,圖,8.11 irq,的響應(yīng)、處理及返回過程,中斷響應(yīng)過程中會對,irq,關(guān)中斷,正如本書前面提到的,如果中斷服務(wù)程序是允許嵌套的,則需要在服務(wù)程序中修改,CPSR[7],,使之為,0,。   由圖,8.11,還需注意到,中斷返回必須返回到發(fā)生,irq,請求時那條指令的下一條指令上執(zhí)行。因此,返回指令必須做到這一點(diǎn),故使用,SUBS PC, R14, #4,指令。,● 快速中斷請求,fiq,,ARM,對快速中斷請求,fiq,的響應(yīng)與,irq,非常類似,但,fiq,的優(yōu)先級比,irq,的優(yōu)先級高。,ARM,對快速中斷請求,fiq,的響應(yīng)過程如下:,R14_fiq?=,執(zhí)行指令的下一條指令的地址,+?4(,或中斷發(fā)生時指令的,PC?+?8),,SPSR_fiq?=?CPSR CPSR[4:0]?=?0b10001,——,即進(jìn)入,IRQ,模式,,CPSR[5]?=?0,——,使,T=0,,進(jìn)入,ARM,狀態(tài),CPSR[6]?=?1,——,使,F=1,,禁止,fiq,中斷,CPSR[7]?=?1,——,使,I=1,,禁止,irq,中斷   如果配置為正常地址,則,PC?=?0X0000001C,;若為高向量地址,則,PC?=?0XFFFF001C,。,ARM,對,fiq,的響應(yīng)過程及處理與返回與,irq,十分相似,其示意圖如圖,8.12,所示。,圖,8.12 fiq,的響應(yīng)、處理及返回過程,值得再次強(qiáng)調(diào)的是,中斷返回一定要回到發(fā)生中斷時正執(zhí)行指令的下一條指令上,只有這樣才可能接著中斷前的狀態(tài)繼續(xù)執(zhí)行主程序。   到此,我們對構(gòu)成,PXA27X,的核心處理器,ARM,做了最簡單的介紹,有關(guān)其他問題請讀者參看其他相關(guān)資料。,,8.3 Intel PXA27X,介紹,8.3.1 PXA27X,的結(jié)構(gòu),,由前面,PXA27X,的結(jié)構(gòu)圖,8.1,可以看到,其結(jié)構(gòu)是比較復(fù)雜的。一片,PXA27X,芯片主要包括如下一些功能部件及接口:,,,(1) ?Intel XScale,技術(shù):,,①,Intel XScale,微結(jié)構(gòu);,,② 協(xié)處理器。,,,(2),電源管理部件。,(3),內(nèi)部存儲器。,(4),中斷控制器。,(5),操作系統(tǒng)定時器。,(6),脈沖寬度調(diào)制單元,(PWM),。,(7),實(shí)時鐘,(RTC),。,(8),通用輸入,/,輸出接口,(GPIO),。,(9),外部存儲器控制器。,(10) ?DMA,控制器。,(11),串行接口: ① 通同異步收,/,發(fā)器,(UART),; ② 快速紅外通信接口; ③,I2C,串行總線接口; ④,AC,’,97,立體聲接口; ⑤,I2S,音頻編譯碼接口; ⑥,USB,客戶,(,從屬,),端接口; ⑦,USB,主控制器端接口; ⑧ 同步串行接口,(SSP),。,(12),液晶顯示板,(LCD),控制器。,(13) ?MM,卡、,SD,卡及,SDIO,卡控制器。,(14),存儲棒主控制器。,(15),靈活的可變鏈路接口,(MSL),。,(16),鍵盤接口。,(17),通用用戶鑒別模式接口。,(18),快速捕獲數(shù)字?jǐn)z像頭接口。,(19),測試接口。,8.3.2 PXA27X,的內(nèi)部存儲器,從上一小節(jié)可以看到,,PXA27X,芯片結(jié)構(gòu)復(fù)雜,包含有多種功能部件和接口。由于篇幅的限制,從本小節(jié)開始,僅將其中的一部分予以說明,更多更詳細(xì)的細(xì)節(jié)讀者可參看,Intel,公司提供的技術(shù)資料。,,1,.概述,1),內(nèi)部存儲器特性,PXA27X,的芯片內(nèi)部集成有,256?KB,的內(nèi)部,SRAM,。這,256?KB,的存儲器分成,4,個體,每個存儲體為,64?KB,。,PXA27X,的這,4,個體的內(nèi)部存儲器可按體進(jìn)行電源管理,從而達(dá)到最小的功率消耗。,,2),內(nèi)部存儲器的結(jié)構(gòu)框圖,PXA27X,的內(nèi)部存儲器結(jié)構(gòu)框圖如圖,8.13,所示。   由圖,8.13,可以看到,每一個存儲體都有自己的存取請求隊(duì)列。當(dāng)存儲體正在被訪問時,新的存取請求就放在隊(duì)列中,一旦前面的存取結(jié)束,隊(duì)列中的請求立刻得到執(zhí)行。若存取請求時存儲體沒有工作,則請求直接響應(yīng),無須排隊(duì)。 圖,8.13,中的系統(tǒng)總線是指,PXA27X,內(nèi)部的系統(tǒng)總線,見前圖,8.1,。,在,PXA27X,內(nèi)部有非常復(fù)雜但功能又非常強(qiáng)大的電源管理。在內(nèi)部存儲器中也設(shè)有電源管理模塊,以達(dá)到最低的功耗。,PXA27X,有六種電源模式,它們是:正常,(,運(yùn)行及強(qiáng)力運(yùn)行,),、空閑、深度空閑、備用、睡眠、深度睡眠。,PXA27X,的電源管理包括整塊芯片電源管理,也包括內(nèi)部存儲器的電源管理。對于內(nèi)部存儲器的電源管理,可用表,8.13,來說明。,圖,8.13 PXA27X,內(nèi)部存儲器結(jié)構(gòu),表,8.13,內(nèi)部存儲器的電源,,當(dāng),PXA27X,上電復(fù)位時,會將,PXA27X,電源管理的內(nèi)部存儲器模塊及內(nèi)部存儲體均置為運(yùn)行模式。當(dāng),PXA27X,處理器進(jìn)入睡眠狀態(tài)時,內(nèi)部存儲器的每一個存儲體的電源關(guān)斷,存儲體中存儲的所有信息將丟失。如果想保住信息,則需要事先將,PXA27X,電源管理模塊中的寄存器,PSLR,的,[SL_RX],位置,1,。若,PXA27X,處理器進(jìn)入深度睡眠狀態(tài),則內(nèi)部存儲器的每一個存儲體的電源均關(guān)斷,存儲體中存儲的所有信息都將丟失。,,2,.內(nèi)部存儲器地址,由于,256?KB,的內(nèi)部,SRAM,存儲器已經(jīng)集成在,PXA27X,芯片內(nèi)部,因此其地址是固定不變的。表,8.14,給出了內(nèi)部存儲器各存儲體的地址范圍。,表,8.14 PXA27X,芯片內(nèi)部存儲器的地址分配,在表,8.14,中,除了給出內(nèi)部存儲器的地址外,還說明有一些地址將保留為后續(xù)的芯片所用。,8.3.3 PXA27X,的外部存儲器控制器,PXA27X,可以在其芯片外部連接各種存儲器,而且在它的內(nèi)部集成了外部存儲器的控制器,該控制器為使用者提供了所有的控制信號,這就使得使用者在附加外部存儲器時,連接外部存儲器非常容易,為用戶提供了方便。,,1,.概述,1),性能,PXA27X,的存儲器控制器為我們提供了如下一些主要性能:,(1) ?4,個區(qū)的,SDRAM,接口,每個區(qū)的容量一般為,64?MB,,最大為,256?MB,。因此,最大可連接的外部,SDRAM,可達(dá),1?GB,。支持,SDRAM,,但工作電壓為,1.8?V,,工作頻率最高為,104?MHz,。,,(2),支持,6,個區(qū)的,SRAM,或閃速存儲器,每個區(qū)的容量為,64?MB,。同時,這,6,個區(qū)中的,4,個區(qū)還可以接同步閃速存儲器。,(3),支持,PC,卡存儲器,設(shè)置有兩個插座信號。,(4),設(shè)置一個交替總線主控器來控制總線。,(5),支持,DMA,傳送。,,2),控制器提供的信號   如前所述,外部存儲器控制器提供了連接使用信號,這些信號主要有如下幾類:,(1),外部存儲器共享信號。外部存儲器共享信號如表,8.15,所示。,表,8.15,外部存儲器共享信號,,(2),與,SRAM,和,SDRAM,有關(guān)的信號。與,SRAM,和,SDRAM,有關(guān)的信號如表,8.16,所示。,(3),雜項(xiàng)信號。用于外部存儲器的雜項(xiàng)信號如表,8.17,所示。,表,8.16,與,SRAM,和,SDRAM,有關(guān)的信號,表,8.17,雜 項(xiàng) 信 號,,(4),用于交替總線主控制器的信號。用于交替總線主控制器的信號如表,8.18,所示。,(5) ?PC,卡接口信號。,PC,卡接口信號如表,8.19,所示。,表,8.18,交替總線主控制器信號,表,8.19 PC,卡接口信號,,3),存儲器控制器的配置圖,PXA27X,存儲器控制器的配置框圖如圖,8.14,所示。   由圖中可以看到,存儲器控制器所提供的接

注意事項(xiàng)

本文(微型計(jì)算機(jī)原理及應(yīng)用(第二版)章-課件8)為本站會員(痛***)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  sobing.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!