嵌入式系統(tǒng)-第二章_第1頁
嵌入式系統(tǒng)-第二章_第2頁
嵌入式系統(tǒng)-第二章_第3頁
嵌入式系統(tǒng)-第二章_第4頁
嵌入式系統(tǒng)-第二章_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、嵌入式系統(tǒng)-第二章第二章第二章 基于基于ARM920TARM920T核微處理器核微處理器n通用處理器系列通用處理器系列 ARM7、ARM9、ARM9E和和ARM10E的特點(diǎn)及主要應(yīng)用領(lǐng)域的特點(diǎn)及主要應(yīng)用領(lǐng)域n嵌入式嵌入式ARM920T內(nèi)核編程模型、內(nèi)核編程模型、ARM920T的運(yùn)行模的運(yùn)行模式、寄存器組織及式、寄存器組織及ARM體系結(jié)構(gòu)的存儲(chǔ)器格式體系結(jié)構(gòu)的存儲(chǔ)器格式n三星三星S3C2410X處理器結(jié)構(gòu)處理器結(jié)構(gòu)22.1 ARM 處理器簡介處理器簡介 ARM(Advanced RISC Machines)處理器是一種低功耗高性能的)處理器是一種低功耗高性能的32位位RISC處理器。處理器。 什

2、么是什么是RISC架構(gòu)?架構(gòu)? 嵌入式微處理器可分為嵌入式微處理器可分為CISC和和RISC兩類(復(fù)雜指令集計(jì)算機(jī)兩類(復(fù)雜指令集計(jì)算機(jī)Complex Instruction Set ComputerCISC;精簡指令集計(jì)算機(jī);精簡指令集計(jì)算機(jī)Reduced Instruction Set ComputerRISC)。大家熟悉的大多數(shù)臺(tái)式)。大家熟悉的大多數(shù)臺(tái)式PC都是使用都是使用CISC微處理器,微處理器,如如Intel的的x86。RISC結(jié)構(gòu)體系有兩大主流:結(jié)構(gòu)體系有兩大主流:Silicon Graphics公司(硅谷圖形公公司(硅谷圖形公司)的司)的MIPS技術(shù);技術(shù);ARM公司的公司的

3、Advanced RISC Machines技術(shù)。技術(shù)。3RISC和和CISC是目前設(shè)計(jì)制造微處理器的兩種典型技術(shù),為達(dá)到高效的目的,是目前設(shè)計(jì)制造微處理器的兩種典型技術(shù),為達(dá)到高效的目的,采用的方法不同。它們的差異主要有以下幾點(diǎn)。采用的方法不同。它們的差異主要有以下幾點(diǎn)。(1)指令系統(tǒng):)指令系統(tǒng):RISC設(shè)計(jì)者把主要精力放在那些經(jīng)常使用的指令上,盡量使它們具有設(shè)計(jì)者把主要精力放在那些經(jīng)常使用的指令上,盡量使它們具有簡單高效的特色。對(duì)不常用的功能,常通過組合指令來實(shí)現(xiàn)。而簡單高效的特色。對(duì)不常用的功能,常通過組合指令來實(shí)現(xiàn)。而CISC計(jì)算機(jī)的指令系統(tǒng)比較計(jì)算機(jī)的指令系統(tǒng)比較豐富,有專用指令來

4、完成特定的功能。豐富,有專用指令來完成特定的功能。(2)存儲(chǔ)器操作:)存儲(chǔ)器操作:RISC對(duì)存儲(chǔ)器操作有限制,使控制簡單化;而對(duì)存儲(chǔ)器操作有限制,使控制簡單化;而CISC機(jī)機(jī)器的存儲(chǔ)器操作指令多,操作直接。器的存儲(chǔ)器操作指令多,操作直接。(3)程序:)程序:RISC匯編語言程序一般需要較大的內(nèi)存空間,實(shí)現(xiàn)特殊功能時(shí)程匯編語言程序一般需要較大的內(nèi)存空間,實(shí)現(xiàn)特殊功能時(shí)程序復(fù)雜,不易設(shè)計(jì);而序復(fù)雜,不易設(shè)計(jì);而CISC匯編語言程序編程相對(duì)簡單,科學(xué)計(jì)算及復(fù)雜操作的匯編語言程序編程相對(duì)簡單,科學(xué)計(jì)算及復(fù)雜操作的程序設(shè)計(jì)相對(duì)容易,效率較高。程序設(shè)計(jì)相對(duì)容易,效率較高。(4)中斷:)中斷:RISC機(jī)器在

5、一條指令執(zhí)行的適當(dāng)?shù)胤娇梢皂憫?yīng)中斷;而機(jī)器在一條指令執(zhí)行的適當(dāng)?shù)胤娇梢皂憫?yīng)中斷;而CISC機(jī)器是在機(jī)器是在一條指令執(zhí)行結(jié)束后響應(yīng)中斷的。一條指令執(zhí)行結(jié)束后響應(yīng)中斷的。4(5)CPU:由于:由于RISC CPU包含較少的單元電路,因而面積小、功耗低;而包含較少的單元電路,因而面積小、功耗低;而CISC CPU包含豐富的電路單元,因而功能強(qiáng)、面積大、功耗大。包含豐富的電路單元,因而功能強(qiáng)、面積大、功耗大。(6)設(shè)計(jì)周期:)設(shè)計(jì)周期:RISC微處理器結(jié)構(gòu)簡單,布局緊湊,設(shè)計(jì)周期短,且易于采微處理器結(jié)構(gòu)簡單,布局緊湊,設(shè)計(jì)周期短,且易于采用最新技術(shù);用最新技術(shù);CISC微處理器結(jié)構(gòu)復(fù)雜,設(shè)計(jì)周期長。微

6、處理器結(jié)構(gòu)復(fù)雜,設(shè)計(jì)周期長。(7)易用性:)易用性:RISC微處理器結(jié)構(gòu)簡單,指令規(guī)整,性能容易把握,易學(xué)易用;微處理器結(jié)構(gòu)簡單,指令規(guī)整,性能容易把握,易學(xué)易用;CISC微處理微處理器結(jié)構(gòu)復(fù)雜,功能強(qiáng)大,實(shí)現(xiàn)特殊功能容易。器結(jié)構(gòu)復(fù)雜,功能強(qiáng)大,實(shí)現(xiàn)特殊功能容易。(8)應(yīng)用范圍:)應(yīng)用范圍:RISC機(jī)器更適合于嵌入式應(yīng)用;而機(jī)器更適合于嵌入式應(yīng)用;而CISC機(jī)器則更適合于通用機(jī)器則更適合于通用計(jì)算機(jī)。計(jì)算機(jī)。 目前目前CISC與與RISC正在逐步走向融合,如正在逐步走向融合,如Pentium Pro的內(nèi)核是基于的內(nèi)核是基于RISC體系結(jié)構(gòu),而能接受體系結(jié)構(gòu),而能接受CISC指令后將其分解分類成

7、指令后將其分解分類成RISC指令以便在遇指令以便在遇一時(shí)間內(nèi)能夠執(zhí)行多條指令。由此可見,下一代的一時(shí)間內(nèi)能夠執(zhí)行多條指令。由此可見,下一代的CPU將融合將融合CISC與與RISC兩種技術(shù),從軟件與硬件方面看二者會(huì)取長補(bǔ)短。兩種技術(shù),從軟件與硬件方面看二者會(huì)取長補(bǔ)短。 5ARM處理器的主要特點(diǎn)處理器的主要特點(diǎn)n共有共有31個(gè)個(gè)32位寄存器:位寄存器:16個(gè)在任何模式下可見個(gè)在任何模式下可見n所有指令都帶有條件所有指令都帶有條件n加載數(shù)值的同時(shí)進(jìn)行算術(shù)和移位操作加載數(shù)值的同時(shí)進(jìn)行算術(shù)和移位操作n在幾種模式下操作在幾種模式下操作n2.1.1 ARM 微處理器系列微處理器系列nARM7系列:工業(yè)控制、

