ARM

  • 传感模块:muc(裸板开发)
  • 嵌入式设备:嵌入式硬件 io与中断
    ARM,nips,prworpc,ATOM,msp430
  • 嵌入式软件:
    linux,uCos,win10,Vxwork,freeRTOS(免费实时系统)
  • sever:PC

电路

  • 计算机系统=硬件系统+软件系统

存储器

- RAM:SDRAM(数据可能丢失,需要初始化),SRAM(静态 2M——4M)
- ROM:nor,ERRAM,EEPRAM,flash(nor,nand,emmc)
- 相变材料()
三级存储系统
  • Rag(寄存器)
  • Cache(缓存)(cup等待时间减少)
  • 主存储器
  • 辅助存储器

总线

  • 运算器 ALU
  • 控制器 是整个计算机的指挥中心

哈佛

数据和指令分开存储;
为了避免数据访问冲突

  • 单总线(低速)
  • 外部设备应用占用的总线主存储器不能使用
  • 多总线(高速)

- 主存储器总线是独立;

ARM指令

  • arm数据类型
  • byte:8bit
  • halfword:16bit
  • word:32bit
  • cotex-a
  • double word:64bit
arm指令集
  • arm:32bit
  • thumb:16bit(精简板arm)

    cotex-a
  • thumb-2 arm和thumb 混合

  • java code:8bit
  • thumb-ee

arm工作模拟(8种工作模式)

  • User
  • 唯一一个非特权模式,大部分任务执行在这种模式(需要手动切入)
  • System
  • 和User使用相同的资源的特权模式(需要手动切入)
  • FIQ
  • 快速中断(高优先级)
  • IRQ
  • 普通中断(低优先级)
  • Supervisor(SVC)
  • 特权模式 当CPU复位 或 软中断会进入该模式
  • Abort
  • 异常模式 数据读取失败或指令加载失败
  • Undef
  • 未定义模式 发现错误指令
  • Conrtex-A
  • Monitor
  • 安全扩展模式

arm寄存器分组

  • User System:共享17个
  • FIQ:私有8个
  • 其他:私有3个*4
  • 17 + 20 = 37
  • Conrtex-A
  • 37 + 3 = 40
  • r15 pc 程序指针
  • r14 lr 跳转返回地址(链接)
  • r13 sp 栈堆指针寄存器
  • cpsr:程序状态寄存器
  • spsr:程序状态备份寄存器

程序状态寄存器

+ E位:大小端控制位
+ A位:A=1 禁止不精确的数据异常
+ 中断禁止位
- I = 1:禁止 IRQ
- F = 1:禁止 FIQ
+ T bit
- T = 0,J = 0;处理器处于ARM状态
- T = 1,J = 0;处理器处于Thumb状态
- T = 1,J = 1;处理器处于Thumb状态
+ Mode位
- 处理器模式位
- 10000 User mode;10001 FIQ mode;10011 SVC mode;

10111 Abort mode;11011 Undfined mode;11111 System mode

10110 Monitor mode;10010 IRQ

+ 标志位
- N:移除标志位
- Z:进位标志位
- C:零标志位
- Z:负数标志位


程序指针PC(r15)
  • ARM(4字节对齐)
  • thumb (2字节对齐)
  • Jazelle (4字节对齐)
异常处理
  • 当异常产生时,ARM core
  • 设置适当的cpsr位:
  • 改变处理器状态进入ARM态
  • 改变处理器模式进入相应的异常模式
  • 设置中断禁止位禁止相应中断
  • 保存返回地址到LR_
  • 设置PC为相应的异常向量
  • 返回时,异常处理需要:
  • 从SPSR_恢复CPSR
  • 从LR_恢复PC
  • Note:这些操作只能在ARM态执行

A9 之前 0XFFFF0000

A9 之后 0X00

Conrtex-A 任意指定

  • 低功耗、低成本的微控制器
  • Cortext——M3
  • Cortext——M1

ARM的指令集合

  • 斜处理器: 负责控制CPU每个模块的工作方式(16个)

助记符

操作

MOV

将数据从一个寄存器赋值到另一个寄存器

SUB


ADD


ADC

带进位的翻转减

AND

逻辑与

EOR

逻辑异或

LDR

从内存中将一个32位的字读取到目标寄存器中

STR

将一个32位的字数据写入到指令中指定的内存单元

BL

跳转连接

B

跳转(goto)

S选项代表操作结果是否CPRS的标志位

条件码

助记符后缀

标志

含义

0000

EQ

Z置位

相对

0001

NE

Z清零

不相等

0011

CS

C置位

无符号数大于或等于