一、arm的认知及基本概念
(一).arm的基本概念
1. 什么是arm
  arm是一家英国电子公司的名字,全名是Advanced RISC Machine
  这家企业设计了大量高性能、廉价、耗能低的RISC(精简指令集)处理器,ARM公司只设计芯片而不生产,它将
技术授权给世界上许多公司和厂商。目前采用arm技术知识产权内核的微处理器,即通常所说的arm微处理器
 
  所以arm也是对一类微处理器的通称。
 
  arm指令集体系版本号(软件)为V1 ~ V7 目前V1 ~ V3已很少见。从V4版不再与以前的版本兼容。
  arm的CPU系列(硬件)主要有 ARM7 ~ ARM11
 
 
2. 典型的嵌入式处理器
  arm        占市场79.5%  ARM
  mips      占市场13.9%  MIPS
  microSPARC 占市场3.1%  SUN
  PowerPc    占市场2.8%  IBM
  其它      占市场0.8%
 
3. arm的应用范围:
  工业控制:如机床、自动控制等
  无线通信:如手机
  网络应用:如
  电子产品:如音视频播放噐、机顶盒、游戏机、数码相机、打印机
  其它各领域:如军事、医疗、机器人、智能家居等
4.计算机体系结构
  见图:冯.诺依曼计算机体系图
 
  冯.诺依曼体系结构
    处理器使用同一个存储器,经由同一个总线传输
    完成一条指令需要3个步骤:即取指令->指令译码->执行指令
    指令和数据共享同一总线的结构
  哈佛体系结构
    将程序指令存储和数据存储分开
    中央处理器首先到程序指令存储器中读取程序指令。解码后到数据地址,再到相应的数据存储器读取数据,然后执行指令
    程序指令存储与数据存储分开,可以使指令和数据有不同的数据宽度。 
5.复杂指令集与精简指令集
  CISC 复杂指令集:采用冯.诺依曼体系结构。数据线和指令线分时复用(只能通过一辆车)。
      存储器操作指令多 汇编程序相对简单 指令结束后响应中断 CPU电路丰富 面积大功耗大
 
  RISC 精简指令集:采用哈佛体系结构。数据线和指令线分离(同时能通过多辆车)。
      对存储器操作有限 汇编程序占空间大 在适当地方响应中断 CPU电路较少 体积小功耗低
      ARM采用RISC精简指令集 
  Thumb是ARM体系结构中一种16位的指令集。
      从ARMv4T之后,的ARM处理器有一种16-bit指令模式,叫做Thumb,较短的指令码提供整体更佳的编码密度,更有效地使用有限的内存带宽。所有 ARM9 和后来的家族,包括 XScale 都纳入了 Thumb 技术。
      即ARM有两种指令集:RISC、Thumb
6. arm的思想
1) arm体系的总思想:
  在不牺牲性能的同时,尽量简化处理器。同时从体系结构上灵活支持处理器扩展。采用RISC结构。RISC处理器简化了处理器结构,减少复杂功能指令的同时,提高了处理器速度。
  ARM及MIPS都是典型的RISC处理器
2) arm的流水线结构
 
  arm处理器使用流水线来增加处理器指令流的速度,这样可以使几个操作同时进行。并使处理和存储器系统连续操作。
  arm处理器分为三级:取指->译码->执行
      取指:指令从存储器中取出
      译码:对指令使用的寄存器进行译码
      执行:从寄存器组中读取寄存器,执行移位和ALU操作,寄存器被写回到寄存器组中
 
3) ARM处理器支持的类型
      字节  8位
      半字  16位
      字    32位
     
      **所有数据操作都以字为单位
      **ARM指令的长度刚好是一个字,Thumb指令长度刚好是半个字
 
4) ARM处理器状态
      ARM处理器内核使用ARM结构,该结构包含32位的ARM指令集和16位Thumb指令集,因此ARM有两种操作状态
      ARM状态:32位
      Thumb状态:16位
 
5) 处理器模式
      ARM处理器共有7种运行模式:
      用户:  正常程序工作模式,不能直接切换到其它模式
      系统:  用于支持操作系统的特权任务,可以直接切换到其它模式
      快中断:支持高速数据传输及通道处理,FIQ异常响应时进入此模式
