ARM相关概念

一,相关概念

1.汇编指令:执行一条汇编指令,可以完成某个特定功能

2.汇编指令集:很多条指令的集和

3.架构:根据指令集设计的抽象模式

4.内核:操作系统的核心,arm公司根据不同的架构,设计出不同的内核

5.SOC:system on chip 片上系统 (系统级芯片),架构上SOC=MCU+外围控制器

6.常见简称:

MPU:Microprocessor Unit微处理器,高端处理器,运行linux操作系统

MCU:Microcontroller Unit微控制单元,运行裸机开发

CPU:Central Processing Unit 中央处理器

GPU:graphics processing unit图形处理器

FPU:floating point unit 浮点处理单元

扫描二维码关注公众号,回复: 16353580 查看本文章

DSP:Digital Signal Processing 数字信号处理

FPGA: Field Programmable Gate Array 可编程逻辑阵列

MMU: Memory Management Unit 内存管理单元

二,常见ARM产品分布

1.A系列:可以运行Linux操作系统,手机,平板,电脑

        v7架构:属于32位处理器

        v8架构:属于64位处理器,向下兼容32位处理器

2.M系列:物联网种用的比较多,单片机开发中使用,可以运行小型操作系统

3.R系列:常用于实时性操作比较高的场合,如汽车电子,摄像机等

三,交叉编译链

1.为什么安装交叉编译工具链

Ubuntu是x86架构,目标板是ARM架构,编译出来的程序无法直接运行,需要使用交叉编译工具链将程序编译生成ARM架构指令集的文件

四,RISC和CISC指令集

指令周期:执行一条指令所需要的事件

指令宽度:指令编译成机器码,占用的代码段空间

1.RISC===精简指令集(ARM架构):在负载指令集种提取一些比较常用和简单的指令集,指令周期和指令宽度是固定的。

        执行:1.  arm-linux-gnueabihf-gcc -marm 1.c

                  2.   file a.out

        反汇编 : arm-linux-guneabihf-objdump -D a.out > a.dis

2.CISC===复杂指令集(X86架构):指令周期和指令宽度不固定

        反汇编:objdump -D a.out > a.dis

五,ARM-V7和ARM-V8,Thumb指令集

1.v7属于32位架构,v8属于64位架构,v8向下兼容v7架构

2.v7指令占32位空间,一次可以完成32位数据的运算

  v8指令占32位空间,一次可以完成64位数据的运算

3.Thumb指令集:支持32位 / 16位。一条指令占16位内存空间

4.v7架构寻址空间 0~2^32-1, v8架构寻址空间0~2^64-1

六,ARM处理器工作模式

 A7核: 1.特权模式:1.SVC,复位模式

                                2.FIQ,快速中断模式

                                3.IRQ,普通中断模式

                                4.undef,未定义模式

                                5.abort,终止模式:1)取数据终止模式,2)取指终止模式

                                6.system,系统模式

        2.非特权模式:user,用户模式,执行用户相关代码

M4核:   1.线程模式:正常运行代码运行模式

                2.异常模式:中断当前正在执行程序,执行中断处理程序,中断程序执行完成后,回到代码原处继续执行代码

总计:在特定的模式下,执行特定的代码,完成某个特定的功能。

特权模式比非特权模式权限高,工作模式可以进行切换:1)软件编程切换 2)外部硬件中断进入。

系统模式和用户模式共用一套寄存器。

arm处理器7种工作模式,cortex另有一种 monitor安全监控模式

七,ARM寄存器组织

1.register变量:寄存器变量,运行速度比较快,不能取地址,只能通过编号进行访问

2.volatile变量:对地址进行操作时,需要在变量前加上volatile,保证每次去内存中取值,而不是在cache缓存器种取值

寄存器:属于核内部的存储器,一般存放暂时参与运算的数据

3.每种工作模式下,都有自己的寄存器,user和system共用一套寄存器,有私有寄存器时,不可以访问共有寄存器,没有私有寄存器,可以访问共有寄存器

4.cortex有43个寄存器,arm有37个寄存器

八,特殊功能寄存器

1.sp----the stack pointer 栈指针寄存器:指向栈空间某一片地址,压栈和出栈时需要移动栈指针

2.lr----the linking register 链接寄存器:保存函数返回地址

3.pc----program counter 程序计数器:指向当前取值指令的地址,pc中的值会自动+4,指向下一条指令

4.cpsr----currented program statued register 当前程序状态寄存器:用于保存当前程序的状态

5.spsr----saved program statued register 保存程序状态寄存器:保存cpsr寄存器中的值

cpsr当前状态寄存器详解:

N[31]:执行结果是否为负数,N=1:负数,N=0:非负数(negative)

Z[30]:结果是否为0 ,Z=1:零,Z=0:非零 (zero)

C[29]:进位 / 借位标志位 (carry)

进位:加法运算产生进位标志位,低32位寄存器向高32位寄存器进行进位

        C = 1:低32位寄存器向高32位寄存器产生进位

        C = 0:低32位寄存器向高32位寄存器没有产生进位

借位:减法运算产生借位标志位,低32位寄存器向高32位寄存器进行借位

        C = 0:低32位寄存器向高32位寄存器进行借位

        C = 1:低32位寄存器向高32位寄存器没有没有进行借位

V[28]:符号位,V=1:变化,V=0:没有变化

I[7]:IRQ中断标志位

        I = 1:屏蔽IRQ中断标志位

        I = 0:不屏蔽IRQ中断标志位

F[6]:FRQ中断标志位

        F = 1:屏蔽FIQ中断标志位

         F = 0:不屏蔽FIQ中断标志位

T[5]:状态标志位 (state)

        T = 0:ARM状态,执行arm指令集,一条汇编指令占用4字节空间

        T = 1:thumb状态,执行thumb指令集,一条汇编指令占用2字节空间

M[4:0]:模式位 (mode)

10000 User mode;

10001 FIQ mode;

10011 SVC mode;

10111 Abort mode;

11011 Undef mode;

11111 System mode;

10110 Monitor mode;

10010 IRQ mode;

猜你喜欢

转载自blog.csdn.net/MaGuangming001/article/details/132480970
今日推荐