亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 1993 | 回復(fù): 0
打印 上一主題 下一主題

ARM協(xié)處理器及其指令 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-12-21 08:41 |只看該作者 |倒序?yàn)g覽
學(xué)習(xí)ARM 指令這么久,搞不懂的就是協(xié)處理器指令到底是怎么樣工作的。在網(wǎng)上找到點(diǎn)資料貼出來(lái)。
在研究MMU地址轉(zhuǎn)換的時(shí)候遇到過(guò)協(xié)處理器P15。

ARM的嵌入式應(yīng)用中,存儲(chǔ)系統(tǒng)是通過(guò)協(xié)處理器CP15完成的。CP15包含16個(gè)32位的寄存器,其編號(hào)是0到15。對(duì)CP15協(xié)處理器的操作使用mcr和mrc兩條協(xié)處理器指令,這兩條指令的記法是從后往前看:mcr是把r(CPU核寄存器)中的數(shù)據(jù)傳送到c(協(xié)處理器寄存器)中,mrc則是把c(協(xié)處理器寄存器)中的數(shù)據(jù)傳送到r(CPU核寄存器)中。對(duì)CP15協(xié)處理器的所有操作都是通過(guò)CPU寄存器和CP15寄存器之間交換數(shù)據(jù)來(lái)完成的。

寄存器C0,C1。C0的基本作用是ID編碼;C1的基本作用是控制位(可讀可寫)。-

C1的第12位:I(bit[12])。當(dāng)數(shù)據(jù)和地址是分開(kāi)的時(shí),本控制位禁止使能指令cache;其中0 是禁止指令cache ,1是使能指令cache;如果系統(tǒng)中使用統(tǒng)一的指令cache和數(shù)據(jù)cache或者系統(tǒng)中不含cache,讀取時(shí)該位返回0,寫入時(shí)忽略該位。當(dāng)系統(tǒng)中的指令cache不能禁止時(shí),讀取時(shí)該位返回1,寫入時(shí)忽略該位。

C1的第2位:C (bit[2])。當(dāng)數(shù)據(jù)和地址是分開(kāi)的時(shí),本控制位禁止使能數(shù)據(jù)cache;如果系統(tǒng)中使用統(tǒng)一的指令cache和數(shù)據(jù)cache時(shí),該控制位禁止使能整個(gè)cache。其中0 是禁止cache ,1是使能cache;如果系統(tǒng)中不含cache,讀取時(shí)該位返回0,寫入時(shí)忽略該位。當(dāng)系統(tǒng)中的cache不能禁止時(shí),讀取時(shí)該位返回1,寫入時(shí)忽略該位。

C1的第1位:A (bit)。對(duì)于可以選擇是否支持內(nèi)存訪問(wèn)時(shí)地址對(duì)齊檢查的那些系統(tǒng),本位禁止使能地址對(duì)齊檢查功能;0是禁止地址對(duì)齊檢查功能,1是使能地址對(duì)齊檢查功能;對(duì)于內(nèi)存訪問(wèn)時(shí)地址對(duì)齊檢查功能不可選擇的那些系統(tǒng),讀取該位時(shí)根據(jù)系統(tǒng)是否支持地址對(duì)齊檢查功能返回0或者1,寫入時(shí)忽略該位。-

C1的第0位:M(bit[0])。禁止使能MMU或者PU;其中0是禁止地址對(duì)齊檢查功能,1是使能地址對(duì)齊檢查功能;如果系統(tǒng)中沒(méi)有MMU及PU,讀取時(shí)該位返回0,寫入時(shí)忽略該位。

C1的30位設(shè)置快速總線模式

C1的31位設(shè)置異步模式


博文地址http://blog.csdn.net/yyt7529/archive/2009/08/02/4401937.aspx

ARM 微處理器可支持多達(dá) 16 個(gè)協(xié)處理器,用于各種協(xié)處理操作,在程序執(zhí)行的過(guò)程中,每個(gè)協(xié)處理器只執(zhí)行針對(duì)自身的協(xié)處理指令,忽略 ARM 處理器和其他協(xié)處理器的指令。ARM 的協(xié)處理器指令主要用于 ARM 處理器初始化 ARM 協(xié)處理器的數(shù)據(jù)處理操作,以及在ARM 處理器的寄存器和協(xié)處理器的寄存器之間傳送數(shù)據(jù),和在 ARM 協(xié)處理器的寄存器和存儲(chǔ)器之間傳送數(shù)據(jù)。 ARM 協(xié)處理器指令包括以下 5 條:

— CDP 協(xié)處理器數(shù)操作指令
— LDC 協(xié)處理器數(shù)據(jù)加載指令
— STC 協(xié)處理器數(shù)據(jù)存儲(chǔ)指令
— MCR ARM 處理器寄存器到協(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ǔ)器。
指令示例:
CDP P3 , 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ù)的傳輸。
指令示例:
LDC P3 , 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ù)的傳輸。

指令示例:

STC P3 , 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é)處理器的寄存器。

指令示例:

MCR P3 , 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é)處理器的寄存器。

指令示例:

MRC P3 , 3 , R0 , C4 , C5 , 6 ;該指令將協(xié)處理器 P3 的寄存器中的數(shù)據(jù)傳送到 ARM 處理器寄存器中.

The ARM920T 有兩個(gè)具體協(xié)處理器

CP14(略)

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

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

他包括15個(gè)具體的寄存器如下:
-R0:ID號(hào)寄存器 這是一個(gè)只讀寄存器,返回一個(gè)32位的設(shè)備ID號(hào),32具體功能參考2410 datesheet的 table 2-5

-R0:緩存類型寄存器(CACHE TYPE REGISTER) ,注意有2個(gè)R0,根據(jù)MCR操作數(shù)的不同傳送不同的值,這也一個(gè)只讀寄存器,包含了caches的信息。讀這個(gè)寄存器的方式是通過(guò)設(shè)置協(xié)處理操作碼為1.

如:

MRC p15,0,Rd,c0,c0,1; 返回caches的詳細(xì)信息

詳見(jiàn):table 2-6

-R1:控制寄存器 2-10

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

-R3:域訪問(wèn)控制寄存器(Domain access control )2-13

-R4:保留 2-14

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

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

-R7:緩存操作寄存器 2-15

-R8:TLB操作寄存器 2-18

-R9:緩存鎖定寄存器 2-19

-R10:TLB 鎖定寄存器 2-21

-R11-12&14:保留

-R13:處理器ID 2-22

-R15:測(cè)試配置寄存器 2-24


您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP