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