嵌入式系統(tǒng)主要分四類:嵌入式微控制器,嵌入式DSP處理器,嵌入式微處理器,嵌入式片上系統(tǒng)。
嵌入式微控制器(Microcontroller Unit, MCU) :嵌入式微控制器又稱單片機,是將整個計算機系統(tǒng)濃縮集成到一塊芯片中。 一般以某一種微處理器內(nèi)核為核心,芯片內(nèi)部集成ROM/EPROM、RAM、總線、總線邏輯、定時/計數(shù)器、WatchDog、I/O、串行口、脈寬調(diào)制輸出、A/D、D/A、Flash、 RAM、EEPROM等各種必要功能和外設。
嵌入式微處理器(Embedded Microprocessor Unit, EMPU):以通用處理器(CPU)為基礎。將微處理器裝配在專門設計的電路板 上,只保留和嵌入式應用有關的功能。
嵌入式DSP處理器(Embedded Digital Signal Processor, EDSP):嵌入式DSP處理器有兩個發(fā)展來源,一是DSP處理器經(jīng)過單片化、EMC 改造、增加片上外設成為嵌入式DSP處理器。二是在通用單片機或SOC中增加DSP協(xié)處理器。
2、嵌入式系統(tǒng)處理核心的演化
晶體管邏輯電路,大規(guī)模IC邏輯電路,微處理器,DSP,F(xiàn)PGA技術,SOC
3、ARM處理器概述
ARM32位嵌人式RISC(Reduced Instruction Set Computer)處理器擴展到世界范圍,占據(jù)了低功耗、低成本和高性能的嵌入式系統(tǒng) 應用領域的地位。
ARM處理器的3大特點如下:小體積、低功耗、成本低、高性能;16位/32位雙指令集;全球眾多的合作伙伴。
當前ARM體系結構的擴充包括:Thumb:16位指令集,用以改善代碼密度;DSP:用于DSP應用的算術運算指令集;Jazeller:允許直接執(zhí)行Java代碼的擴充。
ARM體系結構提供了在無線、消費電子和圖像應用方面的解決方案。
4、ARM體系主要特征
ARM體系主要特征是Advanced RISC Machine特征。ARM公司商業(yè)模式的強大之處在于其價格合理,全世界范圍有超過100個合作伙伴。ARM公司專注于設計,其內(nèi)核耗電少、成本低、功能強,特有16/32位雙指令集。ARM已成為移動通信、 手持計算、多媒體數(shù)字消費等嵌入式解決方案的RISC標準。
支持快速中斷,支持函數(shù)調(diào)用,支持虛擬內(nèi)存。
大量的寄存器,都可用于多種用途
Load/Store體系結構,每條指令都條件執(zhí)行包含非常強大的多寄存器Load和Store指令
地址指令(兩個源操作數(shù)寄存器和結果寄存器獨立設定)
能在單時鐘周期執(zhí)行的單條指令內(nèi)完成一項普通的移位操作和一項普通的ALU操作
能過協(xié)處理器指令集來擴展ARM指令集,包括在編程模式下增加了新的寄存器和數(shù)據(jù)類型。
在Thumb體系結構中以高密度16位壓縮形式表示指令集
條件指令
5、ARM處理器版本
處理器版本通常指體系結構,ARM產(chǎn)品家族一般對應不同體系。ARM7:ARM系列具有32位整數(shù)運算核。
T:內(nèi)含16位壓縮指令集Thumb
D:支持片內(nèi)Debug調(diào)試
M:采用增強型乘法器(Multiplier)
I:內(nèi)含嵌入式ICE宏單元
ARM系列產(chǎn)品的后綴提供了各種形式與功能的選擇
-S:可綜合的軟核Softcore,
-E:具有DSP的功能
-J:Jazeller,允許直接執(zhí)行Java字節(jié)碼
6、ARM架構版本
ARM架構自誕生至今,已經(jīng)發(fā)生了很大的演變,至今已定義7種不同的版本。
□V1版架構
該版架構只在原型機ARM1出現(xiàn)過,基本性能有:基本的數(shù)據(jù)處理指令(無乘法),字節(jié)、半字和字的LOAD/STORE指令,轉(zhuǎn)移指令,包括子程序調(diào)用及鏈接指令。軟件中斷指令。尋址空間:64M字節(jié)。但是這個版本沒有cache和MMU。
□V2版架構
該版架構對V1版進行了擴展,如ARM2與ARM3。增加功能有:乘法和乘加指令,支持協(xié)處理器操作指令,快速中斷模式,SWP/SWPB的基本存儲器與寄存器交換指令,尋址空間沒有改變還是64M字節(jié)。
□V3版架構
把尋址空間增至32位(4G字節(jié)),增加了當前程序狀態(tài)寄存器CPSR(CurrentProgramStatusRegister)和程序狀態(tài)保存寄存器SPSR(SavedProgramStatusRegister)。增加了中止(Abort)和未定義二種處理器模式。ARM6就采用該版架構。具備cache和MMU。
□V4版架構
V4版架構是目前應用廣的ARM體系結構,對V3版架構 進行了進一步擴充。引進了16位的Thumb指令集,使ARM使用更加靈活。ARM7、ARM8、ARM9和StrongARM(為了推XScale,intel停產(chǎn)了strongarm)都采用該版架構。
處理器的操作狀態(tài):AARM - 32-bit, 按字排列的ARM指令集;Thumb -16-bit, 按半字排列的Thumb指令集。
□V5版架構
在V4版基本上增加了一些新的指令,ARM10和XScale都采用該版架構,這些新增指令有:
帶有鏈接和交換的轉(zhuǎn)移BLX指令
計數(shù)前導零CLZ指令
BRK中斷指令
增加了信號處理指令(V5TE版)
為協(xié)處理器增加更多可選擇的指令
□V6版架構
ARMv6,發(fā)布于2001年10月,是目前的架構,形成ARM11系列嵌入式處理器。
特點:增強的Cache結構,支持實地址Cache和減少Cache的刷新和重載和減少上下文切換的開銷。
加強媒體處理能力,使MPEG4編碼/解碼/音頻處理加快一倍。
低功耗:0.13um工藝,1.2v下,ARM11功耗0.4mW/MHz。
用戶定制能力強,保持了的二進制向下兼容,支持多處理器系統(tǒng)MPCORE(由2-4個ARM11內(nèi)核組成)。
□V7版架構
ARMv7,發(fā)布于2005年,是目前的架構。超標量流水線,能夠同時執(zhí)行多條指令。可調(diào)尺寸的L2。支持Thumb-2技術和NEON技術。
7、ARM的7種工作模式
用戶模式(usr): - 正常的程序執(zhí)行模式
快速中斷模式(fiq): - 支持高速數(shù)據(jù)傳輸或通道處理
中斷模式(irq): - 用于通用中斷處理
管理員模式(svc): - 操作系統(tǒng)的保護模式
中止模式(abt): - 支持虛擬內(nèi)存和/或內(nèi)存保護
系統(tǒng)模式(sys): - 支持操作系統(tǒng)的特殊用戶模式(運行操作系統(tǒng)任務)
未定義模式(und) - 支持硬件協(xié)處理器的軟件仿真
除了用戶模式外,其他模式均可視為特權模式。
改變模式的方法一共有三個:軟件控制,外部中斷和異常處理。
通常在用戶模式下不能訪問被保護的系統(tǒng)資源,一般不能改變模式,但是異常發(fā)生可以導致模式改變。
8、處理器模式對應寄存器組
每一種處理器模式中有一組相應的寄存器組
任意時刻(也就是任意的處理器模式下),可見的寄存器(邏輯寄存器編號)包括:15個通用寄存器(R0~R14),一個或兩個狀態(tài)寄存器和程序計數(shù)器(PC)。
有些是各模式共用的同一個物理寄存器,有些是各模式自己擁有的獨立的物理寄存器。
9、寄存器分配:通用寄存器
R0-R15:可以直接訪問,R0-R14:通用寄存器。
R13:堆棧指針(sp)通常每種處理器模式都有單獨的堆棧,每個寄存器對應6個不同的物理寄存器
R14:鏈接寄存器(Link Register,LR)R15的備份,子程序的返回地址,異常返回地址。
不需要存放在堆棧中,函數(shù)調(diào)用速度快,每個寄存器對應6個不同的物理寄存器。
R15:程序計數(shù)器(PC)
R16,就是CPSR(狀態(tài)寄存器)。當前程序狀態(tài)寄存器,包括代碼標志狀態(tài)和當前模式位。
這些寄存器的功能是:包括關于近執(zhí)行的ALU操作的信息,控制中斷的使用和禁止,設置處理器操作模式。
Thumb狀態(tài)下的寄存器組織和ARM狀態(tài)下大致相同,T狀態(tài)下寄存器集是ARM狀態(tài)下的子集。
10、ARM異常中斷
由內(nèi)部、外部引起的事件。一共有7種異常。
復位,進入管理模式
未定義指令:未定義模式
軟件中斷(SWI):管理模式
預取中止:中止模式
數(shù)據(jù)中止:中止模式
IRQ:IRQ模式
FIQ:FIQ模式
11、未定義的指令處理
當ARM接受到一條不能處理的指令,ARM把這條指令提供給任何一個協(xié)處理器執(zhí)行。如果協(xié)處理器可以執(zhí)行這條指令但此時協(xié)處理器忙,ARM將等待直到協(xié)處理器準備好或中斷發(fā)生。如果沒有協(xié)處理器處理這條指令,那么ARM將處理未定義的指令陷井。
12、異常中斷向量表和中斷優(yōu)先級
中斷向量地址 異常中斷類型 異常中斷模式 優(yōu)先級(6)
0x00 復位 特權模式 1
0x04 未定義的指令 UND終止模式 6
0x08 軟件中斷 特權模式 6
0x0C 指令預取終止 終止模式 5
0x10 數(shù)據(jù)訪問終止 終止模式 2
0x14 保留 未使用 未使用
0x18 外部中斷請求 IRQ模式 4
0x1C 快速中斷請求 FIQ模式 3
13、用戶模式到FIQ快速中斷模式切換
將一個從用戶模式計算的PC計數(shù)器值存儲到FIQ模式中R14的位置。
用戶模式的CPSR復制到FIQ模式的SPSR。
異常返回由鏈接寄存器LR的值恢復PC,返回到發(fā)生異常中斷的指令的下一條指令處執(zhí)行程序。將SPSR復制回CPSR中。若在進入異常處理時設置了中斷禁止位,要在此清除。
復位系統(tǒng)后,開始整個異常應用程序的執(zhí)行,因此,復位異常處理程序不需要返回。
14、什么是JTAG?
JTAG是Joint Test Action Group的縮寫。JTAG的建立使得集成電路固定在PCB上,只通過邊界掃描便可以被測試。在ARM7TDMI處理器中,可以通過JTAG直接控制ARM的內(nèi)部總線,IO口等信息,從而達到調(diào)試的目的。
15、ARM的斷點設置
設置EmbeddedICE的兩個watchpoint單元:地址、數(shù)據(jù)、控制信號等
斷點的類型:硬件斷點:在ARM中直接設定watchpoint中的地址,當ARM運行到制定的地址時,就進入Debug狀態(tài)。硬件斷點數(shù)目受EmbeddedICE中的Watchpoint數(shù)目的限制;但是,可以在任何地方設置斷點。
軟件斷點:改變存儲器中的ARM指令為一個特殊的數(shù)據(jù)X(ARM的未定義指令),同時設置watchpoint中的斷點數(shù)據(jù)也為X,當ARM把X數(shù)據(jù)作為指令讀入的時候,ARM就進入Debug狀態(tài)。軟件斷點數(shù)目不受限制,但是,軟件斷點是通過替換系統(tǒng)的斷點地址的指令實現(xiàn)的,所以,軟件斷點只能在可寫的存儲器的地址中設置(比如:RAM),而不能在ROM(比如:Flash)中設置。
16、ARM指令集
數(shù)據(jù)處理指令,跳轉(zhuǎn)指令,內(nèi)存指令,程序狀態(tài)寄存器處理指令,協(xié)處理器指令,異常產(chǎn)生指令。ARM指令集是32位長度字對準,可以傳送8bit,16bit,32bit符號/無符號數(shù)據(jù)。Thumb指令集和ARM指令沒有太大的區(qū)別。ARM條件指令是只要滿足條件,這條指令就可以執(zhí)行。
17、ARM匯編程序設計
硬件與軟件考慮平衡。涉及硬件和時間的盡量用匯編。在調(diào)用與存儲器I/O等硬件相關的函數(shù)時,要作相應的裁減。要針對每一個具體的目標平臺,根據(jù)具體的目標存儲器資源進行修改(移植)。
ARM混合編程:ATPCS(ARM-Thumb Procedure Call Standard);統(tǒng)一定義了函數(shù)過程調(diào)用標準。
變量定義與邊界對齊:要盡量考慮到16位32位訪問對齊。
定義1:
char a;
short b;
char c;
int d;
定義2:
char a;
char c;
short b;
int d;
18、嵌入式處理器
處理器的兩個基本單元是:程序流控制單元(CU)和執(zhí)行單元(EU),CU中包含了一個取指單元,用于從存儲器中取指令,EU中含有執(zhí)行指令的電路,用于數(shù)據(jù)轉(zhuǎn)移操作以及數(shù)據(jù)從一種形式到另一種形式的轉(zhuǎn)換操作。