8、網(wǎng)絡(luò)設(shè)備、移動(dòng)系列:工業(yè)控制、網(wǎng)絡(luò)設(shè)備、移動(dòng) nARM9系列系列nARM9E系列系列nARM10E系列系列nSecurCore系列:安全要求較高的應(yīng)用,如電子銀行系列:安全要求較高的應(yīng)用,如電子銀行nIntel的的StrongARM:便攜式通信產(chǎn)品,如掌上電腦:便攜式通信產(chǎn)品,如掌上電腦nIntel的的Xscale:Intel主推的主推的ARM微處理器,已用于數(shù)字移動(dòng)微處理器,已用于數(shù)字移動(dòng) 通用通用處理器處理器無線設(shè)備、消費(fèi)類電子產(chǎn)品無線設(shè)備、消費(fèi)類電子產(chǎn)品62.1.2 ARM7系列微處理器系列微處理器n嵌入式嵌入式ICE-RT(In Circuit Emulator-Rral Time)邏

9、輯,調(diào)試開)邏輯,調(diào)試開發(fā)方便發(fā)方便 解釋:用于提供片內(nèi)調(diào)試支持,它包含一個(gè)調(diào)試通信通道,在主機(jī)調(diào)解釋:用于提供片內(nèi)調(diào)試支持,它包含一個(gè)調(diào)試通信通道,在主機(jī)調(diào)試器和目標(biāo)之間傳送信息,嵌入式試器和目標(biāo)之間傳送信息,嵌入式ICE-RT通過通過JTAG測試訪問接口進(jìn)測試訪問接口進(jìn)行控制。行控制。n極低的功耗,適用于便攜產(chǎn)品極低的功耗,適用于便攜產(chǎn)品n能夠提供能夠提供0.9MIPS/MHZ 的三級(jí)流水線結(jié)構(gòu)的三級(jí)流水線結(jié)構(gòu) 解釋:三級(jí)流水線結(jié)構(gòu)是解釋:三級(jí)流水線結(jié)構(gòu)是 取指取指-譯碼譯碼-執(zhí)行執(zhí)行n對(duì)操作系統(tǒng)的廣泛支持:對(duì)操作系統(tǒng)的廣泛支持:Windows CE、Linuxn指令系統(tǒng)與指令系統(tǒng)與ARM

10、9、ARM9E、ARM10E兼容兼容n主頻高達(dá)主頻高達(dá)130MHZ,可用于高速運(yùn)算,可用于高速運(yùn)算具有低功耗的具有低功耗的32位位RISC處理器,主要特點(diǎn):處理器,主要特點(diǎn):7n ARM7TDMI是目前使用最廣泛的內(nèi)核:是目前使用最廣泛的內(nèi)核:T:支持:支持16位壓縮指令集位壓縮指令集 Thumb. Thumb簡介:簡介: 為兼容數(shù)據(jù)總線寬度為為兼容數(shù)據(jù)總線寬度為16位的應(yīng)用系統(tǒng),位的應(yīng)用系統(tǒng),ARM體系結(jié)構(gòu)除了支持執(zhí)行效率很高體系結(jié)構(gòu)除了支持執(zhí)行效率很高的的32位位ARM指令集以外,同時(shí)支持指令集以外,同時(shí)支持16位的位的Thumb指令集。指令集。Thumb指令集是指令集是ARM指令集的一個(gè)

11、子集,是針對(duì)代碼密度問題而提出的,它具有指令集的一個(gè)子集,是針對(duì)代碼密度問題而提出的,它具有16位的代碼寬位的代碼寬度。與等價(jià)的度。與等價(jià)的32位代碼相比較,位代碼相比較,Thumb指令集在保留指令集在保留32位代碼優(yōu)勢的同時(shí),大位代碼優(yōu)勢的同時(shí),大大的節(jié)省了系統(tǒng)的存儲(chǔ)空間。大的節(jié)省了系統(tǒng)的存儲(chǔ)空間。Thumb不是一個(gè)完整的體系結(jié)構(gòu),不能指望處理不是一個(gè)完整的體系結(jié)構(gòu),不能指望處理器只執(zhí)行器只執(zhí)行Thumb指令集而不支持指令集而不支持ARM指令集。指令集。 8nD:支持片上:支持片上Debug,實(shí)現(xiàn)實(shí)時(shí)調(diào)試,實(shí)現(xiàn)實(shí)時(shí)調(diào)試nM:內(nèi)嵌硬件乘法器:內(nèi)嵌硬件乘法器(multiplier) 解釋:硬件乘

12、法器可以在單個(gè)指令周期內(nèi)完成乘法操作,是解釋:硬件乘法器可以在單個(gè)指令周期內(nèi)完成乘法操作,是區(qū)別于通用的微處理器的重要標(biāo)志區(qū)別于通用的微處理器的重要標(biāo)志 nI:嵌入式:嵌入式ICE,支持片上斷點(diǎn)和調(diào)試點(diǎn),支持片上斷點(diǎn)和調(diào)試點(diǎn)92.1.3 ARM9系列微處理器系列微處理器具有高性能、低功耗,主要特點(diǎn):具有高性能、低功耗,主要特點(diǎn):n5級(jí)流水線,具有分開的指令和數(shù)據(jù)存儲(chǔ)器,指令執(zhí)行效率更高,具體如下:級(jí)流水線,具有分開的指令和數(shù)據(jù)存儲(chǔ)器,指令執(zhí)行效率更高,具體如下:(1)取指:從存儲(chǔ)器中取出指令,并將其放入指令流水線。)取指:從存儲(chǔ)器中取出指令,并將其放入指令流水線。(2)譯碼:對(duì)指令進(jìn)行譯碼。)

13、譯碼:對(duì)指令進(jìn)行譯碼。(3)執(zhí)行:把一個(gè)操作數(shù)移位,產(chǎn)生)執(zhí)行:把一個(gè)操作數(shù)移位,產(chǎn)生ALU(算術(shù)邏輯單元)的結(jié)果。(算術(shù)邏輯單元)的結(jié)果。(4)緩沖)緩沖/數(shù)據(jù):如需要?jiǎng)t訪問數(shù)據(jù)存儲(chǔ)器;否則數(shù)據(jù):如需要?jiǎng)t訪問數(shù)據(jù)存儲(chǔ)器;否則ALU的結(jié)果只是簡單地緩沖的結(jié)果只是簡單地緩沖1個(gè)時(shí)鐘周期,以便所有的指令具有同樣的流水線流程。個(gè)時(shí)鐘周期,以便所有的指令具有同樣的流水線流程。(5)回寫:將指令產(chǎn)生的結(jié)果回寫到寄存器,包括任何從存儲(chǔ)器中讀取的數(shù)據(jù)。)回寫:將指令產(chǎn)生的結(jié)果回寫到寄存器,包括任何從存儲(chǔ)器中讀取的數(shù)據(jù)。5級(jí)流水線圖級(jí)流水線圖10n提供提供1.1MIPS/MHZ 的哈佛結(jié)構(gòu)的哈佛結(jié)構(gòu) 哈佛結(jié)構(gòu)

14、:是一種將程序指令存儲(chǔ)和數(shù)據(jù)存儲(chǔ)分開的存儲(chǔ)器結(jié)構(gòu)。哈佛結(jié)構(gòu):是一種將程序指令存儲(chǔ)和數(shù)據(jù)存儲(chǔ)分開的存儲(chǔ)器結(jié)構(gòu)。n支持支持32位位ARM指令集和指令集和16位位Thumb指令集。指令集。n支持支持32位的高速位的高速AMBA總線接口總線接口 AMBA :將:將RISC處理器集成在其他處理器集成在其他IP芯核和外設(shè)中,它是有效連接芯核和外設(shè)中,它是有效連接IP核的核的“數(shù)字膠數(shù)字膠”,并且是并且是ARM復(fù)用策略的重要組件。它不是芯片與外設(shè)之間的接口,而是復(fù)用策略的重要組件。它不是芯片與外設(shè)之間的接口,而是ARM內(nèi)核與芯片內(nèi)核與芯片上其他元件進(jìn)行通信的接口。上其他元件進(jìn)行通信的接口。n全性能的全性能的

