2019備考[嵌入式系統設計師]之MCPU
一、引言
嵌入式微處理器是嵌入式系統的核心器件,深入理解嵌入式微處理器的工作原理,組成結構、體系結構以及軟體程式設計等方面,無論對嵌入式設計師考試的準備還是對嵌入式專案的開發都有一定的幫助。在目前白花盛放的嵌入式微處理器市場,各種各樣大大小小的嵌入式微處理器就像菜市場裡面的青菜一樣。要對各種嵌入式微處理器都有深入的理解幾乎是不可能的。但是萬變不離其中,在總多的嵌入式微處理器中都有著共同的概念、原理與規律。我們要做的是分析嵌入式微處理器的基本結構、基本工作原理、體系結構、市場發展趨勢、各種微處理器的特點與應用場合等等。我個人覺得,面對全國的考試,其考點應該是大家都應該去掌握的一些共有的基本知識,或者是大家都熟悉,流行程度甚廣的一些微處理器的使用,而不是一些個性化的知識點或者偏門器件的使用。
二、複習筆記
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位其他的微處理器方面的應用題目可能在不就將來的考試中就會出現。
6、微控制器系統的基本概念
- (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、指令週期:執行一條指令需要幾個機器週期。不同的指令需要的機器週期數不同。
7、ARM體系結構的基本概念
- (1)ARM:AdvancedRISCMachine。
- (2)ARM體系結構中支援兩種指令集:ARM指令集和Thumb指令集。
- (3)ARM核心有T、D、M、I四個功能模組:
A、T模組: 表示16位Thumb,可以在兼顧效能的同時減少程式碼尺寸。
B、D模組: 表示Debug,核心中放置了用於除錯的結構,通常為一個邊界掃描鏈JTAG。
C、M模組: 表示8位乘法器。
D、I模組: 表示EmbeddedICELogic,用於實時斷點觀測及變數觀測的邏輯電路部分。
- (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個不同的物理暫存器,它們每次所訪問的物理暫存器都與當前的處理器執行模式有關。對於R13、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、立即定址:運算元本身就在指令中給出,只要取出指令也就取到了運算元。
ADDR0,R0,#1
B、暫存器定址:利用暫存器中的數值作為運算元。
ADDR0,R1,R2
C、暫存器間接定址:以暫存器中的值作為運算元地址,而運算元本身存放在儲存器中。
ADDR0,R1,[R2] LDRR0,[R1] STRR0,[R1]
D、基址變址定址:將暫存器(該暫存器一般稱作基址暫存器)的內容與指令中給出的地址偏移量相加,從而得到一個運算元的有效地址。
LDRR0,[R1,#4] LDRR0,[R1,#4]! LDR R0,[R1],#4 LDRR0,[R1,R2]!
E、多暫存器定址:一條指令可以完成多個暫存器值的傳送。
LDMIAR0,{R1,R2,R3}
F、相對定址:以程式計數器PC的當前值作為基地址,指令中的地址標號作為偏移量,兩者相加之後得到運算元的有效地址。
BLNEXT;跳轉到子程式NEXT處執行 …... NEXT: MOVPC,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、復位異常中斷處理程式不需要返回。
在復位異常中斷程式開始整個使用者程式的執行。