ARM嵌入式系統

1 基於ARM的嵌入式系統

在這一章討論ARM是如何採用RISC設計了一個靈活的嵌入式處理器;然後通過介紹一個嵌入式設備的實例,討論圍繞ARM處理器的典型的軟硬件技術。

1.1 RISC設計思想

ARM採用RISC體系結構。RISC的目標在於設計出一套能在高時鐘頻率下單週期執行,簡單而有效的指令集。RISC的設計重點在於降低硬件執行指令的複雜度,因爲軟件比硬件能提供更高的靈活性和更高的智能。因此,RISC對編譯器有更高的要求。

image

RISC的設計思想主要由以下4個準則來實現:

(a)RISC指令集:使用定長的、簡單的、種類少的指令。

(b)Pipeline

(c)Register:RISC擁有更多的通用的寄存器。而CISC都是用於特定目的的專用寄存器。

(d)load-store結構:處理器只處理寄存器中的數據。獨立的load、store指令用來完成數據在寄存器和外部存儲器之間的傳送。

1.2 ARM設計思想

低功耗:嵌入式設備的要求。

高代碼密度:存儲器容量限制。

低成本:嵌入式設備對於價格敏感。

小面積:縮小嵌入式處理器內核管芯的面積。對於一個SOC,管芯的面積越小,留給外圍電路的空間就越大。

硬件調試技術:使軟件工程師能夠觀察到處理器執行指令的情況。

1.2.1 ARM嵌入式指令集

爲了更好適應需要,ARM指令集和純粹的RISC有如下區別:

(a)一些特定指令執行的週期可變.

(b)內嵌桶形移位器產生了更復雜的指令,如add r0,r2,lsl 3

(c)Thumb 和Thumb2指令。

(d)條件執行,如moveq.

(e)增強指令:如乘除法指令。

1.3 嵌入式系統的硬件

下圖是一個典型的ARM嵌入式SOC.一個方框代表一個功能塊。方框之間的連線是總線。

image

可以把SOC分成以下4個部分:

(a)ARM處理器--控制整個器件.一個ARM處理器包含了一個內核,以及片內的存儲器如TCM、Cache等。

(b)控制器:如存儲器控制器,LCD 控制器,中斷控制器。

(c)外設:提供芯片與外部的所有輸入輸出功能。MIC、CODEC等。

(d)總線:數據傳輸

以下2個圖分別是ARM core的roadmap,和一些使用ARM core搭建的ARM processor的示例。

image

image

1.3.1 ARM總線設計技術

總線可分爲2個結構層:第一層是物理層,定義電氣特性;第二層是協議層,定義通信的邏輯規則。

ARM不涉及總線的電氣特性,但詳細定義了協議層。

1.3.2 AMBA總線協議

AMBA(Advanced Microcontroller Bus Architecture).最初的AMBA包括ASB(Arm System Bus)和APB(Arm Peripheral Bus),後來ARM提出的AHB(ARM High Performance Bus)替代了ASB.後來AHB引入了2個變體:多層AHB和AHB-Lite。前者允許多個活動的主設備同時在總線上。

1.3.3 存儲器

存儲器的設計和選擇時,必須綜合考慮價格、功耗、存儲效率。

1.3.1 存儲器的層次

image

按從上到下的順序:(a)每bit價格降低;(b)容量增大;(c)訪問速度慢;(d)訪問頻度降低;(e)存取能耗大

1.3.2 存儲器的數據寬度

存儲器寬度即訪問一次存儲器,獲取到的數據的寬度,典型的有8/16/32/64位。最好讓指令寬度和存儲器寬度一致。

1.3.3 存儲器類型

ROM:用來存儲生產後就不可變更的內容。

Flash:可讀寫,但是慢。cpu無法直接訪問Flash上的內容,必須先把數據搬到SDRAM或者RAM中,才能被load指令訪問。

DRAM:價格最低。需要動態刷新,不斷給電容充電。

SRAM:無需動態刷新,存取速度快,但是貴,爲什麼貴得看下每個存儲單元的電路圖。

SDRAM:能比普通的存儲器工作在更高的時鐘頻率下。因爲SDRAM使用時鐘,所以他和處理器總線是同步的。數據從存儲單元被流水化地取出,最後突發式地輸出到總線。

1.3.4 外設

所有ARM外設都是存儲器映射的,就是統一編址。

1.3.4.1存儲器控制器

各種不同的存儲器通過存儲器控制器連接到總線上。上電時,存儲器通過硬件配置,使得某些存儲器處於工作狀態,如SRAM和ROM,這些存儲器允許執行初始化代碼。有些存儲器必須在使用之前通過軟件設置,如SDRAM。

1.3.4.2 中斷控制器

分標準的中斷控制器和向量中斷控制器。

1.4 嵌入式系統的軟件

image

1.4.1 bootloader(初始化代碼)

