内容发布更新时间 : 2024/11/16 17:42:53星期一 下面是文章的全部内容请认真阅读。
第一章
对嵌入式系统的定义:
从技术的角度定义:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
从系统的角度定义:嵌入式系统是设计完成复杂功能的硬件和软件,并使其紧密耦合在一起的计算机系统。术语嵌入式反映了这些系统通常是更大系统中的一个完整的部分,称为嵌入的系统。嵌入的系统中可以共存多个嵌入式系统 嵌入式处理器可以分为以下几大类:
? 嵌入式微处理器(EMPU); ? 嵌入式微控制器(MCU); ? 嵌入式DSP处理器(DSP); ? 嵌入式片上系统(SOC)。
操作系统:多道批处理操作系统;实时操作系统;分时操作系统 什么是嵌入式操作系统?
嵌入式操作系统是操作系统的一种类型,是在传统操作系统的基础上上加入符合嵌入式系统要求的元素发展而来的
使用嵌入式实时操作系统的必要性:
? 嵌入式实时操作系统提高了系统的可靠性。 ? 提高了开发效率,缩短了开发周期。
? 嵌入式实时操作系统充分发挥了32位CPU的多任务潜力
常见的嵌入式实时操作系统:ulinux,windows CE,VxWorks,uc/os-II 第二章
ARM内核采用RISC体系结构,因此具有RISC的结构特点:
? 具有大量的通用存储器;
? 独特的装载/保存(load-store)结构; ? 简单的寻址模式
? 统一和固定长度的指令格式。
此外ARM体系结构还具有如下特性:
1每条数据处理指令可同时包含算术逻辑单元(ALU)的运算和移位处理,实现ALU和移位器的最大利用;
2使用地址自增和自减的寻址方式优化程序循环;
3装载/保存指令对数据的批量传输,实现最大数据吞吐量; 4大多数指令的条件执行,实现最快速的代码执行。
常用的ARM处理器系列:ARM7系列、ARM9系列、ARM10系列、ARM11系列、Intel的XScal
系列和MPCore系列
ARM-TDMI解释:精简指令集处理器 T:支持高密度16位的Thumb指令集; D:支持片上调试 M:支持64位系统
I:支持Embedded ICE硬件仿真
从偶数地址开始的连续2个字节构成一个半字;
以能被4整除的地址开始的连续4个字节构成一个字;
ARM指令的长度刚好是一个字,Thumb指令的长度刚好是一个半字。
如果一个数据是从偶地址开始的连续存储,那么它就是半字对齐,否则就是非半字
对齐;
如果一个数据是以能被4整除的地址开始的连续存储,那么它就是字对齐,否则就是非字对齐。
ARM7TDMI的两种处理器的状态:
ARM状态:32位,处理器执行字方式的ARM指令,处理器默认为此状态; Thumb状态:16位,处理器执行半字方式的Thumb指令。 注意:两个状态之间的切换并不影响处理器模式或寄存器内容。 ARM处理器模式: 处理器模式 用户(usr) 说明 正常程序运行的工作模式 备注 不能直接从用户模式切换到其他模式 特 系统(sys) 用于支持操作系统的特权任务等 与用户模式类似,但具有直接切换到其他模式等特权 权 异管理(svc) 供操作系统使用的一种保护模式 只有在系统复位和软件中断响应时,才进入此模式 模常中止(abt) 用于虚拟内存和(或)存储器保护 在ARM7内核中没有多大用处 式 模未定义(und) 支持软件仿真的硬件协处理器 只有在未定义指令异常响应时,才进入此模式 式 中断(irq) 中断请求处理 只有在IRQ异常响应时,才进入此模式 快速中断(fiq) 快速中断请求处理 只有在FIQ异常响应时,才进入此模式 何时进入异常模式,具体规定如下: ? 处理器复位之后进入管理模式,操作系统内核通常处于管理模式; ? 当处理器访问存储器失败时,进入数据访问中止模式;
? 当处理器遇到没有定义或不支持的指令时,进入未定义模式;
? 中断模式与快速中断模式分别对ARM处理器2种不同级别的中断作出响应。 ARM内部寄存器:
在ARM处理器内部共有37个用户可访问的寄存器,分别为31个通用32位寄存器和6个状态寄存器。ARM处理器共有7种不同的处理器模式,每种模式都有一组相应的寄存器组,最多可以18个活动的寄存器。 ARM状态下的寄存器:
寄存器R0~R7为未分组的通用寄存器,它们在任何处理器模式都对应于相同的32位物理寄存器。
寄存器R8~R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。在发生FIQ中断后,处理器不必为保护寄存器而浪费时间,从而加速了FIQ的处理速度。
寄存器R13、R14分别有6个分组的物理寄存器。1个用于用户和系统模式,其余5个分别用于5种异常模式。
寄存器R13通常作为堆栈指针(SP),用于保存待使用的寄存器的内容。 寄存器R14称为链接寄存器(LR),在结构上有两个特殊功能:当使用BL指令调用子程序时,返回地址将自动存入R14中;当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。
寄存器R15称为程序计数器(PC),它指向正在“取指”的指令。
寄存器CPSR为当前程序状态寄存器,在异常模式中,另外一个寄存器“程序状态保存寄存器(SPSR)”可以被访问。每种异常都有自己的SPSR,在进入异常时它保存CPSR的当前值,异常退出时可通过它恢复CPSR。
Thumb状态下的寄存器:
8个通用寄存器R0~R7,在汇编语言中寄存器R0~R7为通用寄存器,对于任何处理器模式,它们中的每一个都对应于相同的32为物理寄存器。
程序计数器R15(PC); 堆栈指针R13(SP),堆栈指针SP对应ARM状态的寄存器R13。每个异常模式都有其自身的SP分组版本,SP通常指向各异常模式所专用的堆栈。注意:在发生异常时,处理器自动进入ARM状态。
链接寄存器R14(LR),链接寄存器LR对应ARM状态寄存器R14。注意:在发生异常时,处理器自动进入ARM状态。
当前程序状态寄存器( CPSR)。
在两种状态中,寄存器R0-R7是低端寄存器,R8-R12是高端寄存器,在Thumb状态中,高端寄存器的访问是受到限制的,只有MOV、CMP和ADD指令可以对其访问,可以用于数据的快速暂存。
Thumb状态下的寄存器与ARM状态下的寄存器之间的关系: Thumb状态R0~R7与Thumb状态R0~R7相同。 Thumb状态CPSR(无SPSR)与ARM状态CPSR相同。 Thumb状态SP映射到ARM状态的R13. Thumb状态LR映射到ARM状态的R14 Thumb状态PC映射到ARM状态的R15(PC) 程序状态寄存器(CPSR):
CPSR反映当前处理器的状态,其包含:
4个条件代码标志(负标志N、零标志Z、进位标志C和溢出标志V ); 2个中断禁止位(IRQ禁止与FIQ禁止);
5个对当前处理器模式进行编码的位(M[4:0]);
1个用于指示当前执行指令的位(ARM指令还是Thumb指令)。 各标志位的含义如下:
负标志N:运算结果的第31位值,记录标志设置操作的结果; 零标志Z:如果标志设置的操作为0,则置位;
进位标志C:记录无符号加法溢出,减法无借位,循环移位; 溢出标志V:记录标志设置操作的有符号溢出。 中断禁止控制位I和F:
当控制位I置位时,IRQ中断被禁止; 当控制位F置位时,FIQ中断被禁止。 处理器状态位T:
当控制位T置位时,处理器正在Thumb状态下运行; 当控制位T清零时,处理器正在ARM状态下运行。
警告:绝对不要强制改变CPSR寄存器中的控制位T。如果这样做,处理器将进入一个无 法 预测的状态。
处理器模式位M0~M4:决定了处理器的7中操作模式。 ARM体系的异常及中断:
优先级从高到低:复位(1级),数据中止(2级),FIQ(3级),IRQ(4级),预取值中止(5级),未定义指令(6级),软件中断(6级)
第三章 ARM处理器的8种寻址方式: