ARM学习笔记(二)

原创 2007年10月14日 19:46:00





嵌入式处理器分类

目前的嵌入嵌入式处理器按其体系结构不同可分为五大类:
  ARM(Advance RISC Machine)
  MIPS
  POWER PC
  X86
  SH系列

ARM体系结构的版本(V1-V6)

每一个ARM处理器都有一个特定的指令集架构ISA(Instruction Set Architecture),每一个ISA版本可以有多种   不同的处理器实现。
  ARM ISA至今已有六种不同版本V1-V6:
  
        V1-V2寻址空间都为64M;
  V3寻址空间扩充到32位(4G),增加了当前程序状态寄存器CPSR(Current Program Status Register)和程序    状态保存(备份)寄存器SPSR(Saved Program Status Register)以便处理异常;
  V4为目前应用最广的体系结构,在V3的基础上增加了16位的Thumb指令集;
  V5-V6。

ARM处理器的数据类型

字(Word):ARM体系结构中字长为32位,其它8/16位处理器结构中字长一般为16位;
  半字(Half-Word):16位;
  字节(Byte):8位。

ARM微处理器的工作状态

ARM微处理器一般有两种工作状态,并可能两种状态之间切换。
  1ARM状态:此时处理器执行32位的字对齐的ARM指令;
  2Thumb状态:此时处理器执行16位的半字对齐的Thumb指令。

ARM处理器的工作模式

        1User:非特权模式,也是正常程序执行的模式,大部分任务在这种模式下执行;
  2FIQ:当一个高优先级的中断(fast)产生时会进入这种模式,用于高速数据传输和通道处理;
  3IRQ:当一个低优先级的中断(normal)产生时会进入这种模式,用于通常的中断处理;
  4Supervisor:当复位或软中断指令执行时会进入这种模式,是供操作系统使用的一种保护模式;
  5Abort:当存取产生异常时进入这种模式,用于虚拟存储及存储保护;
  6Undef:当执行未定义指令时会进入这种模式,用于软件仿真硬件的协处理器;
  7System:使用和User模式相同寄存器组的特权模式,用于完成特权级的操作系统任务。
  
  其中2-6为异常模式(Exception Mode),2-7为特权(Privileged Mode)模式。
  
  模式的改变方法有:软件控制(通过软件改变CPSR的模式位,外部中断,异常处理。通常在User模式下不        能访问受保护的系统资源,一般不能改变模式,异常发生时可能导致模式改变。

ARM寄存器描述

ARM有37个32位长的寄存器,其中:
    1个用作PC(Program Counter);
    1个用作CPSR(Current Program Status Register);
    5个用作SPSR(Saved Program Status Register);
    30个通用寄存器(General-purpose registers includes program counter)。
  当前的处理器工作模式决定那些寄存器可以操作,任何模式都可以存取:
    相应的R0-R12的子集;
    相应的R13(The Stack Pointer,堆栈指针寄存器)SP;
    相应的R14(The Subroutine Link Register,子程序连接寄存器)LR;
    相应的R15(The Program Counter);
    相应的CPSR(Current Program Status Register)。
  特权模式(除System外)还可以存取SPSR(Saved Program Status Register)。

  通用寄存器包括R0-R15,可分为三类:
    未分组寄存器(R0-R7);
    分组寄存器(R8-R14);
    程序计数器PC(R15)。
  
  寄存器R15用作PC,由于ARM体系结构采用了多级流水线技术,对于ARM指令集而言,R15-程序计数器总   是指向当前指令的下两条指令的地址,即PC的值为当前指令的地址加上8个字节。
  寄存器R16用作CPSR,可在任何CPU工作模式下被访问,它包括条件标志位,中断禁止位,当前处理器模  式标志位以及其它一些控件和状态位。
    每一种CPU工作模式下都有一个专用的物理状态寄存器SPRS(备份程序状态寄存器),当异常发        生时SPRS用于保存当前CPRS的值,当从异常中退出时可由SPSR恢复CPSR。
       
        程序状态寄存器
       
31 30 29 28 27  26位到第8位 7 6 5 4 3 2 1 0
N Z C V Q reserved for future expansion I F T M M M M M


        其中各位的具体含义如下:
         条件码标志的具体含义
                 N(negative):当用两个用补码表示的带符号数进行运算时,N=1表示运算结果为负,N=0表示结果为                                         正或0;
                 Z(Zero):Z=1表示运算结果为0,Z=1表示运算结果为非零;
                 C(Carry:进位/借位):有4种方法设置C值
                        加法运算(包括比较指令CMN),当运算结果产生进位时C=1,否则C=0;
                        减法运算(包括比较指令CMP),当运算结果产生了借位(无符号溢出)时C=0,否则C=1;
                        对移位操作,C值为移位结果的最后一位;
                        对于其它非加减法指令,C值通常不变。
                 V(Overflow):有两种方法设置V值
                        对于加减法运算,当操作数和运算结果为二进制的补码形式表示的带符号数时,V=1表示符号位溢                        出;对于其它非加减法运算指令,C值通常不变。
                Q:有ARM V5及以上版本E系列处理器中,用Q位表示增强的DSP运算指令是否发生了溢出,在其它版                       本的处理器中,Q标志位无效。
          中断禁止位I,F:
                I=1,禁止IRQ中断;
                F=1,禁止FRQ中断。
          T标志位反映处理器的运行状态
               对ARM体系结构V5及以上的版本的T系列处理器,T=1表示运行于Thumb状态,T=0表示运行于                 ARM状态。
          模式位M[4:0]的值,处理器模式,可访问的寄存器
           M[4:0]=0b10000,用户模式(User),R0-R14、PC、CPSR;
           M[4:0]=0b10001,FIQ模式,R0-R7、R8_fiq-R14_fiq、PC、CPSR、SPSR_fiq;
           M[4:0]=0b10010,IRQ模式,R0-R12、R13_irq、R14_irq、PC、CPSR、SPSR_irq;
           M[4:0]=0b10011,Supervisor模式,R0-R12、R13_svc、R14_svc、PC、CPSR、SPSR_svc;
           M[4:0]=0b10111,Abort中止模式,R0-R12、R13_abt、R14_abt、PC、CPSR、SPSR_abt;
           M[4:0]=0b11011,Undel未定义模式,R0-R12、R13_und、R14_und、PC、CPSR、SPSR_und。


ARM  Register  organization


 
Privileged modes
   
Exception modes
User System SuperVisor Abort Undefined Interrupt Fast Interrupt
R0 R0 R0 R0 R0 R0 R0
R1 R1 R1 R1 R1 R1 R1
R2 R2 R2 R2 R2 R2 R2
R3 R3 R3 R3 R3 R3 R3
R4 R4 R4 R4 R4 R4 R4
R5 R5 R5 R5 R5 R5 R5
R6 R6 R6 R6 R6 R6 R6
R7 R7 R7 R7 R7 R7 R7
R8 R8 R8 R8 R8 R8 R8_fiq
R9 R9 R9 R9 R9 R9 R9_fiq
R10 R10 R10 R10 R10 R10 R10_fiq
R11 R11 R11 R11 R11 R11 R11_fiq
R12 R12 R12 R12 R12 R12 R12_fiq
R13 R13 R13_svc R13_abt R13_und R13_irq R13_fiq
R14 R14 R14_svc R14_abt R14_und R14_irq R14_fiq
PC PC PC PC PC PC PC
 
CPSR CPSR CPSR CPSR CPSR CPSR CPSR
    SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq
图中阴影部分表示分组寄存器

指令集体系结构 - ISA

1. 指令集体系结构(Instruction-Set Architecture, ISA)1.1 定义一个处理器支持的指令和指令的字节级编码就是这个处理器的ISA,包括很多个部分: 指令集 指令集编码...
  • u010297957
  • u010297957
  • 2015-11-24 13:30:07
  • 6382

ARM体系结构

1. ARM概述 1.1 Application Cortex Processors (ARM Cortex 应用处理器 )        • Cortex™-A 系列 - 开放式操作系统的高...
  • MyArrow
  • MyArrow
  • 2013-01-31 14:40:09
  • 17586

ARM体系结构的版本v1-v8

ARM指令集体系结构,从最初开发至今已有了重大改进,而且将会不断完善和发展。为了精确表达每个ARM实现中所使用的指令集,到目前ARM体系结构共定义了8个版本,以版本号v1~v8表示,各版本特点如下。 ...
  • sinat_28494049
  • sinat_28494049
  • 2015-05-26 12:36:24
  • 1578

[持续更新]JavaScript学习笔记(二)

1.变量作用域 这个是个重点,也是前端考察的要点。 一个变量的作用域(scope):是程序员代码中定义这个变量的区域。 这是JavaScript权威指南第六版中对作用域的定义。简单的来说:一个变量定义...
  • u014267351
  • u014267351
  • 2015-08-12 22:11:55
  • 405

SpringMVC学习笔记(二): 日常使用功能

七、@RequestBody 和 @ResponseBody (一)@RequestBody: 1、作用: 1)该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMes...
  • u012228718
  • u012228718
  • 2015-01-27 22:43:19
  • 1297

