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)行讀寫(xiě),因此CPU 無(wú)法對(duì)NAND FLASH 的數(shù)據(jù)進(jìn)行直接尋址,CPU 對(duì)NAND FLASH 中數(shù)據(jù)的讀寫(xiě)是通過(guò)專(zhuān)門(mén)的 nand flash控制器進(jìn)行的,因此 NAND FLASH 更適合于存儲(chǔ)數(shù)據(jù)。
NOR FLASH 容量小,速度快,對(duì)NOR FLASH 進(jìn)行讀寫(xiě)時(shí),輸入地址,然后給出讀寫(xiě)信號(hào)即可從數(shù)據(jù)總線上得到數(shù)據(jù),但是價(jià)格要比NAND FLASH 高因此適合做程序存儲(chǔ)器。
綜上所述,NOR FLASH 可以直接連接到arm 的總線上,但是DAND FLASH 需要通過(guò)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沒(méi)有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這些精簡(jiǎn)實(shí)時(shí)的RTOS不需要MMU,當(dāng)然可以在ARM7上運(yùn)行。
ARM9、ARM11,是嵌入式CPU(處理器),帶有MMU,可以運(yùn)行諸如Linux等多用戶多進(jìn)程的操作系統(tǒng),應(yīng)用場(chǎng)合也不同于ARM7。
到了ARMv7架構(gòu)的時(shí)候開(kāi)始以Cortex來(lái)命名,并分成Cortex-A、Cortex-R、Cortex-M三個(gè)系列。三大系列分工明確:“A”系列面向尖端的基于虛擬內(nèi)存的操作系統(tǒng)和用戶應(yīng)用;“R”系列針對(duì)實(shí)時(shí)系統(tǒng);“M”系列對(duì)微控制器。簡(jiǎn)單的說(shuō)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ù)成本、性能、功耗等因素來(lái)選擇芯片。
想必現(xiàn)在肯定知道了ARM7、Cortex-M的區(qū)別,不過(guò)小編還是花了點(diǎn)時(shí)間整理在此,可以幫助后來(lái)的初學(xué)者搞明白這些基本的概念性問(wèn)題。
ARM 之FIQ(快速中斷) IRQ(中斷)
IRQ,F(xiàn)IQ定義: 這就是個(gè)普通中斷,當(dāng)我們程序定義了該中斷,并且在程序運(yùn)行的時(shí)候產(chǎn)生了IRQ中斷,則此時(shí)的芯片是這樣運(yùn)行的------中斷處理器吧利用IRQ請(qǐng)求線來(lái)高速ARM,ARM就知道有個(gè)IRQ中斷來(lái)了,然后ARM切換到IRQ模式運(yùn)行。類(lèi)似的如果該中斷設(shè)置為FIQ,那么當(dāng)該中斷產(chǎn)生的時(shí)候,中斷處理器通過(guò)FIQ請(qǐng)求線告訴ARM,ARM就知道有個(gè)FIQ中斷來(lái)了,然后切換到FIQ模式運(yùn)行。
那么問(wèn)題來(lái)啦,為何要有這兩個(gè)中斷,或者說(shuō)為何分成這兩種中斷?原因很簡(jiǎn)單,速度不同,F(xiàn)IQ 也就是快速中斷的速度快,那么問(wèn)題又來(lái)了,為何就FIQ速度快???
原因:
1:ARM的FIQ模式提供了更多的banked寄存器,r8到r14還有SPSR,而IRQ模式就沒(méi)有那么多,R8,R9,R10,R11,R12對(duì)應(yīng)的banked的寄存器就沒(méi)有,這就意味著在ARM的IRQ模式下,中斷處理程序自己要保存R8到R12這幾個(gè)寄存器,然后退出中斷處理時(shí)程序要恢復(fù)這幾個(gè)寄存器,而FIQ模式由于這幾個(gè)寄存器都有banked寄存器,模式切換時(shí)CPU自動(dòng)保存這些值到banked寄存器,退出FIQ模式時(shí)自動(dòng)恢復(fù),所以這個(gè)過(guò)程FIQ比IRQ快.不要小看這幾個(gè)寄存器,ARM在編譯的時(shí)候,如果你FIQ中斷處理程序足夠用這幾個(gè)獨(dú)立的寄存器來(lái)運(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中斷的過(guò)程中,預(yù)取指令異常,未定義指令異常,軟件中斷全被禁止,所有的中斷被屏蔽。所以FIQ就會(huì)很快執(zhí)行,不會(huì)被其他異常或者中斷打斷,所以它又比IRQ快了。而IRQ不一樣,當(dāng)ARM處理IRQ模式處理IRQ中斷時(shí),如果來(lái)了一個(gè)FIQ中斷請(qǐng)求,那正在執(zhí)行的IRQ中斷處理程序會(huì)被搶斷,ARM切換到FIQ模式去執(zhí)行這個(gè)FIQ,所以FIQ比IRQ快多了。
4:另外FIQ的入口地址是0x1c,IRQ的入口地址是0x18。寫(xiě)過(guò)完整匯編系統(tǒng)的都比較明白這點(diǎn)的差別,18只能放一條指令,為了不與1C處的FIQ沖突,這個(gè)地方只能跳轉(zhuǎn),而FIQ不一樣,1C以后沒(méi)有任何中斷向量表了,這樣可以直接在1C處放FIQ的中斷處理程序,由于跳轉(zhuǎn)的范圍限制,至少少了一條跳轉(zhuǎn)指令。
-
ARM
+關(guān)注
關(guān)注
134文章
9304瀏覽量
374838 -
控制器
+關(guān)注
關(guān)注
114文章
16959瀏覽量
182816 -
寄存器
+關(guān)注
關(guān)注
31文章
5421瀏覽量
123260
原文標(biāo)題:ARM為什么會(huì)有兩種啟動(dòng)方式?ARM7和ARM-Cortex區(qū)別在哪?快速中斷和中斷是怎么回事?
文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
低成本ARM 32位MCU,開(kāi)發(fā)人員面臨的兩種選擇
ARM7、ARM9、ARM11、ARM-Cortex有何關(guān)系
ARM7、ARM9、ARM11、ARM-Cortex有什么關(guān)系?
ARM7、ARM9、ARM11、ARM-Cortex的關(guān)系及形象
ARM7/ARM9內(nèi)核的控制器復(fù)位
ARM7、ARM9、cortex-m3、cortex-m4與cortex-a8的區(qū)別在哪
請(qǐng)問(wèn)ARM7/ARM9/ARM11/ARM-Cortex之間是什么關(guān)系?
ARM7在嵌入式應(yīng)用中啟動(dòng)
選擇ARM處理器,ARM7還是Cortex-M3
初學(xué)者是選ARM7還是ARM9?uCOS還是Linux?
ARM Cortex-M3內(nèi)核微控制器與ARM7的區(qū)別資料下載

STM32與ARM7、ARM9、ARM11

評(píng)論