15、MMU支持支持Windows CE、Linux、Palm OS等多種主流嵌入式操作等多種主流嵌入式操作系統(tǒng)。系統(tǒng)。 MMU: MemoryManagementUnit,內(nèi)存管理單元,負(fù)責(zé)虛擬地址與物理地址的轉(zhuǎn)換。,內(nèi)存管理單元,負(fù)責(zé)虛擬地址與物理地址的轉(zhuǎn)換。達(dá)到每個(gè)用戶進(jìn)程都擁有自己獨(dú)立的地址空間的目標(biāo)。達(dá)到每個(gè)用戶進(jìn)程都擁有自己獨(dú)立的地址空間的目標(biāo)。n MPU(Memory Protection Unit,內(nèi)存保護(hù)單元)支持實(shí)時(shí)操作系統(tǒng),內(nèi)存保護(hù)單元)支持實(shí)時(shí)操作系統(tǒng)n 支持?jǐn)?shù)據(jù)支持?jǐn)?shù)據(jù)Cache(高速緩沖存儲(chǔ)器)和指令(高速緩沖存儲(chǔ)器)和指令Cache112.2 ARM 920T簡介簡介A

16、RM920T是ARM920TDMI系列中的一款通用性的微處理器,ARM920TDMI系列微處理器包含如下幾種類型的內(nèi)核。 ARM9TDMI:只有內(nèi)核。 ARM940T:由內(nèi)核、高速緩存和內(nèi)存保護(hù)單元(MPU) 組成。 ARM920T:由內(nèi)核、高速緩存和內(nèi)存管理單元(MMU) 組成。12ARM920T以以ARM9TDMI為內(nèi)核,增加了高速緩存和內(nèi)存管理單元(為內(nèi)核,增加了高速緩存和內(nèi)存管理單元(MMU),系統(tǒng)結(jié)構(gòu)),系統(tǒng)結(jié)構(gòu)圖如圖圖如圖4.3所示。所示。ARM920T 結(jié)構(gòu)功能圖結(jié)構(gòu)功能圖內(nèi)置追蹤宏單元:內(nèi)置追蹤宏單元:ETM定定義了一個(gè)物理跟蹤端口用來義了一個(gè)物理跟蹤端口用來傳輸程序執(zhí)行流程的

17、信息傳輸程序執(zhí)行流程的信息 RISC CPU16K字節(jié)指字節(jié)指令緩存令緩存指令存儲(chǔ)器管指令存儲(chǔ)器管理單元理單元高級(jí)微處理器總高級(jí)微處理器總線架構(gòu)線架構(gòu)協(xié)處理器:系統(tǒng)控協(xié)處理器:系統(tǒng)控制處理器制處理器16K字節(jié)字節(jié)數(shù)據(jù)緩存數(shù)據(jù)緩存數(shù)據(jù)存儲(chǔ)器管數(shù)據(jù)存儲(chǔ)器管理單元理單元寫緩沖器寫緩沖器13ARM920T處理器的主要特性處理器的主要特性nARM9TDMI 內(nèi)核,內(nèi)核,ARM v4T 架構(gòu)(架構(gòu)(ARM版本版本4,支持,支持Thumb )n 兩套指令集:兩套指令集:ARM高性能高性能32位指令集、位指令集、Thumb高代碼密度高代碼密度16位指位指令集。令集。n 5級(jí)流水線結(jié)構(gòu)級(jí)流水線結(jié)構(gòu)n 16K字節(jié)

18、數(shù)據(jù)緩存、指令緩存字節(jié)數(shù)據(jù)緩存、指令緩存n 標(biāo)準(zhǔn)的標(biāo)準(zhǔn)的ARMv4存儲(chǔ)器管理單元(存儲(chǔ)器管理單元(MMU)n 8位、位、16位、位、32位的指令總線與數(shù)據(jù)總線。位的指令總線與數(shù)據(jù)總線。142.2.1 ARM920T內(nèi)核編程模型內(nèi)核編程模型字(字(Word),在),在ARM體系結(jié)構(gòu)中,字的長度為體系結(jié)構(gòu)中,字的長度為32位,而在位,而在8位位/16位處理器體位處理器體系結(jié)構(gòu)中,字的長度一般為系結(jié)構(gòu)中,字的長度一般為16位。位。半字(半字(Half-Word),在),在ARM體系結(jié)構(gòu)中,半字的長度為體系結(jié)構(gòu)中,半字的長度為16位,與位,與8位位/16位位處理器體系結(jié)構(gòu)中字的長度一致。處理器體系結(jié)構(gòu)

19、中字的長度一致。字節(jié)(字節(jié)(Byte),在),在ARM體系結(jié)構(gòu)和體系結(jié)構(gòu)和8位位/16位處理器體系結(jié)構(gòu)中,字節(jié)的位處理器體系結(jié)構(gòu)中,字節(jié)的長度均為長度均為8位。位。指令長度可以是指令長度可以是32位(在位(在ARM狀態(tài)下),也可以為狀態(tài)下),也可以為16位(在位(在Thumb狀態(tài)狀態(tài)下)。下)。ARM920T中支持字節(jié)(中支持字節(jié)(8位)、半字(位)、半字(16位)、字(位)、字(32位)位)3種數(shù)據(jù)類型,其種數(shù)據(jù)類型,其中,字需要中,字需要4字節(jié)對(duì)齊,半字需要字節(jié)對(duì)齊,半字需要2字節(jié)對(duì)齊。字節(jié)對(duì)齊。15ARM微處理器的工作狀態(tài)微處理器的工作狀態(tài)從編程的角度看,從編程的角度看,ARM920T微

20、處理器的工作狀態(tài)一般有兩種:微處理器的工作狀態(tài)一般有兩種: ARM狀態(tài),此時(shí)處理器執(zhí)行狀態(tài),此時(shí)處理器執(zhí)行32位的、字對(duì)齊的位的、字對(duì)齊的ARM指令;指令; Thumb狀態(tài),此時(shí)處理器執(zhí)行狀態(tài),此時(shí)處理器執(zhí)行16位的、半字對(duì)齊的位的、半字對(duì)齊的Thumb指令。指令。ARM指令集和指令集和Thumb指令集均有切換處理器狀態(tài)的指令,在程序的執(zhí)行過程中,指令集均有切換處理器狀態(tài)的指令,在程序的執(zhí)行過程中,微處理器可以隨時(shí)在兩種工作狀態(tài)之間切換,并且,處理器工作狀態(tài)的轉(zhuǎn)變并不影微處理器可以隨時(shí)在兩種工作狀態(tài)之間切換,并且,處理器工作狀態(tài)的轉(zhuǎn)變并不影響處理器的工作模式和相應(yīng)寄存器中的內(nèi)容。但響處理器的工

21、作模式和相應(yīng)寄存器中的內(nèi)容。但ARM微處理器在開始執(zhí)行代碼時(shí),微處理器在開始執(zhí)行代碼時(shí),應(yīng)該處于應(yīng)該處于ARM狀態(tài)。狀態(tài)。當(dāng)操作數(shù)寄存器的狀態(tài)位(位當(dāng)操作數(shù)寄存器的狀態(tài)位(位0)為)為1時(shí),可以采用執(zhí)行時(shí),可以采用執(zhí)行BX指令(跳轉(zhuǎn)指令)的方法,使指令(跳轉(zhuǎn)指令)的方法,使微處理器從微處理器從ARM狀態(tài)切換到狀態(tài)切換到Thumb狀態(tài)。當(dāng)操作數(shù)寄存器的狀態(tài)位為狀態(tài)。當(dāng)操作數(shù)寄存器的狀態(tài)位為0時(shí),執(zhí)行時(shí),執(zhí)行BX指令指令可以使微處理器從可以使微處理器從Thumb狀態(tài)切換到狀態(tài)切換到ARM狀態(tài)。此外,在處理器進(jìn)行異常處理時(shí),將狀態(tài)。此外,在處理器進(jìn)行異常處理時(shí),將PC指針放入異常模式鏈接寄存器中,并

22、從異常向量地址開始執(zhí)行程序,也可以使處理器指針放入異常模式鏈接寄存器中,并從異常向量地址開始執(zhí)行程序,也可以使處理器切換到切換到ARM狀態(tài)。狀態(tài)。 162.2.2 ARM 體系結(jié)構(gòu)的存儲(chǔ)器格式體系結(jié)構(gòu)的存儲(chǔ)器格式ARM920T體系結(jié)構(gòu)將存儲(chǔ)器看做是從零地址開始的字節(jié)的線性組合。從體系結(jié)構(gòu)將存儲(chǔ)器看做是從零地址開始的字節(jié)的線性組合。從0字節(jié)到字節(jié)到3字字節(jié)放置第節(jié)放置第1個(gè)存儲(chǔ)的字?jǐn)?shù)據(jù),從第個(gè)存儲(chǔ)的字?jǐn)?shù)據(jù),從第4個(gè)字節(jié)到第個(gè)字節(jié)到第7個(gè)字節(jié)放置第個(gè)字節(jié)放置第2個(gè)存儲(chǔ)的字?jǐn)?shù)據(jù),依次排個(gè)存儲(chǔ)的字?jǐn)?shù)據(jù),依次排列。作為列。作為32位的微處理器,位的微處理器,ARM920T體系結(jié)構(gòu)所支持的最大尋址空間為體

