arm的協(xié)處理器有幾個(gè)?ARM協(xié)處理器詳解
ARM概述
本文引用地址:http://2s4d.com/article/201804/379160.htmARM處理器是英國(guó)Acorn有限公司設(shè)計(jì)的低功耗成本的第一款RISC微處理器。全稱(chēng)為Advanced RISC Machine。ARM處理器本身是32位設(shè)計(jì),但也配備16位指令集,一般來(lái)講比等價(jià)32位代碼節(jié)省達(dá)35%,卻能保留32位系統(tǒng)的所有優(yōu)勢(shì)。
ARM的Jazelle技術(shù)使Java加速得到比基于軟件的Java虛擬機(jī)(JVM)高得多的性能,和同等的非Java加速核相比功耗降低80%。CPU功能上增加DSP指令集提供增強(qiáng)的16位和32位算術(shù)運(yùn)算能力,提高了性能和靈活性。ARM還提供兩個(gè)前沿特性來(lái)輔助帶深嵌入處理器的高集成SoC器件的調(diào)試,它們是嵌入式ICE-RT邏輯和嵌入式跟蹤宏核(ETMS)系列。
ARM處理器特點(diǎn)
1、體積小、低功耗、低成本、高性能;
2、支持Thumb(16位)/ARM(32位)雙指令集,能很好的兼容8位/16位器件;
3、大量使用寄存器,指令執(zhí)行速度更快;
4、大多數(shù)數(shù)據(jù)操作都在寄存器中完成;
5、尋址方式靈活簡(jiǎn)單,執(zhí)行效率高;
6、指令長(zhǎng)度固定。
ARM主要模式
處理器工作模式 說(shuō)明
用戶(hù)模式(usr) ARM處理器正常的程序執(zhí)行狀態(tài)
系統(tǒng)模式(sys) 運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù)
快中斷模式(fiq) 支持高速數(shù)據(jù)傳輸或通道處理
管理模式(svc) 操作系統(tǒng)保護(hù)模式
數(shù)據(jù)訪問(wèn)終止模式(abt) 用于虛擬存儲(chǔ)器及存儲(chǔ)器保護(hù)
中斷模式(irq) 用于通用的中斷處理
未定義指令終止模式(und) 支持硬件協(xié)處理器的軟件仿真
除用戶(hù)模式外,其余6種模式稱(chēng)為非用戶(hù)模式或特權(quán)模式;用戶(hù)模式和系統(tǒng)模式之外的5種模式稱(chēng)為異常模式。ARM處理器的運(yùn)行模式可以通過(guò)軟件改變,也可以通過(guò)外部中斷或異常處理改變。
arm的協(xié)處理器有幾個(gè)
ARM可支持多達(dá)16個(gè)協(xié)處理器,主要的作用:ARM處理器初始化,ARM與協(xié)處理器的數(shù)據(jù)處理操作,ARM的寄存器與協(xié)處理器的寄存器之間傳送數(shù)據(jù),以及ARM協(xié)處理器的寄存器和存儲(chǔ)器之間傳送數(shù)據(jù)。共有5條:
-CDP協(xié)處理器數(shù)據(jù)操作指令
-LDC協(xié)處理器數(shù)據(jù)加載指令
-STC協(xié)處理器數(shù)據(jù)存儲(chǔ)指令
-MCRARM的寄存器到協(xié)處理器的寄存器的數(shù)據(jù)傳送
-MRC協(xié)處理器的寄存器到ARM的寄存器的數(shù)據(jù)傳送
1、CDP指令
CDP指令的格式為:
CDP{條件}協(xié)處理器編碼,協(xié)處理器操作碼1,目的寄存器,源寄存器1,源寄存器2,協(xié)處理器操作碼2。
CDP指令用于ARM處理器通知ARM協(xié)處理器執(zhí)行特定的操作,若協(xié)處理器不能成功完成特定的操作,則產(chǎn)生未定義指令異常。其中協(xié)處理器操作碼1和協(xié)處理器操作碼2為協(xié)處理器將要執(zhí)行的操作,目的寄存器和源寄存器均為協(xié)處理器的寄存器,指令不涉及ARM處理器的寄存器和存儲(chǔ)器。
指令示例:
CDPP3,2,C12,C10,C3,4;該指令完成協(xié)處理器P3的初始化
2、LDC指令
LDC指令的格式為:
LDC{條件}{L}協(xié)處理器編碼,目的寄存器,[源寄存器]
LDC指令用于將源寄存器所指向的存儲(chǔ)器中的字?jǐn)?shù)據(jù)傳送到目的寄存器中,若協(xié)處理器不能成功完成傳送操作,則產(chǎn)生未定義指令異常。其中,{L}選項(xiàng)表示指令為長(zhǎng)讀取操作,如用于雙精度數(shù)據(jù)的傳輸。
指令示例:
LDCP3,C4,[R0];將ARM處理器的寄存器R0所指向的存儲(chǔ)器中的字?jǐn)?shù)據(jù)傳送到協(xié)處理器P3的寄存器C4中。
3、STC指令
STC指令的格式為:
STC{條件}{L}協(xié)處理器編碼,源寄存器,[目的寄存器]
STC指令用于將源寄存器中的字?jǐn)?shù)據(jù)傳送到目的寄存器所指向的存儲(chǔ)器中,若協(xié)處理器不能成功完成傳送操作,則產(chǎn)生未定義指令異常。其中,{L}選項(xiàng)表示指令為長(zhǎng)讀取操作,如用于雙精度數(shù)據(jù)的傳輸。
指令示例:
STCP3,C4,[R0];將協(xié)處理器P3的寄存器C4中的字?jǐn)?shù)據(jù)傳送到ARM處理器的寄存器R0所指向的存儲(chǔ)器中。
4、MCR指令
MCR指令的格式為:
MCR{條件}協(xié)處理器編碼,協(xié)處理器操作碼1,源寄存器,目的寄存器1,目的寄存器2,協(xié)處理器操作碼2。
MCR指令用于將ARM處理器寄存器中的數(shù)據(jù)傳送到協(xié)處理器寄存器中,若協(xié)處理器不能成功完成操作,則產(chǎn)生未定義指令異常。其中協(xié)處理器操作碼1和協(xié)處理器操作碼2為協(xié)處理器將要執(zhí)行的操作,源寄存器為ARM處理器的寄存器,目的寄存器1和目的寄存器2均為協(xié)處理器的寄存器。
指令示例:
MCRP3,3,R0,C4,C5,6;該指令將ARM處理器寄存器R0中的數(shù)據(jù)傳送到協(xié)處理器P3的寄存器C4和C5中。
5、MRC指令
MRC指令的格式為:
MRC{條件}協(xié)處理器編碼,協(xié)處理器操作碼1,目的寄存器,源寄存器1,源寄存器2,協(xié)處理器操作碼2。
MRC指令用于將協(xié)處理器寄存器中的數(shù)據(jù)傳送到ARM處理器寄存器中,若協(xié)處理器不能成功完成操作,則產(chǎn)生未定義指令異常。其中協(xié)處理器操作碼1和協(xié)處理器操作碼2為協(xié)處理器將要執(zhí)行的操作,目的寄存器為ARM處理器的寄存器,源寄存器1和源寄存器2均為協(xié)處理器的寄存器。
指令示例:
MRCP3,3,R0,C4,C5,6;該指令將協(xié)處理器P3的寄存器中的數(shù)據(jù)傳送到ARM處理器寄存器中.
CP14調(diào)試通信通道協(xié)處理器
調(diào)試通信通道協(xié)處理器DCC(the Debug CommunicaTIonsChannel)提供了兩個(gè)32bits寄存器用于傳送數(shù)據(jù),還提供了6bits通信數(shù)據(jù)控制寄存器控制寄存器中的兩個(gè)位提供目標(biāo)和主機(jī)調(diào)試器之間的同步握手。
此控制寄存器中的兩個(gè)位提供目標(biāo)和主機(jī)調(diào)試器之間的同步握手:
位 1(W 位) 從目標(biāo)的角度表示通信數(shù)據(jù)寫(xiě)入寄存器是否空閑:
W = 0 目標(biāo)應(yīng)用程序可以寫(xiě)入新數(shù)據(jù)。
W = 1 主機(jī)調(diào)試器可以從寫(xiě)入寄存器中掃描出新數(shù)據(jù)。
位 0(R 位) 從目標(biāo)的角度表示通信數(shù)據(jù)讀取寄存器中是否有新數(shù)據(jù):
R = 1 有新數(shù)據(jù),目標(biāo)應(yīng)用程序可以讀取。
R = 0 主機(jī)調(diào)試器可以將新數(shù)據(jù)掃描到讀取寄存器中。
注意:
調(diào)試器不能利用協(xié)處理器 14 直接訪問(wèn)調(diào)試通信通道,因?yàn)檫@對(duì)調(diào)試器無(wú)意義。但調(diào)試器可使用掃描鏈讀寫(xiě) DCC 寄存器。 DCC 數(shù)據(jù)和控制寄存器可映射到 EmbeddedICE 邏輯單元中的地址。 若要查看EmbeddedICE 邏輯寄存器,請(qǐng)參閱您的調(diào)試器和調(diào)試目標(biāo)的相關(guān)文檔。
通信數(shù)據(jù)讀取寄存器
用于接收來(lái)自調(diào)試器的數(shù)據(jù)的 32 位寬寄存器。 以下指令在 Rd 中返
回讀取寄存器的值:
MRC p14, 0, Rd, c1, c0
通信數(shù)據(jù)寫(xiě)入寄存器
用于向調(diào)試器發(fā)送數(shù)據(jù)的 32 位寬寄存器。 以下指令將 Rn 中的值寫(xiě)
到寫(xiě)入寄存器中:
MCR p14, 0, Rn, c1, c0
注意
有關(guān)訪問(wèn) ARM10 和 ARM11 內(nèi)核 DCC寄存器的信息,請(qǐng)參閱相應(yīng)的技術(shù)參考手冊(cè)。 ARM9 之后的各處理器中,所用指令、狀態(tài)位位置以及對(duì)狀態(tài)位的解釋都有所不同。
目標(biāo)到調(diào)試器的通信
這是運(yùn)行于 ARM內(nèi)核上的應(yīng)用程序與運(yùn)行于主機(jī)上的調(diào)試器之間的通信事件順序:
1. 目標(biāo)應(yīng)用程序檢查 DCC 寫(xiě)入寄存器是否空閑可用。為此,目標(biāo)應(yīng)用程序使用 MRC 指令讀取調(diào)試通信通道控制寄存器,以檢查 W 位是否已清除。
2. 如果 W 位已清除,則通信數(shù)據(jù)寫(xiě)入寄存器已清空,應(yīng)用程序?qū)f(xié)處理器14,使用 MCR 指令將字寫(xiě)入通信數(shù)據(jù)寫(xiě)入寄存器。 寫(xiě)入寄存器操作會(huì)自動(dòng)設(shè)置W 位。如果 W位已設(shè)置,則表明調(diào)試器尚未清空通信數(shù)據(jù)寫(xiě)入寄存器。此時(shí),如果應(yīng)用程序需要發(fā)送另一個(gè)字,它必須輪詢(xún) W 位,直到它已清除。
3. 調(diào)試器通過(guò)掃描鏈 2 輪詢(xún)通信數(shù)據(jù)控制寄存器。 如果調(diào)試器發(fā)現(xiàn) W位已設(shè)置,則它可以讀 DCC 數(shù)據(jù)寄存器,以讀取應(yīng)用程序發(fā)送的信息。 讀取數(shù)據(jù)的進(jìn)程會(huì)自動(dòng)清除通信數(shù)據(jù)控制寄存器中的 W 位。
以下代碼顯示了這一過(guò)程
AREA OutChannel, CODE,READONLY
ENTRY
MOV r1,#3 ; Number of words to send
ADR r2, outdata ; Address ofdata to send
pollout
MRC p14,0,r0,c0,c0 ; Read controlregister
TST r0, #2
BNE pollout ; if W set, register sTIllfull
write
LDR r3,[r2],#4 ; Read word fromoutdata
; into r3 and update the pointer
MCR p14,0,r3,c1,c0 ; Write word fromr3
SUBS r1,r1,#1 ; Update counter
BNE pollout ; Loop if more words to bewritten
MOV r0, #0x18 ;Angel_SWIreason_ReportExcepTIon
LDR r1, =0x20026 ;ADP_Stopped_ApplicaTIonExit
SVC 0x123456 ; ARM semihosting(formerly SWI)
outdata
DCB “Hello there!”
END
調(diào)試器到目標(biāo)的通信
評(píng)論