2013-10-23 67 views
3

我是ARM的新手,並試圖理解MRC指令。瞭解ARM7上的MRC

據我瞭解,MRC將讀取協處理器寄存器並將其放入主Core寄存器。

現在,協處理器連接到主內核,用於控制主內核的內存子系統。協處理器如何連接到主內核處理器。任何人都可以指向一些好的Digram?

現在,這低於上ARM7 CPU內核指令

/* workaround to disable secure state */ 
    mrc  p15, #0, r0, c1, c1, #0 
    orr  r0, r0, #1 
    mcr  p15, #0, r0, c1, c1, #0 
    isb 

現在,我只是找不到什麼在這裏MRC指令回事

1.首先參數MRC是協處理器編號(P0如何與p15不同)。

2.第二個參數是協處理器的opcode1(不確定)。

3.第三個參數是主核心寄存器(與它一起)。

4.fourth和fvth argumnet是協處理器寄存器(c1,#0的結果存儲到c1)?

5.Agin final最後一個參數是opcode2(不確定)。

感謝

+0

請看[協處理器問題](http://stackoverflow.com/search?q= [arm] +是%3A問題+協處理器)。像[什麼是MRC命令](http://stackoverflow.com/questions/7688372/what-is-the-function-of-the-additional-coprocessor-register-of-the-mrc-command),[Peter Cockerell ](http://www.peter-cockerell.net/aalp/html/app-a.html)等。 –

+0

「MRC」/「MCR」指令是通用的。你必須參考具體文件。 ** VFP **,**氖**和** CP15 **。 ** CP15 **是所有非指令集內置的東西,適用於** OS程序員**。它可以**包括** MMU **,*緩存控制*,*保護單元*,*快速上下文切換*,*寫緩衝區*,* TrustZone *,* HyperVisor *,*矢量表*等* * CP15 **不會像指令集一樣保持**向後兼容**。 –

+0

感謝@artlessnoise這些有用的鏈接。 –

回答

19

協處理器在ARM是一個誤導性的概念。它是通過核心指令集不公開的可選功能塊的簡寫。 ARM CPU是模塊化的。這些體系結構的實施者可能會或可能不會在芯片上放置一些CPU硬件。內存管理單元(MMU)就是一個例子。還有其他的,比如硬件調試工具。這些確實是由協處理器號碼(pXX)確定的,因此可以同時存在多個協處理器。 MMU的協處理器號碼傳統上是p15。協處理器p0..p14與內存管理無關,可能不存在。例如,調試子系統是p14。

MRC和MCR命令用於向協處理器發送命令。助記符再一次有些誤導 - 命令的效果可能不僅僅是註冊動作。這更像是MRC代表「向協處理器發送命令並返回一些數據」,MCR是「向協處理器發送命令並傳遞一些數據」。想想那樣。這就是操作碼的作用 - 這是協處理器的命令。有時,具有特定協同操作碼和操作碼的MCR/MRC命令甚至可以在彙編程序中獲得單獨的助記符(例如,FPU命令)。

協處理器操作碼和寄存器編號的具體細節因不同的處理器而異。由於您感興趣的是MMU,請閱讀該特定的MMU;它會解釋具體操作如何映射到操作碼和副本寄存器號碼。

+0

謝謝@Seva您的回答。可能是愚蠢的問題,但我可以說協處理器不是一個物理實體,它只是另一套指令運行,並控制像MMU子系統這樣的各種子系統?還可以請您提供一些文檔我可以閱讀你建議我閱讀的內容。 –

+2

像緩存和fpu等,它是一個物理實體。您應該能夠查看臂芯的技術參考手冊以查看可用於啓用/禁用邏輯的可選肩帶等。雖然您可以看到它們中的一些,但沒有手臂邏輯本身。注意浮點單元傳統上也只是協處理器,你可以從指令的機器編碼中得知。 –

+1

這不是一個單獨的芯片,但它是物理的。這是CPU芯片上的一個區域,用於實現這些功能。 –