23、系結(jié)構(gòu)所支持的最大尋址空間為4GB(232字字節(jié))。節(jié))。ARM920T體系結(jié)構(gòu)可以用兩種方法存儲(chǔ)字?jǐn)?shù)據(jù),分別稱為大端格式和體系結(jié)構(gòu)可以用兩種方法存儲(chǔ)字?jǐn)?shù)據(jù),分別稱為大端格式和小端格式。小端格式。大端格式中字?jǐn)?shù)據(jù)的高字節(jié)存儲(chǔ)在低地址中,而字?jǐn)?shù)據(jù)的低字節(jié)則存放在高地址中,大端格式中字?jǐn)?shù)據(jù)的高字節(jié)存儲(chǔ)在低地址中,而字?jǐn)?shù)據(jù)的低字節(jié)則存放在高地址中,如下圖所示。如下圖所示。 17與大端存儲(chǔ)格式相反,在小端存儲(chǔ)格式中,低地址中存放的是字?jǐn)?shù)與大端存儲(chǔ)格式相反,在小端存儲(chǔ)格式中,低地址中存放的是字?jǐn)?shù)據(jù)的低字節(jié),高地址存放的是字?jǐn)?shù)據(jù)的高字節(jié)。如下圖所示據(jù)的低字節(jié),高地址存放的是字?jǐn)?shù)據(jù)的高字節(jié)。如下圖所示 :1

24、82.2.3 處理器模式處理器模式ARM920T支持支持7種運(yùn)行模式,分別為:種運(yùn)行模式,分別為: 用戶模式(用戶模式(usr),),ARM處理器正常的程序執(zhí)行狀態(tài);處理器正常的程序執(zhí)行狀態(tài); 快速中斷模式(快速中斷模式(fiq),用于高速數(shù)據(jù)傳輸或通道處理;),用于高速數(shù)據(jù)傳輸或通道處理; 外部中斷模式(外部中斷模式(irq),用于通用的中斷處理;),用于通用的中斷處理; 管理模式(管理模式(svc),操作系統(tǒng)使用的保護(hù)模式;),操作系統(tǒng)使用的保護(hù)模式; 數(shù)據(jù)訪問終止模式(數(shù)據(jù)訪問終止模式(abt),當(dāng)數(shù)據(jù)或指令預(yù)取終止時(shí)進(jìn)入該模式,可用于虛擬),當(dāng)數(shù)據(jù)或指令預(yù)取終止時(shí)進(jìn)入該模式,可用于虛擬

25、存儲(chǔ)及存儲(chǔ)保護(hù);存儲(chǔ)及存儲(chǔ)保護(hù); 系統(tǒng)模式(系統(tǒng)模式(sys),運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù);),運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù); 未定義指令中止模式(未定義指令中止模式(und),當(dāng)未定義的指令執(zhí)行時(shí)進(jìn)入該模式,可用于支持硬件協(xié)處理器的),當(dāng)未定義的指令執(zhí)行時(shí)進(jìn)入該模式,可用于支持硬件協(xié)處理器的軟件仿真。軟件仿真。ARM微處理器的運(yùn)行模式可以通過軟件改變,也可以通過外部中斷或異常處理改微處理器的運(yùn)行模式可以通過軟件改變,也可以通過外部中斷或異常處理改變。大多數(shù)的應(yīng)用程序運(yùn)行在用戶模式下,當(dāng)處理器運(yùn)行在用戶模式下時(shí),某些被保變。大多數(shù)的應(yīng)用程序運(yùn)行在用戶模式下,當(dāng)處理器運(yùn)行在用戶模式下時(shí),某些被保護(hù)

26、的系統(tǒng)資源是不能被訪問的。護(hù)的系統(tǒng)資源是不能被訪問的。除用戶模式以外,其余的除用戶模式以外,其余的6種模式稱為非用戶模式或特權(quán)模式;其中除去用戶模式和系統(tǒng)模式種模式稱為非用戶模式或特權(quán)模式;其中除去用戶模式和系統(tǒng)模式以外的以外的5種又稱為異常模式,常用于處理中斷或異常,以及訪問受保護(hù)的系統(tǒng)資源等情況。種又稱為異常模式,常用于處理中斷或異常,以及訪問受保護(hù)的系統(tǒng)資源等情況。192.2.4 寄存器組織寄存器組織 ARM920T共有共有37個(gè)個(gè)32位寄存器,其中位寄存器,其中31個(gè)為通用寄存器,個(gè)為通用寄存器,6個(gè)為個(gè)為狀態(tài)寄存器。但是這些寄存器不能被同時(shí)訪問,具體哪些寄存器是可狀態(tài)寄存器。但是這些

27、寄存器不能被同時(shí)訪問,具體哪些寄存器是可編程訪問的,取決于微處理器的工作狀態(tài)及具體的運(yùn)行模式。在編程訪問的,取決于微處理器的工作狀態(tài)及具體的運(yùn)行模式。在ARM狀態(tài)下,任一時(shí)刻可以訪問狀態(tài)下,任一時(shí)刻可以訪問16個(gè)通用寄存器和個(gè)通用寄存器和12個(gè)狀態(tài)寄存器。個(gè)狀態(tài)寄存器。1、ARM狀態(tài)下的寄存器組織(狀態(tài)下的寄存器組織( R0R15)未分組寄存器未分組寄存器R0R7分組寄存器分組寄存器R8R14程序計(jì)數(shù)器程序計(jì)數(shù)器PC(R15)1)未分組寄存器)未分組寄存器R0-R7:在所有運(yùn)行模式下,指向同一個(gè)物理寄存器:在所有運(yùn)行模式下,指向同一個(gè)物理寄存器202)分組寄存器)分組寄存器R8-R14:每一次

