【ARM】Tiny4412裸板编程之协处理器
00. 目錄
文章目錄
- 00. 目錄
- 01. 開發環境
- 02. 協處理器簡介
- 03. 獲取Main ID
- 04. 獲取CCSIDR
- 05. 獲取SCTLR
- 06. ID_MMFR3
- 07. 附錄
01. 開發環境
- 開發板:Tiny4412SDK標準版 「Tiny4412 SDK 1506」
- 工具:「arm-linux-gcc-4.5.1」 「minicom」 「dnw」
- 平臺:Ubuntu 20.04
02. 協處理器簡介
協處理器(coprocessor),一種芯片,用于減輕系統微處理器的特定處理任務。
協處理器,這是一種協助中央處理器完成其無法執行或執行效率、效果低下的處理工作而開發和應用的處理器。這種中央處理器無法執行的工作有很多,比如設備間的信號傳輸、接入設備的管理等;而執行效率、效果低下的有圖形處理、聲頻處理等。為了進行這些處理,各種輔助處理器就誕生了。需要說明的是,由于現在的計算機中,整數運算器與浮點運算器已經集成在一起,因此浮點處理器已經不算是輔助處理器。而內建于CPU中的協處理器,同樣不算是輔助處理器,除非它是獨立存在。
ARM 微處理器可支持多達 16 個協處理器,用于各種協處理操作,在程序執行的過程中,每個協處理器只執行針對自身的協處理指令,忽略 ARM 處理器和其他協處理器的指令。ARM 的協處理器指令主要用于 ARM 處理器初始化 ARM 協處理器的數據處理操作,以及在ARM 處理器的寄存器和協處理器的寄存器之間傳送數據,和在 ARM 協處理器的寄存器和存儲器之間傳送數據。 ARM 協處理器指令包括以下 5 條: — CDP 協處理器數操作指令— LDC 協處理器數據加載指令— STC 協處理器數據存儲指令— MCR ARM 處理器寄存器到協處理器寄存器的數據傳送指令— MRC 協處理器寄存器到ARM 處理器寄存器的數據傳送指令。
ARM:協處理器包括以下5條:
-
CDP:協處理器數據操作指令。
-
LDC:協處理器數據加載指令。
-
STC:協處理器數據存儲指令。
-
MCR:ARM處理器寄存器到協處理器寄存器的數據傳送指令。
-
MRC:協處理器寄存器到ARM處理器寄存器的數據傳送指令 。
03. 獲取Main ID
B3.17.2 Full list of VMSA CP15 registers, by coprocessor register number
MIDR相關描述31:24位
16:19位描述
訪問方法:
MRC p15, 0, <Rt>, c0, c0, 0 ; Read MIDR into Rtcp15.S文件內容如下
.section .text.align 2.global get_midr get_midr:MRC p15, 0, r0, c0, c0, 0 mov pc, lrtest.c文件內容如下
#include <string.h> #include <adc.h>void (*udelay)(unsigned int) = (void*)0x43e26480; int (*print)(const char *format, ...) = (void*)0x43e11a2c;int main(void) {print("main start\n");print("MIDR: %p\n", get_midr());print("main end\n");return 0; }執行結果
## Starting application at 0x50000000 ... main start MIDR: 413fc090 main end ## Application terminated, rc = 0x0 DengJin #04. 獲取CCSIDR
CCSIDR寄存器介紹
訪問方法
MRC p15, 1, <Rt>, c0, c0, 0 ; Read current CCSIDR into Rtcp15.S文件
.section .text.align 2.global get_ccsidr get_ccsidr:MRC p15, 1, r0, c0, c0, 0mov pc, lrtest.c文件
#include <string.h> #include <adc.h>void (*udelay)(unsigned int) = (void*)0x43e26480; int (*print)(const char *format, ...) = (void*)0x43e11a2c;int main(void) {print("main start\n");print("MIDR: %p\n", get_midr());print("CCSIDR: %p\n", get_ccsidr());print("main end\n");return 0; }執行結果
## Starting application at 0x50000000 ... main start MIDR: 413fc090 CCSIDR: 701fe019 main end ## Application terminated, rc = 0x005. 獲取SCTLR
B4.1.130 SCTLR, System Control Register, VMSA
M, bit[0] MMU enable. This is a global enable bit for the PL1&0 stage 1 MMU. The possible values of this
bit are:
0 PL1&0 stage 1 MMU disabled.
1 PL1&0 stage 1 MMU enabled.
In an implementation that includes the Security Extensions, this bit is Banked between the Secure
and Non-secure copies of the register.
訪問方法
MRC p15, 0, <Rt>, c1, c0, 0 ; Read SCTLR into Rt MCR p15, 0, <Rt>, c1, c0, 0 ; Write Rt to SCTLRcp15.S文件
.section .text.align 2.global get_sctlr get_sctlr:MRC p15, 0, r0, c1, c0, 0mov pc, lrtest.c文件
#include <string.h> #include <adc.h>void (*udelay)(unsigned int) = (void*)0x43e26480; int (*print)(const char *format, ...) = (void*)0x43e11a2c;int main(void) {print("main start\n");print("MIDR: %p\n", get_midr());print("CCSIDR: %p\n", get_ccsidr());print("SCTLR: %p\n", get_sctlr());print("main end\n");return 0; }執行結果
## Starting application at 0x50000000 ... main start MIDR: 413fc090 CCSIDR: 701fe019 SCTLR: 00c5187a main end ## Application terminated, rc = 0x006. ID_MMFR3
B4.1.92 ID_MMFR3, Memory Model Feature Register 3, VMSA
訪問方法
MRC p15, 0, <Rt>, c0, c1, 7 ; Read ID_MMFR3 into Rtcp15.S文件
.section .text.align 2.global get_id_mmfr3 get_id_mmfr3:MRC p15, 0, r0, c0, c1, 7mov pc, lrtest.c文件
#include <string.h> #include <adc.h>void (*udelay)(unsigned int) = (void*)0x43e26480; int (*print)(const char *format, ...) = (void*)0x43e11a2c;int main(void) {print("main start\n");print("MIDR: %p\n", get_midr());print("CCSIDR: %p\n", get_ccsidr());print("SCTLR: %p\n", get_sctlr());print("ID_MMFR3: %p\n", get_id_mmfr3());print("main end\n");return 0; }執行結果
## Starting application at 0x50000000 ... main start MIDR: 413fc090 CCSIDR: 701fe019 SCTLR: 00c5187a ID_MMFR3: 00102111 main end ## Application terminated, rc = 0x007. 附錄
Exynos 4412 SCP_Users Manual_Ver.0.10.00_Preliminary0.pdf
總結
以上是生活随笔為你收集整理的【ARM】Tiny4412裸板编程之协处理器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【ARM】Tiny4412裸板编程之MM
- 下一篇: 【ARM】Tiny4412裸板编程之MM