bootloader的詳細過程見http://blog.csdn.net/evanwu_85/archive/2010/10/22/5957777.aspx

下面僅貼出bootloader的一級loader運行完後,memory remap的圖示。

image

1.4.2 操作系統(略)

1.4.3 應用程序 (略)

2 ARM處理器基礎

2.1 寄存器(略)

2.2 CPSR

ARM內核使用CPSR監視和控制內部操作。cpsr分4個8位區域:標誌域、狀態域、擴展域、控制域。目前擴展和控制域保留,供將來使用。控制域包含處理器模式、狀態和中斷屏蔽位;標誌域包含條件標誌位。

image

2.2.1 處理器模式

處理器模式決定哪些寄存器是處於活動的,以及對CPSR的訪問權限。特權模式允許對CPSR進行讀寫操作,非特權模式只能進行寫操作。

共有6種特權模式:abort、irq、fiq、supervisor、system、undefine;一種非特權模式:User。

2.2.2 ARM寄存器組

image

除user模式外,其他的所有模式都可以通過改寫cpsr來進行模式切換。除系統模式外,其他所有模式都有自己的一組寄存器。系統模式將複用user模式所有的寄存器,可以認爲系統模式是一種特殊的user模式,一般沒什麼用。

處理器既可以通過改變cpsr來改變模式(處於特權模式下時),也可以當內核對異常或中斷響應時由硬件切換。下面的異常和中斷會導致模式切換:reset、irq、fiq、SWI、data abort、prefetch abort、undefined instructions。

當因中斷或異常而發生狀態切換時,CPSR會被保存到切換後模式的SPSR中。當因直接修改CPSR發生模式切換時,CPSR不會被保存。

(a)CPSR的低5位代表處理器模式,如下表所示:

image

(b)位5(T)置位表示處於ARM狀態,爲0則爲Thumb狀態。

(c)位7和位6(I和F),分別控制IRQ和FIQ的中斷屏蔽,置位時中斷被屏蔽。

(d)Condition flags高4位(N,Z,C,V).

image

2.2.3 條件執行

image

2.3 Pipeline

image

image

2.4 異常、中斷和向量表

當一箇中斷或異常發生時,PC會被設到中斷向量表裏的某一個地址,這個地址就是相應異常或中斷處理程序的入口地址。這個地址通常是一條跳轉指令。大多數情況下,0x00000000地址是爲向量表保留的。

image

image

2.5 內核擴展

有3種硬件擴展位於內核周圍:Cache和緊耦合存儲器TCM、存儲管理及協處理器接口。

2.5.1 Cache和TCM

Cache執行時間不可預測,對程序員不可見,不可尋址;TCM執行時間可預測,可尋址。

image

2.5.2 MMU和MPU

MMU:有保護,有映射

MPU:有保護,無映射

2.5.3 協處理器

協處理器可以附屬於ARM處理器。一個協處理器通過擴展指令集或配置寄存器來擴展功能。一個或多個協處理器可以通過協處理器接口與ARM內核相連。

2.6 體系結構的不同版本

2.6.1 命名規則

image

關於ARM處理器的命名規則,還有一些附加的要點:

(a)ARMTDMI後所有的內核,即是“ARM”標誌後沒有包含那些字符,也具有TDMI的特性。

(b)處理器系列是共享硬件特性的一組處理器的具體實現。

(c)嵌入式ICE宏單元是建立在處理器內部、用來設置硬件斷點的調試硬件。

(d)可綜合的,意味着處理器內核是以源代碼形式提供的。這種源代碼形式又可以被編譯成易於EDA工具使用的形式。

2.6.2 體系結構的發展

image

2.7 ARM處理器系列

image

在每個系列中,存儲器管理、Cache和TCM處理器擴展也有多種變化。ARM處理器的不同特性見下表:

image

2.8 總結

ARM處理器可以抽象成8個部件,ALU,barrel shifter,MAC,register file,instruction decoder,address register,incrementer and sign extend.

一個ARM處理器由一個內核及周圍的組件並通過總線連接起來。內核擴展包括:

(a)Cache 可改善系統的總體性能。

(b)TCM 可提高效率並有確定性的實時響應。

(c)存儲管理器用來管理存儲器和保護系統資源。

(d)協處理器用來擴展指令和功能,協處理器15控制Cache、tcm和存儲器管理。

3 異常和中斷處理

異常和中斷處理時嵌入式系統的重要核心部分。它們負責處理中斷、錯誤和其他外部系統觸發事件。高效的異常處理能大大提高系統性能。ARM有7種中斷或異常處理模式:reset、irq、fiq、SWI、data abort、prefetch abort、undefined instructions。

本章分3個部分:

異常處理:包括ARM處理器處理異常的一些特定細節。

中斷:ARM把中斷定義爲一類特殊的異常,本節討論了中斷請求的使用。

中斷處理方法:ISR。