28、所訪問的物理寄存器與處理器當(dāng)前的運(yùn)行模式:每一次所訪問的物理寄存器與處理器當(dāng)前的運(yùn)行模式有關(guān)。有關(guān)。R8-R12: 兩種模式,對(duì)應(yīng)兩個(gè)不同的物理寄存器兩種模式,對(duì)應(yīng)兩個(gè)不同的物理寄存器R13、R14:7種模式(用戶模式與系統(tǒng)模式共用),對(duì)應(yīng)種模式(用戶模式與系統(tǒng)模式共用),對(duì)應(yīng)6個(gè)不個(gè)不 同的物理寄存器同的物理寄存器(區(qū)分記號(hào)(區(qū)分記號(hào)R13、 R14 )R14也稱為子程序連接寄存器(也稱為子程序連接寄存器(Subroutine Link Register)或連接寄)或連接寄存器存器LR。當(dāng)執(zhí)行。當(dāng)執(zhí)行BL子程序調(diào)用指令時(shí),子程序調(diào)用指令時(shí),R14中得到中得到R15(程序計(jì)數(shù)器(程序計(jì)數(shù)器PC

29、)的備份。在其他情況下,)的備份。在其他情況下,R14用做通用寄存器。與之類似,當(dāng)發(fā)生用做通用寄存器。與之類似,當(dāng)發(fā)生中斷或異常時(shí),對(duì)應(yīng)的分組寄存器中斷或異常時(shí),對(duì)應(yīng)的分組寄存器R14_svc、R14_irq、R14_fiq、R14_abt和和R14_und用來保存用來保存R15的返回值。的返回值。213)程序計(jì)數(shù)器)程序計(jì)數(shù)器PC(R15)寄存器寄存器R15用做程序計(jì)數(shù)器(用做程序計(jì)數(shù)器(PC)。在)。在ARM狀態(tài)下,位狀態(tài)下,位1:0為為0,位,位31:2用于保存用于保存PC;在;在Thumb狀態(tài)下,位狀態(tài)下,位0為為0,位,位31:1用于保存用于保存PC。4)寄存器)寄存器R16用做當(dāng)前

30、程序狀態(tài)寄存器(用做當(dāng)前程序狀態(tài)寄存器(Current Program Status Register,CPSR),),CPSR可在任何運(yùn)行模式下被訪問,它包括條件標(biāo)志可在任何運(yùn)行模式下被訪問,它包括條件標(biāo)志位、中斷禁止位、當(dāng)前處理器模式標(biāo)志位,以及其他一些相關(guān)的控制和狀位、中斷禁止位、當(dāng)前處理器模式標(biāo)志位,以及其他一些相關(guān)的控制和狀態(tài)位。態(tài)位。22用戶與系統(tǒng)模式用戶與系統(tǒng)模式快速中斷快速中斷模式模式管理模式管理模式終止模式終止模式中斷模式中斷模式未定義未定義模式模式232. Thumb狀態(tài)下的寄存器組織狀態(tài)下的寄存器組織Thumb狀態(tài)下的寄存器集是狀態(tài)下的寄存器集是ARM狀態(tài)下寄存器集的一個(gè)

31、子集,程序可以直接訪問狀態(tài)下寄存器集的一個(gè)子集,程序可以直接訪問8個(gè)通用寄存器(個(gè)通用寄存器(R7R0)、程序計(jì)數(shù)器()、程序計(jì)數(shù)器(PC)、堆棧指針()、堆棧指針(SP)、連接寄存器)、連接寄存器(LR)和)和CPSR。同時(shí),在每一種特權(quán)模式下都有一組。同時(shí),在每一種特權(quán)模式下都有一組SP、LR和和SPSR。如圖所示。如圖所示表明表明Thumb狀態(tài)下的寄存器組織。狀態(tài)下的寄存器組織。Thumb狀態(tài)下的寄存器組織與狀態(tài)下的寄存器組織與ARM狀態(tài)下的寄存器組織的關(guān)系:狀態(tài)下的寄存器組織的關(guān)系: Thumb狀態(tài)下和狀態(tài)下和ARM狀態(tài)下的狀態(tài)下的R0R7是相同的;是相同的; Thumb狀態(tài)下和狀態(tài)下

32、和ARM狀態(tài)下的狀態(tài)下的CPSR和所有的和所有的SPSR是相同的;是相同的; Thumb狀態(tài)下的狀態(tài)下的SP對(duì)應(yīng)于對(duì)應(yīng)于ARM狀態(tài)下的狀態(tài)下的R13; Thumb狀態(tài)下的狀態(tài)下的LR對(duì)應(yīng)于對(duì)應(yīng)于ARM狀態(tài)下的狀態(tài)下的R14; Thumb狀態(tài)下的程序計(jì)數(shù)器對(duì)應(yīng)于狀態(tài)下的程序計(jì)數(shù)器對(duì)應(yīng)于ARM狀態(tài)下的狀態(tài)下的R15。24高位寄存器高位寄存器R8R15并不是標(biāo)準(zhǔn)寄存器集的一部分,但可使用匯編語言程序受并不是標(biāo)準(zhǔn)寄存器集的一部分,但可使用匯編語言程序受限制地訪問這些寄存器,將其用做快速的暫存器。如:限制地訪問這些寄存器,將其用做快速的暫存器。如:MOV、CMP、ADD指指令。令。252.2.5 程序狀

