協處理器CP15


在基於ARM的嵌入式應用系統中,存儲系統通常是通過系統控制協處理器CP15完成的。ARM處理器使用協處理器15(CP15)的寄存器來控制cache、TCM和存儲器管理。CP15包含16個32位的寄存器,其編號為0~15。

CP15訪問CP15寄存器的指令

MCR ARM寄存器到協處理器寄存器的數據傳送

MRC 協處理器寄存器到ARM寄存器的數據傳送

MCR指令和MRC指令只能在處理器模式為系統模式時執行,在用戶模式下執行MCR指令和MRC指令將會觸發未定義指令的異常中斷。

MCR指令

MCR指令將ARM處理器的寄存器中的數據傳送到協處理器寄存器中。如果協處理器不能成功地執行該操作,將產生未定義的指令異常中斷。

指令語法格式

MCR{<cond>} <p>,<opcode_1>,<Rd>,<CRn>,<CRm>{,<opcode_2>}
MCR{<cond>} p15,0,<Rd>,<CRn>,<CRm>{,<opcode_2>}

其中,<cond>為指令執行的條件碼。當<cond>忽略時指令為無條件執行。

<opcode_1>為協處理器將執行的操作的操作碼。對於CP15協處理器來說,< opcode_1>永遠為0b000,當< opcode_1>不為0b000時,該指令操作結果不可預知。

<Rd>作為源寄存器的ARM寄存器,其值將被傳送到協處理器寄存器中。

<CRn>作為目標寄存器的協處理器寄存器,其編號可能是C0,C1,…,C15。

<CRm>和<opcode_2>兩者組合決定對協處理器寄存器進行所需要的操作,如果沒有指定,則將為<CRm>為C0,opcode_2為0,否則可能導致不可預知的結果。

使用示例

下面的指令從ARM寄存器R4中中將數據傳送到協處理器CP15的寄存器C1中。其中R4為ARM寄存器,存放源操作數,C1、C0為協處理器寄存器,為目標寄存器,opcode_1為0,opcode_2為0。

MCR p15, 0, R4, C1, C0, 0

MRC指令

MRC指令將協處理器的寄存器中的數值傳送到ARM處理器的寄存器中、如果協處理器不能成功地執行該操作,將產生未定義的指令異常中斷。

指令語法格式

MRC{<cond>} <p>,<opcode_1>,<Rd>,<CRn>,<CRm>{,<opcode_2>}
MRC{<cond>} p15,0,<Rd>,<CRn>,<CRm>{,<opcode_2>}

參數用法同MCR指令

CP15中的寄存器介紹

寄存器0數據格式

寄存器1數據格式

附圖1:

附圖2:

詳見PPT文檔,來自於百度文庫

轉自:http://simengru.blog.163.com/blog/static/54386860201010301111898/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM