(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)核支持流水線(xiàn)工作,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)生,可用于用戶(hù)模式下的程序調(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è)用戶(hù)程序的執(zhí)行。
相關(guān)推薦:軟考嵌入式系統(tǒng)設(shè)計(jì)歷年真題匯總(2007-2010)
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |