當(dāng)前位置:首頁 > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]ARM概述ARM處理器是英國Acorn有限公司設(shè)計的低功耗成本的第一款RISC微處理器。全稱為Advanced RISC Machine。ARM處理器本身是32位設(shè)計,但也配備16位指令集,一般來講比等價

ARM概述

ARM處理器是英國Acorn有限公司設(shè)計的低功耗成本的第一款RISC微處理器。全稱為Advanced RISC Machine。ARM處理器本身是32位設(shè)計,但也配備16位指令集,一般來講比等價32位代碼節(jié)省達35%,卻能保留32位系統(tǒng)的所有優(yōu)勢。

ARM的Jazelle技術(shù)使Java加速得到比基于軟件的Java虛擬機(JVM)高得多的性能,和同等的非Java加速核相比功耗降低80%。CPU功能上增加DSP指令集提供增強的16位和32位算術(shù)運算能力,提高了性能和靈活性。ARM還提供兩個前沿特性來輔助帶深嵌入處理器的高集成SoC器件的調(diào)試,它們是嵌入式ICE-RT邏輯和嵌入式跟蹤宏核(ETMS)系列。

ARM處理器特點

1、體積小、低功耗、低成本、高性能;

2、支持Thumb(16位)/ARM(32位)雙指令集,能很好的兼容8位/16位器件;

3、大量使用寄存器,指令執(zhí)行速度更快;

4、大多數(shù)數(shù)據(jù)操作都在寄存器中完成;

5、尋址方式靈活簡單,執(zhí)行效率高;

6、指令長度固定。

ARM主要模式

處理器工作模式 說明

用戶模式(usr) ARM處理器正常的程序執(zhí)行狀態(tài)

系統(tǒng)模式(sys) 運行具有特權(quán)的操作系統(tǒng)任務(wù)

快中斷模式(fiq) 支持高速數(shù)據(jù)傳輸或通道處理

管理模式(svc) 操作系統(tǒng)保護模式

數(shù)據(jù)訪問終止模式(abt) 用于虛擬存儲器及存儲器保護

中斷模式(irq) 用于通用的中斷處理

未定義指令終止模式(und) 支持硬件協(xié)處理器的軟件仿真

除用戶模式外,其余6種模式稱為非用戶模式或特權(quán)模式;用戶模式和系統(tǒng)模式之外的5種模式稱為異常模式。ARM處理器的運行模式可以通過軟件改變,也可以通過外部中斷或異常處理改變。

arm的協(xié)處理器有幾個

ARM可支持多達16個協(xié)處理器,主要的作用:ARM處理器初始化,ARM與協(xié)處理器的數(shù)據(jù)處理操作,ARM的寄存器與協(xié)處理器的寄存器之間傳送數(shù)據(jù),以及ARM協(xié)處理器的寄存器和存儲器之間傳送數(shù)據(jù)。共有5條:

-CDP協(xié)處理器數(shù)據(jù)操作指令

-LDC協(xié)處理器數(shù)據(jù)加載指令

-STC協(xié)處理器數(shù)據(jù)存儲指令

-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處理器的寄存器和存儲器。

指令示例:

CDPP3,2,C12,C10,C3,4;該指令完成協(xié)處理器P3的初始化

2、LDC指令

LDC指令的格式為:

LDC{條件}{L}協(xié)處理器編碼,目的寄存器,[源寄存器]

LDC指令用于將源寄存器所指向的存儲器中的字?jǐn)?shù)據(jù)傳送到目的寄存器中,若協(xié)處理器不能成功完成傳送操作,則產(chǎn)生未定義指令異常。其中,{L}選項表示指令為長讀取操作,如用于雙精度數(shù)據(jù)的傳輸。

指令示例:

LDCP3,C4,[R0];將ARM處理器的寄存器R0所指向的存儲器中的字?jǐn)?shù)據(jù)傳送到協(xié)處理器P3的寄存器C4中。

3、STC指令

STC指令的格式為:

STC{條件}{L}協(xié)處理器編碼,源寄存器,[目的寄存器]

STC指令用于將源寄存器中的字?jǐn)?shù)據(jù)傳送到目的寄存器所指向的存儲器中,若協(xié)處理器不能成功完成傳送操作,則產(chǎn)生未定義指令異常。其中,{L}選項表示指令為長讀取操作,如用于雙精度數(shù)據(jù)的傳輸。

指令示例:

STCP3,C4,[R0];將協(xié)處理器P3的寄存器C4中的字?jǐn)?shù)據(jù)傳送到ARM處理器的寄存器R0所指向的存儲器中。

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)提供了兩個32bits寄存器用于傳送數(shù)據(jù),還提供了6bits通信數(shù)據(jù)控制寄存器控制寄存器中的兩個位提供目標(biāo)和主機調(diào)試器之間的同步握手。

