公司动态
ARM--ARM介绍
处理器架构与指令集冯诺依曼架构指令和数据共享同一个存储空间和同一套总线硬件结构简单成本低灵活性高但CPU无法同时取指令和去操作数效率低下如通用计算机哈佛架构指令和数据拥有独立的存储空间和独立的总线即拥有两套总线结构复杂成本高不够灵活可以同时读取指令和数据如DSP\MCUCISC 与 RISCCISCComplex Instuction Set Computer复杂指令集计算机指令集庞大且复杂试图用一条指令完成多种操作不同指令周期差异大一些复杂指令需要多个时钟周期可以减少程序指令条数硬件结构复杂RISCReduced Instuction Set Computer精简指令集计算机选取使用频率高的简单指令绝大多数指令在单时钟周期内完成指令格式规整可以提高指令的并行度和执行效率硬件实现相对简单ARM 内核版本与系列核心架构版本ARM1 - ARM11、ARM - A、ARM - R、ARM - M指令集版本V1 - V9ARM内核属于改进的哈佛架构拥有哈佛架构的高性能CPU缓存和总线以及冯诺依曼架构的灵活性接口计算机体系结构ARM内核ALUArithmetic Logic Unit算术逻辑单元负责执行所有数学运算加减乘除和逻辑运算与或非寄存器组r0 - r12通用寄存器用于暂存数据和地址。r13 (sp - Stack Pointer)栈指针寄存器用于管理栈区空间r14 (lr - Link Register)链接寄存器保存函数返回地址r15 (pc - Program Counter)程序计数器本质上是一个指针指向代码正在执行的当前指令的下一条指令MMU内存管理单元将程序中的虚拟内存空间映射到实际物理内存空间提高物理内存利用率。这是实现现代操作系统如Linux内存隔离和保护的基础。Cache高速缓存一种小型但极快的内存用于缓存CPU最近可能访问的指令和数据以弥补CPU和慢速主内存之间的速度差距。即提高CPU访问数据的速度分类DCACHE: data cache, 数据缓存 ICACHE:instruction cache指令缓存nor flash:每一个字节都可以被寻址带有地址总线和数据总线数据访问时可以像RAM一样单片机nand flash:块设备数据通常以512byte去访问电脑、SOCCPSR / SPSR 程序状态寄存器CPSR当前程序状态寄存器存放程序运行到某一步时相关的状态溢出、进位、借位SPSR当发生异常或中断时用于备份CPSR的状态以便异常处理结束后能恢复现场。总线系统地址总线CPU通过它指定要访问的内存或外设的地址。宽度32位决定了CPU的寻址能力数据总线在CPU和内存/外设之间传输实际数据控制总线传输各种控制信号读/写、中断、时钟等总线类型AHBAdvansed High-performance Bus先进高速总线连接高速设备如内存控制器、DMAAPBAdvanced Peripheral Bus先进外设总线一种典型的多总线分层结构用于优化系统性能。连接低速外设如GPIO、UART、Timer。内存映射0x00000000 - 0xFFFFFFFF 是一个32位系统的完整4GB线性 地址空间。地址空间从低到高通常被划分为不同区域代码段 (.text)存放程序指令。已初始化数据段 (.data)存放已初始化的全局变量和静态变量。未初始化数据段 (.bss)存放未初始化的全局变量和静态变量。堆区 (heap)动态分配内存的区域malloc。栈区 (stack)用于存储函数调用 时的局部变量、返回地址等。顶部区域常保留给内核使用。ARM工作模式用户模式 (User)正常程序执行模式权限受限。FIQ模式 (Fast Interrupt)为处理高速数据传输的中断而设计。IRQ模式 (Interrupt)用于处理普通中断。管理模式 (Supervisor)CPU复位或执行SWI指令后进入的操作系统保护模式。中止模式 (Abort)当存取异常时进入用于处理内存访问错误。未定义模式 (Undefined)当执行未定义指令时进入。系统模式 (System)运行特权级操作系统任务的特权模式异常向量表异常向量表是一块固定的内存地址区域0x0000 00000xFFFF 0000本质上是一个数组数组中存放的是跳转到对应异常服务函数的指令它是CPU硬件与软件异常处理程序之间的桥梁是操作系统实现中断管理和错误处理的基础机制。异常向量跳转到异常服务函数指令的地址工作原理当发生异常如中断、复位、执行未定义指令等时CPU会自动跳转到向量表中对应的固定地址去执行指令。每个异常类型在表中有且仅有一个占位。异常向量表地址分配0x00复位Reset0x04未定义指令(Undifined Instruction)0x08软件中断SWI0x0C指令预取中止Prefetch Abort0x10数据访问中止Data Abort0x18IRQ中断0x1CFIQ中断异常处理流程当异常产生时, ARM core:拷贝CPSR到SPSR_mode设置适当的CPSR 位改变处理器状态进入ARM态改变处理器模式进入相应的异常模式设置中断禁止位禁止相应中断(如果需要)保存返回地址到LR_mode设置PC为相应的异常向量返回时,异常处理需要:从SPSR_mode恢复CPSR从LR_mode恢复PCNote:这些操作只能在ARM态执行