33、態(tài)寄存器程序狀態(tài)寄存器ARM920T體系結(jié)構(gòu)中包含一個(gè)當(dāng)前程序狀態(tài)寄存器(體系結(jié)構(gòu)中包含一個(gè)當(dāng)前程序狀態(tài)寄存器(CPSR)和)和5個(gè)備份的程序狀個(gè)備份的程序狀態(tài)寄存器(態(tài)寄存器(SPSR)。備份的程序狀態(tài)寄存器用來進(jìn)行異常處理,其功能包括:)。備份的程序狀態(tài)寄存器用來進(jìn)行異常處理,其功能包括: 保存保存ALU中的當(dāng)前操作信息;中的當(dāng)前操作信息; 控制允許和禁止中斷;控制允許和禁止中斷; 設(shè)置處理器的運(yùn)行模式。設(shè)置處理器的運(yùn)行模式。程序狀態(tài)寄存器每一位的安排如圖所示。程序狀態(tài)寄存器每一位的安排如圖所示。 261條件碼標(biāo)志(條件碼標(biāo)志(Condition Code Flags)N、Z、C、V均為條

34、件碼標(biāo)志位。它們的內(nèi)容可被算術(shù)或邏輯運(yùn)算的結(jié)果所改變,并且可以決定均為條件碼標(biāo)志位。它們的內(nèi)容可被算術(shù)或邏輯運(yùn)算的結(jié)果所改變,并且可以決定某條指令是否被執(zhí)行。條件碼標(biāo)志各位的具體含義如表所示。某條指令是否被執(zhí)行。條件碼標(biāo)志各位的具體含義如表所示。 272控制位控制位CPSR的低的低8位(包括位(包括I、F、T和和M4:0)稱為控制位,當(dāng)發(fā)生異常時(shí)這些位可以被改變。如果處理)稱為控制位,當(dāng)發(fā)生異常時(shí)這些位可以被改變。如果處理器運(yùn)行特權(quán)模式,這些位也可以由程序修改。器運(yùn)行特權(quán)模式,這些位也可以由程序修改。 中斷禁止位中斷禁止位I、F:置:置1時(shí),禁止時(shí),禁止IRQ中斷和中斷和FIQ中斷。中斷。 T

35、標(biāo)志位:該位反映處理器的運(yùn)行狀態(tài)。當(dāng)該位為標(biāo)志位:該位反映處理器的運(yùn)行狀態(tài)。當(dāng)該位為1時(shí),程序運(yùn)行于時(shí),程序運(yùn)行于Thumb狀態(tài),否則運(yùn)行于狀態(tài),否則運(yùn)行于ARM狀態(tài)。該信號(hào)反映在外部引腳狀態(tài)。該信號(hào)反映在外部引腳TBIT上。在程序中不得修改上。在程序中不得修改CPSR中的中的TBIT位,否則處理器工作狀態(tài)位,否則處理器工作狀態(tài)不能確定。不能確定。 運(yùn)行模式位運(yùn)行模式位M4:0:M0、M1、M2、M3、M4是模式位。這些位決定了處理器的運(yùn)行模式。具體是模式位。這些位決定了處理器的運(yùn)行模式。具體含義如表含義如表4.2所示。所示。 保留位:保留位:CPSR中的其余位為保留位,當(dāng)改變中的其余位為保留

36、位,當(dāng)改變CPSR中的條件碼標(biāo)志位或者控制位中的條件碼標(biāo)志位或者控制位時(shí),保留位不要被改變,在程序中也不要使用保留位來存儲(chǔ)數(shù)據(jù)。保留位將用于時(shí),保留位不要被改變,在程序中也不要使用保留位來存儲(chǔ)數(shù)據(jù)。保留位將用于ARM版本的擴(kuò)展。版本的擴(kuò)展。282.2.6異常(異常(Exceptions)當(dāng)正常的程序執(zhí)行流程發(fā)生暫時(shí)的停止時(shí),稱之為異常。在處理異常之前,當(dāng)前處理器當(dāng)正常的程序執(zhí)行流程發(fā)生暫時(shí)的停止時(shí),稱之為異常。在處理異常之前,當(dāng)前處理器的狀態(tài)必須保留,這樣,當(dāng)異常處理完成之后,當(dāng)前程序可以繼續(xù)執(zhí)行。處理器允許多個(gè)異的狀態(tài)必須保留,這樣,當(dāng)異常處理完成之后,當(dāng)前程序可以繼續(xù)執(zhí)行。處理器允許多個(gè)異

37、常同時(shí)發(fā)生,處理器會(huì)按固定的優(yōu)先級(jí)對(duì)多個(gè)異常進(jìn)行處理。常同時(shí)發(fā)生,處理器會(huì)按固定的優(yōu)先級(jí)對(duì)多個(gè)異常進(jìn)行處理。1、對(duì)異常的響應(yīng):按以下步驟操作、對(duì)異常的響應(yīng):按以下步驟操作(1)將下一條指令的地址存入相應(yīng)連接寄存器)將下一條指令的地址存入相應(yīng)連接寄存器LR。若異常是從。若異常是從ARM狀態(tài)進(jìn)入,狀態(tài)進(jìn)入,LR寄存器中寄存器中保存的是下一條指令的地址(當(dāng)前保存的是下一條指令的地址(當(dāng)前PC4或或PC8,與異常的類型有關(guān));若異常是從,與異常的類型有關(guān));若異常是從Thumb狀狀態(tài)進(jìn)入,則在態(tài)進(jìn)入,則在LR寄存器中保存當(dāng)前寄存器中保存當(dāng)前PC的偏移量。這樣,異常處理程序就不需要確定異常是從何種的偏移

38、量。這樣,異常處理程序就不需要確定異常是從何種狀態(tài)進(jìn)入的,程序在處理異常返回時(shí)能從正確的位置重新開始執(zhí)行。例如:在軟件中斷異常狀態(tài)進(jìn)入的,程序在處理異常返回時(shí)能從正確的位置重新開始執(zhí)行。例如:在軟件中斷異常SWI中,中,指令指令 MOV PC,R14_svc總是返回到下一條指令,而不管總是返回到下一條指令,而不管SWI是在是在ARM狀態(tài)執(zhí)行,還是在狀態(tài)執(zhí)行,還是在Thumb狀態(tài)執(zhí)行。狀態(tài)執(zhí)行。(2)將)將CPSR復(fù)制到相應(yīng)的復(fù)制到相應(yīng)的SPSR中。中。(3)根據(jù)異常類型,強(qiáng)制設(shè)置)根據(jù)異常類型,強(qiáng)制設(shè)置CPSR的運(yùn)行模式位。的運(yùn)行模式位。(4)強(qiáng)制)強(qiáng)制PC從相應(yīng)的異常向量地址取下一條指令執(zhí)行

39、,從而跳轉(zhuǎn)到相應(yīng)的異常處從相應(yīng)的異常向量地址取下一條指令執(zhí)行,從而跳轉(zhuǎn)到相應(yīng)的異常處理程序處。理程序處。292、從異常返回:、從異常返回: 進(jìn)入異常處理前可以設(shè)置中斷禁止位,以禁止異常處理時(shí)對(duì)中斷的響應(yīng)。進(jìn)入異常處理前可以設(shè)置中斷禁止位,以禁止異常處理時(shí)對(duì)中斷的響應(yīng)。如果異常發(fā)生時(shí),處理器處于如果異常發(fā)生時(shí),處理器處于Thumb狀態(tài),則當(dāng)異常向量地址加載入狀態(tài),則當(dāng)異常向量地址加載入PC時(shí),時(shí),處理器自動(dòng)切換到處理器自動(dòng)切換到ARM狀態(tài)。異常處理完畢之后,執(zhí)行以下操作從異常返回:狀態(tài)。異常處理完畢之后,執(zhí)行以下操作從異常返回:(1)將連接寄存器)將連接寄存器LR的值減去相應(yīng)的偏移量后送到的值減

40、去相應(yīng)的偏移量后送到PC中。中。(2)將)將SPSR復(fù)制回復(fù)制回CPSR中。中。(3)若在進(jìn)入異常處理時(shí)設(shè)置了中斷禁止位,要在此清除。)若在進(jìn)入異常處理時(shí)設(shè)置了中斷禁止位,要在此清除。3、各類異常的具體描述、各類異常的具體描述(1)FIQ(快速中斷請(qǐng)求)(快速中斷請(qǐng)求)(2)IRQ(中斷請(qǐng)求)(中斷請(qǐng)求)(3)Abort(中止)(中止)(4)Software Interrupt(軟件中斷)(軟件中斷)(5)Undefined Instruction(未定義指令)(未定義指令)304、異常進(jìn)入、異常進(jìn)入/退出退出 表中總結(jié)了進(jìn)入異常處理時(shí)保存在相應(yīng)表中總結(jié)了進(jìn)入異常處理時(shí)保存在相應(yīng)R14中的中的

41、PC值,及在退出異常處理時(shí)推值,及在退出異常處理時(shí)推薦使用的指令。薦使用的指令。315、異常向量及異常處理、異常向量及異常處理 應(yīng)用程序中的異常處理:當(dāng)系統(tǒng)運(yùn)行時(shí),異常可能會(huì)隨時(shí)發(fā)生。為保證在應(yīng)用程序中的異常處理:當(dāng)系統(tǒng)運(yùn)行時(shí),異??赡軙?huì)隨時(shí)發(fā)生。為保證在ARM處理器發(fā)生異常時(shí)不至于處于未知狀態(tài),在應(yīng)用程序的設(shè)計(jì)中,首先要進(jìn)行異常處理。處理器發(fā)生異常時(shí)不至于處于未知狀態(tài),在應(yīng)用程序的設(shè)計(jì)中,首先要進(jìn)行異常處理。采用的方式是在異常向量表中的特定位置放置一條跳轉(zhuǎn)指令,跳轉(zhuǎn)到異常處理程序。采用的方式是在異常向量表中的特定位置放置一條跳轉(zhuǎn)指令,跳轉(zhuǎn)到異常處理程序。當(dāng)當(dāng)ARM處理器發(fā)生異常時(shí),程序計(jì)數(shù)器

42、處理器發(fā)生異常時(shí),程序計(jì)數(shù)器PC會(huì)被強(qiáng)制設(shè)置為對(duì)應(yīng)的異常向量,從而跳會(huì)被強(qiáng)制設(shè)置為對(duì)應(yīng)的異常向量,從而跳轉(zhuǎn)到異常處理程序。當(dāng)異常處理完成以后,返回到主程序繼續(xù)執(zhí)行。各異常向量地址轉(zhuǎn)到異常處理程序。當(dāng)異常處理完成以后,返回到主程序繼續(xù)執(zhí)行。各異常向量地址如表所示。如表所示。32當(dāng)多個(gè)異常同時(shí)發(fā)生時(shí),系統(tǒng)根據(jù)固定的優(yōu)先級(jí)決定異常的處理順序。異常優(yōu)當(dāng)多個(gè)異常同時(shí)發(fā)生時(shí),系統(tǒng)根據(jù)固定的優(yōu)先級(jí)決定異常的處理順序。異常優(yōu)先級(jí)由高到低的排列次序?yàn)椋簭?fù)位、數(shù)據(jù)中止、先級(jí)由高到低的排列次序?yàn)椋簭?fù)位、數(shù)據(jù)中止、FIQ、IRQ、預(yù)取指令中止、未定、預(yù)取指令中止、未定義指令、義指令、SWI。 332.2.7 ARM微

