版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、嵌入式系統(tǒng)嵌入式系統(tǒng)第第2 2課課 ARM 體系結(jié)構(gòu)體系結(jié)構(gòu)課前導(dǎo)入課前導(dǎo)入 嵌入式系統(tǒng)組成原理嵌入式系統(tǒng)組成原理 嵌入式最小系統(tǒng)嵌入式最小系統(tǒng) 嵌入式系統(tǒng)擴(kuò)展嵌入式系統(tǒng)擴(kuò)展1.1.嵌入式系統(tǒng)和一般的計(jì)算機(jī)系統(tǒng)在硬件組嵌入式系統(tǒng)和一般的計(jì)算機(jī)系統(tǒng)在硬件組 成結(jié)構(gòu)上有哪些異同之處?成結(jié)構(gòu)上有哪些異同之處?2. 什么是嵌入式最小系統(tǒng)?一般常見的最小什么是嵌入式最小系統(tǒng)?一般常見的最小系統(tǒng)由哪些部分組成?系統(tǒng)由哪些部分組成?3. 嵌入式系統(tǒng)常見的擴(kuò)展部件有哪些?嵌入式系統(tǒng)常見的擴(kuò)展部件有哪些?l嵌入式系統(tǒng)和一般的計(jì)算機(jī)系統(tǒng)類似,也是由CPU、內(nèi)存、IO端口、總線等幾個(gè)部分組成。l嵌入式系統(tǒng)硬件的特點(diǎn)
2、主要是集成度高,非標(biāo)準(zhǔn)化,接口非常復(fù)雜。課前導(dǎo)入課前導(dǎo)入1.1.嵌入式系統(tǒng)和一般的計(jì)算機(jī)系統(tǒng)在硬件組嵌入式系統(tǒng)和一般的計(jì)算機(jī)系統(tǒng)在硬件組 成結(jié)構(gòu)上有哪些異同之處?成結(jié)構(gòu)上有哪些異同之處?2. 什么是嵌入式最小系統(tǒng)?一般常見的最小什么是嵌入式最小系統(tǒng)?一般常見的最小系統(tǒng)由哪些部分組成?系統(tǒng)由哪些部分組成?3. 嵌入式系統(tǒng)常見的擴(kuò)展部件有哪些?嵌入式系統(tǒng)常見的擴(kuò)展部件有哪些?l嵌入式系統(tǒng)的最小系統(tǒng)指基于某處理器為核心,可以運(yùn)轉(zhuǎn)起來的最簡單的硬件設(shè)計(jì)(即處理器能夠運(yùn)行的最基本系統(tǒng))。l嵌入式最小系統(tǒng)的組成,包括處理器、內(nèi)存、時(shí)鐘、電源和復(fù)位。為了能夠支持程序的下載和調(diào)試,一般還需要在最小系統(tǒng)中添加對
3、JTAG接口的支持。課前導(dǎo)入課前導(dǎo)入1.1.嵌入式系統(tǒng)和一般的計(jì)算機(jī)系統(tǒng)在硬件組嵌入式系統(tǒng)和一般的計(jì)算機(jī)系統(tǒng)在硬件組 成結(jié)構(gòu)上有哪些異同之處?成結(jié)構(gòu)上有哪些異同之處?2. 什么是嵌入式最小系統(tǒng)?一般常見的最小什么是嵌入式最小系統(tǒng)?一般常見的最小系統(tǒng)由哪些部分組成?系統(tǒng)由哪些部分組成?3. 嵌入式系統(tǒng)常見的擴(kuò)展部件有哪些?嵌入式系統(tǒng)常見的擴(kuò)展部件有哪些?l嵌入式的處理器一般集成了很多的外圍器件,但也不可能把所有的功能都集成到芯片內(nèi)部,因此實(shí)際的嵌入式系統(tǒng)需要在最小系統(tǒng)的基礎(chǔ)上進(jìn)行系統(tǒng)擴(kuò)展。l常用的擴(kuò)展芯片有以下幾類:存儲類芯片、通信類芯片以及其他功能芯片。課前導(dǎo)入課前導(dǎo)入課程重點(diǎn)課程重點(diǎn)1.可編
4、程器件的特點(diǎn)可編程器件的特點(diǎn)2.計(jì)算機(jī)的體系結(jié)構(gòu)(馮諾依曼與哈佛)計(jì)算機(jī)的體系結(jié)構(gòu)(馮諾依曼與哈佛)3. ARM處理器的流水線概念及運(yùn)行原理處理器的流水線概念及運(yùn)行原理4. ARM各模式及可訪問的寄存器各模式及可訪問的寄存器5. ARM體系的異常體系的異常6. ARM體系的存儲系統(tǒng)體系的存儲系統(tǒng)7. ARM的尋址方式的尋址方式1.可編程器件的特點(diǎn)可編程器件的特點(diǎn) 模擬器件 - 數(shù)字器件 ASIC - 可編程器件1.可編程器件的特點(diǎn)可編程器件的特點(diǎn) CPU在固定頻率的時(shí)鐘控制下節(jié)奏運(yùn)行。 CPU可以通過總線讀取外部存儲設(shè)備中的二進(jìn)制指令集,然后解碼執(zhí)行。 這些可以被CPU解碼執(zhí)行的二進(jìn)制指令集是
5、CPU設(shè)計(jì)的時(shí)候確定的,是CPU的設(shè)計(jì)者(ARM公司)定義的,本質(zhì)上是一串由1和0組成的數(shù)字。這就是CPU的匯編指令集。整個(gè)編程及運(yùn)行過程 程序員用匯編指令編程 -經(jīng)匯編器匯編成二進(jìn)制可執(zhí)行程序文件-二進(jìn)制文件被CPU讀取進(jìn)去-CPU內(nèi)部電路對二進(jìn)制文件解碼-解碼通過則CPU執(zhí)行指令、完成指令動(dòng)作。 如果程序員用C語言等高級語言編程,則編譯器先將C語言程序編譯為匯編程序,再進(jìn)行上面的后續(xù)部分。從源代碼到CPU執(zhí)行過程2.計(jì)算機(jī)的體系結(jié)構(gòu)(馮諾依曼與哈佛結(jié)構(gòu) )2馮諾依曼體系結(jié)構(gòu)馮諾依曼體系結(jié)構(gòu)1.計(jì)算機(jī)組成是人眼可見的,而計(jì)算機(jī)體系結(jié)構(gòu)是人眼看不見的計(jì)算機(jī)組成是人眼可見的,而計(jì)算機(jī)體系結(jié)構(gòu)是人
6、眼看不見的東西,它是一個(gè)復(fù)雜的系統(tǒng),在它內(nèi)部存在多級的層次結(jié)構(gòu)。東西,它是一個(gè)復(fù)雜的系統(tǒng),在它內(nèi)部存在多級的層次結(jié)構(gòu)。2. 計(jì)算機(jī)組成是計(jì)算機(jī)的外部,是使用人員所關(guān)心的系統(tǒng)硬件指計(jì)算機(jī)組成是計(jì)算機(jī)的外部,是使用人員所關(guān)心的系統(tǒng)硬件指標(biāo)參數(shù);而計(jì)算機(jī)實(shí)現(xiàn)是計(jì)算機(jī)的內(nèi)部,是制造人員關(guān)心的內(nèi)容標(biāo)參數(shù);而計(jì)算機(jī)實(shí)現(xiàn)是計(jì)算機(jī)的內(nèi)部,是制造人員關(guān)心的內(nèi)容憑您直觀的感覺,計(jì)算機(jī)由哪幾部分組成?憑您直觀的感覺,計(jì)算機(jī)由哪幾部分組成?計(jì)算機(jī)的實(shí)現(xiàn) 半導(dǎo)體技術(shù) 制造技術(shù) 封裝技術(shù) 裝配技術(shù) 電源技術(shù) 冷卻技術(shù) 152計(jì)算機(jī)運(yùn)行的兩部分計(jì)算機(jī)運(yùn)行的兩部分2馮諾依曼體系結(jié)構(gòu)馮諾依曼體系結(jié)構(gòu)幾個(gè)基本概念間的關(guān)系幾個(gè)基本
7、概念間的關(guān)系體系結(jié)構(gòu)、計(jì)算機(jī)組成、計(jì)算機(jī)實(shí)現(xiàn)體系結(jié)構(gòu)、計(jì)算機(jī)組成、計(jì)算機(jī)實(shí)現(xiàn)計(jì)算機(jī)體系結(jié)構(gòu) 診斷計(jì)算機(jī)組成 操作系統(tǒng)指令系統(tǒng)應(yīng)用程序計(jì)算機(jī)實(shí)現(xiàn) 由圖示可見,由圖示可見,體系結(jié)構(gòu)體系結(jié)構(gòu)在整個(gè)計(jì)算機(jī)系統(tǒng)在整個(gè)計(jì)算機(jī)系統(tǒng)中占據(jù)核心地位中占據(jù)核心地位2 馮諾依曼體系結(jié)構(gòu)馮諾依曼體系結(jié)構(gòu)馮馮諾依曼理論的要點(diǎn):諾依曼理論的要點(diǎn):1)存儲程序存儲程序2)順序執(zhí)行順序執(zhí)行3)采用二進(jìn)制采用二進(jìn)制 十進(jìn)制十進(jìn)制計(jì)算機(jī)指令計(jì)算機(jī)指令馮馮諾依曼提出二進(jìn)制機(jī)器諾依曼提出二進(jìn)制機(jī)器碼表示計(jì)算機(jī)指令格式碼表示計(jì)算機(jī)指令格式?2 馮諾依曼體系結(jié)構(gòu)馮諾依曼體系結(jié)構(gòu)運(yùn)算器(運(yùn)算器(ALU,Arithmetic Logic U
8、nit )馮馮諾依曼計(jì)算機(jī)組成(五大部分):諾依曼計(jì)算機(jī)組成(五大部分):控制器控制器(Controler)存儲器(存儲器(Memory) 輸入設(shè)備(輸入設(shè)備(Input Unit)輸出設(shè)備(輸出設(shè)備(Output Unit)2馮諾依曼體系工作原理馮諾依曼體系工作原理開始開始取指令取指令指令譯碼指令譯碼執(zhí)行指令執(zhí)行指令馮諾依曼體系工作原理(馮諾依曼體系工作原理(CPU工作原理):工作原理):程序的執(zhí)行過程實(shí)際上是不斷地取出指令、分析指令、執(zhí)行指程序的執(zhí)行過程實(shí)際上是不斷地取出指令、分析指令、執(zhí)行指令的過程。令的過程。馮馮諾依曼型計(jì)算機(jī)從本質(zhì)上講是采取串行順序處理諾依曼型計(jì)算機(jī)從本質(zhì)上講是采取串
9、行順序處理的工作機(jī)制,即使有關(guān)數(shù)據(jù)巳經(jīng)準(zhǔn)備好,也必須逐條執(zhí)行指令的工作機(jī)制,即使有關(guān)數(shù)據(jù)巳經(jīng)準(zhǔn)備好,也必須逐條執(zhí)行指令序列。序列。數(shù)據(jù)流指令流控制流CPU2馮諾依曼體系工作原理馮諾依曼體系工作原理馮諾依曼體系結(jié)構(gòu)計(jì)算機(jī)功能圖馮諾依曼體系結(jié)構(gòu)計(jì)算機(jī)功能圖2馮馮諾依曼結(jié)構(gòu)思想諾依曼結(jié)構(gòu)思想n 馮馮諾依曼理論的思想是:諾依曼理論的思想是:應(yīng)該把程序和數(shù)據(jù)一起存儲在存儲器里,讓計(jì)算機(jī)自應(yīng)該把程序和數(shù)據(jù)一起存儲在存儲器里,讓計(jì)算機(jī)自己負(fù)責(zé)從存儲器里提取指令,執(zhí)行指令,循環(huán)式地執(zhí)己負(fù)責(zé)從存儲器里提取指令,執(zhí)行指令,循環(huán)式地執(zhí)行這兩個(gè)動(dòng)作。行這兩個(gè)動(dòng)作。n 這樣,計(jì)算機(jī)在執(zhí)行程序的過程中,就可以完全這樣,計(jì)
10、算機(jī)在執(zhí)行程序的過程中,就可以完全擺脫外界的影響,以自己可能的速度自動(dòng)地運(yùn)行。擺脫外界的影響,以自己可能的速度自動(dòng)地運(yùn)行。n 按照這種原理構(gòu)造出來的計(jì)算機(jī)就是按照這種原理構(gòu)造出來的計(jì)算機(jī)就是“存儲程序存儲程序控制計(jì)算機(jī)控制計(jì)算機(jī)”,也被稱做,也被稱做“馮馮諾依曼計(jì)算機(jī)諾依曼計(jì)算機(jī)”馮馮諾依曼理論的要點(diǎn):諾依曼理論的要點(diǎn):n 指令像數(shù)據(jù)那樣存放在存儲器中,并可以指令像數(shù)據(jù)那樣存放在存儲器中,并可以像數(shù)據(jù)那樣進(jìn)行處理;像數(shù)據(jù)那樣進(jìn)行處理;n 指令格式使用二進(jìn)制機(jī)器碼表示;指令格式使用二進(jìn)制機(jī)器碼表示;n 使用程序存儲控制方式工作。使用程序存儲控制方式工作。馮諾依曼結(jié)構(gòu)十進(jìn)制十進(jìn)制計(jì)計(jì)算機(jī)指令算機(jī)指
11、令馮馮諾依曼提出二進(jìn)制機(jī)器諾依曼提出二進(jìn)制機(jī)器碼表示計(jì)算機(jī)指令格式碼表示計(jì)算機(jī)指令格式馮諾依曼體系結(jié)構(gòu)指令寄存器控制器數(shù)據(jù)通道輸入輸出中央處理器存儲器程序指令0指令1指令2指令3指令4數(shù)據(jù)數(shù)據(jù)0數(shù)據(jù)1數(shù)據(jù)2結(jié)構(gòu)特點(diǎn):結(jié)構(gòu)特點(diǎn):1 1、指令和數(shù)據(jù)存儲在指令和數(shù)據(jù)存儲在相同相同的內(nèi)的內(nèi)存存空間空間,但,但存儲地址存儲地址不不同同。2 2、處理器利用相同的總、處理器利用相同的總線處理內(nèi)存中的指令和數(shù)線處理內(nèi)存中的指令和數(shù)據(jù),據(jù),指令和數(shù)指令和數(shù)據(jù)具有相據(jù)具有相同同的數(shù)據(jù)寬度的數(shù)據(jù)寬度,指令與數(shù)據(jù)指令與數(shù)據(jù)無法同時(shí)存取。無法同時(shí)存取。ARM7ARM7嵌入式微處理嵌入式微處理器采用此結(jié)構(gòu)器采用此結(jié)構(gòu)哈佛
12、體系結(jié)構(gòu)指令寄存器控制器數(shù)據(jù)通道輸入輸出CPU程序存儲器指令0指令1指令2數(shù)據(jù)存儲器數(shù)據(jù)0數(shù)據(jù)1數(shù)據(jù)2地址指令地址數(shù)據(jù)結(jié)構(gòu)特點(diǎn):結(jié)構(gòu)特點(diǎn):1 1、指令存儲和數(shù)據(jù)存儲分指令存儲和數(shù)據(jù)存儲分開,開,指令和數(shù)據(jù)分別位于指令和數(shù)據(jù)分別位于不同的存儲空間不同的存儲空間。2 2、指令與數(shù)據(jù)的存取采、指令與數(shù)據(jù)的存取采用不同總線,用不同總線,取指令和存取指令和存取數(shù)據(jù)可同時(shí)進(jìn)行取數(shù)據(jù)可同時(shí)進(jìn)行,微處微處理器具有較高的執(zhí)行效率理器具有較高的執(zhí)行效率。數(shù)字信號處理器數(shù)字信號處理器DSPDSP通常采用哈通常采用哈佛結(jié)構(gòu)佛結(jié)構(gòu) ;自自ARM9ARM9開始,開始,ARMARM嵌入式微處嵌入式微處理器亦采用此結(jié)構(gòu)理器亦
13、采用此結(jié)構(gòu)。馮諾依曼結(jié)構(gòu)與哈佛結(jié)構(gòu)n程序和數(shù)據(jù)都放在內(nèi)存中,且不彼此程序和數(shù)據(jù)都放在內(nèi)存中,且不彼此分離的結(jié)構(gòu)稱為馮諾依曼結(jié)構(gòu)。譬如分離的結(jié)構(gòu)稱為馮諾依曼結(jié)構(gòu)。譬如Intel的的CPU均采用馮諾依曼結(jié)構(gòu)。均采用馮諾依曼結(jié)構(gòu)。n程序和數(shù)據(jù)分開獨(dú)立放在不同的內(nèi)存程序和數(shù)據(jù)分開獨(dú)立放在不同的內(nèi)存塊中,彼此完全分離的結(jié)構(gòu)稱為哈佛塊中,彼此完全分離的結(jié)構(gòu)稱為哈佛結(jié)構(gòu)。譬如大部分的單片機(jī)(結(jié)構(gòu)。譬如大部分的單片機(jī)(MCS51、ARM9等)均采用哈佛結(jié)構(gòu)。等)均采用哈佛結(jié)構(gòu)。優(yōu)劣對比n馮諾依曼結(jié)構(gòu)中程序和數(shù)據(jù)不區(qū)分的馮諾依曼結(jié)構(gòu)中程序和數(shù)據(jù)不區(qū)分的放在一起,因此安全和穩(wěn)定性是個(gè)問放在一起,因此安全和穩(wěn)定性是
14、個(gè)問題,好處是處理起來簡單。題,好處是處理起來簡單。n哈佛結(jié)構(gòu)中程序(一般放在哈佛結(jié)構(gòu)中程序(一般放在ROM、flash中)和數(shù)據(jù)(一般放在中)和數(shù)據(jù)(一般放在RAM中)中)獨(dú)立分開存放,因此好處是安全和穩(wěn)獨(dú)立分開存放,因此好處是安全和穩(wěn)定性高,缺點(diǎn)是軟件處理復(fù)雜一些(定性高,缺點(diǎn)是軟件處理復(fù)雜一些(需要統(tǒng)一規(guī)劃鏈接地址等)需要統(tǒng)一規(guī)劃鏈接地址等)3. ARM處理器的流水線概念及運(yùn)行原理三級流水線 ARM處理器使用流水線來增加處理器指令流的速度,這樣可使幾個(gè)操作同時(shí)進(jìn)行同時(shí)進(jìn)行,并使處理和存儲器系統(tǒng)連續(xù)操作,能提供0.9MIPS/MHz的指令執(zhí)行速度。 ARM7TDMI的流水線分3級,分別為:
15、取指譯碼執(zhí)行取指譯碼執(zhí)行處理指令并將結(jié)果寫回寄存器識別將要被執(zhí)行的指令從寄存器裝載一條指令三級流水線取指譯碼執(zhí)行取指譯碼執(zhí)行處理指令并將結(jié)果寫回寄存器識別將要被執(zhí)行的指令從寄存器裝載一條指令 正常操作過程中,在執(zhí)行一條指令的同時(shí)對下一條(第二條)指令進(jìn)行譯碼,并將第三條指令從存儲器中取出。 在ARM狀態(tài)下,流水線上各指令的地址為: 在Thumb狀態(tài)下,流水線上各指令的地址為:PCPC-4PC-8PCPC-2PC-4三級流水線結(jié)構(gòu)的指令執(zhí)行順序PC指令1指令2指令3指令4程序存儲器PC-4PC-8PC+4周期1周期2周期3周期4周期5周期6取指 譯碼 執(zhí)行取指 譯碼 執(zhí)行取指 譯碼 執(zhí)行取指 譯
16、碼 執(zhí)行周期周期2周期周期1周期周期3周期周期4 在第1個(gè)周期,PC指向指令1,此時(shí)指令1進(jìn)入三級流水線的取指階段。1 在第2個(gè)周期,PC指向指令2,此時(shí)指令1進(jìn)入三級流水線的譯碼階段,同時(shí)取出指令2。2 在第3個(gè)周期,PC指向指令3,此時(shí)指令1進(jìn)入三級流水線的執(zhí)行階段,指令2進(jìn)入譯碼階段,取出指令3。3 在第4個(gè)周期,指令1執(zhí)行完成,指令2和指令3流水線推進(jìn)一級,同時(shí)開始指令4的取指處理。4處理器執(zhí)行一條指令的三個(gè)階段 執(zhí)行ADD PC,PC,#4指令后,PC的值為多少?思考題ADD PC,PC,#40 x40000 x40040 x40080 x400C地址指令PC取指取指譯碼譯碼執(zhí)行執(zhí)行
17、PCPC-4PC-8ARM7的3級流水線ADD 程序計(jì)數(shù)器R15(PC)總是指向“正在取指”的指令,而不是指向“正在執(zhí)行”的指令或“正在譯碼”的指令。 一般來說,人們習(xí)慣性約定將“正在執(zhí)行”的指令作為參考點(diǎn),則:PC值當(dāng)前程序執(zhí)行位置8 注:ARM狀態(tài)時(shí),每條指令為4字節(jié)長。 PC指向0 x4000地址,取指ADD指令。 PC指向0 x4004地址,譯碼ADD指令。 PC指向0 x4008地址,執(zhí)行ADD指令,所以指令執(zhí)行的結(jié)果為: PC=PC+40 x400840 x400C。注意:注意:只有流水線被指令填滿時(shí)才能發(fā)揮最大效能,即每時(shí)鐘周期完成一條指令的執(zhí)行。如果程序發(fā)生跳轉(zhuǎn),流水線將被清空
18、,這將需要幾個(gè)時(shí)鐘才能使流水線再次填滿。因此,為提高程序執(zhí)行效率,應(yīng)盡可能少用跳轉(zhuǎn)指令少用跳轉(zhuǎn)指令,解決的方案是盡量使用指令的“條件執(zhí)行條件執(zhí)行”功能。簡介 ARM體系結(jié)構(gòu)支持7種處理器模式,分別為:用戶模式、快中斷模式、中斷模式、管理模式、中止模式、未定義模式和系統(tǒng)模式。所處的模式由當(dāng)前程序狀態(tài)寄存器CPSR中的控制位M4:0反映。這樣的好處是可以更好的支持操作系統(tǒng)并提高工作效率。ARM7TDMI完全支持這七種模式。4. ARM各模式及可訪問的寄存器 除用戶模式外,其它模式均為特權(quán)模式。ARM內(nèi)部寄存器和一些片內(nèi)外設(shè)在硬件設(shè)計(jì)上只允許(或者可選為只允許)特權(quán)模式下訪問。此外,特權(quán)模式可以自由
19、的切換處理器模式,而用戶模式不能直接切換到別的模式。 這兩種模式都不能由異常進(jìn)入,想要進(jìn)入必須修改CPSR,而且它們使用完全相同的寄存器組。系統(tǒng)模式是特權(quán)模式,不受用戶模式的限制。操作系統(tǒng)在該模式下訪問用戶模式的寄存器就比較方便,而且操作系統(tǒng)的一些特權(quán)任務(wù)可以使用這個(gè)模式訪問一些受控的資源。 這五種模式稱為異常模式。它們除了可以通過程序切換進(jìn)入外,也可以由特定的異常進(jìn)入。當(dāng)特定的異常出現(xiàn)時(shí),處理器進(jìn)入相應(yīng)的模式。每種異常模式都有一些獨(dú)立的寄存器,以避免異常退出時(shí)用戶模式的狀態(tài)不可靠。何時(shí)進(jìn)入異常模式,具體規(guī)定如下:處理器復(fù)位之后進(jìn)入管理模式,操作系統(tǒng)內(nèi)核通常處于管理模式;當(dāng)處理器訪問存儲器失敗
20、時(shí),進(jìn)入數(shù)據(jù)訪問中止模式;當(dāng)處理器遇到?jīng)]有定義或不支持的指令時(shí),進(jìn)入未定義模式;中斷模式與快速中斷模式分別對ARM處理器2種不同級別的中斷作出響應(yīng)。4. ARM各模式及可訪問的寄存器4. ARM各模式及可訪問的寄存器4. ARM各模式及可訪問的寄存器簡介 在ARM處理器內(nèi)部共有37個(gè)用戶可訪問的寄存器,分別為31個(gè)通用32位寄存器和6個(gè)狀態(tài)寄存器。 ARM處理器共有7種不同的處理器模式,每種模式都有一組相應(yīng)的寄存器組,最多可以18個(gè)活動(dòng)的寄存器。4. ARM各模式及可訪問的寄存器4. ARM各模式及可訪問的寄存器程序狀態(tài)寄存器的格式NZCV IM0M1M2M3M4TF. . .31 30 29
21、 28 27 26 8 7 6 5 4 3 2 1 0條件代碼標(biāo)志保留控制位溢出標(biāo)志進(jìn)位或借位擴(kuò)展零負(fù)或小于IRQ禁止FIQ禁止?fàn)顟B(tài)位模式位NZCVIM0M1M2M3M4TF4. ARM各模式及可訪問的寄存器4. ARM各模式及可訪問的寄存器5. ARM體系的異常異常簡介 只要正常的程序流被暫時(shí)中止,處理器就進(jìn)入異常模式。例如在用戶模式下執(zhí)行程序時(shí),當(dāng)外設(shè)向處理器內(nèi)核發(fā)出中斷請求導(dǎo)致內(nèi)核從用戶模式切換到異常中斷模式。 如果同時(shí)發(fā)生兩個(gè)或更多異常,那么將按照固定的順序來處理異常。 5. ARM體系的異常5. ARM體系的異常異常向量表注:表中的I和F表示不對該位有影響,保留原來的值。 5. AR
22、M體系的異常異常優(yōu)先級 當(dāng)多個(gè)異常同時(shí)發(fā)生時(shí),一個(gè)固定的優(yōu)先級決定系統(tǒng)處理它們的順序。 優(yōu)先級由高到低5. ARM體系的異常6. ARM體系的存儲系統(tǒng)簡介 ARM處理器采用馮諾依曼(Von Neumann)結(jié)構(gòu),指令、數(shù)據(jù)和I/O統(tǒng)一編址(即存在同一個(gè)空間)。只有裝載、保存和交換指令可訪問存儲器中的數(shù)據(jù)。 ARM芯片一般在處理器核和外部存儲器之間有一個(gè)存儲器管理部件將局部總線的信號和時(shí)序轉(zhuǎn)換為現(xiàn)實(shí)的外部總線信號和時(shí)序。ARM7處理器核存儲器存儲器管理器ARM7的規(guī)范定義了局部總線的信號和時(shí)序。各芯片生產(chǎn)廠商制定了自己的外部總線的信號和時(shí)序。6. ARM體系的存儲系統(tǒng)地址空間 ARM結(jié)構(gòu)使用單個(gè)
23、平面的232個(gè)8位字節(jié)地址空間。地址空間可以看作是包含230個(gè)32位字,或231個(gè)16位半字。如果地址向上或向下溢出地址空間,通常會發(fā)生翻轉(zhuǎn)。 注意:如果在取指操作時(shí)地址發(fā)生溢出,只要沒有執(zhí)行預(yù)取的無效指令,就不會導(dǎo)致異常。6. ARM體系的存儲系統(tǒng)存儲器格式地址空間的規(guī)則要求字地址A:位于地址A的字包含的字節(jié)位于地址A,A+1,A+2和A+3;位于地址A的半字包含的字節(jié)位于地址A和A+1;位于地址A+2的半字包含的字節(jié)位于地址A+2和A+3;位于地址A的字包含的半字位于地址A和A+2; 字節(jié)字節(jié)字節(jié)字節(jié)A+3A+2A+1A存儲器半字半字字6. ARM體系的存儲系統(tǒng)存儲器格式存儲器系統(tǒng)有兩種映
24、射機(jī)制:小端存儲器系統(tǒng)(Little-endian): 在小端格式中,數(shù)據(jù)的高字節(jié)存放在高地址中。大端存儲器系統(tǒng)(Big-endian): 在大端格式中,數(shù)據(jù)的高字節(jié)存放在低地址中。A+3A+2A+1A存儲器 小端存儲模式下,0 x12345678在A地址開始的一個(gè)字空間的存儲; 1 大端存儲模式下,0 x12345678在A地址開始的一個(gè)字空間的存儲; 20 x120 x340 x560 x78A+3A+2A+1A存儲器0 x780 x560 x340 x126.ARM體系的存儲系統(tǒng)非對齊的存儲器訪問 ARM結(jié)構(gòu)通常希望所有的存儲器訪問都合理的對齊,具體來說就是字訪問的地址通常是字對齊的,而
25、半字訪問使用的地址是半字對齊的。不按這種方式對齊的存儲器訪問稱為非對齊的存儲器訪問。將 一 個(gè) 非 字 ( 半 字 ) 對 齊 的 地 址 寫 入 A R M(Thumb)狀態(tài)的R15寄存器,將引起非對齊的指令取指。在一個(gè)非字(半字)對齊的地址讀寫一個(gè)字(半字),將引起非對齊的數(shù)據(jù)訪問: 7. ARM指令的尋址方式指令的尋址方式7. ARM指令的尋址方式指令的尋址方式7. ARM指令的尋址方式指令的尋址方式一條指令分為操作碼和地址碼一條指令分為操作碼和地址碼 尋址方式尋址方式是根據(jù)指令中給出的地址碼字段來實(shí)現(xiàn)尋找是根據(jù)指令中給出的地址碼字段來實(shí)現(xiàn)尋找真實(shí)操作數(shù)地址的方式真實(shí)操作數(shù)地址的方式。A
26、RM處理器具有9種基本尋址方式。 1.立即尋址; 2.寄存器尋址; 3.寄存器間接尋址; 4.基址尋址; 5.相對尋址; 6.寄存器移位尋址; 7.多寄存器尋址; 8.堆棧尋址; 9.塊拷貝尋址。 MOV R0,#0 xFF ;將立即數(shù)0 xFF裝入R0寄存器 注意:立即數(shù)要以”#”號為前綴,表示十六進(jìn)制數(shù)值以”0 x”表示.0 x55R0MOV R0,#0 xFF程序存儲1. 尋址方式分類立即尋址舉例立即尋址舉例0 xFF從代碼中獲得數(shù)據(jù) MOV R1,R2 ;將R2的值存入R1 0 xAA0 x55R2R12. 尋址方式分類寄存器尋址舉例寄存器尋址舉例MOV R1,R20 xAA LDR
27、R2,R3,#0 x0C ;讀取R3+0 x0C地址上的存儲單元的內(nèi)容,放入R2 0 x55R2R3 0 x400000000 xAA0 x4000000C3. 尋址方式分類基址尋址舉例基址尋址舉例LDR R2,R3,#0 x0C0 xAA將R3+0 x0C作為地址裝載數(shù)據(jù) 相對尋址是基址尋址的一種變通。由程序計(jì)數(shù)器PC提供基準(zhǔn)地址,指令中的地址碼字段作為偏移量,兩者相加后得到的地址即為操作數(shù)的有效地址。相對尋址指令舉例如下:BLSUBR1;調(diào)用到SUBR1子程序BEQLOOP;條件跳轉(zhuǎn)到LOOP標(biāo)號處.LOOPMOVR6,#1.SUBR1. 4. 尋址方式分類相對尋址 寄存器移位尋址是ARM
28、指令集特有的尋址方式。當(dāng)?shù)?個(gè)操作數(shù)是寄存器移位方式時(shí),第2個(gè)寄存器操作數(shù)在與第1個(gè)操作數(shù)結(jié)合之前,選擇進(jìn)行移位操作。寄存器移位尋址指令舉例如下:MOVR0,R2,LSL #3 ;R2的值左移3位,結(jié)果放入R0, ;即是R0=R28 ANDSR1,R1,R2,LSL R3 ;R2的值左移R3位,然后和R1相 ;“與”操作,結(jié)果放入R10 x55R0R20 x015. 尋址方式分類寄存器移位尋址MOV R0,R2,LSL #30 x080 x08邏輯左移3位 (1)ASL算術(shù)左移操作(Arithmetic shift left) 完成對通用寄存器中的內(nèi)容進(jìn)行算術(shù)左移操作,按操作數(shù)所指定的數(shù)量向左
29、移位,低位用零來填充。其中,操作數(shù)可以是通用寄存器,也可以是立即數(shù)。0 x55R0R10 x016. 尋址方式分類寄存器移位尋址寄存器移位尋址MOV R0,R1,ASL #20 x040 x04算術(shù)左移2位 (2)ASR算術(shù)右移操作(Arithmetic shift right) 可完成對通用寄存器中的內(nèi)容進(jìn)行右移操作,按操作數(shù)所指定的數(shù)量向右移位,左端用第31位的值來填充。其中,操作數(shù)可以是通用寄存器,也可以是立即數(shù)。0 x55R0R10 x116. 尋址方式分類寄存器移位尋址寄存器移位尋址MOV R0,R1,ASR #20 x040 x04算術(shù)右移2位 (3)LSL邏輯左移操作(Logic
30、al shift left) 可完成對通用寄存器中的內(nèi)容進(jìn)行邏輯左移操作,按操作數(shù)所指定的數(shù)量向左移位,低位用第零來填充。其中,操作數(shù)可以是通用寄存器,也可以是立即數(shù)。0 x55R0R10 x016. 尋址方式分類寄存器移位尋址寄存器移位尋址MOV R0,R1,LSL #20 x040 x04邏輯左移2位 (4)LSR邏輯右移操作(Logical shift right) 可完成對通用寄存器中的內(nèi)容進(jìn)行右移操作,按操作數(shù)所指定的數(shù)量向右移位,左端用零來填充。其中,操作數(shù)可以是通用寄存器,也可以是立即數(shù)。0 x55R0R10 x116. 尋址方式分類寄存器移位尋址寄存器移位尋址MOV R0,R1
31、,LSR #20 x040 x04邏輯右移2位 (5)ROR循環(huán)右移操作(Rotate right) 可完成對通用寄存器中的內(nèi)容進(jìn)行循環(huán)右移操作,按操作數(shù)所指定的數(shù)量向右循環(huán)移位,左端用右端移出的位來填充。其中,操作數(shù)可以是通用寄存器,也可以是立即數(shù)。0 x55R0R10 x116. 尋址方式分類寄存器移位尋址寄存器移位尋址MOV R0,R1,ROR #20 x440 x44循環(huán)右移2位 (6)RRX帶擴(kuò)展的循環(huán)右移操作(Rotate right extend by 1 place) 操作數(shù)右移一位,高端空出的位用原c標(biāo)志填充,無需指定移位位數(shù)。操作數(shù)右移1位,高端空出的位用原c標(biāo)識位填充,無
32、需指定移位位數(shù)0 x55R0R10 x116. 尋址方式分類寄存器移位尋址寄存器移位尋址0 x080 x08帶擴(kuò)展的循環(huán)右移1位C=0時(shí),MOV R0,R1,RRX #1 多寄存器尋址一次可傳送幾個(gè)寄存器值,允許一條指令傳送16個(gè)寄存器的任何子集或所有寄存器。多寄存器尋址指令舉例如下: LDMIAR1!,R2-R4,R6 ;將R1指向的單元中的數(shù)據(jù)讀出到 ;R2R4、R6中(R1自動(dòng)加1) STMIAR0!,R2-R4,R6 ;將寄存器R2R4、R6的值保 ;存到R0指向的存儲; 單元中 ;(R0自動(dòng)加1)注意寄存器的編號連續(xù)和不連續(xù)的情況0 x40000000R1R20 x?0 x010 x
33、400000000 x?R3R40 x?R60 x?0 x020 x030 x040 x400000040 x400000080 x4000000C存儲器7. 尋址方式分類多寄存器尋址多寄存器尋址LDMIA R1!,R2-R4,R6 0 x010 x020 x030 x040 x40000010 堆棧是一個(gè)按特定順序進(jìn)行存取的存儲區(qū),操作順序?yàn)椤昂筮M(jìn)先出” 。堆棧尋址是隱含的,它使用一個(gè)專門的寄存器(堆棧指針)指向一塊存儲區(qū)域(堆棧),指針?biāo)赶虻拇鎯卧词嵌褩5臈m?。存儲器堆棧可分為兩種: 向上生長:向高地址方向生長,稱為遞增堆棧向下生長:向低地址方向生長,稱為遞減堆棧8. 尋址方式分類堆
34、棧尋址堆棧尋址 8. 尋址方式分類堆棧尋址堆棧尋址棧底棧頂棧區(qū)SP堆棧存儲區(qū)棧頂棧底棧區(qū)SP向下增長向上增長0 x123456780 x12345678堆棧壓棧堆棧壓棧 棧頂SP棧頂SP棧底空堆棧棧底滿堆棧 堆棧指針指向最后壓入的堆棧的有效數(shù)據(jù)項(xiàng),稱為滿堆棧(先跳SP,再放數(shù)據(jù));堆棧指針指向下一個(gè)待壓入數(shù)據(jù)的空位置,稱為空堆棧(先放數(shù)據(jù)再跳SP)。 8. 尋址方式分類堆棧尋址堆棧尋址0 x123456780 x12345678棧頂SP0 x12345678棧頂SP壓棧壓棧 所以可以組合出四種類型的堆棧方式:滿遞增(FA):堆棧向上增長,堆棧指針指向內(nèi)含有效數(shù)據(jù)項(xiàng)的最高地址。指令如LDMFA、
35、STMFA等; 空遞增(EA):堆棧向上增長,堆棧指針指向堆棧上的第一個(gè)空位置。指令如LDMEA、STMEA等; 滿遞減(FD):堆棧向下增長,堆棧指針指向內(nèi)含有效數(shù)據(jù)項(xiàng)的最低地址。指令如LDMFD、STMFD等;空遞減(ED):堆棧向下增長,堆棧指針向堆棧下的第一個(gè)空位置。指令如LDMED、STMED等。 8. 尋址方式分類堆棧尋址堆棧尋址 8. 尋址方式分類堆棧尋址堆棧尋址STMFD SP! ,R1-R7,LR;將R1-R7入棧,滿遞減堆棧LDMFD SP! ,R1-R7,LR;數(shù)據(jù)出棧,放入R1-R7,LR寄存器,;滿遞減堆棧 塊拷貝是將寄存器內(nèi)容復(fù)制到寄存器的地址所指示的存儲器中,需要
36、注意的是在存儲第一個(gè)值之后存儲器地址是增加還是減少.增值類型如下:IA- 每次傳送后,地址加4IB- 每次傳送前,地址加4DA 每次傳送后,地址減4DB 每次傳送前,地址減49. 尋址方式分類塊拷貝尋址塊拷貝尋址 STMIAR0!,R1-R7;將將R1R7的數(shù)據(jù)保存到存儲器中的數(shù)據(jù)保存到存儲器中,存儲指針在保存儲指針在保 ;存第一個(gè)值之后增加,增長方向?yàn)橄蛏显鲩L。存第一個(gè)值之后增加,增長方向?yàn)橄蛏显鲩L。STMIBR0!,R1-R7;將將R1R7的數(shù)據(jù)保存到存儲器中的數(shù)據(jù)保存到存儲器中,存儲指針在保存儲指針在保 ;存第一個(gè)值之前增加,增長方向?yàn)橄蛏显鲩L。存第一個(gè)值之前增加,增長方向?yàn)橄蛏显鲩L。 STMDA R0!,R1-R7 ;將將R1R7的數(shù)據(jù)保存到存儲器中的數(shù)據(jù)保存到存儲器中,存儲指針在保存存儲指針在保存 ;第一個(gè)值之后增加第一個(gè)值之后增加,增長方向?yàn)橄嘞略鲩L。增長方向?yàn)橄嘞略鲩L。STMDB R0!,R1-R7 ;將將R1R7的數(shù)據(jù)保存到存儲器中的數(shù)據(jù)保存到存儲器中,存儲指針在保存儲指針在保 ;存第一個(gè)值之前增加,增長方向?yàn)橄嘞略鲩L。;存第一個(gè)值之前增加,增長方向?yàn)橄嘞略鲩L。9. 尋址方式分類塊拷貝尋址塊拷貝尋址 尋址方式分類塊拷貝尋址R5R1R0R9R90 x100CR9R9 0 x10100 x10140 x1018STMIAR9!,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 美菜調(diào)度主管述職報(bào)告
- 初中英語教案反思
- 彩色的象教案反思
- 互聯(lián)網(wǎng)的組成說課稿
- 和許多小班說課稿
- 書店安全消防施工合同
- 數(shù)碼俱樂部會員停車場地租賃合同
- 珠寶公司配電房安裝協(xié)議
- 精密儀器顧問合同
- 交通樞紐供暖設(shè)備安裝合同
- 高三一模動(dòng)員主題班會-課件(PPT演示)
- 車轍的形成原因及預(yù)防措施
- 風(fēng)電場升壓站建筑工程主要施工方案
- 第五講新聞評論的結(jié)構(gòu)與節(jié)奏
- 護(hù)士長競聘演講ppt
- 從PK-PD看抗菌藥物的合理應(yīng)用
- 加熱爐施工方案
- 意象對話放松引導(dǎo)詞2[生活經(jīng)驗(yàn)]
- 高速公路安全生產(chǎn)標(biāo)準(zhǔn)化指南1
- 學(xué)科融合課題研究實(shí)施方案
- 生物質(zhì)壓塊機(jī)使用說明書
評論
0/150
提交評論