3.1 異常處理

3.1.1 ARM處理器模式及異常

當一個異常導致模式改變時,內核自動地:(a)把cpsr保持到相應異常模式下的spsr。(b)把pc保存到相應異常模式下的lr。(c)設置cpsr爲相應異常模式。(d)設置pc爲相應異常處理程序的入口地址。

注意:當一個異常發生時,處理器總是切換到ARM狀態。

image

image

3.1.2 向量表

image

3.1.3 異常優先級

image

復位異常是優先級最高的異常,一旦復位信號產生,總是會發生復位異常。復位異常處理程序對系統進行初始化,包括配置存儲器和Cache。外部中斷源必須在IRQ或FIQ允許之前初始化,以避免還沒有設置好相應的處理程序之前產生中斷。復位處理程序還要爲所有的模式設置堆棧指針。

在執行復位處理程序的前面幾句,假設不會有別的異常和中斷產生,除reset外所有異常均得不到處理,所以編程要避免SWI、undefined instruction以及存儲器訪問導致的異常。

Data Abort:發生在訪問非法地址,如無效的存儲器地址,或權限不允許的地址。由於沒有禁止FIQ,在data abort的處理程序中,仍然爲相應FIQ.當FIQ處理完後,會把控制權交還給data abort處理程序。

FIQ:FIQ發生在一個外設把內核的FIQ線置位uFIQ時。FIQ是優先級最高的中斷。內核進入FIQ後,會自動禁止FIQ和IRQ,除非軟件重新允許FIQ和IRQ,否則任何外部中斷源都不能再次進入中端處理器。

IRQ:IRQ發生在一個外設把內核的IRQ線置爲nIRQ時。FIQ和data abort都沒有發生時,IRQ才能進入。進入IRQ後,內核禁止IRQ中斷,直至當前中斷源被清除。

Prefetch abort:發生在試圖取指令導致的存儲器訪問失敗。並且在沒有優先級更高的異常發生時,才能進入。在進入相應處理程序後,內核會禁止IRQ,而允許FIQ.

SWI:發生在執行SWI指令且沒有更高優先級異常產生時。進入後CPSR被設成管理模式。

3.1.4 LR偏移

image

3.2 中斷

ARM處理器有2中內核的中斷:一是外設引起的硬中斷,即FIQ和IRQ;一是軟中斷SWI。

本節重點放在FIQ和IRQ上,包括下列要點:(a)分配中斷;(b)中斷延遲;(c)IRQ和FIQ異常;(d)基本的中斷堆棧設計實現

3.2.1 中斷分配

系統設計時可以決定哪些硬件外設產生哪種中斷請求。

中斷控制器用於連接多個外部中斷到ARM的FIQ和IRQ之一。複雜的控制器可以用編程來選擇、決定一個外部源作爲IRQ源還是FIQ源。

而SWI有點像LINUX的系統調用。

3.2.2 中斷延遲

中斷延遲指從外部中斷信號發出,到第一條中斷異常處理指令被取出。嵌入式系統通常對中斷延遲要求嚴格。

中斷延遲依賴於軟件和硬件的組合。

軟件通過2種方法縮短延遲:中斷嵌套和中斷優先級。

3.2.3 IRQ與FIQ異常

IRQ和FIQ異常執行流程爲:

image

3.2.4 基本的中斷設計與實現

異常堆棧的設計取決於以下因素:(a)操作系統需求,如允許中斷嵌套的堆棧要求會比較大;(b)硬件平臺存儲空間的大小。

堆棧設計時,需明確2點:(a)位置,堆棧的起始位置以及採用何種增長方式;(b)堆棧大小。

避免內存溢出可以採用2種方法:(a)使用存儲保護;(b)每個函數起始處檢查SP。

下圖中,A是傳統的中斷堆棧設計方法,但B方案會優於A。因爲B中斷堆棧溢出後,不會破壞vector table,系統還有機會糾正自己錯誤。

image

3.3 中斷處理方法

3.3.1 非嵌套中斷處理

image

在進入中斷處理程序,保護好上下文後,就必須確定中斷源,因爲會有多個外部中斷源連接到IRQ上。一段確認外部中斷源的示例程序如下:

image

3.3.2 嵌套中斷處理

image

重新允許中斷包括把IRQ模式切換到SVC或系統模式,在IRQ模式下,不能簡單地重新允許中斷,因爲這可能會導致r14_irq被破壞。

執行上下文切換時包括清空IRQ堆棧,因爲當IRQ堆棧還有數據時,處理器不會執行上下文切換。所有保存在IRQ堆棧的寄存器,必須轉移至任務堆棧上,典型是放在SVC的堆棧上。然後,其餘的寄存器也必須轉移到任務堆棧上。他們被轉移至一個叫做stack Frame的保留塊。

 

Reference

《ARM嵌入式系統開發:軟件設計與優化》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章