此控制寄存器中的兩個位提供目標(biāo)和主機調(diào)試器之間的同步握手:

位 1(W 位) 從目標(biāo)的角度表示通信數(shù)據(jù)寫入寄存器是否空閑:

W = 0 目標(biāo)應(yīng)用程序可以寫入新數(shù)據(jù)。

W = 1 主機調(diào)試器可以從寫入寄存器中掃描出新數(shù)據(jù)。

位 0(R 位) 從目標(biāo)的角度表示通信數(shù)據(jù)讀取寄存器中是否有新數(shù)據(jù):

R = 1 有新數(shù)據(jù),目標(biāo)應(yīng)用程序可以讀取。

R = 0 主機調(diào)試器可以將新數(shù)據(jù)掃描到讀取寄存器中。

注意:

調(diào)試器不能利用協(xié)處理器 14 直接訪問調(diào)試通信通道,因為這對調(diào)試器無意義。但調(diào)試器可使用掃描鏈讀寫 DCC 寄存器。 DCC 數(shù)據(jù)和控制寄存器可映射到 EmbeddedICE 邏輯單元中的地址。 若要查看EmbeddedICE 邏輯寄存器,請參閱您的調(diào)試器和調(diào)試目標(biāo)的相關(guān)文檔。

通信數(shù)據(jù)讀取寄存器

用于接收來自調(diào)試器的數(shù)據(jù)的 32 位寬寄存器。 以下指令在 Rd 中返

回讀取寄存器的值:

MRC p14, 0, Rd, c1, c0

通信數(shù)據(jù)寫入寄存器

用于向調(diào)試器發(fā)送數(shù)據(jù)的 32 位寬寄存器。 以下指令將 Rn 中的值寫

到寫入寄存器中:

MCR p14, 0, Rn, c1, c0

注意

有關(guān)訪問 ARM10 和 ARM11 內(nèi)核 DCC寄存器的信息,請參閱相應(yīng)的技術(shù)參考手冊。 ARM9 之后的各處理器中,所用指令、狀態(tài)位位置以及對狀態(tài)位的解釋都有所不同。

目標(biāo)到調(diào)試器的通信

這是運行于 ARM內(nèi)核上的應(yīng)用程序與運行于主機上的調(diào)試器之間的通信事件順序:

1. 目標(biāo)應(yīng)用程序檢查 DCC 寫入寄存器是否空閑可用。為此,目標(biāo)應(yīng)用程序使用 MRC 指令讀取調(diào)試通信通道控制寄存器,以檢查 W 位是否已清除。

2. 如果 W 位已清除,則通信數(shù)據(jù)寫入寄存器已清空,應(yīng)用程序?qū)f(xié)處理器14,使用 MCR 指令將字寫入通信數(shù)據(jù)寫入寄存器。 寫入寄存器操作會自動設(shè)置W 位。如果 W位已設(shè)置,則表明調(diào)試器尚未清空通信數(shù)據(jù)寫入寄存器。此時,如果應(yīng)用程序需要發(fā)送另一個字,它必須輪詢 W 位,直到它已清除。

3. 調(diào)試器通過掃描鏈 2 輪詢通信數(shù)據(jù)控制寄存器。 如果調(diào)試器發(fā)現(xiàn) W位已設(shè)置,則它可以讀 DCC 數(shù)據(jù)寄存器,以讀取應(yīng)用程序發(fā)送的信息。 讀取數(shù)據(jù)的進程會自動清除通信數(shù)據(jù)控制寄存器中的 W 位。

以下代碼顯示了這一過程

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)的通信

這是運行于主機上的調(diào)試器向運行于內(nèi)核上的應(yīng)用程序傳輸消息的事件順序:

1. 調(diào)試器輪詢通信數(shù)據(jù)控制寄存器的 R 位。 如果 R位已清除,則通信數(shù)據(jù)讀取寄存器已清空,可將數(shù)據(jù)寫入此寄存器,以供目標(biāo)應(yīng)用程序讀取。

2. 調(diào)試器通過掃描鏈 2 將數(shù)據(jù)掃描到通信數(shù)據(jù)讀取寄存器中。此操作會自動設(shè)置通信數(shù)據(jù)控制寄存器中的 R 位。

3. 目標(biāo)應(yīng)用程序輪詢通信數(shù)據(jù)控制寄存器中的 R 位。如果該位已經(jīng)設(shè)置,則通信數(shù)據(jù)讀取寄存器中已經(jīng)有數(shù)據(jù),應(yīng)用程序可使用 MRC 指令從協(xié)處理器14 讀取該數(shù)據(jù)。 同時,讀取指令還會清除R 位。

以下顯示的目標(biāo)應(yīng)用程序代碼演示了這一過程

AREA InChannel, CODE,READONLY

ENTRY

MOV r1,#3 ; Number of words to read

LDR r2, =indata ; Address to storedata read

