一、引言
嵌入式微處理器是嵌入式系統(tǒng)的核心器件捌归,深入理解嵌入式微處理器的工作原理鼠锈,組成結(jié)構(gòu)、體系結(jié)構(gòu)以及軟件編程等方面晨抡,無(wú)論對(duì)嵌入式設(shè)計(jì)師考試的準(zhǔn)備還是對(duì)嵌入式項(xiàng)目的開(kāi)發(fā)都有一定的幫助氛悬。在目前白花盛放的嵌入式微處理器市場(chǎng),各種各樣大大小小的嵌入式微處理器就像菜市場(chǎng)里面的青菜一樣耘柱。要對(duì)各種嵌入式微處理器都有深入的理解幾乎是不可能的如捅。但是萬(wàn)變不離其中,在總多的嵌入式微處理器中都有著共同的概念帆谍、原理與規(guī)律伪朽。我們要做的是分析嵌入式微處理器的基本結(jié)構(gòu)、基本工作原理汛蝙、體系結(jié)構(gòu)烈涮、市場(chǎng)發(fā)展趨勢(shì)朴肺、各種微處理器的特點(diǎn)與應(yīng)用場(chǎng)合等等。我個(gè)人覺(jué)得坚洽,面對(duì)全國(guó)的考試戈稿,其考點(diǎn)應(yīng)該是大家都應(yīng)該去掌握的一些共有的基本知識(shí),或者是大家都熟悉讶舰,流行程度甚廣的一些微處理器的使用鞍盗,而不是一些個(gè)性化的知識(shí)點(diǎn)或者偏門(mén)器件的使用。
二跳昼、復(fù)習(xí)筆記
1. 嵌入式微處理器的基本結(jié)構(gòu)
- (1) 嵌入式硬件系統(tǒng)一般由嵌入式微處理器般甲、存儲(chǔ)器和輸入/輸出部分組成。
- (2) 嵌入式微處理器是嵌入式硬件系統(tǒng)的核心鹅颊,通常由控制單元敷存、算術(shù)邏輯單元和寄存器 3 大部分組成:
A、控制單元:主要負(fù)責(zé)取指堪伍、譯碼和取數(shù)等基本操作并發(fā)送主要的控制指令锚烦。
B、算術(shù)邏輯單元:主要處理數(shù)值型數(shù)據(jù)和進(jìn)行邏輯運(yùn)算工作帝雇。
C涮俄、寄存器:用于暫存臨時(shí)性的數(shù)據(jù)。
2. 嵌入式微處理器的分類(lèi)(根據(jù)用途)
- (1)嵌入式微控制器(MCU):又稱為單片機(jī)尸闸,片上外設(shè)資源一般比較豐富彻亲,適合于控制。最大的特點(diǎn)是單片化室叉,
體積小睹栖,功耗和成本低硫惕,可靠性高茧痕。目前約占 70%的市場(chǎng)份額。 - (2)嵌入式微處理器(EMPU):又稱為單板機(jī)恼除,由通用計(jì)算機(jī)中的 CPU 發(fā)展而來(lái)踪旷,它的特征是具有 32 位以上的處理器,具有較高的性能豁辉。通常嵌入式微處理器把 CPU令野、ROM、RAM 及 I/O 等模塊做到同一個(gè)芯片上徽级。
- (3)嵌入式 DSP 處理器(DSP):專(zhuān)門(mén)用于信號(hào)處理方面的處理器气破,其在系統(tǒng)結(jié)構(gòu)和指令算法方面進(jìn)行了特殊設(shè)計(jì),
使其處理速度比最快的 CPU 還快 10~50 倍餐抢,在數(shù)字濾波现使、FFT低匙、頻譜分析等方面獲得了大量的應(yīng)用。 - (4)嵌入式片上系統(tǒng)(SOC):追求產(chǎn)品系統(tǒng)最大包容的集成器件碳锈,其最大的特點(diǎn)是成功實(shí)現(xiàn)了軟硬件的無(wú)縫結(jié)合顽冶,直接在微處理器片內(nèi)嵌入操作系統(tǒng)的代碼模塊。
3. 典型 8 位微處理器的結(jié)構(gòu)和特點(diǎn)
該部分參考《教程》86~94 頁(yè)售碳,以 8051 為重點(diǎn)强重,徹底搞清楚 8 位單片機(jī)的工作原理,外設(shè)控制贸人、存儲(chǔ)分布间景、尋址方式以及典型應(yīng)用。2007 年 11 月下午的第一道題目就考查了 8051 的定時(shí)器使用艺智、外部時(shí)鐘連接拱燃、實(shí)際應(yīng)用的流程設(shè)計(jì)以及典型的尋址方式。這些考點(diǎn)幾乎可以在《教程》上找到力惯,例如外部時(shí)鐘連接那個(gè)問(wèn)題的答案就是《教程》89 頁(yè)上面的原圖碗誉。
4. 典型 16 位微處理器的結(jié)構(gòu)和特點(diǎn)
該部分參考《教程》94~97 頁(yè)。典型的微處理器可以參考 MSP430父晶,找一本這方面的書(shū)看看關(guān)于 MSP430 的結(jié)構(gòu)原理以及典型應(yīng)用哮缺。
5. 典型 32 位微處理器的結(jié)構(gòu)和特點(diǎn)
該部分參考《教程》97~112 頁(yè)。32 位處理器采用 32 位的地址和數(shù)據(jù)總線甲喝,其地址空間達(dá)到了 232=4GB尝苇。目前主流的 32 位嵌入式處理器系統(tǒng)主要有 ARM 系列、MIPS 系列埠胖、PoewrPC 系列等糠溜。ARM 微處理器體系結(jié)構(gòu)目前被公認(rèn)為是嵌入式應(yīng)用領(lǐng)域領(lǐng)先的 32 位嵌入式 RISC 處理器結(jié)構(gòu)。按照目前的發(fā)展形式直撤,ARM 幾乎成了嵌入式應(yīng)用的代名詞非竿。按照我個(gè)人的意見(jiàn),作為嵌入式系統(tǒng)設(shè)計(jì)師考試谋竖,逐漸增加考查 ARM 體系結(jié)構(gòu)與編程方面的題目是大勢(shì)所趨红柱。2006年沒(méi)有一道關(guān)于 ARM 的題目,2007 年出了少量題目蓖乘,可能在 2008 年會(huì)繼續(xù)增加锤悄。在下午題方面,2006 年考查了X86 方面的應(yīng)用嘉抒、2007 年考查了 8051 方面的應(yīng)用零聚,這個(gè)可能是一個(gè)過(guò)度過(guò)程,以目前 ARM 在嵌入式領(lǐng)域的廣泛應(yīng)用和普及程度,下午題目考查 ARM 應(yīng)用方面或者 32 位其他的微處理器方面的應(yīng)用題目可能在不就將來(lái)的考試中就會(huì)出現(xiàn)隶症。
6容诬、單片機(jī)系統(tǒng)的基本概念
- (1)單片機(jī)組成:中央處理器、存儲(chǔ)器沿腰、I/O 設(shè)備览徒。
- (2)存儲(chǔ)器:物理實(shí)質(zhì)是一組或多組具備數(shù)據(jù)輸入/輸出和數(shù)據(jù)存儲(chǔ)功能的集成電路,用于充當(dāng)設(shè)備緩存或保存固定的程序及數(shù)據(jù)颂龙。
A习蓬、ROM(只讀存儲(chǔ)器):一般用于存放固定的程序或數(shù)據(jù)表格等,數(shù)據(jù)在掉電后仍然會(huì)保留下來(lái)措嵌。
B躲叼、RAM(隨機(jī)存儲(chǔ)器):用于暫存程序和數(shù)據(jù)、中間計(jì)算結(jié)果企巢,或用作堆棧用等枫慷,數(shù)據(jù)在掉電后就會(huì)丟失。
- (3)I/O 端口:?jiǎn)纹瑱C(jī)與外界聯(lián)系的通道浪规,它可以對(duì)各類(lèi)外部信號(hào)(開(kāi)關(guān)量或听、模擬量、頻率信號(hào))進(jìn)行檢測(cè)笋婿、判斷誉裆、處理,并可控制各類(lèi)外部設(shè)備「妆簦現(xiàn)在的單片機(jī) I/O 口已經(jīng)集成了更多的特性和功能足丢,對(duì) I/O 端口的功能進(jìn)行了拓展和復(fù)用,例如外部中斷庇配、ADC 檢測(cè)以及 PWM 輸出等等斩跌。
- (4)輸出電平:高電平電壓(輸出“1”時(shí))和低電平電壓(輸出“0”時(shí))
A、TTL 電平:正邏輯捞慌,5V 為邏輯正耀鸦,0V 為邏輯負(fù),例如單片機(jī)的輸出卿闹。
B揭糕、RS232 電平:負(fù)邏輯萝快,-12V 為邏輯正锻霎,+12V 為邏輯負(fù),例如 PC 的輸出揪漩。
注:因此在單片機(jī)和 PC 進(jìn)行通訊的時(shí)候需要一個(gè) MAX232 芯片進(jìn)行電平轉(zhuǎn)換旋恼。
- (5)堆棧:它是一種線性的數(shù)據(jù)結(jié)構(gòu),是一個(gè)只有一個(gè)進(jìn)出口的一維空間奄容。
A冰更、堆棧特性:后進(jìn)先出(LIFO)
B产徊、堆棧指針:用于指示棧頂?shù)奈恢茫ǖ刂罚?dāng)發(fā)生壓検裣福或者出棧操作時(shí)舟铜,導(dǎo)致棧頂位置變化時(shí),堆棧指針會(huì)隨之變化奠衔。
C谆刨、堆棧操作:壓棧操作(PUSH)和出棧操作(POP)。
D归斤、堆棧類(lèi)型:“向上生長(zhǎng)”型堆棧痊夭,每次壓棧時(shí)堆棧指針加 1;“向下生長(zhǎng)”型堆棧脏里,每次壓棧堆棧時(shí)指針減 1她我。
E、堆棧應(yīng)用:調(diào)用子程序迫横、響應(yīng)中斷時(shí)番舆,堆棧用于保護(hù)現(xiàn)場(chǎng);還可以用作臨時(shí)數(shù)據(jù)緩沖區(qū)來(lái)使用矾踱。
F合蔽、使用注意:堆棧溢出問(wèn)題,壓棧和出棧的匹配問(wèn)題介返。
- (6)定時(shí)/計(jì)數(shù)器:實(shí)質(zhì)都是計(jì)數(shù)器拴事。用作定時(shí)器時(shí)是對(duì)單片機(jī)內(nèi)部的時(shí)鐘脈沖進(jìn)行計(jì)數(shù),而在用作計(jì)數(shù)器時(shí)是對(duì)單片機(jī)外部的輸入脈沖進(jìn)行計(jì)數(shù)圣蝎,其作用如下:
A刃宵、計(jì)時(shí)、定時(shí)或延時(shí)控制徘公;
B牲证、脈沖技術(shù);
C关面、測(cè)量脈沖寬度或頻率(捕獲功能)
- (7)中斷:優(yōu)先級(jí)更高的事件發(fā)生坦袍,打斷優(yōu)先級(jí)低的時(shí)間進(jìn)程。引起中斷的事件稱為中斷源等太。一個(gè)單片機(jī)可能支持多個(gè)中斷源捂齐,這些中斷源可以分為可屏蔽中斷和非可屏蔽中斷,而這些中斷源并不都是系統(tǒng)工作所需的缩抡,我們可以根據(jù)系統(tǒng)需求屏蔽那些不需要的中斷源奠宜。
A、中斷嵌套:當(dāng)一個(gè)低級(jí)中斷尚未執(zhí)行完畢,又發(fā)生了一個(gè)高級(jí)優(yōu)先級(jí)的中斷压真,系統(tǒng)轉(zhuǎn)而執(zhí)行高級(jí)中斷服務(wù)程序娩嚼,
待處理完高級(jí)中斷后再回過(guò)頭來(lái)執(zhí)行低級(jí)中斷服務(wù)程序。
B滴肿、中斷響應(yīng)時(shí)間是指從發(fā)出中斷請(qǐng)求到進(jìn)入中斷處理所用的時(shí)間岳悟;中斷處理時(shí)間是指中斷處理開(kāi)始到中斷處理結(jié)
束的時(shí)間。
C泼差、中斷響應(yīng)過(guò)程:
a竿音、保護(hù)現(xiàn)場(chǎng):將當(dāng)前地址、累加器 ACC拴驮、狀態(tài)寄存器保存到堆棧中春瞬。
b、切換 PC 指針:根據(jù)不同的中斷源所產(chǎn)生的中斷套啤,切換到相應(yīng)的入口地址宽气。
c、執(zhí)行中斷服務(wù)處理程序潜沦。
d萄涯、恢復(fù)現(xiàn)場(chǎng):將保存在堆棧中的主程序地址、累加器 ACC唆鸡、狀態(tài)寄存器恢復(fù)涝影。
e、中斷返回:從中斷處返回到主程序争占,繼續(xù)執(zhí)行燃逻。
D、中斷入口地址:單片機(jī)為每個(gè)中斷源分配了不同的中斷入口地址臂痕,也稱為中斷向量伯襟。
- (8)復(fù)位:通過(guò)外部電路給單片機(jī)的復(fù)位引進(jìn)一個(gè)復(fù)位信號(hào),讓系統(tǒng)重新開(kāi)始運(yùn)行握童。
A姆怪、復(fù)位發(fā)生時(shí)的動(dòng)作:
a、PC 指針從起始位置開(kāi)始執(zhí)行(大多數(shù)單片機(jī)都時(shí)從 0x0000 處開(kāi)始執(zhí)行)澡绩。
b稽揭、I/O 端口設(shè)置成缺省狀態(tài)(高阻態(tài)、或者輸出低電平)肥卡。
c溪掀、部分專(zhuān)用控制寄存器 SFR 恢復(fù)到缺省狀態(tài)。
d召调、普通 RAM 不變(如果時(shí)上電復(fù)位膨桥,則是隨即數(shù))蛮浑。
B唠叛、兩種不同的復(fù)位啟動(dòng)方式:
a只嚣、冷啟動(dòng):也叫上電復(fù)位,指在斷電狀態(tài)下給系統(tǒng)加電艺沼,讓系統(tǒng)開(kāi)始正常運(yùn)行册舞。
b、熱啟動(dòng):在不斷電的狀態(tài)下障般,給單片機(jī)復(fù)位引進(jìn)一個(gè)復(fù)位信號(hào)调鲸,讓系統(tǒng)重新開(kāi)始。
C挽荡、兩種類(lèi)型的復(fù)位電路:高電平復(fù)位和低電平復(fù)位藐石。
D 注意事項(xiàng):
a、 注意復(fù)位信號(hào)的電平狀態(tài)及持續(xù)時(shí)間必須滿足系統(tǒng)要求定拟。
b于微、 注意避免復(fù)位信號(hào)抖動(dòng)。
- (9)時(shí)鐘電路:?jiǎn)纹瑱C(jī)是一種時(shí)序電路青自,必須提供脈沖電路才能正常工作株依。時(shí)鐘電路相當(dāng)于單片機(jī)的心臟,它的每一次跳動(dòng)(振動(dòng)節(jié)拍)都控制著單片機(jī)的工作節(jié)奏延窜。振蕩得慢時(shí)恋腕,系統(tǒng)工作速度就慢,振蕩得快時(shí)逆瑞,系統(tǒng)工作速度就快(功耗也增大)荠藤。
A、振蕩周期:振蕩源的振蕩節(jié)拍获高。
B商源、機(jī)器周期:單片機(jī)完成一個(gè)基本操作需要的振蕩周期(節(jié)拍)。
C谋减、指令周期:執(zhí)行一條指令需要幾個(gè)機(jī)器周期牡彻。不同的指令需要的機(jī)器周期數(shù)不同。
7出爹、ARM 體系結(jié)構(gòu)的基本概念
- (1)ARM:Advanced RISC Machine庄吼。
- (2)ARM 體系結(jié)構(gòu)中支持兩種指令集:ARM 指令集和 Thumb 指令集。
- (3)ARM 內(nèi)核有 T严就、D总寻、M、I 四個(gè)功能模塊:
A梢为、T 模塊:表示 16 位 Thumb渐行,可以在兼顧性能的同時(shí)減少代碼尺寸轰坊。
B、D 模塊:表示 Debug祟印,內(nèi)核中放置了用于調(diào)試的結(jié)構(gòu)肴沫,通常為一個(gè)邊界掃描鏈 JTAG。
C蕴忆、M 模塊:表示 8 位乘法器颤芬。
D、I 模塊:表示 EmbeddedICE Logic套鹅,用于實(shí)時(shí)斷點(diǎn)觀測(cè)及變量觀測(cè)的邏輯電路部分站蝠。
- (4)ARM 處理器有 7 種運(yùn)行模式:
A、用戶模式(User):正常程序執(zhí)行模式卓鹿,用于應(yīng)用程序菱魔。
D、快速中斷模式(FIQ):快速中斷處理吟孙,用于高速數(shù)據(jù)傳輸和通道處理澜倦。
C、外部中斷模式(IRQ):用于通用的中斷處理拔疚。
D肥隆、管理模式(SVE):供操作系統(tǒng)使用的一種保護(hù)模式。
E稚失、數(shù)據(jù)訪問(wèn)中止模式(Abort):用于虛擬存儲(chǔ)及存儲(chǔ)保護(hù)栋艳。
F、未定義指令中止模式(Undefined):當(dāng)未定義指令執(zhí)行時(shí)進(jìn)入該模式句各。
G吸占、系統(tǒng)模式(System):用于運(yùn)行特權(quán)級(jí)的操作系統(tǒng)任務(wù)。
除了用戶模式之外的其他 6 種處理器模式稱為特權(quán)模式凿宾,在這些模式下矾屯,程序可以訪問(wèn)所有的系統(tǒng)資源,也可以任意地進(jìn)行處理器模式切換初厚,其中件蚕,除了系統(tǒng)模式外,其他的 5 種特權(quán)模式又稱為異常模式产禾。
處理器模式可以通過(guò)軟件控制進(jìn)行切換排作,也可以通過(guò)外部中斷或異常處理過(guò)程進(jìn)行切換。大多數(shù)的用戶程序運(yùn)行在用戶模式下亚情,這時(shí)妄痪,應(yīng)用程序不能訪問(wèn)一些受操作系統(tǒng)保護(hù)的系統(tǒng)資源,應(yīng)用程序也不能直接進(jìn)行處理器模式切換楞件。
當(dāng)需要進(jìn)行處理器模式切換時(shí)衫生,應(yīng)用程序可以產(chǎn)生異常處理裳瘪,在異常處理中進(jìn)行處理器模式的切換。這種體系結(jié)構(gòu)可以使操作系統(tǒng)控制整個(gè)系統(tǒng)的資源罪针。
當(dāng)應(yīng)用程序發(fā)生異常中斷時(shí)彭羹,處理器進(jìn)入相應(yīng)的異常模式。在每一種異常模式種都有一組寄存器站故,供相應(yīng)的異常處理程序使用皆怕,這樣就可以保證進(jìn)入異常模式時(shí)毅舆,用戶模式下的寄存器不被破壞西篓。
系統(tǒng)模式并不是通過(guò)異常過(guò)程進(jìn)入的,它和用戶模式具有完全一樣的寄存器憋活,但是系統(tǒng)模式屬于特權(quán)模式岂津,可以訪問(wèn)所有的系統(tǒng)資源,也可以直接進(jìn)行處理器模式切換悦即,它主要供操作系統(tǒng)任務(wù)使用吮成。
- (5)ARM 處理器共有 37 個(gè)寄存器:31 個(gè)通用寄存器和 6 個(gè)狀態(tài)寄存器
A、通用寄存器包括 R0~R15辜梳,可以分為 3 類(lèi):
a粱甫、未備份寄存器 R0~R7:在所有的處理器模式下,未備份寄存器都是指向同一個(gè)物理寄存器作瞄。
b茶宵、備份寄存器 R8~R14: 對(duì)于 R8~R12 來(lái)說(shuō),每個(gè)寄存器對(duì)于 2 個(gè)不同的物理寄存器宗挥,它們每次所訪問(wèn)的物理寄存器都與當(dāng)前的處理器運(yùn)行模式有關(guān)乌庶。 對(duì)于 R13、R14 來(lái)說(shuō)契耿,每個(gè)寄存器對(duì)于 6 個(gè)不同的物理寄存器瞒大,其中一個(gè)是用戶模式和系統(tǒng)模式共用。 R13 在 ARM 指令種常用作堆棧指針搪桂。由于處理器的每種運(yùn)行模式都有自己獨(dú)立的物理寄存器 R13透敌,所有在用戶應(yīng)用程序的初始化部分,一般要初始化每種模式下的 R13踢械,使其指向該運(yùn)行模式的椥锏纾空間。 R14 又稱為連接寄存器(LR)裸燎,在 ARM 體系種具有下面兩種特殊作用:在通過(guò) BL 或 BLX 指令調(diào)用子程序時(shí)顾瞻,存放當(dāng)前子程序的返回地址;在異常中斷發(fā)生時(shí)德绿,存放異常模式將要返回的地址荷荤。
c退渗、程序計(jì)數(shù)器 R15(PC):由于 ARM 采用了流水線機(jī)制,在三級(jí)流水線中蕴纳,當(dāng)正確讀取了 PC 的值時(shí)会油,該值為當(dāng)前指令地址值加 8 個(gè)字節(jié)。也就是說(shuō)古毛,PC 指向當(dāng)前指令的下兩條指令的地址翻翩。在 ARM 指令狀態(tài)下,PC 的 0 和 1 位是 0稻薇,在 Thumb 指令狀態(tài)下嫂冻,PC 的 0 位是 0。
B塞椎、程序狀態(tài)寄存器
a桨仿、ARM 體系結(jié)構(gòu)包含 1 個(gè)當(dāng)前程序狀態(tài)寄存器(CPSR)和 5 個(gè)備份的程序狀態(tài)寄存(SPSR),使用 MSR 和 MRS 指令來(lái)設(shè)置和讀取這些寄存器案狠。
b服傍、當(dāng)前程序狀態(tài)寄存器 CPSR:保存當(dāng)前處理器狀態(tài)的信息,可以在任何處理器模式下被訪問(wèn)骂铁。
c吹零、備份程序狀態(tài)寄存器 SPSR:每一種異常處理器模式下都有一個(gè)專(zhuān)用的物理狀態(tài)寄存器。當(dāng)特定的異常中斷發(fā)生時(shí)拉庵,這個(gè)寄存器用于存放當(dāng)前程序狀態(tài)寄存器的內(nèi)容灿椅,在異常中斷程序退出時(shí),可以用 SPSR 中保存的值來(lái)恢復(fù) CPSR名段。
d阱扬、由于用戶模式和系統(tǒng)模式不屬于異常模式,它們沒(méi)有 SPSR伸辟,當(dāng)在這兩種模式下訪問(wèn) SPSR 時(shí)麻惶,結(jié)果是未知的。
- (6)ARM 指令的尋址方
所謂尋址方式就是處理器根據(jù)指令中給出的地址信息來(lái)尋找物理地址的方式信夫。
A窃蹋、 立即尋址:操作數(shù)本身就在指令中給出,只要取出指令也就取到了操作數(shù)静稻。
ADD R0, R0, #1
B警没、 寄存器尋址:利用寄存器中的數(shù)值作為操作數(shù)。
ADD R0, R1, R2
C振湾、 寄存器間接尋址:以寄存器中的值作為操作數(shù)地址杀迹,而操作數(shù)本身存放在存儲(chǔ)器中。
ADD R0, R1, [R2]
LDR R0, [R1]
STR R0, [R1]
D押搪、基址變址尋址:將寄存器(該寄存器一般稱作基址寄存器)的內(nèi)容與指令中給出的地址偏移量相加树酪,從而得到一個(gè)操作數(shù)的有效地址浅碾。
LDR R0, [R1, #4]
LDR R0, [R1, #4]!
LDR R0, [R1], #4
LDR R0, [R1, R2]!
E、 多寄存器尋址:一條指令可以完成多個(gè)寄存器值的傳送续语。
LDMIA R0, {R1, R2, R3}
F垂谢、 相對(duì)尋址:以程序計(jì)數(shù)器 PC 的當(dāng)前值作為基地址,指令中的地址標(biāo)號(hào)作為偏移量疮茄,兩者相加之后得到操作數(shù)的有效地址滥朱。
BL NEXT ;跳轉(zhuǎn)到子程序 NEXT 處執(zhí)行
…...
NEXT : MOV PC, LR ;從子程序返回
G、堆棧尋址:支持 4 種類(lèi)型的堆棧工作方式:
a力试、 滿遞增堆棧:堆棧指針指向最后壓入的數(shù)據(jù)徙邻,且由低地址向高地址生長(zhǎng)。
b懂版、 滿遞減堆棧:堆棧指針指向最后壓入的數(shù)據(jù)鹃栽,且由高地址向低地址生長(zhǎng)躏率。
c躯畴、 空遞增堆棧:堆棧指針指向下一個(gè)將要放入數(shù)據(jù)的空位置,且由低地址向高地址生長(zhǎng)薇芝。
d蓬抄、 空遞減堆棧:堆棧指針指向下一個(gè)將要放入數(shù)據(jù)的空位置,且由高地址向低地址生長(zhǎng)夯到。
- (7)ARM 的存儲(chǔ)方法
A、大端模式:數(shù)據(jù)的高字節(jié)存儲(chǔ)在低地址中,低字節(jié)存儲(chǔ)在高地址中慨绳。
B挟伙、小端模式:數(shù)據(jù)的低字節(jié)存儲(chǔ)在低地址中,高字節(jié)存儲(chǔ)在高地址中荐开。
- (8)ARM 中斷與異常
A付翁、ARM 內(nèi)核支持 7 種中斷
不同的中斷處于不同的處理模式,具有不同的優(yōu)先級(jí)晃听,而且每個(gè)中斷都有固定的中斷地址入口百侧。當(dāng)一個(gè)中斷發(fā)生是,相應(yīng)的 R14(LR)存儲(chǔ)中斷返回地址能扒,SPSR 存儲(chǔ)當(dāng)前程序狀態(tài)寄存器 CPSR 的值佣渴。
B、由于 ARM 內(nèi)核支持流水線工作
LR 寄存器存儲(chǔ)的地址可能是發(fā)生中斷后面指令的地址初斑,所以不同的中斷處理完成后辛润,必須將 LR 寄存器值經(jīng)過(guò)處理后再寫(xiě)入 P15(PC)寄存器。
C见秤、ARM 異常的具體含義:
a砂竖、復(fù)位:當(dāng)處理器的復(fù)位電平有效時(shí)灵迫,產(chǎn)生復(fù)位異常,程序跳轉(zhuǎn)到異常復(fù)位異常處理程序處執(zhí)行晦溪。
b瀑粥、未定義的指令:當(dāng) ARM 處理器或協(xié)處理器遇到不能處理的指令時(shí),產(chǎn)生未定義指令異常三圆∧唬可以使用該異常機(jī)制進(jìn)行軟件仿真。
c舟肉、軟件中斷:該異常由執(zhí)行 SWI 指令產(chǎn)生修噪,可用于用戶模式下的程序調(diào)用特權(quán)操作指令÷访模可使用該異常機(jī)制實(shí)現(xiàn)操作系統(tǒng)調(diào)用功能黄琼。
d、指令預(yù)取中止:如果處理器預(yù)取指令的地址不存在或該地址不允許當(dāng)前指令訪問(wèn)整慎,存儲(chǔ)器向處理器發(fā)出中止信號(hào)脏款,但當(dāng)預(yù)取的指令被執(zhí)行時(shí),才會(huì)產(chǎn)生指令預(yù)取中止異常裤园。
e撤师、數(shù)據(jù)訪問(wèn)中止:如果處理器數(shù)據(jù)訪問(wèn)指令的目標(biāo)地址不存在,或者該地址不允許當(dāng)前指令訪問(wèn)拧揽,處理器產(chǎn)生數(shù)據(jù)訪問(wèn)中止異常剃盾。
f、外部中斷請(qǐng)求:當(dāng) ARM 外部中斷請(qǐng)求管腳有效淤袜,而且 CPSR 中的 I 位為 0 時(shí)痒谴,產(chǎn)生 IRQ 異常。系統(tǒng)的外設(shè)可以通過(guò)該異常請(qǐng)求中斷服務(wù)铡羡。
g积蔚、快速中斷請(qǐng)求:當(dāng) ARM 快速中斷請(qǐng)求管腳有效,而且 CPSR 的 F 位為 0 時(shí)蓖墅,產(chǎn)生 FIQ 異常库倘。
D、ARM 處理器對(duì)異常中斷的響應(yīng)過(guò)程
a论矾、將下一條指令的地址存入相應(yīng)的連接寄存器 LR 中教翩。
b、將 CPSR 復(fù)制到相應(yīng)的 SPSR 中贪壳。
c饱亿、根據(jù)異常的類(lèi)型,強(qiáng)制設(shè)置 CPSR 的運(yùn)行模式位。
d彪笼、強(qiáng)制 PC 從相關(guān)的異常向量地址取下一條指令執(zhí)行钻注,從而跳轉(zhuǎn)到相應(yīng)的異常處理程序處。
E配猫、ARM 處理器從異常中斷處理程序中返回
a幅恋、恢復(fù)中斷的程序的處理器狀態(tài),將 SPSR 復(fù)制到 CPSR 中泵肄。
b捆交、若在進(jìn)入異常處理時(shí)設(shè)置了中斷禁止位,要在此清除腐巢。
c品追、將連接寄存器 LR 的值減去相應(yīng)的偏移量后送到 PC。
F冯丙、復(fù)位異常中斷處理程序不需要返回肉瓦。
在復(fù)位異常中斷程序開(kāi)始整個(gè)用戶程序的執(zhí)行。