(1)嵌入式硬件系統(tǒng)一般由嵌入式微處理器、存儲(chǔ)器和輸入/輸出部分組成。
(2)嵌入式微處理器是嵌入式硬件系統(tǒng)的核心,通常由控制單元、算術(shù)邏輯單元和寄存器3大部分組成:
A、控制單元:主要負(fù)責(zé)取指、譯碼和取數(shù)等基本操作并發(fā)送主要的控制指令。
B、算術(shù)邏輯單元:主要處理數(shù)值型數(shù)據(jù)和進(jìn)行邏輯運(yùn)算工作。
C、寄存器:用于暫存臨時(shí)性的數(shù)據(jù)。
2. 嵌入式微處理器的分類(根據(jù)用途)
(1)嵌入式微控制器(MCU):又稱為單片機(jī),片上外設(shè)資源一般比較豐富,適合于控制。最大的特點(diǎn)是單片化,體積小,功耗和成本低,可靠性高。目前約占70%的市場(chǎng)份額。
(2)嵌入式微處理器(EMPU):又稱為單板機(jī),由通用計(jì)算機(jī)中的 CPU 發(fā)展而來,它的特征是具有32位以上的處理器,具有較高的性能。通常嵌入式微處理器把 CPU、ROM、RAM 及 I/O 等模塊做到同一個(gè)芯片上。
(3)嵌入式 DSP 處理器(DSP):專門用于信號(hào)處理方面的處理器,其在系統(tǒng)結(jié)構(gòu)和指令算法方面進(jìn)行了特殊設(shè)計(jì),使其處理速度比最快的 CPU 還快10~50倍,在數(shù)字濾波、FFT、頻譜分析等方面獲得了大量的應(yīng)用。
(4)嵌入式片上系統(tǒng)(SOC):追求產(chǎn)品系統(tǒng)最大包容的集成器件,其最大的特點(diǎn)是成功實(shí)現(xiàn)了軟硬件的無縫結(jié)合,直接在微處理器片內(nèi)嵌入操作系統(tǒng)的代碼模塊。
3. 典型的微處理器的結(jié)構(gòu)和特點(diǎn)
(1)8位微處理器:以8051為重點(diǎn),徹底搞清楚8位單片機(jī)的工作原理,外設(shè)控制、存儲(chǔ)分布 、尋址方式以及典型應(yīng)用。
(2)16位微處理器:典型的微處理器可以參考 MSP430,找一本這方面的書看看關(guān)于 MSP430的結(jié)構(gòu)原理以及典型應(yīng)用。
(3)32位微處理器:32位處理器采用32位的地址和數(shù)據(jù)總線,其地址空間達(dá)到了2 32 =4GB 。目前主流的32位嵌入式處理器系統(tǒng)主要有 ARM 系列、MIPS 系列、PoewrPC系列等。ARM 微處理器體系結(jié)構(gòu)目前被公認(rèn)為是嵌入式應(yīng)用領(lǐng)域領(lǐng)先的32位嵌入式 RISC 處理器結(jié)構(gòu)。按照目前的發(fā)展形式,ARM 幾乎成了嵌入式應(yīng)用的代名詞。
4、單片機(jī)系統(tǒng)的基本概念
(1)單片機(jī)組成:中央處理器、存儲(chǔ)器、I/O 設(shè)備。
(2) 存儲(chǔ)器:物理實(shí)質(zhì)是一組或多組具備數(shù)據(jù)輸入/輸出和數(shù)據(jù)存儲(chǔ)功能的集成電路,用于充當(dāng)設(shè)備緩存或保存固定的程序及數(shù)據(jù)。
A、ROM(只讀存儲(chǔ)器):一般用于存放固定的程序或數(shù)據(jù)表格等,數(shù)據(jù)在掉電后仍然會(huì)保留下來。
B、RAM(隨機(jī)存儲(chǔ)器):用于暫存程序和數(shù)據(jù)、中間計(jì)算結(jié)果,或用作堆棧用等,數(shù)據(jù)在掉電后就會(huì)丟失。
(3) I/O 端口:單片機(jī)與外界聯(lián)系的通道,它可以對(duì)各類外部信號(hào)(開關(guān)量、模擬量、頻率信號(hào))進(jìn)行檢測(cè)、判斷、處理,并可控制各類外部設(shè)備。現(xiàn)在的單片機(jī) I/O 口已經(jīng)集成了更多的特性和功能,對(duì) I/O端口的功能進(jìn)行了拓展和復(fù)用,例如外部中斷、ADC 檢測(cè)以及 PWM 輸出等等。
(4)輸出電平:高電平電壓(輸出“1”時(shí))和低電平電壓(輸出“0”時(shí))
A、TTL 電平:正邏輯,5V 為邏輯正,0V 為邏輯負(fù),例如單片機(jī)的輸出。
B、RS232電平:負(fù)邏輯,-12V 為邏輯正,+12V 為邏輯負(fù),例如 PC 的輸出。
注:因此在單片機(jī)和 PC 進(jìn)行通訊的時(shí)候需要一個(gè) MAX232芯片進(jìn)行電平轉(zhuǎn)換。
(5)堆棧:它是一種線性的數(shù)據(jù)結(jié)構(gòu),是一個(gè)只有一個(gè)進(jìn)出口的一維空間。
A、堆棧特性:后進(jìn)先出(LIFO)
B、堆棧指針:用于指示棧頂?shù)奈恢茫ǖ刂罚?,?dāng)發(fā)生壓棧或者出棧操作時(shí),導(dǎo)致棧頂位置變化時(shí),堆棧指針會(huì)隨之變化。
C、堆棧操作:壓棧操作(PUSH)和出棧操作(POP)。
D、堆棧類型:“向上生長”型堆棧,每次壓棧時(shí)堆棧指針加1;“向下生長”型堆棧,每次壓棧堆棧時(shí)指針減1。
E、堆棧應(yīng)用:調(diào)用子程序、響應(yīng)中斷時(shí),堆棧用于保護(hù)現(xiàn)場(chǎng);還可以用作臨時(shí)數(shù)據(jù)緩沖區(qū)來使用。
F、使用注意:堆棧溢出問題,壓棧和出棧的匹配問題。
(6)定時(shí)計(jì)數(shù)器:實(shí)質(zhì)都是計(jì)數(shù)器。用作定時(shí)器時(shí)是對(duì)單片機(jī)內(nèi)部的時(shí)鐘脈沖進(jìn)行計(jì)數(shù),而在用作計(jì)數(shù)器時(shí)是對(duì)單片機(jī)外部的輸入脈沖進(jìn)行計(jì)數(shù),其作用如下:
A、計(jì)時(shí)、定時(shí)或延時(shí)控制;
B、脈沖技術(shù);
C、測(cè)量脈沖寬度或頻率(捕獲功能)
(7)中斷:優(yōu)先級(jí)更高的事件發(fā)生,打斷優(yōu)先級(jí)低的時(shí)間進(jìn)程。引起中斷的事件稱為中斷源。一個(gè)單片機(jī)可能支持多個(gè)中斷源,這些中斷源可以分為可屏蔽中斷和非可屏蔽中斷,而這些中斷源并不都是系統(tǒng)工作所需的,我們可以根據(jù)系統(tǒng)需求屏蔽那些不需要的中斷源。
A、中斷嵌套:當(dāng)一個(gè)低級(jí)中斷尚未執(zhí)行完畢,又發(fā)生了一個(gè)高級(jí)優(yōu)先級(jí)的中斷,系統(tǒng)轉(zhuǎn)而執(zhí)行高級(jí)中斷服務(wù)程序,待處理完高級(jí)中斷后再回過頭來執(zhí)行低級(jí)中斷服務(wù)程序。
B、中斷響應(yīng)時(shí)間是指從發(fā)出中斷請(qǐng)求到進(jìn)入中斷處理所用的時(shí)間;中斷處理時(shí)間是指中斷處理開始到中斷處理結(jié)束的時(shí)間。
C、中斷響應(yīng)過程:
a、保護(hù)現(xiàn)場(chǎng):將當(dāng)前地址、累加器 ACC、狀態(tài)寄存器保存到堆棧中。b、切換 PC 指針:根據(jù)不同的中斷源所產(chǎn)生的中斷,切換到相應(yīng)的入口地址。c、執(zhí)行中斷服務(wù)處理程序。d、恢復(fù)現(xiàn)場(chǎng):將保存在堆棧中的主程序地址、累加器 ACC、狀態(tài)寄存器恢復(fù)。e、中斷返回:從中斷處返回到主程序,繼續(xù)執(zhí)行。
D、中斷入口地址:單片機(jī)為每個(gè)中斷源分配了不同的中斷入口地址,也稱為中斷向量。
(8)復(fù)位:通過外部電路給單片機(jī)的復(fù)位引進(jìn)一個(gè)復(fù)位信號(hào),讓系統(tǒng)重新開始運(yùn)行。
A、復(fù)位發(fā)生時(shí)的動(dòng)作:
a、PC 指針從起始位置開始執(zhí)行(大多數(shù)單片機(jī)都時(shí)從0x0000處開始執(zhí)行)。b、I/O 端口設(shè)置成缺省狀態(tài)(高阻態(tài)、或者輸出低電平)。c、部分專用控制寄存器 SFR 恢復(fù)到缺省狀態(tài)。d、普通 RAM 不變(如果時(shí)上電復(fù)位,則是隨即數(shù))。
B、兩種不同的復(fù)位啟動(dòng)方式:
a、冷啟動(dòng):也叫上電復(fù)位,指在斷電狀態(tài)下給系統(tǒng)加電,讓系統(tǒng)開始正常運(yùn)行。b、熱啟動(dòng):在不斷電的狀態(tài)下,給單片機(jī)復(fù)位引進(jìn)一個(gè)復(fù)位信號(hào),讓系統(tǒng)重新開始。
C、兩種類型的復(fù)位電路:高電平復(fù)位和低電平復(fù)位。
D 注意事項(xiàng):
a、 注意復(fù)位信號(hào)的電平狀態(tài)及持續(xù)時(shí)間必須滿足系統(tǒng)要求。b、 注意避免復(fù)位信號(hào)抖動(dòng)。
(9)時(shí)鐘電路:單片機(jī)是一種時(shí)序電路,必須提供脈沖電路才能正常工作。時(shí)鐘電路相當(dāng)于單片機(jī)的心臟,它的每一次跳動(dòng)(振動(dòng)節(jié)拍)都控制著單片機(jī)的工作節(jié)奏。振蕩得慢時(shí),系統(tǒng)工作速度就慢,振蕩得快時(shí),系統(tǒng)工作速度就快(功耗也增大)。
A、振蕩周期:振蕩源的振蕩節(jié)拍。B、機(jī)器周期:單片機(jī)完成一個(gè)基本操作需要的振蕩周期(節(jié)拍)。C、指令周期:執(zhí)行一條指令需要幾個(gè)機(jī)器周期。不同的指令需要的機(jī)器周期數(shù)不同。
5、 ARM 體系結(jié)構(gòu)的基本概念
(1) ARM :Advanced RISC Machine。
(2) ARM 體系結(jié)構(gòu)中支持兩種指令集:ARM 指令集和 Thumb 指令集。
(3) ARM 內(nèi)核有 T 、 D 、 M 、 I 四個(gè)功能模塊:
A、T 模塊:表示16位 Thumb,可以在兼顧性能的同時(shí)減少代碼尺寸。B、D 模塊:表示 Debug,內(nèi)核中放置了用于調(diào)試的結(jié)構(gòu),通常為一個(gè)邊界掃描鏈 JTAG。C、M 模塊:表示8位乘法器。D、I 模塊:表示 EmbeddedICE Logic,用于實(shí)時(shí)斷點(diǎn)觀測(cè)及變量觀測(cè)的邏輯電路部分。
(4) ARM 處理器有7 種運(yùn)行模式:
A、用戶模式(User):正常程序執(zhí)行模式,用于應(yīng)用程序。D、快速中斷模式(FIQ):快速中斷處理,用于高速數(shù)據(jù)傳輸和通道處理。C、外部中斷模式(IRQ):用于通用的中斷處理。D、管理模式(SVE):供操作系統(tǒng)使用的一種保護(hù)模式。E、數(shù)據(jù)訪問中止模式(Abort):用于虛擬存儲(chǔ)及存儲(chǔ)保護(hù)。F、未定義指令中止模式(Undefined):當(dāng)未定義指令執(zhí)行時(shí)進(jìn)入該模式。G、系統(tǒng)模式(System):用于運(yùn)行特權(quán)級(jí)的操作系統(tǒng)任務(wù)。
除了用戶模式之外的其他6種處理器模式稱為 特權(quán)模式,在這些模式下,程序可以訪問所有的系統(tǒng)資源 ,也可以任意地進(jìn)行處理器模式切換,其中,除了系統(tǒng)模式外,其他的5種特權(quán)模式又稱為 異常模式。處理器模式可以通過 軟件控制進(jìn)行切換,也可以通過 外部中斷或異常處理過程進(jìn)行切換。大多數(shù)的用戶程序運(yùn)行在用戶模式下,這時(shí),應(yīng)用程序不能訪問一些受操作系統(tǒng)保護(hù)的系統(tǒng)資源,應(yīng)用程序也不能直接進(jìn)行處理器模式切換。當(dāng)需要進(jìn)行處理器模式切換時(shí),應(yīng)用程序可以產(chǎn)生異常處理,在異常處理中進(jìn)行處理器模式的切換。這種體系結(jié)構(gòu)可以使操作系統(tǒng)控制整個(gè)系統(tǒng)的資源。當(dāng)應(yīng)用程序發(fā)生異常中斷時(shí),處理器進(jìn)入相應(yīng)的異常模式。在每一種異常模式種都有一組寄存器,供相應(yīng)的異常處理程序使用,這樣就可以保證進(jìn)入異常模式時(shí),用戶模式下的寄存器不被破壞。系統(tǒng)模式并不是通過異常過程進(jìn)入的,它和用戶模式具有完全一樣的寄存器,但是系統(tǒng)模式屬于特權(quán)模式,可以訪問所有的系統(tǒng)資源,也可以直接進(jìn)行處理器模式切換,它主要供操作系統(tǒng)任務(wù)使用。
(5) ARM 處理器共有 37 個(gè)寄存器: 31 個(gè)通用寄存器和6個(gè)狀態(tài)寄存器
A、通用寄存器包括 R0~R15,可以分為3類:
a、未備份寄存器 R0~R7:在所有的處理器模式下,未備份寄存器都是指向同一個(gè)物理寄存器。
b、備份寄存器 R8~R14:對(duì)于 R8~R12來說,每個(gè)寄存器對(duì)于2個(gè)不同的物理寄存器,它們每次所訪問的物理寄存器都與當(dāng)前的處理器運(yùn)行模式有關(guān)。對(duì)于 R13、R14來說,每個(gè)寄存器對(duì)于6個(gè)不同的物理寄存器,其中一個(gè)是用戶模式和系統(tǒng)模式共用。R13在 ARM 指令種常用作堆棧指針。由于處理器的每種運(yùn)行模式都有自己獨(dú)立的物理寄存器R13,所有在用戶應(yīng)用程序的初始化部分,一般要初始化每種模式下的 R13,使其指向該運(yùn)行模式的??臻g。R14又稱為連接寄存器(LR),在 ARM 體系種具有下面兩種特殊作用:在通過 BL 或 BLX 指令調(diào)用子程序時(shí),存放當(dāng)前子程序的返回地址;在 異常中斷發(fā)生時(shí),存放異常模式將要返回的地址。
c、程序計(jì)數(shù)器 R15(PC)。
由于 ARM 采用了流水線機(jī)制,在三級(jí)流水線中,當(dāng)正確讀取了 PC 的值時(shí),該值為當(dāng)前指令地址值加8個(gè)字節(jié)。也就是說,PC 指向當(dāng)前指令的下兩條指令的地址。在 ARM 指令狀態(tài)下,PC 的0和1位是0 ,在 Thumb 指令狀態(tài)下,PC 的0位是0。
B、程序狀態(tài)寄存器
a、ARM 體系結(jié)構(gòu)包含1個(gè)當(dāng)前程序狀態(tài)寄存器(CPSR)和5個(gè)備份的程序狀態(tài)寄存器(SPSR),使用MSR 和 MRS 指令來設(shè)置和讀取這些寄存器。
b、當(dāng)前程序狀態(tài)寄存器 CPSR:保存當(dāng)前處理器狀態(tài)的信息,可以在任何處理器模式下被訪問。
c、備份程序狀態(tài)寄存器 SPSR:每一種異常處理器模式下都有一個(gè)專用的物理狀態(tài)寄存器。當(dāng)特定的異常中斷發(fā)生時(shí),這個(gè)寄存器用于存放當(dāng)前程序狀態(tài)寄存器的內(nèi)容,在異常中斷程序退出時(shí),可以用 SPSR 中保存的值來恢復(fù) CPSR。
d、由于用戶模式和系統(tǒng)模式不屬于異常模式,它們沒有 SPSR,當(dāng)在這兩種模式下訪問 SPSR 時(shí),結(jié)果是未知的。
(6) ARM 指令的尋址方式
所謂尋址方式就是處理器根據(jù)指令中給出的地址信息來尋找物理地址的方式。
A、 立即尋址:操作數(shù)本身就在指令中給出,只要取出指令也就取到了操作數(shù)。ADD R0, R0, #1 ;R0=R0+1
B、 寄存器尋址:利用寄存器中的數(shù)值作為操作數(shù)。ADD R0, R1, R2 ;R0=R1+R2
C、 寄存器間接尋址:以寄存器中的值作為操作數(shù)地址,而操作數(shù)本身存放在存儲(chǔ)器中。ADD R0, R1, [R2] ;R0=R1+[R2]LDR R0, [R1] ;R0=[R1]STR R0, [R1] ;[R1]=R0
D、 基址變址尋址:將寄存器(該寄存器一般稱作基址寄存器)的內(nèi)容與指令中給出的地址偏移量相加,從而得到一個(gè)操作數(shù)的有效地址。LDR R0, [R1, #4] ;R0=[R1+4]LDR R0, [R1, #4]! ;R0=[R1+4] R1=R1+4LDR R0, [R1], #4 ;R0=[R1] R1=R1+4LDR R0, [R1, R2]! ;R0=[R1+R2]
E、 多寄存器尋址:一條指令可以完成多個(gè)寄存器值的傳送。LDMIA R0, {R1, R2, R3} ;R1=[R0] R2=[R0+4] R3=[R0+8]
F、 相對(duì)尋址:以程序計(jì)數(shù)器 PC 的當(dāng)前值作為基地址,指令中的地址標(biāo)號(hào)作為偏移量,兩者相加之后得到操作數(shù)的有效地址。
BL NEXT ;跳轉(zhuǎn)到子程序 NEXT 處執(zhí)行……NEXT……MOV PC, LR ;從子程序返回
G、 堆棧尋址:支持4種類型的堆棧工作方式:
a、 滿遞增堆棧:堆棧指針指向最后壓入的數(shù)據(jù),且由低地址向高地址生長。b、 滿遞減堆棧:堆棧指針指向最后壓入的數(shù)據(jù),且由高地址向低地址生長。c、 空遞增堆棧:堆棧指針指向下一個(gè)將要放入數(shù)據(jù)的空位置,且由低地址向高地址生長。d、 空遞減堆棧:堆棧指針指向下一個(gè)將要放入數(shù)據(jù)的空位置,且由高地址向低地址生長。
(7) ARM 的存儲(chǔ)方法
A、大端模式:數(shù)據(jù)的高字節(jié)存儲(chǔ)在低地址中,低字節(jié)存儲(chǔ)在高地址中。B、小端模式:數(shù)據(jù)的低字節(jié)存儲(chǔ)在低地址中,高字節(jié)存儲(chǔ)在高地址中。
(8) ARM 中斷與異常
A、ARM 內(nèi)核支持7種中斷,不同的中斷處于不同的處理模式,具有不同的優(yōu)先級(jí),而且每個(gè)中斷都有固定的中斷地址入口。當(dāng)一個(gè)中斷發(fā)生是,相應(yīng)的 R14(LR)存儲(chǔ)中斷返回地址,SPSR 存儲(chǔ)當(dāng)前程序狀態(tài)寄存器 CPSR 的值。
B、由于 ARM 內(nèi)核支持流水線工作,LR 寄存器存儲(chǔ)的地址可能是發(fā)生中斷后面指令的地址,所以不同的中斷處理完成后,必須將 LR 寄存器值經(jīng)過處理后再寫P15(PC)寄存器。
C、ARM 異常的具體含義:
a、復(fù)位:當(dāng)處理器的復(fù)位電平有效時(shí),產(chǎn)生復(fù)位異常,程序跳轉(zhuǎn)到異常復(fù)位異常處理程序處執(zhí)行。
b、未定義的指令:當(dāng) ARM 處理器或協(xié)處理器遇到不能處理的指令時(shí),產(chǎn)生未定義指令異常??梢允褂迷摦惓C(jī)制進(jìn)行軟件仿真。
c、軟件中斷:該異常由執(zhí)行 SWI 指令產(chǎn)生,可用于用戶模式下的程序調(diào)用特權(quán)操作指令??墒褂迷摦惓C(jī)制實(shí)現(xiàn)操作系統(tǒng)調(diào)用功能。
d、指令預(yù)取中止:如果處理器預(yù)取指令的地址不存在或該地址不允許當(dāng)前指令訪問,存儲(chǔ)器向處理器發(fā)出中止信號(hào),但當(dāng)預(yù)取的指令被執(zhí)行時(shí),才會(huì)產(chǎn)生指令預(yù)取中止異常。
e、數(shù)據(jù)訪問中止:如果處理器數(shù)據(jù)訪問指令的目標(biāo)地址不存在,或者該地址不允許當(dāng)前指令訪問 ,處理器產(chǎn)生數(shù)據(jù)訪問中止異常。
f、外部中斷請(qǐng)求:當(dāng) ARM 外部中斷請(qǐng)求管腳有效,而且 CPSR 中的 I 位為0時(shí),產(chǎn)生 IRQ 異常 。系統(tǒng)的外設(shè)可以通過該異常請(qǐng)求中斷服務(wù)。
g、快速中斷請(qǐng)求:當(dāng) ARM 快速中斷請(qǐng)求管腳有效,而且 CPSR 的 F 位為0時(shí),產(chǎn)生 FIQ 異常。
D、ARM 處理器對(duì)異常中斷的響應(yīng)過程
a、將下一條指令的地址存入相應(yīng)的連接寄存器 LR 中。b、將 CPSR 復(fù)制到相應(yīng)的 SPSR 中。c、根據(jù)異常的類型,強(qiáng)制設(shè)置 CPSR 的運(yùn)行模式位。d、強(qiáng)制 PC 從相關(guān)的異常向量地址取下一條指令執(zhí)行,從而跳轉(zhuǎn)到相應(yīng)的異常處理程序處。
E、ARM 處理器從異常中斷處理程序中返回
a、恢復(fù)中斷的程序的處理器狀態(tài),將 SPSR 復(fù)制到 CPSR 中。b、若在進(jìn)入異常處理時(shí)設(shè)置了中斷禁止位,要在此清除。c、將連接寄存器 LR 的值減去相應(yīng)的偏移量后送到 PC。
F、復(fù)位異常中斷處理程序不需要返回。在復(fù)位異常中斷程序開始整個(gè)用戶程序的執(zhí)行。
-
嵌入式
+關(guān)注
關(guān)注
5082文章
19126瀏覽量
305184 -
微處理器
+關(guān)注
關(guān)注
11文章
2263瀏覽量
82448
原文標(biāo)題:嵌入式系統(tǒng)之微處理器篇
文章出處:【微信號(hào):mcugeek,微信公眾號(hào):MCU開發(fā)加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論