汇编语言如何编程      中断:  用于通用中断处理,IRQ异常响应时进入此模式
      管理:  操作系统保护代码,系统复位和软件中断响应时进入此模式
      中止:  用于支持虚拟内存或存储器保护,用于MMU
      未定义:支持硬件协处理器的软件仿真,未定义指令异常响应时进入此模式。
(二)、经典平台硬件组成
    见图:arm硬件组成图
    开发板一般是由一块组成的,有核心器件和外围器件接口等,但是有的是由两块板子组成,主版和核心板,主版上主要是外围接口,外围器件等,核心板上主要是核心器件,还有一些晶振电路等
     
  1.核心板(天嵌 2440)
   
    CPU处理器  S3C2440AL,主频400MHz(最高可达533MHz)
    SDRAM内存  板载64MB SDRAM(标准配置), 32bit数据总线SDRAM时钟频率高达100MHz(支持运行133MHz)
    Nand Flash 板载64MB Nand Flash或256MB Nand Flash(标准配置)
    Nor Flash  板载2MB Nor Flash(最高可升级到8MB)
    CorePower  专业1.25V核心电压供电
    Power      核心板采用3.3V供电
    Powerled  核心板电源指示灯
    核心板接口 接口型号为DC-2.0双列直插
    SDRAM:随机存储器,普遍使用的内存。用作主存。
    NOR Flash和 NAND Flash是现在市场上两种主要的非易失闪存。
          NOR的特点是芯片内执行,应用程序可以直接在flash 闪存内运行,不必再把代码读到系统RAM中。
          NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。
 
  2.主板
    电源
    并口线
    复位
    RTC电源
    RS232电平转换DB9插座
    音频IIS,AC97
    按键、PS/2与IC接口
    数码管
    触摸屏
    以太网卡
    主USB HUB 1转4
  3.寄存器
    见图:ARM模块和内核框图
    寄存器是中央处理器内的组成部份。
    寄存器是有限存贮容量的高速存贮部件,用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。
    IR 用于存储指令
    PC 用于存储程序运行的地址(即当前指令在内存中的位置)
    寄存器是由一个指令的输出或输入可以直接索引到的暂存器组。所有的计算机指令都是进入寄存器后被直接读取
    ARM的汇编编程,本质上就是针对CPU寄存器的编程。
   
    //*******重点  需要背讼*************************************************
    ARM寄存器分为2类:普通寄存器和状态寄存器
 
      (1)通用寄存器和计数器:共32个,15个通用寄存器
        R0 -R7 未备份寄存器
                R0(a1)  R1(a1) R2(a3) R3(a4) R4(v1) R5(v2) R6(v3) R7(v4)
        R8 -R12 备份寄存器
                R8(v5)  R9 (SB,v6) R10(SL,v7) R11(EP,v8) R12(IP)    数据寄存器
        R15(PC)    程序计数器 它的值是当前正在执行的指令在内存中的位置。
                    当指令执行结束后,CPU会自动将PC值加上一个单位,PC值指向下一条即将执行的指令的地址
                    如果通过汇编指令对PC寄存器赋值,就会完成一次程序的跳转(如从子函数跳转回主函数内)
                   
        R14(LR)    链接寄存器 存放子程序的返回地址
                    例如:在主函数内,如果调用子函数,程序会进入到子函数内执行。当子函数执行完毕后,需要回到
                主函数内,所以,在子函数调用前需要将这个地址先保存起来,否则无法到这个地址。
                    LR用于保存这个地址,这个地址也称为子程序返回地址。当子函数结束后,再将LR内的地址赋给PC即可。
                   
                    如果子程序再调用孙程序,LR如何保存地址呢?
                    先把当前LR内的值压入内存的栈区,然后LR再保存孙程序的返回地址。当孙程序执行完后通过PC跳转到
                子程序内,此时将栈区内的子程序返回地址取出保存在LR内。当子程序执行完
后,再通过PC跳转到主函数内。
       
        R13(SP)    栈指针寄存器 用于存放堆栈的栈顶地址。
                    SP相当于指针变量,保存的是栈顶的地址,出栈时,从SP指向的内存中取出数据,入栈时将新的内存地址

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。