ARM為什么會(huì)有兩種啟動(dòng)方式?ARM7和ARM-Cortex區(qū)別在哪?快速中斷和中斷是怎么回事?
ARM的兩種啟動(dòng)方式 (NAND FLASH. NOR FLASH)為什么會(huì)有兩種啟動(dòng)方式?
這主要是由兩種FLASH 的不同特點(diǎn)決定的。
NAND FLASH 容量大,存儲(chǔ)的單位比特?cái)?shù)據(jù)的成本要低很多,但是要按照特定的時(shí)序?qū)AND FLASH 進(jìn)行讀寫,因此CPU 無法對NAND FLASH 的數(shù)據(jù)進(jìn)行直接尋址,CPU 對NAND FLASH 中數(shù)據(jù)的讀寫是通過專門的 nand flash控制器進(jìn)行的,因此 NAND FLASH 更適合于存儲(chǔ)數(shù)據(jù)。
NOR FLASH 容量小,速度快,對NOR FLASH 進(jìn)行讀寫時(shí),輸入地址,然后給出讀寫信號(hào)即可從數(shù)據(jù)總線上得到數(shù)據(jù),但是價(jià)格要比NAND FLASH 高因此適合做程序存儲(chǔ)器。
綜上所述,NOR FLASH 可以直接連接到arm 的總線上,但是DAND FLASH 需要通過NAND FLASH 控制器與S3S2440相連接。
ARM7和ARM-Cortex的區(qū)別
ARM7:ARMv4架構(gòu),ARM9:ARMv5架構(gòu),ARM11:ARMv6架構(gòu),ARM-Cortex 系列:ARMv7架構(gòu)。
ARM7沒有MMU(內(nèi)存管理單元),只能叫做MCU(微控制器),不能運(yùn)行諸如Linux、WinCE等這些現(xiàn)代的多用戶多進(jìn)程操作系統(tǒng),因?yàn)檫\(yùn)行這些系統(tǒng)需要MMU,才能給每個(gè)用戶進(jìn)程分配進(jìn)程自己獨(dú)立的地址空間。ucOS、ucLinux這些精簡實(shí)時(shí)的RTOS不需要MMU,當(dāng)然可以在ARM7上運(yùn)行。
ARM9、ARM11,是嵌入式CPU(處理器),帶有MMU,可以運(yùn)行諸如Linux等多用戶多進(jìn)程的操作系統(tǒng),應(yīng)用場合也不同于ARM7。
到了ARMv7架構(gòu)的時(shí)候開始以Cortex來命名,并分成Cortex-A、Cortex-R、Cortex-M三個(gè)系列。三大系列分工明確:“A”系列面向尖端的基于虛擬內(nèi)存的操作系統(tǒng)和用戶應(yīng)用;“R”系列針對實(shí)時(shí)系統(tǒng);“M”系列對微控制器。簡單的說Cortex-A系列是用于移動(dòng)領(lǐng)域的CPU,Cortex-R和Cortex-M系列是用于實(shí)時(shí)控制領(lǐng)域的MCU。
所以看上去ARM7跟Cortex-M很像,因?yàn)樗麄兌际荕CU,但確是不同代不同架構(gòu)的MCU(Cortex-M比ARM7高了三代!),所以性能也有很大的差距。此外,Cortex-M系列還細(xì)分為M0、M3、M4和超低功耗的M0+,用戶依據(jù)成本、性能、功耗等因素來選擇芯片。
想必現(xiàn)在肯定知道了ARM7、Cortex-M的區(qū)別,不過小編還是花了點(diǎn)時(shí)間整理在此,可以幫助后來的初學(xué)者搞明白這些基本的概念性問題。
ARM 之FIQ(快速中斷) IRQ(中斷)
IRQ,F(xiàn)IQ定義: 這就是個(gè)普通中斷,當(dāng)我們程序定義了該中斷,并且在程序運(yùn)行的時(shí)候產(chǎn)生了IRQ中斷,則此時(shí)的芯片是這樣運(yùn)行的------中斷處理器吧利用IRQ請求線來高速ARM,ARM就知道有個(gè)IRQ中斷來了,然后ARM切換到IRQ模式運(yùn)行。類似的如果該中斷設(shè)置為FIQ,那么當(dāng)該中斷產(chǎn)生的時(shí)候,中斷處理器通過FIQ請求線告訴ARM,ARM就知道有個(gè)FIQ中斷來了,然后切換到FIQ模式運(yùn)行。
那么問題來啦,為何要有這兩個(gè)中斷,或者說為何分成這兩種中斷?原因很簡單,速度不同,F(xiàn)IQ 也就是快速中斷的速度快,那么問題又來了,為何就FIQ速度快???
原因:
1:ARM的FIQ模式提供了更多的banked寄存器,r8到r14還有SPSR,而IRQ模式就沒有那么多,R8,R9,R10,R11,R12對應(yīng)的banked的寄存器就沒有,這就意味著在ARM的IRQ模式下,中斷處理程序自己要保存R8到R12這幾個(gè)寄存器,然后退出中斷處理時(shí)程序要恢復(fù)這幾個(gè)寄存器,而FIQ模式由于這幾個(gè)寄存器都有banked寄存器,模式切換時(shí)CPU自動(dòng)保存這些值到banked寄存器,退出FIQ模式時(shí)自動(dòng)恢復(fù),所以這個(gè)過程FIQ比IRQ快.不要小看這幾個(gè)寄存器,ARM在編譯的時(shí)候,如果你FIQ中斷處理程序足夠用這幾個(gè)獨(dú)立的寄存器來運(yùn)作,它就不會(huì)進(jìn)行通用寄存器的壓棧,這樣也省了一些時(shí)間。
2:FIQ比IRQ有更高優(yōu)先級(jí),如果FIQ和IRQ同時(shí)產(chǎn)生,那么FIQ先處理。
3:在symbian系統(tǒng)里,當(dāng)CPU處于FIQ模式處理FIQ中斷的過程中,預(yù)取指令異常,未定義指令異常,軟件中斷全被禁止,所有的中斷被屏蔽。所以FIQ就會(huì)很快執(zhí)行,不會(huì)被其他異?;蛘咧袛啻驍啵运直菼RQ快了。而IRQ不一樣,當(dāng)ARM處理IRQ模式處理IRQ中斷時(shí),如果來了一個(gè)FIQ中斷請求,那正在執(zhí)行的IRQ中斷處理程序會(huì)被搶斷,ARM切換到FIQ模式去執(zhí)行這個(gè)FIQ,所以FIQ比IRQ快多了。
4:另外FIQ的入口地址是0x1c,IRQ的入口地址是0x18。寫過完整匯編系統(tǒng)的都比較明白這點(diǎn)的差別,18只能放一條指令,為了不與1C處的FIQ沖突,這個(gè)地方只能跳轉(zhuǎn),而FIQ不一樣,1C以后沒有任何中斷向量表了,這樣可以直接在1C處放FIQ的中斷處理程序,由于跳轉(zhuǎn)的范圍限制,至少少了一條跳轉(zhuǎn)指令。
-
ARM
+關(guān)注
關(guān)注
134文章
9027瀏覽量
366476 -
控制器
+關(guān)注
關(guān)注
112文章
16103瀏覽量
177071 -
寄存器
+關(guān)注
關(guān)注
31文章
5294瀏覽量
119814
原文標(biāo)題:ARM為什么會(huì)有兩種啟動(dòng)方式?ARM7和ARM-Cortex區(qū)別在哪?快速中斷和中斷是怎么回事?
文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論