3.ARM基本概念

ARM基本概念

  • 一、RISC结构特性

    • RISC(Reduced Instruction Set Computer)精简指令集处理器

      • RISC把着眼点放在如何使计算机的结构更加简单和如何使计算机的处理速度更加快速上。RISC选取了使用频率高的简单指令,抛弃复杂指令,固定指令长度,指令多为单周期指令,在功耗、体积、价格等方面有很大优势,多用于嵌入式领域
      • ARM、MIPS
    • CISC(Complex Instruction Set Computer)复杂指令集处理器

      • 侧重于硬件执行指令的功能性,CISC指令及处理器的硬件结构复杂。CISC指令复杂,指令长度与周期不固定,在处理能力上有优势
      • INTEL、AMD
  • 二、ARM工作模式(USA、UFI、SM八大模式)

    • 1、用户模式(USR:User)

      • 用户模式是用户程序的工作模式,它运行在操作系统的用户态,它没有权限去操作其它硬件资源。
        只能执行处理自己的数据,也不能切换到其它模式下,要想访问硬件资源或切换到其它模式只能通过软中断或产生异常
    • 2、系统模式(SYS:System)

      • 系统模式是特权模式,不受用户模式的限制
        用户模式和系统模式共用一套寄存器
        操作系统在该模式下可以方便的访问用户模式的寄存器,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源
    • 3、中止模式(ABT:Abort)

      • 中止模式用于支持虚拟内存或存储器保护
        当用户程序访问非法地址,没有权限读取的内存地址时,会进入该模式
        linux下编程时经常出现的segment fault通常都是在该模式下抛出返回的
    • 4、未定义模式(UDF:Undefined)

      • 未定义模式用于支持硬件协处理器的软件仿真,CPU在指令的译码阶段不能识别该指令操作时,会进入未定义模式。
    • 5、快速中断模式(FIQ:Fast Interrupt Request)

      • 快速中断模式是相对一般中断模式而言的,它是用来处理对时间要求比较紧急的中断请求,主要用于高速数据传输及通道处理中。
    • 6、一般中断模式(IRQ:Interrupt Request)

      • 一般中断模式也叫普通中断模式,用于处理一般的中断请求,通常在硬件产生中断信号之后自动进入该模式,该模式为特权模式,可以自由访问系统硬件资源。
    • 7、管理模式(SVC:Supervisor)

      • 管理模式是CPU上电后默认模式,因此在该模式下主要用来做系统的初始化,软中断处理也在该模式下。当用户模式下的用户程序请求使用硬件资源时,通过软件中断进入该模式。
        说明:系统复位或开机、软中断时进入到SVC模式下
    • 8、安全监管模式(MON:Monitor)

      • 为了安全而扩展出的用于执行安全监控代码的模式;也是一种特权模式。
        TrustZone在概念上将SoC的硬件和软件资源划分为==安全(Secure World)和非安全(Normal World)==两个世界,所有需要保密的操作在安全世界执行(如指纹识别、密码处理、数据加密),其余操作在非安全世界执行(如用户操作系统、各种应用程序等),安全世界和非安全世界通过一个名为 Monitor Mode的模式进行转换
      • ARM_Cortex-A安全监管模式
    • ARM系列有7个基本工作模式,Cortex-A系列有8种基本工作模式;

      除用户模式以外,其余的所有6种模式称之为非用户模式,或特权模式(Privileged Modes);

      其中除去用户模式和系统模式以外的5种又称为异常模式(Exception Modes),常用于处理中断或异常,以及需要访问受保护的系统资源等情况。

    • ARM工作模式
  • 三、寄存器

    • R0-R10:存放用户数据

    • R11:fp:frame-pointer 用来记录一个栈空间的开始地址

    • R12:ip:The Intra-Procedure-Call scratch register 用来临时存储sp

    • R13 :sp:stack pointer 栈指针寄存器,每一种模式有自己的 R13,所以允许每一种异常都有自己的堆栈指针

    • R14:lr: link register发生跳转的时候,用来保存R15(PC)寄存器的值,每一种模式有自己的 R14

    • R15:pc:program counter

      用来存放CPU将要执行的指令所在的内存地址

      通常用作程序计数器

      在程序开始执行前,将程序指令序列的起始地址,即程序的第一条指令所在的内存单元地址送入PC,CPU 按照 PC的指示从内存读取第一条指令。

      当执行指令时,CPU自动地修改PC 的内容,即每执行一条指令PC增加一个量,使 PC总是指向正在读取的指令地址

    • CPSR:Current Program Status Register 当前程序状态寄存器,用来记录当前CPU状态

      CPSR

      if(a > b), CPU怎么判断,看NZCV;
      
      a-b N置1 a < b
      
      a-b Z置1 a = b
      
      232位数相加,结果为33位,产生进位 C置1
      
      减的时候减不掉 借位来减 借位C置0
      
      超过了一个类型范围,char -128~127 超过了 V置1 
      
    • SPSR:Saved Program Status Register 备份程序状态寄存器,异常产生的时候,用来保存CPSR的值

      特权模式下,私有的 SPSR (Saved Program StatusRegister) ,当一个异常发生时保存当前的CPSR 值。结合连接寄存器可使处理器返回先前的状态(异常产生会去到其他模式去执行,执行完成后再返回以前的状态,系统模式和用户模式没有,因为其他模式都是异常模式)

      共享的寄存器要注意保存

    • 寄存器

  • 四、Keil4软件

    • 更换编译器

      • Keil4自带的编译器识别不了,必须更换,这个是arm平台的gcc编译器,编译出来的指令是arm平台的机器码,Linux上的gcc编译器是x86平台的编译器
    • 按钮

      • 在Keil编程环境下,有三个按钮Translate,Build,Rebuild编译选项。
        Translate是编译当前改动的源文件,在这个过程中检查语法错误。但并不生成可执行文件
        Build是只编译工程中上次修改的文件及其它依赖于这些修改过的文件的模块,同时重新链接生成可执行文件。如果工程之前没编译链接过,它会直接调用Rebuild All。另外在技术文档中,Build实际上是指Increase Build,即增量编译。
        Rebuild是不管工程的文件有没有编译过,会对工程中所有文件重新进行编译生成可执行文件,时间较长。
        因此当平时对工程源文件里面main.c之类的文件进行修改时,选择用Build编译链接生成一次可执行文件就行了,不要再进行其他操作,不然仿真会失败
    • 代码

      • .global _start 声明一个ARM程序中的全局变量
        伪操作:没有对应的机器码的指令
      • _start: 标签
      • @ 注释
      • 汇编代码最后空出一行,不然编译会有警告
      • .global _start
            
        _start:
        	mov r0,#1 @将数值1赋值给寄存器r0
        	mvn r1,#0 @将数值0按位取反赋值给寄存器r1
            @mov r2,#12345678 @错误,不是合法立即数
        	ldr r2,=12345678 @将数值12345678加载到寄存器r2
        	ldr r3,=0x12345678 @将十六进制数12345678加载到寄存器r3
        stop:
        	b stop
        
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0x2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值