43、處理器的指令集微處理器的指令集 加載加載/存儲(chǔ)型,指令集僅能處理寄存器中的數(shù)據(jù),處理結(jié)果要放回存儲(chǔ)型,指令集僅能處理寄存器中的數(shù)據(jù),處理結(jié)果要放回寄存器中。寄存器中。n 跳轉(zhuǎn)指令跳轉(zhuǎn)指令n 數(shù)據(jù)處理指令數(shù)據(jù)處理指令n 程序狀態(tài)寄存器(程序狀態(tài)寄存器(PSR)處理指令)處理指令n 加載加載/存儲(chǔ)指令存儲(chǔ)指令n 協(xié)處理器指令協(xié)處理器指令n 異常產(chǎn)生指令異常產(chǎn)生指令341、ARM 指令集指令集1)跳轉(zhuǎn)指令:實(shí)現(xiàn)程序流程的跳轉(zhuǎn))跳轉(zhuǎn)指令:實(shí)現(xiàn)程序流程的跳轉(zhuǎn) 直接向程序計(jì)數(shù)器直接向程序計(jì)數(shù)器PC寫入跳轉(zhuǎn)地址值,可在寫入跳轉(zhuǎn)地址值,可在4GB地址空間中的任意跳轉(zhuǎn)地址空間中的任意跳轉(zhuǎn) MOV LR,PC;保

44、存將來的返回地址值;保存將來的返回地址值 從當(dāng)前指令向前或向后的從當(dāng)前指令向前或向后的32MB地址空間的跳轉(zhuǎn),有地址空間的跳轉(zhuǎn),有4條指令:條指令:(1)B指令指令: B條件條件 目標(biāo)地址目標(biāo)地址(2)BL指令:指令:BL條件條件 目標(biāo)地址目標(biāo)地址(3)BLX指令:指令: BLX 目標(biāo)地址目標(biāo)地址(4)BX指令:指令: BX條件條件 目標(biāo)地址目標(biāo)地址2)數(shù)據(jù)處理指令)數(shù)據(jù)處理指令(1)MOV指令:加載數(shù)據(jù)指令:加載數(shù)據(jù) MOV條件條件S 目的寄存器,源操作數(shù)目的寄存器,源操作數(shù) 如:如:MOV R1, R0 MOV PC, R14 MOV R1,R0,LSL#335(2)MVN指令:取反后加載

45、數(shù)據(jù)指令:取反后加載數(shù)據(jù) MVN條件條件S 目的寄存器,源操作數(shù)目的寄存器,源操作數(shù)(3)CMP指令:比較數(shù)據(jù)指令:比較數(shù)據(jù) CMP條件條件 操作數(shù)操作數(shù)1,操作數(shù),操作數(shù)2(4)CMN指令:取反后比較指令:取反后比較 CMN條件條件 操作數(shù)操作數(shù)1,操作數(shù),操作數(shù)2(5)TST指令:按位與運(yùn)算指令:按位與運(yùn)算 TST條件條件 操作數(shù)操作數(shù)1,操作數(shù),操作數(shù)2(6)TEQ指令:按位異或指令:按位異或 TEQ條件條件 操作數(shù)操作數(shù)1,操作數(shù),操作數(shù)2(7)ADD指令:相加并存儲(chǔ)指令:相加并存儲(chǔ) ADD條件條件S 目的寄存器,操作數(shù)目的寄存器,操作數(shù)1,操作數(shù),操作數(shù)2(8) ADC指令:相加并加

46、上標(biāo)志位,再存儲(chǔ)指令:相加并加上標(biāo)志位,再存儲(chǔ) ADC條件條件S 目的寄存器,操作數(shù)目的寄存器,操作數(shù)1,操作數(shù),操作數(shù)2(9)SUB指令:相減并存放在目的寄存器指令:相減并存放在目的寄存器(10)SBC指令:相減并減去標(biāo)志位,再存放在目的寄存器指令:相減并減去標(biāo)志位,再存放在目的寄存器(11)RSB指令:逆向減法,再存放在目的寄存器指令:逆向減法,再存放在目的寄存器(12)RSC指令:逆向減法,再減去標(biāo)志位,再存放在目的寄存器指令:逆向減法,再減去標(biāo)志位,再存放在目的寄存器36(13)AND指令:操作數(shù)邏輯與運(yùn)算指令:操作數(shù)邏輯與運(yùn)算(14)ORR指令:操作數(shù)邏輯或運(yùn)算指令:操作數(shù)邏輯或運(yùn)算

47、(15)EOR指令:操作數(shù)邏輯異或運(yùn)算指令:操作數(shù)邏輯異或運(yùn)算(16)BIC指令:清除操作數(shù)指令:清除操作數(shù)1的某些位,并把結(jié)果放置到目的寄存器的某些位,并把結(jié)果放置到目的寄存器4)程序狀態(tài)寄存器訪問指令:)程序狀態(tài)寄存器訪問指令:l MRS條件條件 通用寄存器,程序狀態(tài)寄存器(通用寄存器,程序狀態(tài)寄存器(CPSR/SPSR)l MSR條件條件 程序狀態(tài)寄存器(程序狀態(tài)寄存器(CPSR/SPSR)_,操作數(shù),操作數(shù)5)加載)加載/存儲(chǔ)指令:存儲(chǔ)指令:l LDR條件條件 目的寄存器,目的寄存器,l LDRB條件條件目的寄存器,目的寄存器,l LDRH條件條件目的寄存器,目的寄存器,l STR 條

48、件條件源寄存器,源寄存器,l STRB 條件條件源寄存器,源寄存器,l STRH 條件條件源寄存器,源寄存器,376)批量數(shù)據(jù)加載)批量數(shù)據(jù)加載/存儲(chǔ)指令:存儲(chǔ)指令:l LDM(或(或STM)條件條件類型類型 基址寄存器基址寄存器!,寄存器列表,寄存器列表/7)數(shù)據(jù)交換指令:)數(shù)據(jù)交換指令:l SWP條件條件 目的寄存器,源寄存器目的寄存器,源寄存器1,源寄存器源寄存器2l SWPB條件條件 目的寄存器,源寄存器目的寄存器,源寄存器1,源寄存器源寄存器28)移位指令:)移位指令:l 通用寄存器,通用寄存器,LSL(或(或ASL)操作數(shù))操作數(shù)l通用寄存器,通用寄存器,LSR(或(或ASR)操作

49、數(shù))操作數(shù)l通用寄存器,通用寄存器,ROR(或(或RRX)操作數(shù))操作數(shù)9)協(xié)處理器指令:)協(xié)處理器指令:CDP 通知通知ARM協(xié)處理器完成特定操作協(xié)處理器完成特定操作LDC 數(shù)據(jù)傳送數(shù)據(jù)傳送STCMCRMRC10)異常產(chǎn)生指令:)異常產(chǎn)生指令:l SWI條件條件 24位的立即數(shù)位的立即數(shù)l BKPT 16位的立即數(shù)位的立即數(shù)382、ARM匯編器的偽指令偽指令:沒有相對(duì)應(yīng)的操作碼,為完成匯編程序作各種準(zhǔn)備工作。偽指令:沒有相對(duì)應(yīng)的操作碼,為完成匯編程序作各種準(zhǔn)備工作。1)符號(hào)定義偽指令)符號(hào)定義偽指令l GBLA(GBLL或或GBLS)全局變量名)全局變量名GBLA 定義一個(gè)全局的數(shù)字變量,并

