2012年(12)
分类: LINUX
2012-05-03 22:38:14
1、 电源模式4种
a) 正常模式:正常运行模式
b) 低能模式:不带Pll(产生操作USB主从时钟)的低频时钟;
c) 休眠模式:只是使CPU的时钟停止;
d) 停止模式:所有时钟都停止;
2、55个中断源
看门狗定时器,5个定时器,9个UART,24个外部中断,4个DMA控制器
2个RTC,2个ADC, 1个I2C, 2个SPI, 2个USB, 一个LCd和一个电池管理
3、7种工作模式:
用户模式:user
快速中断模式:fiq 用于支持数据传输或者通道处理
中断模式:irq用于普通中断处理
超级用户模式:svc操作系统的保护模式
异常中断模式:abt输入数据后登入或者预取异常中断指令
系统模式:sys使操作系统使用的一个有特权的用户模式
未定义模式:und执行了未定义指令进入该模式
4、寄存器
37个32位寄存器:31个通用寄存器,6个状态寄存器
ARM状态寄存器器,在ARM状态下任何时刻都可以看到16个通用寄存器
5、程序状态寄存器
一个当前状态寄存器CPSR , 有5个保存程序状态寄存器用于异常中断处理;
● 保留最近完成的ALU 操作的信息
● 控制中断的使能和禁止
● 设置处理器的操作模式
下图2-6 显示了程序状态寄存器的位定义:
6、指令长度
ARM状态下32位长度,THUMB状态下16位长度
数据类型: 支持8位字节、半字16位、字32位;
字必须4字节对齐、半字2字节对齐;
7、异常发生之后:
1)将下一条指令的地址保存到相应的Link寄存器。如果异常是从ARM状态进入的,下一条指令的地址拷贝到Link 寄存器(根异常的类型,数值为当前PC+4 或PC+8,具体请看表2-8)。如果异常是从THUMB 态进入,那么写入到link 寄存器的值是当前的PC 偏移一个值。这表示异常处理程序不需要关心是从哪种状态进入异常的。例如,在SWI 情况下,
无论是来自ARM或THUMB 状态,处理程序只要采用MOVSPC,R14-svc语句,总可以返回到原始程序的下一条语句。
2. 拷贝CPSR 到相应的SPSR;
3. 根据异常类型强制改变CPRS 模式位的值;
4. 令 PC 的值指向异常处理向量所指的下一条指令。