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

STM32與ARM7、ARM9、ARM11

評論