RTOS, ISA, Microarchitecture, ARM, etc.

以前做的项目,都是在单片机或DSP上裸跑,代码写起来那叫一个费劲,要自己用定时器做时间片,自己做任务调度,自己写非常底层的代码(比如说将Byte转为Char或String)。以后项目的软件复杂度肯定越...
  • zinnc
  • zinnc
  • 2016-01-17 23:37:38
  • 455

比特币源码学习笔记(二)

第二章 本章继上一章交易创建之后介绍比特币客户端序列化数据的过程。 比特币客户端所有的序列化函数均在serliaze.h中实现。其中,CDataStream类是数据序列化的核心结构。 CDataStr...
  • g2com
  • g2com
  • 2017-03-22 07:57:55
  • 2072

ARM学习笔记1

要了解arm的体系结构,首先要先了解相关的术语。比如什么是ARM、什么是RISC、CISC、架构、内核、处理器、SOC、统一编址、独立编址....... 1.什么是ARM? ARM是一家IP(知识产权...
  • hyl621
  • hyl621
  • 2017-04-26 16:01:48
  • 130

ARM学习笔记(二)

嵌入式处理器分类目前的嵌入嵌入式处理器按其体系结构不同可分为五大类:  ARM(Advance RISC Machine)  MIPS  POWER PC  X86  SH系列ARM体系结构的版本(V...
  • ZOLoveGD
  • ZOLoveGD
  • 2007-10-14 19:46:00
  • 1574

cmake学习笔记(五)

在cmake 学习笔记(三) 中简单学习了 find_package 的 model 模式,在cmake 学习笔记(四)中了解一个CMakeCache相关的东西。但靠这些知识还是不能看懂PySide使...
  • dbzhang800
  • dbzhang800
  • 2011-04-22 12:05:00
  • 8254
收藏助手
不良信息举报
您举报文章:ARM学习笔记(二)
举报原因:
原因补充:

(最多只允许输入30个字)