计算机CPU分类
CISC:Complex Instruction Set Computer 复杂指令集(x86)
特点:指令功能多、芯片复杂、成本高、体积大、功耗大
RISC:Reduced Instruction Set Computer 精简指令集
特点:指令功能少、芯片简单、成本低、体积小、功耗低
ARM体系架构
IMX6ULL芯片所搭载的内核版本:Cortex-A7
Cortex-A7使用的汇编指令集版本:ARMv7-A
nor flash和nand flash区别:
nor flash: 任何一个字节可以被寻址,带有地址总线和数据总线
nand flash:块设备数据,以512byte为一块进行读写数据

面向应用的ARM最小系统

数据和指令类型
ARM 采用的是32位架构.
ARM 约定:
Byte : 8 bits
Halfword : 16 bits (2 byte)
Word : 32 bits (4 byte)
Doubleword 64-bits(8byte)(Cortex-A处理器)
大部分ARM core 提供:
ARM 指令集(32-bit)
Thumb 指令集(16-bit )
Cortex-A处理器
16位和32位Thumb-2指令集
16位和32位ThumbEE指令集
Jazelle cores 支持 Java bytecode
ARM处理器工作模式
User:非特权模式,大部分任务执行在这种模式。
FIQ:当一个高优先级(fast)中断产生时将会进入这种模式。
IRQ:当一个低优先级(normal)中断产生时将会进入这种模式。
Supervisor:当复位或软中断指令执行时将会进入这种模式。
Abort:当存取异常时将会进入这种模式。
Undef:当执行未定义指令时会进入这种模式。
System:使用和User模式相同寄存器集的特权模式。
Cortex-A特有模式:
Monitor:是为了安全而扩展出的用于执行安全监控代码的模式;也是一种特权模式。
寄存器组织概要

Cortex-A7内核有40个32-bits长的寄存器。
Cortex-A7内核有16个32-bits长的通用寄存器(R0~R15)。
PC: programmer counter 程序计数器,本质是一个指针,指向当前程序正在执行指令的下一条指令。
LR: linked register 链接寄存器,保存函数的返回地址。
**SP:**stack pointer 栈指针寄存器,管理栈区空间。
CPSR: current programmer status register 当前程序状态寄存器,程序运行到某一步时相关的状态(溢出、借位、进位)特殊、异常状态。
SPSR: save programmer status register 保存/备份程序状态寄存器,保存当异常发生时cpsr寄存器中的值。
MMU: Memory Mangement Unit 内存管理单元,将程序中的虚拟地址转换为物理地址。
CACHE **:**高速缓存,CPU直接从CACHE中访问数据,提高CPU访问数据效率。
冯·诺依曼架构和哈佛架构的区别
冯·诺依曼架构:数据和指令共享同一块存储空间。
哈佛架构:数据和指令拥有独立的存储空间(计算机)。
异常处理流程
当异常产生时, ARM core:
拷贝 CPSR 到 SPSR_<mode>
设置适当的 CPSR 位:
改变处理器状态进入 ARM 态
改变处理器模式进入相应的异常模式
设置中断禁止位禁止相应中断 (如果需要)
保存返回地址到 LR_<mode>
设置 PC 为相应的异常向量
返回时, 异常处理需要:
从 SPSR_<mode>恢复CPSR
从LR_<mode>恢复PC
Note:这些操作只能在****ARM 态执行.

异常向量表:本质是一个数组,数组中存放的跳转到异常服务函数的指令。