資料介紹
ARM存儲系統(tǒng)有非常靈活的體系結構,可以適應不同的嵌入式應用系統(tǒng)的需要。ARM存儲器系統(tǒng)可以使用簡單的平板式地址映射機制(就像一些簡單的單片機一樣,地址空間的分配方式是固定的,系統(tǒng)中各部分都使用物理地址),也可以使用其他技術提供功能更為強大的存儲系統(tǒng)。比如:
· 系統(tǒng)可能提供多種類型的存儲器件,如FLASH、ROM、SRAM等;
· Caches技術;
· 寫緩存技術(write buffers);
· 虛擬內(nèi)存和I/O地址映射技術。
大多數(shù)的系統(tǒng)通過下面的方法之一實現(xiàn)對復雜存儲系統(tǒng)的管理。
· 使能Cache,縮小處理器和存儲系統(tǒng)速度差別,從而提高系統(tǒng)的整體性能。
· 使用內(nèi)存映射技術實現(xiàn)虛擬空間到物理空間的映射。這種映射機制對嵌入式系統(tǒng)非常重要。通常嵌入式系統(tǒng)程序存放在ROM/FLASH中,這樣系統(tǒng)斷電后程序能夠得到保存。但是通常ROM/FLASH與SDRAM相比,速度慢很多,而且基于ARM的嵌入式系統(tǒng)中通常把異常中斷向量表放在RAM中。利用內(nèi)存映射機制可以滿足這種需要。在系統(tǒng)加電時,將ROM/FLASH映射為地址0,這樣可以進行一些初始化處理;當這些初始化處理完成后將SDRAM映射為地址0,并把系統(tǒng)程序加載到SDRAM中運行,這樣很好地滿足嵌入式系統(tǒng)的需要。
· 引入存儲保護機制,增強系統(tǒng)的安全性。
· 引入一些機制保證將I/O操作映射成內(nèi)存操作后,各種I/O操作能夠得到正確的結果。在簡單存儲系統(tǒng)中,不存在這樣問題。而當系統(tǒng)引入了Cache和write buffer后,就需要一些特別的措施。
在ARM系統(tǒng)中,要實現(xiàn)對存儲系統(tǒng)的管理通常是使用協(xié)處理器CP15,它通常也被稱為系統(tǒng)控制協(xié)處理器(System Control Coprocessor)。
ARM的存儲器系統(tǒng)是由多級構成的,每級都有特定的容量和速度。
圖15.1顯示了存儲器的層次結構。
① 寄存器。處理器寄存器組可看作是存儲器層次的頂層。這些寄存器被集成在處理器內(nèi)核中,在系統(tǒng)中提供最快的存儲器訪問。典型的ARM處理器有多個32位寄存器,其訪問時間為ns量級。
圖15.1 存儲器的層次結構
?、?緊耦合存儲器TCM。為彌補Cache訪問的不確定性增加的存儲器。TCM是一種快速SDRAM,它緊挨內(nèi)核,并且保證取指和數(shù)據(jù)操作的時鐘周期數(shù),這一點對一些要求確定行為的實時算法是很重要的。TCM位于存儲器地址映射中,可作為快速存儲器來訪問。
③ 片上Cache存儲器的容量在8KB~32KB之間,訪問時間大約為10ns。
?、?高性能的ARM結構中,可能存在第二級片外Cache,容量為幾百KB,訪問時間為幾十ns。
?、?DRAM。主存儲器可能是幾MB到幾十MB的動態(tài)存儲器,訪問時間大約為100ns。
?、?后援存儲器,通常是硬盤,可能從幾百MB到幾個GB,訪問時間為幾十ms。
注意TCM和SRAM在技術上相同,但在結構排列上不同;TCM在片上,而SRAM在板上。
15.1 協(xié)處理器CP15
ARM處理器支持16個協(xié)處理器。在程序執(zhí)行過程中,每個協(xié)處理器忽略屬于ARM處理器和其他協(xié)處理器的指令。當一個協(xié)處理器硬件不能執(zhí)行屬于它的協(xié)處理器指令時,將產(chǎn)生一個未定義指令異常中斷,在該異常中斷處理程序中,可以通過軟件模擬該硬件操作。比如,如果系統(tǒng)不包含向量浮點運算器,則可以選擇浮點運算軟件模擬包來支持向量浮點運算。
CP15,即通常所說的系統(tǒng)控制協(xié)處理器(System Control Coprocesssor)。它負責完成大部分的存儲系統(tǒng)管理。除了CP15外,在具體的各種存儲管理機制中可能還會用到其他的一些技術,如在MMU中除CP15外,還使用了頁表技術等。
在一些沒有標準存儲管理的系統(tǒng)中,CP15是不存在的。在這種情況下,針對協(xié)處理器CP15的操作指令將被視為未定義指令,指令的執(zhí)行結果不可預知。
CP15包含16個32位寄存器,其編號為0~15。實際上對于某些編號的寄存器可能對應多個物理寄存器,在指令中指定特定的標志位來區(qū)分這些物理寄存器。這種機制有些類似于ARM中的寄存器,當處于不同的處理器模式時,某些相同編號的寄存器對應于不同的物理寄存器。
CP15中的寄存器可能是只讀的,也可能是只寫的,還有一些是可讀可寫的。在對協(xié)處理器寄存器進行操作時,需要注意以下幾個問題。
· 寄存器的訪問類型(只讀/只寫/可讀可寫)。
· 不同的訪問引發(fā)的不同功能。
· 相同編號的寄存器是否對應不同的物理寄存器。
· 寄存器的具體作用。
15.1.1 CP15寄存器訪問指令
通常對協(xié)處理器CP15的訪問使用以下兩種指令。
MCR:將ARM寄存器的值寫入CP15寄存器中;
MRC:將CP15寄存器的值寫入ARM寄存器中。
注意通過協(xié)處理器訪問指令CDP、LDC和STC指令對協(xié)處理器CP15進行訪問將產(chǎn)生不可預知的結果。
其中,CDP為協(xié)處理器數(shù)據(jù)操作指令,這個指令初始化一些與協(xié)處理器相關的操作;
LDC為一個或多個字的協(xié)處理器數(shù)據(jù)讀取指令,此指令從存儲器讀取數(shù)據(jù)到指定的協(xié)處理器中;
STC為一個或多個32位字的協(xié)處理器數(shù)據(jù)寫入指令,此指令初始化一個協(xié)處理器的寫操作,從給定的協(xié)處理器把數(shù)據(jù)傳送到存儲器中。
指令MCR和MRC指令訪問CP15寄存器使用通用語法。
語法格式為:
MCR{《cond》} p15,《opcode1=0》,《Rd》,《CRn》,《CRm》{,《opcode2》}
MRC{《cond》} p15,《opcode1=0》,《Rd》,《CRn》,《CRm》{,《opcode2》}
其中:
《cond》為指令的執(zhí)行條件。當《cond》條件域為空時,指令無條件執(zhí)行;
《opcode1》在標準的MRC指令中,為協(xié)處理器的《opcode1》,即操作數(shù)1。對于CP15來說,此操作數(shù)恒為0,即0b000。當針對CP15的MRC指令中《opcode1》不為0時,指令的操作結果不可預知;
《Rd》為ARM寄存器,在ARM和協(xié)處理器交換數(shù)據(jù)時使用。在MRC指令中作為目的寄存器,在MCR中作為源寄存器。
注意r15不能作為ARM寄存器出現(xiàn)在MRC或MCR指令中,如果r15作為《Rd》出現(xiàn)在這里,那么指令的執(zhí)行結果不可預知。
《CRn》是CP15協(xié)處理器指令中用到的主要寄存器。在MRC指令中為源寄存器,在MCR中為目的寄存器。CP15協(xié)處理器的寄存器c0、c1、…、c15均可出現(xiàn)在這里。
《CRm》是附加的協(xié)處理器寄存器,用于區(qū)分同一個編號的不同物理寄存器和訪問類型。當指令中不需要提供附加信息時,將《CRm》指定為C0,否則指令的操作結果不可預知。
《opcode2》提供附加信息,用于區(qū)分同一個編號的不同物理寄存器,當指令中沒有指定附加信息時,省略《opcode2》或者將其指定為0,否則指令的操作結果不可預知。
MCR和MRC指令只能操作在特權模式下,如果處理器運行在用戶模式,指令的執(zhí)行結果不可預知。
注意在用戶模式下,如果要訪問系統(tǒng)控制協(xié)處理器,通常的做法是由操作系統(tǒng)提供SWI軟中斷調(diào)用來完成系統(tǒng)模式的切換。由于不同型號的ARM處理器對此管理差別很大,所以建議用戶在應用時將SWI作為一個獨立的模塊來管理并向上提供通用接口,以屏蔽不同型號處理器之間的差異。
例15.1給出了一個典型的利用SWI進行模式切換的例子。
【例15.1】
典型的在SWI中進行模式切換的例子。利用此例,調(diào)用SWI 0來完成系統(tǒng)模式切換。
EHT_SWI
LDR sp,=EHT_Exception_Stack ;更新SWI堆棧指針
ADD sp,sp,#EXCEPTION_SIZE ;得到棧頂指針
STMDB sp!,{r0-r2,lr} ;保存程序中用到的寄存器
MRS r0,SPSR ;得到SPSR
STMDB sp!,{r0} ;保持SPSR
LDR r0,[lr,#-4] ;計算SWI指令地址
BIC r0,r0,#0xFF000000 ;提取中斷向量號
CMP r0,#MAX_SWI ;檢測中斷向量范圍
LDRLS pc,[pc,r0,LSL #2] ;如果在范圍內(nèi),跳轉(zhuǎn)到軟中斷向量表
B EHT_SWI_Exit ;為定義的SWI指令出口
EHT_Jump_Table
DCD EHT_SU_Switch
DCD EHT_Disable_Interrupts
?。?********************************************************************************
?。挥脩艨稍诖颂砑痈嗟淖远x軟中斷,在此SWI0作為系統(tǒng)保留的軟中斷,調(diào)用例程EHT_SU_Switch,來進行模式切換
??;*********************************************************************************
EHT_SU_Switch
MMU_DISABLE ;轉(zhuǎn)換前禁用MMU
LDMIA sp!,{r0} ;從堆棧中取出SPSR
BIC r0,r0,#MODE_MASK ;清除模式位
ORR r0,r0,#SYS_MODE ;設置程序狀態(tài)字的supper模式位
STMDB sp!,{r0} ;從新將SPSR放入堆棧
B EHT_SWI_Exit
EHT_Disable_Interrupts
LDMIA sp!,{r0} ;從堆棧中讀出SPSR
ORR r0,r0,#LOCKOUT ;禁止中斷
STMDB sp!,{r0} ;存儲SPSR到中斷
; B EHT_SWI_Exit
EHT_SWI_Exit
LDMIA sp!,{r0} ;從堆棧中讀出SPSR
MSR SPSR_cf,r0 ;將SPSR放入SPSR_cf
LDMIA sp!,{r0-r2,pc}^ ;寄存器出棧并返回
END
15.1.2 CP15中的寄存器
表15.1給出了CP15主要寄存器的功能和作用。
表15.1 CP15寄存器
寄存器編號基 本 作 用特 殊 用 途
0ID編號(只讀)ID和Cache類型
1控制位各種控制位
2存儲器保護和控制MMU:地址轉(zhuǎn)換表基地址
PU:Cache屬性設置
3內(nèi)存保護和控制MMU:域訪問控制
PU:寫緩存控制
4內(nèi)存保護和控制保留
5內(nèi)存保護和控制MMU:錯誤狀態(tài)
PU:訪問權限控制
6內(nèi)存保護和控制MMU:錯誤狀態(tài)
PU:保護區(qū)域控制
7Cache和寫緩存Cache和寫緩存控制
8內(nèi)存保護和控制MMU:TLB控制
PU:保留
9Cache和寫緩存Cache鎖定
續(xù)表
寄存器編號基 本 作 用特 殊 用 途
10內(nèi)存保護和控制MMU:TLB鎖定
PU:保留
11保留保留
12保留保留
13進程ID進程ID
14保留保留
15芯片生產(chǎn)廠商定義芯片生產(chǎn)廠商定義
15.1.3 寄存器c0
寄存器c0包含的是ARM本身或芯片生產(chǎn)廠商的一些標識信息。當使用MRC指令讀c0寄存器時,根據(jù)第二個操作碼opcode2的不同,讀出的標識符也是不同的。操作碼與標識符的對應關系如表15.2所示。寄存器c0是只讀寄存器,當用MCR指令對其進行寫操作時,指令的執(zhí)行結果不可預知。
表15.2 操作碼和標識符的對應關系
操作碼opcode2對應的標識符寄存器
0b000主標識符寄存器
0b001Cache類型寄存器
其他保留
在操作碼opcode2的取值中,主標識符(opcode2=0)是強制定義的,其他標識符由芯片的生產(chǎn)廠商定義。如果操作碼opcode2指定的值未定義,指令將返回主標識符。其他標識符的值應與主標識符的值不同,可以由軟件編程來實現(xiàn),同時讀取主標識符和其他標識符,并將兩者的值進行比較。如果兩個標識符值相同,說明未定義該標識符;如果兩個標識符值不同,說明定義了該標識符,并且得到該標識符的值。
· 系統(tǒng)可能提供多種類型的存儲器件,如FLASH、ROM、SRAM等;
· Caches技術;
· 寫緩存技術(write buffers);
· 虛擬內(nèi)存和I/O地址映射技術。
大多數(shù)的系統(tǒng)通過下面的方法之一實現(xiàn)對復雜存儲系統(tǒng)的管理。
· 使能Cache,縮小處理器和存儲系統(tǒng)速度差別,從而提高系統(tǒng)的整體性能。
· 使用內(nèi)存映射技術實現(xiàn)虛擬空間到物理空間的映射。這種映射機制對嵌入式系統(tǒng)非常重要。通常嵌入式系統(tǒng)程序存放在ROM/FLASH中,這樣系統(tǒng)斷電后程序能夠得到保存。但是通常ROM/FLASH與SDRAM相比,速度慢很多,而且基于ARM的嵌入式系統(tǒng)中通常把異常中斷向量表放在RAM中。利用內(nèi)存映射機制可以滿足這種需要。在系統(tǒng)加電時,將ROM/FLASH映射為地址0,這樣可以進行一些初始化處理;當這些初始化處理完成后將SDRAM映射為地址0,并把系統(tǒng)程序加載到SDRAM中運行,這樣很好地滿足嵌入式系統(tǒng)的需要。
· 引入存儲保護機制,增強系統(tǒng)的安全性。
· 引入一些機制保證將I/O操作映射成內(nèi)存操作后,各種I/O操作能夠得到正確的結果。在簡單存儲系統(tǒng)中,不存在這樣問題。而當系統(tǒng)引入了Cache和write buffer后,就需要一些特別的措施。
在ARM系統(tǒng)中,要實現(xiàn)對存儲系統(tǒng)的管理通常是使用協(xié)處理器CP15,它通常也被稱為系統(tǒng)控制協(xié)處理器(System Control Coprocessor)。
ARM的存儲器系統(tǒng)是由多級構成的,每級都有特定的容量和速度。
圖15.1顯示了存儲器的層次結構。
① 寄存器。處理器寄存器組可看作是存儲器層次的頂層。這些寄存器被集成在處理器內(nèi)核中,在系統(tǒng)中提供最快的存儲器訪問。典型的ARM處理器有多個32位寄存器,其訪問時間為ns量級。
圖15.1 存儲器的層次結構
?、?緊耦合存儲器TCM。為彌補Cache訪問的不確定性增加的存儲器。TCM是一種快速SDRAM,它緊挨內(nèi)核,并且保證取指和數(shù)據(jù)操作的時鐘周期數(shù),這一點對一些要求確定行為的實時算法是很重要的。TCM位于存儲器地址映射中,可作為快速存儲器來訪問。
③ 片上Cache存儲器的容量在8KB~32KB之間,訪問時間大約為10ns。
?、?高性能的ARM結構中,可能存在第二級片外Cache,容量為幾百KB,訪問時間為幾十ns。
?、?DRAM。主存儲器可能是幾MB到幾十MB的動態(tài)存儲器,訪問時間大約為100ns。
?、?后援存儲器,通常是硬盤,可能從幾百MB到幾個GB,訪問時間為幾十ms。
注意TCM和SRAM在技術上相同,但在結構排列上不同;TCM在片上,而SRAM在板上。
15.1 協(xié)處理器CP15
ARM處理器支持16個協(xié)處理器。在程序執(zhí)行過程中,每個協(xié)處理器忽略屬于ARM處理器和其他協(xié)處理器的指令。當一個協(xié)處理器硬件不能執(zhí)行屬于它的協(xié)處理器指令時,將產(chǎn)生一個未定義指令異常中斷,在該異常中斷處理程序中,可以通過軟件模擬該硬件操作。比如,如果系統(tǒng)不包含向量浮點運算器,則可以選擇浮點運算軟件模擬包來支持向量浮點運算。
CP15,即通常所說的系統(tǒng)控制協(xié)處理器(System Control Coprocesssor)。它負責完成大部分的存儲系統(tǒng)管理。除了CP15外,在具體的各種存儲管理機制中可能還會用到其他的一些技術,如在MMU中除CP15外,還使用了頁表技術等。
在一些沒有標準存儲管理的系統(tǒng)中,CP15是不存在的。在這種情況下,針對協(xié)處理器CP15的操作指令將被視為未定義指令,指令的執(zhí)行結果不可預知。
CP15包含16個32位寄存器,其編號為0~15。實際上對于某些編號的寄存器可能對應多個物理寄存器,在指令中指定特定的標志位來區(qū)分這些物理寄存器。這種機制有些類似于ARM中的寄存器,當處于不同的處理器模式時,某些相同編號的寄存器對應于不同的物理寄存器。
CP15中的寄存器可能是只讀的,也可能是只寫的,還有一些是可讀可寫的。在對協(xié)處理器寄存器進行操作時,需要注意以下幾個問題。
· 寄存器的訪問類型(只讀/只寫/可讀可寫)。
· 不同的訪問引發(fā)的不同功能。
· 相同編號的寄存器是否對應不同的物理寄存器。
· 寄存器的具體作用。
15.1.1 CP15寄存器訪問指令
通常對協(xié)處理器CP15的訪問使用以下兩種指令。
MCR:將ARM寄存器的值寫入CP15寄存器中;
MRC:將CP15寄存器的值寫入ARM寄存器中。
注意通過協(xié)處理器訪問指令CDP、LDC和STC指令對協(xié)處理器CP15進行訪問將產(chǎn)生不可預知的結果。
其中,CDP為協(xié)處理器數(shù)據(jù)操作指令,這個指令初始化一些與協(xié)處理器相關的操作;
LDC為一個或多個字的協(xié)處理器數(shù)據(jù)讀取指令,此指令從存儲器讀取數(shù)據(jù)到指定的協(xié)處理器中;
STC為一個或多個32位字的協(xié)處理器數(shù)據(jù)寫入指令,此指令初始化一個協(xié)處理器的寫操作,從給定的協(xié)處理器把數(shù)據(jù)傳送到存儲器中。
指令MCR和MRC指令訪問CP15寄存器使用通用語法。
語法格式為:
MCR{《cond》} p15,《opcode1=0》,《Rd》,《CRn》,《CRm》{,《opcode2》}
MRC{《cond》} p15,《opcode1=0》,《Rd》,《CRn》,《CRm》{,《opcode2》}
其中:
《cond》為指令的執(zhí)行條件。當《cond》條件域為空時,指令無條件執(zhí)行;
《opcode1》在標準的MRC指令中,為協(xié)處理器的《opcode1》,即操作數(shù)1。對于CP15來說,此操作數(shù)恒為0,即0b000。當針對CP15的MRC指令中《opcode1》不為0時,指令的操作結果不可預知;
《Rd》為ARM寄存器,在ARM和協(xié)處理器交換數(shù)據(jù)時使用。在MRC指令中作為目的寄存器,在MCR中作為源寄存器。
注意r15不能作為ARM寄存器出現(xiàn)在MRC或MCR指令中,如果r15作為《Rd》出現(xiàn)在這里,那么指令的執(zhí)行結果不可預知。
《CRn》是CP15協(xié)處理器指令中用到的主要寄存器。在MRC指令中為源寄存器,在MCR中為目的寄存器。CP15協(xié)處理器的寄存器c0、c1、…、c15均可出現(xiàn)在這里。
《CRm》是附加的協(xié)處理器寄存器,用于區(qū)分同一個編號的不同物理寄存器和訪問類型。當指令中不需要提供附加信息時,將《CRm》指定為C0,否則指令的操作結果不可預知。
《opcode2》提供附加信息,用于區(qū)分同一個編號的不同物理寄存器,當指令中沒有指定附加信息時,省略《opcode2》或者將其指定為0,否則指令的操作結果不可預知。
MCR和MRC指令只能操作在特權模式下,如果處理器運行在用戶模式,指令的執(zhí)行結果不可預知。
注意在用戶模式下,如果要訪問系統(tǒng)控制協(xié)處理器,通常的做法是由操作系統(tǒng)提供SWI軟中斷調(diào)用來完成系統(tǒng)模式的切換。由于不同型號的ARM處理器對此管理差別很大,所以建議用戶在應用時將SWI作為一個獨立的模塊來管理并向上提供通用接口,以屏蔽不同型號處理器之間的差異。
例15.1給出了一個典型的利用SWI進行模式切換的例子。
【例15.1】
典型的在SWI中進行模式切換的例子。利用此例,調(diào)用SWI 0來完成系統(tǒng)模式切換。
EHT_SWI
LDR sp,=EHT_Exception_Stack ;更新SWI堆棧指針
ADD sp,sp,#EXCEPTION_SIZE ;得到棧頂指針
STMDB sp!,{r0-r2,lr} ;保存程序中用到的寄存器
MRS r0,SPSR ;得到SPSR
STMDB sp!,{r0} ;保持SPSR
LDR r0,[lr,#-4] ;計算SWI指令地址
BIC r0,r0,#0xFF000000 ;提取中斷向量號
CMP r0,#MAX_SWI ;檢測中斷向量范圍
LDRLS pc,[pc,r0,LSL #2] ;如果在范圍內(nèi),跳轉(zhuǎn)到軟中斷向量表
B EHT_SWI_Exit ;為定義的SWI指令出口
EHT_Jump_Table
DCD EHT_SU_Switch
DCD EHT_Disable_Interrupts
?。?********************************************************************************
?。挥脩艨稍诖颂砑痈嗟淖远x軟中斷,在此SWI0作為系統(tǒng)保留的軟中斷,調(diào)用例程EHT_SU_Switch,來進行模式切換
??;*********************************************************************************
EHT_SU_Switch
MMU_DISABLE ;轉(zhuǎn)換前禁用MMU
LDMIA sp!,{r0} ;從堆棧中取出SPSR
BIC r0,r0,#MODE_MASK ;清除模式位
ORR r0,r0,#SYS_MODE ;設置程序狀態(tài)字的supper模式位
STMDB sp!,{r0} ;從新將SPSR放入堆棧
B EHT_SWI_Exit
EHT_Disable_Interrupts
LDMIA sp!,{r0} ;從堆棧中讀出SPSR
ORR r0,r0,#LOCKOUT ;禁止中斷
STMDB sp!,{r0} ;存儲SPSR到中斷
; B EHT_SWI_Exit
EHT_SWI_Exit
LDMIA sp!,{r0} ;從堆棧中讀出SPSR
MSR SPSR_cf,r0 ;將SPSR放入SPSR_cf
LDMIA sp!,{r0-r2,pc}^ ;寄存器出棧并返回
END
15.1.2 CP15中的寄存器
表15.1給出了CP15主要寄存器的功能和作用。
表15.1 CP15寄存器
寄存器編號基 本 作 用特 殊 用 途
0ID編號(只讀)ID和Cache類型
1控制位各種控制位
2存儲器保護和控制MMU:地址轉(zhuǎn)換表基地址
PU:Cache屬性設置
3內(nèi)存保護和控制MMU:域訪問控制
PU:寫緩存控制
4內(nèi)存保護和控制保留
5內(nèi)存保護和控制MMU:錯誤狀態(tài)
PU:訪問權限控制
6內(nèi)存保護和控制MMU:錯誤狀態(tài)
PU:保護區(qū)域控制
7Cache和寫緩存Cache和寫緩存控制
8內(nèi)存保護和控制MMU:TLB控制
PU:保留
9Cache和寫緩存Cache鎖定
續(xù)表
寄存器編號基 本 作 用特 殊 用 途
10內(nèi)存保護和控制MMU:TLB鎖定
PU:保留
11保留保留
12保留保留
13進程ID進程ID
14保留保留
15芯片生產(chǎn)廠商定義芯片生產(chǎn)廠商定義
15.1.3 寄存器c0
寄存器c0包含的是ARM本身或芯片生產(chǎn)廠商的一些標識信息。當使用MRC指令讀c0寄存器時,根據(jù)第二個操作碼opcode2的不同,讀出的標識符也是不同的。操作碼與標識符的對應關系如表15.2所示。寄存器c0是只讀寄存器,當用MCR指令對其進行寫操作時,指令的執(zhí)行結果不可預知。
表15.2 操作碼和標識符的對應關系
操作碼opcode2對應的標識符寄存器
0b000主標識符寄存器
0b001Cache類型寄存器
其他保留
在操作碼opcode2的取值中,主標識符(opcode2=0)是強制定義的,其他標識符由芯片的生產(chǎn)廠商定義。如果操作碼opcode2指定的值未定義,指令將返回主標識符。其他標識符的值應與主標識符的值不同,可以由軟件編程來實現(xiàn),同時讀取主標識符和其他標識符,并將兩者的值進行比較。如果兩個標識符值相同,說明未定義該標識符;如果兩個標識符值不同,說明定義了該標識符,并且得到該標識符的值。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 基于ARM處理器的TFT-LCD顯示系統(tǒng) 34次下載
- 基于ARM處理器的禽舍環(huán)境監(jiān)控系統(tǒng) 31次下載
- 鴻蒙內(nèi)核內(nèi)存實現(xiàn)涉及哪些匯編代碼 14次下載
- ARM處理器內(nèi)核的詳細資料概述 15次下載
- AM1707 ARM微處理器英文原版資料詳細概述 0次下載
- OMAPL138B C6-Integra? DSP+ARM? 處理器 6次下載
- Xeon Phi協(xié)處理器的功耗測量 0次下載
- 初識ARM系列處理器 3次下載
- 協(xié)處理器群以小博大Cortex_A15的大小核戰(zhàn)略 5次下載
- 淺談ARM處理器基礎知識 16次下載
- 多核處理器中的超越函數(shù)協(xié)處理器設計 2次下載
- 微機原理--數(shù)學協(xié)處理器 0次下載
- ARM微處理器的編程模型
- 簡述協(xié)處理器發(fā)展歷程及前景展望
- 并行可配置ECC專用指令協(xié)處理器
- 淺談DSSHA1可綜合SHA-1協(xié)處理器 1401次閱讀
- ARM協(xié)處理器接口 1420次閱讀
- 淺談arm處理器的優(yōu)勢 1.2w次閱讀
- 協(xié)處理器的介紹及應用 3858次閱讀
- 解決CPU異常的功臣_系統(tǒng)控制協(xié)處理器的全定制設計 2458次閱讀
- arm的協(xié)處理器有幾個?ARM協(xié)處理器詳解 8823次閱讀
- 驍龍835有協(xié)處理器嗎 6330次閱讀
- 有哪些手機內(nèi)置了協(xié)處理器_五款內(nèi)置協(xié)處理器的手機介紹 1.6w次閱讀
- 手機上的協(xié)處理器有什么作用_蘋果協(xié)處理器是干什么的 2.1w次閱讀
- 淺談ARM處理器的特點和體系結構 1.7w次閱讀
- HBase的協(xié)處理器開發(fā)編碼實例 1824次閱讀
- 協(xié)處理器的三大類數(shù)據(jù)傳送指令 2107次閱讀
- 怎樣將GPU作為CPU的協(xié)處理器工作 1.1w次閱讀
- 協(xié)處理器是什么_intel協(xié)處理器有什么用 2.6w次閱讀
- 常見的五大ARM存儲器之一:協(xié)處理器CP15 1.5w次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統(tǒng)的設計與實現(xiàn)
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發(fā)板設計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多