pollin

MRC p14,0,r0,c0,c0 ; Read controlregister

TST r0, #1

BEQ pollin ; If R bit clear thenloop

read

MRC p14,0,r3,c1,c0 ; read word intor3

STR r3,[r2],#4 ; Store to memoryand

; update pointer

SUBS r1,r1,#1 ; Update counter

BNE pollin ; Loop if more words toread

MOV r0, #0x18 ;Angel_SWIreason_ReportException

LDR r1, =0x20026 ;ADP_Stopped_ApplicationExit

SVC 0x123456 ; ARM semihosting(formerly SWI)

AREA Storage, DATA,READWRITE

indata

DCB “Duffmessage#”

END

CP15系統(tǒng)控制協(xié)處理器

CP15 —系統(tǒng)控制協(xié)處理器 (the system control coprocessor)他通過協(xié)處理器指令MCR和MRC提供具體的寄存器來配置和控制caches、MMU、保護系統(tǒng)、配置時鐘模式(在bootloader時鐘初始化用到)

CP15的寄存器只能被MRC和MCR(Move to Coprocessor from ARM Register )指令訪問

MCR{cond} p15,,,,,

MRC{cond} p15,,,,,

其中L位用來區(qū)分MCR(L=1)和MRC(L=0)操作。 CP15包括15個具體的寄存器如下

-R0:ID號寄存器

-R0:緩存類型寄存器

-R1:控制寄存器

-R2:轉(zhuǎn)換表基址寄存器(Translation Table Base --TTB)

-R3:域訪問控制寄存器(Domain access control )

-R4:保留

-R5:異常狀態(tài)寄存器(fault status -FSR)

-R6:異常地址寄存器(fault address -FAR)

-R7:緩存操作寄存器

-R8:TLB操作寄存器

-R9:緩存鎖定寄存器

-R10:TLB 鎖定寄存器

-R11-12&14:保留

-R13:處理器ID

-R15:測試配置寄存器 2-24

要注意有2個R0,根據(jù)MCR操作數(shù)的不同傳送不同的值,這也一個只讀寄存器

-R0:ID號寄存器 這是一個只讀寄存器,返回一個32位的設(shè)備ID號,具體功能參考ARM各個系列型號的的CP15 Register 0說明。

MRC p15, 0, , c0, c0, {0, 3-7} ;returns ID

以下為CP15的一些應(yīng)用示例

U32 ARM_CP15_DeviceIDRead(void)

{

U32 id;

__asm { MRC P15, 0, id, c0, c0; }

return id;

}

void ARM_CP15_SetPageTableBase(P_U32 TableAddress)

{

__asm { MCR P15, 0, TableAddress, c2, c0, 0; }

}

void ARM_CP15_SetDomainAccessControl(U32 flags)

{

__asm { MCR P15, 0, flags, c3, c0, 0; }

}

void ARM_CP15_ICacheFlush()

{

unsigned long dummy;

__asm { MCR p15, 0, dummy, c7, c5, 0; }

}

void ARM_CP15_DCacheFlush()

{

unsigned long dummy;

__asm { MCR p15, 0, dummy, c7, c6, 0; }

}

void ARM_CP15_CacheFlush()

{

unsigned long dummy;

__asm { MCR p15, 0, dummy, c7, c7, 0; }

}

void ARM_CP15_TLBFlush(void)

{

unsigned long dummy;

__asm { MCR P15, 0, dummy, c8, c7, 0; }

}

void ARM_CP15_ControlRegisterWrite(U32 flags)

{

__asm { MCR P15, 0, flags, c1, c0; }

}

void ARM_CP15_ControlRegisterOR(U32 flag)

{

__asm {

mrc p15,0,r0,c1,c0,0

mov r2,flag

orr r0,r2,r0

mcr p15,0,r0,c1,c0,0

}

}

void ARM_CP15_ControlRegisterAND(U32 flag)

{

__asm {

mrc p15,0,r0,c1,c0,0

mov r2,flag

and r0,r2,r0

mcr p15,0,r0,c1,c0,0

}

}

void ARM_MMU_Init(P_U32 TableAddress)

{

ARM_CP15_TLBFlush();

ARM_CP15_CacheFlush();

ARM_CP15_SetDomainAccessControl(0xFFFFFFFF);

ARM_CP15_SetPageTableBase(TableAddress);

}

void Enable_MMU (void)

{

__asm {

mrc p15,0,r0,c1,c0,0

mov r2, #0x00000001

orr r0,r2,r0

mcr p15,0,r0,c1,c0,0

}

printf(“MMU enabledn”);

}

void Disable_MMU (void)

{

__asm {

mrc p15,0,r0,c1,c0,0

mov r2, #0xFFFFFFFE

and r0,r2,r0

mcr p15,0,r0,c1,c0,0

}

printf(“MMU disabledn”);

}

0次

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