1、引言
嵌入式微處理器是嵌入式系統的核心器件,深刻理解嵌入式微處理器的工做原理,組成結構、體系結構以及軟件編程等方面,不管對嵌入式設計師考試的準備仍是對嵌入式項目的開發都有必定的幫助。在目前白花盛放的嵌入式微處理器市場,各類各樣大大小小的嵌入式微處理器就像菜市場裏面的青菜同樣。要對各類嵌入式微處理器都有深刻的理解幾乎是不可能的。可是萬變不離其中,在總多的嵌入式微處理器中都有着共同的概念、原理與規律。咱們要作的是分析嵌入式微處理器的基本結構、基本工做原理、體系結構、市場發展趨勢、各類微處理器的特色與應用場合等等。我我的以爲,面對全國的考試,其考點應該是你們都應該去掌握的一些共有的基本知識,或者是你們都熟悉,流行程度甚廣的一些微處理器的使用,而不是一些個性化的知識點或者偏門器件的使用。算法
2、複習筆記
1. 嵌入式微處理器的基本結構
- (1) 嵌入式硬件系統通常由嵌入式微處理器、存儲器和輸入/輸出部分組成。
- (2) 嵌入式微處理器是嵌入式硬件系統的核心,一般由控制單元、算術邏輯單元和寄存器 3 大部分組成:
A、控制單元:主要負責取指、譯碼和取數等基本操做併發送主要的控制指令。
B、算術邏輯單元:主要處理數值型數據和進行邏輯運算工做。
C、寄存器:用於暫存臨時性的數據。
2. 嵌入式微處理器的分類(根據用途)
- (1)嵌入式微控制器(MCU):又稱爲單片機,片上外設資源通常比較豐富,適合於控制。最大的特色是單片化,
體積小,功耗和成本低,可靠性高。目前約佔 70%的市場份額。 - (2)嵌入式微處理器(EMPU):又稱爲單板機,由通用計算機中的 CPU 發展而來,它的特徵是具備 32 位以上的處理器,具備較高的性能。一般嵌入式微處理器把 CPU、ROM、RAM 及 I/O 等模塊作到同一個芯片上。
- (3)嵌入式 DSP 處理器(DSP):專門用於信號處理方面的處理器,其在系統結構和指令算法方面進行了特殊設計,
使其處理速度比最快的 CPU 還快 10~50 倍,在數字濾波、FFT、頻譜分析等方面得到了大量的應用。 - (4)嵌入式片上系統(SOC):追求產品系統最大包容的集成器件,其最大的特色是成功實現了軟硬件的無縫結合,直接在微處理器片內嵌入操做系統的代碼模塊。
3. 典型 8 位微處理器的結構和特色
該部分參考《教程》86~94 頁,以 8051 爲重點,完全搞清楚 8 位單片機的工做原理,外設控制、存儲分佈、尋址方式以及典型應用。2007 年 11 月下午的第一道題目就考查了 8051 的定時器使用、外部時鐘鏈接、實際應用的流程設計以及典型的尋址方式。這些考點幾乎能夠在《教程》上找到,例如外部時鐘鏈接那個問題的答案就是《教程》89 頁上面的原圖。編程
4. 典型 16 位微處理器的結構和特色
該部分參考《教程》94~97 頁。典型的微處理器能夠參考 MSP430,找一本這方面的書看看關於 MSP430 的結構原理以及典型應用。緩存
5. 典型 32 位微處理器的結構和特色
該部分參考《教程》97~112 頁。32 位處理器採用 32 位的地址和數據總線,其地址空間達到了 232=4GB。目前主流的 32 位嵌入式處理器系統主要有 ARM 系列、MIPS 系列、PoewrPC 系列等。ARM 微處理器體系結構目前被公認爲是嵌入式應用領域領先的 32 位嵌入式 RISC 處理器結構。按照目前的發展形式,ARM 幾乎成了嵌入式應用的代名詞。按照我我的的意見,做爲嵌入式系統設計師考試,逐漸增長考查 ARM 體系結構與編程方面的題目是大勢所趨。2006年沒有一道關於 ARM 的題目,2007 年出了少許題目,可能在 2008 年會繼續增長。在下午題方面,2006 年考查了X86 方面的應用、2007 年考查了 8051 方面的應用,這個多是一個過分過程,以目前 ARM 在嵌入式領域的普遍應用和普及程度,下午題目考查 ARM 應用方面或者 32 位其餘的微處理器方面的應用題目可能在不就未來的考試中就會出現。數據結構
六、單片機系統的基本概念
- (1)單片機組成:中央處理器、存儲器、I/O 設備。
- (2)存儲器:物理實質是一組或多組具有數據輸入/輸出和數據存儲功能的集成電路,用於充當設備緩存或保存固定的程序及數據。
A、ROM(只讀存儲器):通常用於存放固定的程序或數據表格等,數據在掉電後仍然會保留下來。
B、RAM(隨機存儲器):用於暫存程序和數據、中間計算結果,或用做堆棧用等,數據在掉電後就會丟失。併發
- (3)I/O 端口:單片機與外界聯繫的通道,它能夠對各種外部信號(開關量、模擬量、頻率信號)進行檢測、判斷、處理,並可控制各種外部設備。如今的單片機 I/O 口已經集成了更多的特性和功能,對 I/O 端口的功能進行了拓展和複用,例如外部中斷、ADC 檢測以及 PWM 輸出等等。
- (4)輸出電平:高電平電壓(輸出「1」時)和低電平電壓(輸出「0」時)
A、TTL 電平:正邏輯,5V 爲邏輯正,0V 爲邏輯負,例如單片機的輸出。
B、RS232 電平:負邏輯,-12V 爲邏輯正,+12V 爲邏輯負,例如 PC 的輸出。
注:所以在單片機和 PC 進行通信的時候須要一個 MAX232 芯片進行電平轉換。性能
- (5)堆棧:它是一種線性的數據結構,是一個只有一個進出口的一維空間。
A、堆棧特性:後進先出(LIFO)
B、堆棧指針:用於指示棧頂的位置(地址),當發生壓棧或者出棧操做時,致使棧頂位置變化時,堆棧指針會隨之變化。
C、堆棧操做:壓棧操做(PUSH)和出棧操做(POP)。
D、堆棧類型:「向上生長」型堆棧,每次壓棧時堆棧指針加 1;「向下生長」型堆棧,每次壓棧堆棧時指針減 1。
E、堆棧應用:調用子程序、響應中斷時,堆棧用於保護現場;還能夠用做臨時數據緩衝區來使用。
F、使用注意:堆棧溢出問題,壓棧和出棧的匹配問題。操作系統
- (6)定時/計數器:實質都是計數器。用做定時器時是對單片機內部的時鐘脈衝進行計數,而在用做計數器時是對單片機外部的輸入脈衝進行計數,其做用以下:
A、計時、定時或延時控制;
B、脈衝技術;
C、測量脈衝寬度或頻率(捕獲功能)設計
- (7)中斷:優先級更高的事件發生,打斷優先級低的時間進程。引發中斷的事件稱爲中斷源。一個單片機可能支持多箇中斷源,這些中斷源能夠分爲可屏蔽中斷和非可屏蔽中斷,而這些中斷源並不都是系統工做所需的,咱們能夠根據系統需求屏蔽那些不須要的中斷源。
A、中斷嵌套:當一個低級中斷還沒有執行完畢,又發生了一個高級優先級的中斷,系統轉而執行高級中斷服務程序,
待處理完高級中斷後再回過頭來執行低級中斷服務程序。
B、中斷響應時間是指從發出中斷請求到進入中斷處理所用的時間;中斷處理時間是指中斷處理開始到中斷處理結
束的時間。
C、中斷響應過程:
a、保護現場:將當前地址、累加器 ACC、狀態寄存器保存到堆棧中。
b、切換 PC 指針:根據不一樣的中斷源所產生的中斷,切換到相應的入口地址。
c、執行中斷服務處理程序。
d、恢復現場:將保存在堆棧中的主程序地址、累加器 ACC、狀態寄存器恢復。
e、中斷返回:從中斷處返回到主程序,繼續執行。
D、中斷入口地址:單片機爲每一箇中斷源分配了不一樣的中斷入口地址,也稱爲中斷向量。指針
- (8)復位:經過外部電路給單片機的復位引進一個復位信號,讓系統從新開始運行。
A、復位發生時的動做:
a、PC 指針從起始位置開始執行(大多數單片機都時從 0x0000 處開始執行)。
b、I/O 端口設置成缺省狀態(高阻態、或者輸出低電平)。
c、部分專用控制寄存器 SFR 恢復到缺省狀態。
d、普通 RAM 不變(若是時上電覆位,則是隨即數)。調試
B、兩種不一樣的復位啓動方式:
a、冷啓動:也叫上電覆位,指在斷電狀態下給系統加電,讓系統開始正常運行。
b、熱啓動:在不斷電的狀態下,給單片機復位引進一個復位信號,讓系統從新開始。
C、兩種類型的復位電路:高電平復位和低電平復位。
D 注意事項:
a、 注意復位信號的電平狀態及持續時間必須知足系統要求。
b、 注意避免復位信號抖動。
- (9)時鐘電路:單片機是一種時序電路,必須提供脈衝電路才能正常工做。時鐘電路至關於單片機的心臟,它的每一次跳動(振動節拍)都控制着單片機的工做節奏。振盪得慢時,系統工做速度就慢,振盪得快時,系統工做速度就快(功耗也增大)。
A、振盪週期:振盪源的振盪節拍。
B、機器週期:單片機完成一個基本操做須要的振盪週期(節拍)。
C、指令週期:執行一條指令須要幾個機器週期。不一樣的指令須要的機器週期數不一樣。
七、ARM 體系結構的基本概念
- (1)ARM:Advanced RISC Machine。
- (2)ARM 體系結構中支持兩種指令集:ARM 指令集和 Thumb 指令集。
- (3)ARM 內核有 T、D、M、I 四個功能模塊:
A、T 模塊:表示 16 位 Thumb,能夠在兼顧性能的同時減小代碼尺寸。
B、D 模塊:表示 Debug,內核中放置了用於調試的結構,一般爲一個邊界掃描鏈 JTAG。
C、M 模塊:表示 8 位乘法器。
D、I 模塊:表示 EmbeddedICE Logic,用於實時斷點觀測及變量觀測的邏輯電路部分。
- (4)ARM 處理器有 7 種運行模式:
A、用戶模式(User):正常程序執行模式,用於應用程序。
D、快速中斷模式(FIQ):快速中斷處理,用於高速數據傳輸和通道處理。
C、外部中斷模式(IRQ):用於通用的中斷處理。
D、管理模式(SVE):供操做系統使用的一種保護模式。
E、數據訪問停止模式(Abort):用於虛擬存儲及存儲保護。
F、未定義指令停止模式(Undefined):當未定義指令執行時進入該模式。
G、系統模式(System):用於運行特權級的操做系統任務。
除了用戶模式以外的其餘 6 種處理器模式稱爲特權模式,在這些模式下,程序能夠訪問全部的系統資源,也能夠任意地進行處理器模式切換,其中,除了系統模式外,其餘的 5 種特權模式又稱爲異常模式。
處理器模式能夠經過軟件控制進行切換,也能夠經過外部中斷或異常處理過程進行切換。大多數的用戶程序運行在用戶模式下,這時,應用程序不能訪問一些受操做系統保護的系統資源,應用程序也不能直接進行處理器模式切換。
當須要進行處理器模式切換時,應用程序能夠產生異常處理,在異常處理中進行處理器模式的切換。這種體系結構可使操做系統控制整個系統的資源。
當應用程序發生異常中斷時,處理器進入相應的異常模式。在每一種異常模式種都有一組寄存器,供相應的異常處理程序使用,這樣就能夠保證進入異常模式時,用戶模式下的寄存器不被破壞。
系統模式並非經過異常過程進入的,它和用戶模式具備徹底同樣的寄存器,可是系統模式屬於特權模式,能夠訪問全部的系統資源,也能夠直接進行處理器模式切換,它主要供操做系統任務使用。
- (5)ARM 處理器共有 37 個寄存器:31 個通用寄存器和 6 個狀態寄存器
A、通用寄存器包括 R0~R15,能夠分爲 3 類:
a、未備份寄存器 R0~R7:在全部的處理器模式下,未備份寄存器都是指向同一個物理寄存器。
b、備份寄存器 R8~R14: 對於 R8~R12 來講,每一個寄存器對於 2 個不一樣的物理寄存器,它們每次所訪問的物理寄存器都與當前的處理器運行模式有關。 對於 R1三、R14 來講,每一個寄存器對於 6 個不一樣的物理寄存器,其中一個是用戶模式和系統模式共用。 R13 在 ARM 指令種經常使用做堆棧指針。因爲處理器的每種運行模式都有本身獨立的物理寄存器 R13,全部在用戶應用程序的初始化部分,通常要初始化每種模式下的 R13,使其指向該運行模式的棧空間。 R14 又稱爲鏈接寄存器(LR),在 ARM 體系種具備下面兩種特殊做用:在經過 BL 或 BLX 指令調用子程序時,存放當前子程序的返回地址;在異常中斷髮生時,存放異常模式將要返回的地址。
c、程序計數器 R15(PC):因爲 ARM 採用了流水線機制,在三級流水線中,當正確讀取了 PC 的值時,該值爲當前指令地址值加 8 個字節。也就是說,PC 指向當前指令的下兩條指令的地址。在 ARM 指令狀態下,PC 的 0 和 1 位是 0,在 Thumb 指令狀態下,PC 的 0 位是 0。
B、程序狀態寄存器
a、ARM 體系結構包含 1 個當前程序狀態寄存器(CPSR)和 5 個備份的程序狀態寄存(SPSR),使用 MSR 和 MRS 指令來設置和讀取這些寄存器。
b、當前程序狀態寄存器 CPSR:保存當前處理器狀態的信息,能夠在任何處理器模式下被訪問。
c、備份程序狀態寄存器 SPSR:每一種異常處理器模式下都有一個專用的物理狀態寄存器。當特定的異常中斷髮生時,這個寄存器用於存放當前程序狀態寄存器的內容,在異常中斷程序退出時,能夠用 SPSR 中保存的值來恢復 CPSR。
d、因爲用戶模式和系統模式不屬於異常模式,它們沒有 SPSR,當在這兩種模式下訪問 SPSR 時,結果是未知的。
- (6)ARM 指令的尋址方
所謂尋址方式就是處理器根據指令中給出的地址信息來尋找物理地址的方式。
A、 當即尋址:操做數自己就在指令中給出,只要取出指令也就取到了操做數。
ADD R0, R0, #1
B、 寄存器尋址:利用寄存器中的數值做爲操做數。
ADD R0, R1, R2
C、 寄存器間接尋址:以寄存器中的值做爲操做數地址,而操做數自己存放在存儲器中。
ADD R0, R1, [R2] LDR R0, [R1] STR R0, [R1]
D、基址變址尋址:將寄存器(該寄存器通常稱做基址寄存器)的內容與指令中給出的地址偏移量相加,從而獲得一個操做數的有效地址。
LDR R0, [R1, #4] LDR R0, [R1, #4]! LDR R0, [R1], #4 LDR R0, [R1, R2]!
E、 多寄存器尋址:一條指令能夠完成多個寄存器值的傳送。
LDMIA R0, {R1, R2, R3}
F、 相對尋址:以程序計數器 PC 的當前值做爲基地址,指令中的地址標號做爲偏移量,二者相加以後獲得操做數的有效地址。
BL NEXT ;跳轉到子程序 NEXT 處執行 …... NEXT : MOV PC, LR ;從子程序返回
G、堆棧尋址:支持 4 種類型的堆棧工做方式:
a、 滿遞增堆棧:堆棧指針指向最後壓入的數據,且由低地址向高地址生長。
b、 滿遞減堆棧:堆棧指針指向最後壓入的數據,且由高地址向低地址生長。
c、 空遞增堆棧:堆棧指針指向下一個將要放入數據的空位置,且由低地址向高地址生長。
d、 空遞減堆棧:堆棧指針指向下一個將要放入數據的空位置,且由高地址向低地址生長。
- (7)ARM 的存儲方法
A、大端模式:數據的高字節存儲在低地址中,低字節存儲在高地址中。
B、小端模式:數據的低字節存儲在低地址中,高字節存儲在高地址中。
- (8)ARM 中斷與異常
A、ARM 內核支持 7 種中斷
不一樣的中斷處於不一樣的處理模式,具備不一樣的優先級,並且每一箇中斷都有固定的中斷地址入口。當一箇中斷髮生是,相應的 R14(LR)存儲中斷返回地址,SPSR 存儲當前程序狀態寄存器 CPSR 的值。
B、因爲 ARM 內核支持流水線工做
LR 寄存器存儲的地址多是發生中斷後面指令的地址,因此不一樣的中斷處理完成後,必須將 LR 寄存器值通過處理後再寫入 P15(PC)寄存器。
C、ARM 異常的具體含義:
a、復位:當處理器的復位電平有效時,產生復位異常,程序跳轉到異常復位異常處理程序處執行。
b、未定義的指令:當 ARM 處理器或協處理器遇到不能處理的指令時,產生未定義指令異常。可使用該異常機制進行軟件仿真。
c、軟件中斷:該異常由執行 SWI 指令產生,可用於用戶模式下的程序調用特權操做指令。可以使用該異常機制實現操做系統調用功能。
d、指令預取停止:若是處理器預取指令的地址不存在或該地址不容許當前指令訪問,存儲器向處理器發出停止信號,但當預取的指令被執行時,纔會產生指令預取停止異常。
e、數據訪問停止:若是處理器數據訪問指令的目標地址不存在,或者該地址不容許當前指令訪問,處理器產生數據訪問停止異常。
f、外部中斷請求:當 ARM 外部中斷請求管腳有效,並且 CPSR 中的 I 位爲 0 時,產生 IRQ 異常。系統的外設能夠經過該異常請求中斷服務。
g、快速中斷請求:當 ARM 快速中斷請求管腳有效,並且 CPSR 的 F 位爲 0 時,產生 FIQ 異常。
D、ARM 處理器對異常中斷的響應過程
a、將下一條指令的地址存入相應的鏈接寄存器 LR 中。
b、將 CPSR 複製到相應的 SPSR 中。
c、根據異常的類型,強制設置 CPSR 的運行模式位。
d、強制 PC 從相關的異常向量地址取下一條指令執行,從而跳轉到相應的異常處理程序處。
E、ARM 處理器從異常中斷處理程序中返回
a、恢復中斷的程序的處理器狀態,將 SPSR 複製到 CPSR 中。
b、若在進入異常處理時設置了中斷禁止位,要在此清除。
c、將鏈接寄存器 LR 的值減去相應的偏移量後送到 PC。
F、復位異常中斷處理程序不須要返回。 在復位異常中斷程序開始整個用戶程序的執行。