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
图中阴影部分表示分组寄存器

吴恩达机器学习笔记_第二周

多元线性回归的情况: 符号表示方法,上标表示第几个样本,下标表示第几个特征。   多元线性回归的梯度下降: 当代价函数有多个参数时(即多个特征时):   使用梯度下降实用技...
  • hunterlew
  • hunterlew
  • 2016年04月11日 21:31
  • 2899

《基于ARM的嵌入式系统设计与开发》学习笔记

目录   第1章 嵌入式系统基本概述   1.1 嵌入式系统的概念            嵌入式系统:嵌入到对象体系中的专用计算机系统。嵌入性、专用性、计算机系统是其三大基本要素...
  • maochengtao
  • maochengtao
  • 2014年09月24日 15:37
  • 1048

arm-linux内存管理学习笔记(1)-内存页表的硬件原理

学习内核的内存管理如果脱离了MMU的硬件原理,只去学习其软件逻辑,真的很难懂。说到底,软件代码的逻辑是为硬件服务,只是为了充分发挥硬件的各项功能,因此学习linux的内存管理机制,首先要学习下该处理器...
  • skyflying2012
  • skyflying2012
  • 2016年04月05日 16:40
  • 3728

朱老师ARM裸机学习笔记(二):S5PV210的内存映射

朱老师ARM裸机学习笔记(二):S5PV210的内存映射 网址:http://blog.csdn.net/kevin_mr/article/det...
  • a746742897
  • a746742897
  • 2016年10月24日 08:26
  • 1441

arm64 linux 学习笔记二

一些关键的宏下面是启动阶段用到的一些宏在测试平台上的值,当前linux使用的是三级页表,4KB小页。#define __pa(x) __virt_to_phys((unsigned long)(x))...
  • lidan113lidan
  • lidan113lidan
  • 2015年09月24日 16:35
  • 1303

U-Boot学习笔记(二):U-Boot--arm--Start.S的分析

声明:该贴是通过参考其他人的帖子整理出来,从中我加深了对uboot的理解,我知道对其他人一定也是有很大的帮助,不敢私藏,如果里面的注释有什么错误请给我回复,我再加以修改。有些部分可能还没解释清楚,如果...
  • sdsh1880gm
  • sdsh1880gm
  • 2016年12月06日 15:03
  • 141

arm-linux内核启动学习笔记(二)(废弃)

Part2:(cache_on,call_kernel]源码中宏太多,这里直接看反汇编后的代码:ROM:00000064 BL cache_on ; 进cache_on之前: ROM:0000006...
  • lidan113lidan
  • lidan113lidan
  • 2015年12月02日 17:15
  • 503

ARM学习笔记 (二)存储系统

CP15: 用于存储管理的系统控制协处理器。   Translate Table页表是在内存中用来存放虚拟地址和物理地址转换的映射关系表, C2就是用来存放页表的基地址(也就是页表有可能会更新);...
  • htjacky
  • htjacky
  • 2013年12月20日 09:49
  • 651

arm-linux内核启动学习笔记(二)

文章来源:http://blog.csdn.net/lidan113lidan/article/details/46225209 Part3[call_kernel,start_kernel) 内...
  • ffmxnjm
  • ffmxnjm
  • 2017年03月29日 16:54
  • 176

【ARM学习笔记】实验二:S3C2440A的GPIO输入实验

在实验一中,研究了如何输出高低电平。 本实验来研究了如何接收高低电平,我们知道,GPIO的输入功能的实际上是电压测量,不会形成通路。 实验2:在下面的电路中: 假设我们将GPG11设置为输入...
  • elitah
  • elitah
  • 2013年11月27日 14:30
  • 821
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ARM学习笔记(二)
举报原因:
原因补充:

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