50、初始化為定義一個(gè)全局的數(shù)字變量,并初始化為0GBLL 定義一個(gè)全局的邏輯變量,并初始化為定義一個(gè)全局的邏輯變量,并初始化為FGBLS 定義一個(gè)全局的字符串變量,并初始化為空定義一個(gè)全局的字符串變量,并初始化為空l LCLA(LCLL或或LCLS)局部變量名)局部變量名 用于定義一個(gè)用于定義一個(gè)ARM程序中的局部變量,并將其初始化程序中的局部變量,并將其初始化l 變量名變量名 SETA(SETL或或SETS)表達(dá)式)表達(dá)式 用于給已定義的全局變量或局部變量賦值用于給已定義的全局變量或局部變量賦值l 名稱名稱 RLIST寄存器列表寄存器列表:對(duì)一個(gè)通用寄存器列表定義名稱:對(duì)一個(gè)通用寄存器列表定義名

51、稱392)數(shù)據(jù)定義偽指令)數(shù)據(jù)定義偽指令一般用于為特定的數(shù)據(jù)分配存儲(chǔ)單元,同時(shí)可完成已分配存儲(chǔ)單元的初一般用于為特定的數(shù)據(jù)分配存儲(chǔ)單元,同時(shí)可完成已分配存儲(chǔ)單元的初始化始化l 分配存儲(chǔ)單元:分配存儲(chǔ)單元:DCBDCW(DCWU)DCD(DCDU)DCFD(DCFDU)DCQ(DCQU)SPACEl定義結(jié)構(gòu)化的內(nèi)存表:定義結(jié)構(gòu)化的內(nèi)存表:MAP:定義首地址:定義首地址FIELD:定義數(shù)據(jù)域:定義數(shù)據(jù)域3)匯編控制偽指令)匯編控制偽指令l IF、ELSE、ENDIFl WHILE、WEND40l MACRO、MEND:將一段代碼定義為一個(gè)整體,稱為宏指令:將一段代碼定義為一個(gè)整體,稱為宏指令l M

52、EXIT: 用于從宏定義跳轉(zhuǎn)用于從宏定義跳轉(zhuǎn)4)其他常用的偽指令)其他常用的偽指令l AREA:用于定義一個(gè)代碼段或數(shù)據(jù)段:用于定義一個(gè)代碼段或數(shù)據(jù)段 AREA 段名段名 屬性屬性1,屬性,屬性2,l ALLGN: 通過添加填充字節(jié)的方式,使當(dāng)前位置滿足一定的對(duì)通過添加填充字節(jié)的方式,使當(dāng)前位置滿足一定的對(duì) 齊方式齊方式l CODE16:通知編譯器其后的指令為通知編譯器其后的指令為16位的位的Thumb指令指令 CODE32:通知編譯器其后的指令為:通知編譯器其后的指令為32位的位的ARM指令指令l ENTRY:用于指定匯編程序的入口點(diǎn)用于指定匯編程序的入口點(diǎn)41l END:用于通知編譯器已經(jīng)

53、到了源程序的結(jié)尾:用于通知編譯器已經(jīng)到了源程序的結(jié)尾l EQU:用于為程序中的常量、標(biāo)號(hào)等定義一個(gè)等效的字符名稱:用于為程序中的常量、標(biāo)號(hào)等定義一個(gè)等效的字符名稱l EXPORT:用于在程序中聲明一個(gè)全局的標(biāo)號(hào):用于在程序中聲明一個(gè)全局的標(biāo)號(hào)l IMPORT: 用于通知編譯器要使用的標(biāo)號(hào)在其他的源文件中定義用于通知編譯器要使用的標(biāo)號(hào)在其他的源文件中定義l EXTERN:用于通知編譯器要使用的標(biāo)號(hào)在其他源文件中定義,但要在當(dāng)前用于通知編譯器要使用的標(biāo)號(hào)在其他源文件中定義,但要在當(dāng)前源文件中引用源文件中引用l GET: 用于將一個(gè)源文件包含到當(dāng)前的源文件中用于將一個(gè)源文件包含到當(dāng)前的源文件中l(wèi) I

54、NCBIN: 用于將一個(gè)目標(biāo)文件或數(shù)據(jù)文件包含到當(dāng)前的源文件用于將一個(gè)目標(biāo)文件或數(shù)據(jù)文件包含到當(dāng)前的源文件l RN:用于給一個(gè)寄存器定義一個(gè)別名:用于給一個(gè)寄存器定義一個(gè)別名l ROUT:用于給一個(gè)局部變量定義作用范圍用于給一個(gè)局部變量定義作用范圍422.3 三星三星 S3C2410X處理器處理器詳解詳解S3C2410X在包含在包含ARM920T核的同時(shí),增加了豐富的外圍資源,核的同時(shí),增加了豐富的外圍資源,主要片內(nèi)外圍模塊包括:主要片內(nèi)外圍模塊包括: 1個(gè)個(gè)LCD控制器,支持控制器,支持STN和和TFT液晶顯示屏;液晶顯示屏; 外部存儲(chǔ)器管理(外部存儲(chǔ)器管理(SDRAM控制器和芯片選擇邏輯)

55、;控制器和芯片選擇邏輯); 3個(gè)通道的個(gè)通道的UART; 4個(gè)通道的個(gè)通道的DMA,支持存儲(chǔ)器和,支持存儲(chǔ)器和I/O口之間的傳輸,以猝發(fā)??谥g的傳輸,以猝發(fā)模式提高傳輸率;式提高傳輸率; 4個(gè)具有個(gè)具有PWM功能的功能的16位定時(shí)位定時(shí)/計(jì)數(shù)器和計(jì)數(shù)器和1個(gè)個(gè)16位內(nèi)部定時(shí)器,位內(nèi)部定時(shí)器,支持外部時(shí)鐘源;支持外部時(shí)鐘源;43 8通道的通道的10位位ADC,最高速率可達(dá),最高速率可達(dá)500kB/s,10位分辨率;位分辨率; 觸摸屏接口;觸摸屏接口; IIS總線接口;總線接口; 2個(gè)個(gè)USB主機(jī)接口,主機(jī)接口,1個(gè)個(gè)USB設(shè)備接口;設(shè)備接口; 2個(gè)個(gè)SPI接口;接口; SD卡接口和卡接口和MM

56、C卡接口;卡接口; 16位看門狗定時(shí)器;位看門狗定時(shí)器; 117位通用位通用I/O口和口和24位外部中斷源;位外部中斷源; 8通道通道10位位AD控制器;控制器; 電源管理。電源管理。44S3C2410X及片內(nèi)外圍簡介及片內(nèi)外圍簡介45S3C2410X支持大、小端模式,將存儲(chǔ)空間分成支持大、小端模式,將存儲(chǔ)空間分成8組(組(Bank),每組大小是),每組大小是128MB,共,共計(jì)計(jì)1GB。462.3.2 特殊功能寄存器特殊功能寄存器 1內(nèi)存控制器(內(nèi)存控制器(Memory Controller)內(nèi)存控制器為訪問外部存儲(chǔ)空間提供存儲(chǔ)器控制信號(hào),共有內(nèi)存控制器為訪問外部存儲(chǔ)空間提供存儲(chǔ)器控制信號(hào),共有13個(gè)寄存器。個(gè)寄存器。 472Nand Flash 控制器控制器S3C2410X支持支持Nand Flash啟動(dòng),啟動(dòng)代碼存儲(chǔ)在啟動(dòng),啟動(dòng)代碼存儲(chǔ)在Nand Flash上。啟動(dòng)時(shí),上。啟動(dòng)時(shí),Nand Flash的前的前4KB將被裝載到內(nèi)部的固定地址中,利用硬件糾錯(cuò)碼將被裝載到內(nèi)部的固定地址中,利用硬件糾錯(cuò)碼ECC對(duì)數(shù)據(jù)的正確性檢對(duì)數(shù)據(jù)的正確性檢驗(yàn),然后開始執(zhí)行其中的啟動(dòng)代

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論