星期四, 9月 07, 2006

ARM9 MMU : the coprocessor of ARM core

mmu (memory management unit)負責virtual-physical位址的mapping動作,ARM chip的 MMU是以coprocessor的方式提供服務的,在arm的定義(設計)中,mmu屬於coprocessor 15。
所以arm core要控制mmu就要藉由coprocessor溝通指令: mrc, mcr。

mrc/mcr的instruction syntax是:
<MCR|MRC>{cond} p#,<expression1>,Rd,cn,cm{,<expression2>}
MRC : 將coprocessor的register內容搬到ARM core register中
MCR : 將ARM core register的資料copy到coprocessor中
{cond} : 條件執行
p# :所要操作的 coprocesspr index (number?)
expresion1 : 要coprocessor執行的命令
.有關ARM MMU 的內容在fuber的arm bible中有說明。

舉例;
 mrc p15, 0, r0, c1, c0, 0
對coprocessor15(mmu)動作,要求coprocessor 將他的C0, C1 register作operation 0-0的操作,然後把結果放到 r0。
因為mmu的instruction中,CRm沒用到,所以上面的instruction 中c0沒用。還有mmu是經由register控制的,沒有內部operation,所以operation固定是0。
所以mmu的控制指令,只有上述紅色部分有效。
上述命令也就是:
將mmu的c1 register load到r0
MMU的protection register R1 是Configuration Register,
bit 31 : iA : 在940T中控制clock
bit 30: nf : 在940T中控制clock

沒有留言:

網誌存檔