武汉科技大学嵌入式复习要点_第1页
武汉科技大学嵌入式复习要点_第2页
武汉科技大学嵌入式复习要点_第3页
武汉科技大学嵌入式复习要点_第4页
武汉科技大学嵌入式复习要点_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式系统的概念从技术的角度定义:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。从系统的角度定义:嵌入式系统是设计完成复杂功能的硬件和软件,并使其紧密耦合在一起的计算机系统。术语嵌入式反映了这些系统通常是更大系统中的一个完整的部分,称为嵌入的系统。嵌入的系统中可以共存多个嵌入式系统。n 嵌入式系统的一般由以下几部分组成n 嵌入式微处理器n 外围硬件设备n 嵌入式操作系统n 应用程序n 嵌入式系统的设计可以分成三个阶段:分析、设计和实现U盘;MP3播放器;手机 蓝牙耳机(2分);GPS导航仪(2特点:嵌入性,专用性,内含计算机嵌入式处理器可以分为以下几大类:嵌入式微处理器(EMPU);嵌入式微控制器(MCU);嵌入式DSP处理器(DSP);嵌入式片上系统(SOC)。实时操作系统的特点异步的事件响应 切换时间和中断延迟时间确定 优先级中断和调度 抢占式调度 内存锁定 连续文件 同步 实时操作系统是事件驱动的,能对来自外界的作用和信号在限定的时间范围内作出响应。它强调的是实时性、可靠性和灵活性。5、 实时操作系统的优缺点: (1)优点:在嵌入式实时操作系统环境下开发实时应用程序使程序的设计和扩展变得容易,不需要大的改动就可以增加新的功能。通过将应用程序分割成若干独立的任务模块,使应用程序的设计过程大为简化;而且对实时性要求苛刻的事件都得到了快速、可靠的处理。通过有效的系统服务,嵌入式实时操作系统使得系统资源得到更好的利用。 (2)缺点:但是,使用嵌入式实时操作系统还需要额外的ROM/RAM开销,25%的CPU额外负荷,以及内核的费用。 常见的嵌入式操作系统1. uClinux2. Windows CE3. VxWorks4. C/OS-IIRISC是精简指令集计算机的缩写,其目标是设计出在高时钟频率下单周期执行,简单而有效的指令集。ARM内核采用RISC体系结构,因此具有RISC的结构特点:(1) 具有大量的通用存储器;(2) 独特的装载/保存(load-store)结构;(3) 简单的寻址模式;(4) 统一和固定长度的指令格式。ARM7TDMI-S的含义基于ARM体系结构V4版本的低端ARM核,由ARM6发展而来,并能够稳定的在低于5V的电源电压下工作T:支持高密度16位的Thumb指令集;D:支持片上调试;M:支持64位乘法;I:支持EmbededICE观察硬件;S:ARM7TDMI 的可综合(synthesizable)版本(软核),对应用工程师来说其编程模型与ARM7TDMI 一致;常用的ARM处理器系列1. Cortex-M32. Cortex-R43. Cortex-R4F4. Cortex-A85. ARM7 冯诺依曼结构6. ARM9 哈佛结构7. ARM108. ARM119. XScale ARM公司Arm5TE 版内核和指令集字和半字:从偶数地址开始的连续2个字节构成一个半字;以能被4整除的地址开始的连续4个字节构成一个字;ARM指令的长度刚好是一个字,Thumb指令的长度刚好是一个半字。如果一个数据是从偶地址开始的连续存储,那么它就是半字对齐,否则就是非半字对齐;如果一个数据是以能被4整除的地址开始的连续存储,那么它就是字对齐,否则就是非字对齐。流水线RM处理器使用流水线来增加处理器指令流的速度,这样可使几个操作同时进行,并使处理和存储器系统连续操作,能提供0.9MIPS/MHz的指令执行速度pc取指:从寄存器装载一条指令Pc-4译码:识别将要被执行的指令Pc-8执行:处理指令并将结果写回寄存器在第1个周期,PC指向指令1,此时指令1进入三级流水线的取指阶段。在第2个周期,PC指向指令2,此时指令1进入三级流水线的译码阶段,同时取出指令2。在第3个周期,PC指向指令3,此时指令1进入三级流水线的执行阶段,指令2进入译码阶段,取出指令3。在第4个周期,指令1执行完成,指令2和指令3流水线推进一级,同时开始指令4的取指处理。 PC指向0x4008地址,执行ADD指令,所以指令执行的结果为: PC=PC+40x400840x400C。 程序计数器R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或“正在译码”的指令。一般来说,人们习惯性约定将“正在执行”的指令作为参考点,则:ARM状态:PC值当前程序执行位置8Thumb状态:PC值当前程序执行位置4 注:ARM状态时,每条指令为4字节长指令集ARM指令集高效快速,具有较低密度,Thumb指令集小巧灵活,保持ARM的大多数性能上的有事,是ARM指令集的子集ARM状态:32位,处理器执行字方式的ARM指令,处理器默认为此状态;Thumb状态:16位,处理器执行半字方式的Thumb指令。Cpsr的控制位T=0,处理器处于ARM状态,执行ARM指令,T=1,处理器处于Thumb状态,执行Thumb指令。使用BX指令将ARM内核的操作状态在ARM状态和Thumb状态进行切换。Thumb状态切换到ARM状态代码CODE16LDR R0, =LableBX R0CODE32LableMOV R1, #10CODE32LDRR0, =Lable+1BX R0CODE16Lable MOV R1, #12注意:两个状态之间的切换并不影响处理器模式或寄存器内容。模式七个模式,用户,系统,管理,中止,快中断,中断,未定义,管理模式:只有在系统复位和软件中断响应时,才进入此模式何时进入异常模式,具体规定如下:处理器复位之后进入管理模式,操作系统内核通常处于管理模式;当处理器访问存储器失败时,进入数据访问中止模式;当处理器遇到没有定义或不支持的指令时,进入未定义模式;中断模式与快速中断模式分别对ARM处理器2种不同级别的中断作出响应。处理器模式说明备注 用户(usr)正常程序运行的工作模式不能直接从用户模式切换到其它模式特权模式系统(sys)用于支持操作系统的特权任务等与用户模式类似,但具有可以直接切换到其它模式等特权异常模式快中断(fiq)快速中断请求处理只有在FIQ异常响应时,才进入此模式中断(irq)中断请求处理只有在IRQ异常响应时,才进入此模式管理(svc)供操作系统使用的一种保护模式只有在系统复位和软件中断响应时,才进入此模式中止(abt)用于虚拟内存和/或存储器保护在ARM7内核中没有多大用处未定义(und)支持软件仿真的硬件协处理器只有在未定义指令异常响应时,才进入此模式在ARM处理器内部共有37个用户可访问的寄存器,分别为31个通用32位寄存器和6个状态寄存器。Cpsr,SPSR_SVC,SPSR_abt,SPSR_und,SPSR_irq,SPSR_fiqARM处理器共有7种不同的处理器模式,每种模式都有一组相应的寄存器组,最多可以18个活动的寄存器。R0和R7为未分组的通用寄存器,可以在任何处理器模式都对应与相同的32为物理寄存器R8-R12有两个分组的物理寄存器,一个用于除FIQ模式之外的所有寄存器,另一个用于FIQ模式R13堆栈指针SP,用于保存待使用的寄存器的内容R14链接指针LR,在结构上有两个功能:当使用BL指令调用子程序时,返回地址将自动存入R14中,子程序结束是,R14复制到PC中即可实现子程序返回当发生异常是,保张异常处理程序不会破坏LR,LR保存异常程序,将异常模处理程序的返回地址保存到LR对应的异常模式寄存器中R15程序计数器,指向正在取值的指令CPSR和SPSR之间的关系当一个特定的异常发生中断时,将的当前值保存到相应异常模式下的SPSR,然后设置CPSR为相应的异常模式从异常中断程序退出并且返回时候,可以通道保存在SPSR中的值来回复CPSRARM内核包含1个CPSR和5个仅供异常处理程序使用的SPSR。CPSR反映当前处理器的状态,其包含:4个条件代码标志(负标志N、零标志Z、进位标志C和溢出标志V );2个中断禁止位(IRQ禁止与FIQ禁止);5个对当前处理器模式进行编码的位(M4:0);1个用于指示当前执行指令的位(ARM指令还是Thumb指令)。程序状态寄存器(CPSR)的格式31负标志N:运算结果的第31位值,记录标志设置操作的结果;30零标志Z:如果标志设置的操作为0,则置位;29进位标志C:记录无符号加法溢出,减法无借位,循环移位;28溢出标志V:记录标志设置操作的有符号溢出。条件代码标志:31-N:负或小于30-Z:零29-C:进位、借位或扩展28-V:溢出控制位:7-控制位I置位时:IRQ中断被禁止6-控制位F置位时:FIQ禁止5-T:状态位T置位时,在Thumb状态下运行,为0时在ARM状态下运行40-M4M0:模式位只要正常的程序流被暂时中止,处理器就进入异常模式。进入异常:1. 将异常处理程序的返回地址保存到相应异常模式下的LR,异常处理程序完成后的返回可通过将LR的值减去偏移量后写入PC;(LR)2. 将CPSR的当前值保存到相应异常模式下的SPSR,异常处理程序完成后的返回可通过保存在SPSR中的值来恢复CPSR;(CPSR-SPSR)3. 设置CPSR为相应的异常模式;(设置为异常模式)4. 设置PC为相应异常处理程序的终端入口向量地址,跳转到相应的异常中断处理程序执行。(异常入口)退出异常:1. 返回到发生异常中断的指令的下一条指令处执行,将LR中的值减去偏移量后移入PC,偏移量根据异常的类型而有所不同;(LR-s - PC)2. 将SPSR的值复制回CPSR;(SPSR-CPSR)3. 在入口处置位的中断禁止控制位清零。(入口处置位的中断禁止控制位清零)地址异常进入时的模式进入时I的状态进入时F的状态0x复位管理禁止禁止0x未定义指令未定义IF0x软件中断异常管理禁止F0xC中止(预取)中止IF0x中止(数据)中止IF0x保留保留0xIRQ中断禁止F0xCFIQ快速中断禁止禁止注:表中的I和F表示不对该位有影响,保留原来的值。复位异常当nRESET信号被拉低时,ARM处理器放弃正在执行的指令,等到nRESET信号再次变高时,处理器执行一下操作: 强制M4:0变为b10011,系统进入管理模式;将CPSR中的标志位I和F置位,IRQ与FIQ中断被禁止;将CPSR中的标志位T清零,处理器处于ARM状态;强制PC从地址0x00开始对下一条指令进行取指;返回到ARM状态并恢复执行。ARM存储结构ARM结构使用单个平面的232个8位字节地址空间。地址空间可以看作是包含230个32位字,或231个16位半字。如果地址向上或向下溢出地址空间,通常会发生翻转。地址空间的规则要求字地址A:位于地址A的字包含的字节位于地址A,A+1,A+2和A+3;位于地址A的半字包含的字节位于地址A和A+1;位于地址A+2的半字包含的字节位于地址A+2和A+3;位于地址A的字包含的半字位于地址A和A+2; 存储器系统有两种映射机制:小端存储器系统: 在小端格式中,数据的高字节存放在高地址中。大端存储器系统: 在大端格式中,数据的高字节存放在低地址中。寻址方式是根据指令中给出的地址码字段来实现寻找真实操作数地址的方式。ARM处理器具有8种基本寻址方式。1.寄存器寻址;2.立即寻址;3.寄存器移位寻址;4.寄存器间接寻址;5.基址寻址;6.多寄存器寻址;7.堆栈寻址;8.相对寻址。操作数的值在寄存器中,指令中的地址码字段指出的是寄存器编号,指令执行时直接取出寄存器值来操作。寄存器寻址指令举例如下: MOV R1,R2 ;将R2的值存入R1 SUB R0,R1,R2 ;将R1的值减去R2的值,结果保存到R0 立即寻址指令中的操作码字段后面的地址码部分即是操作数本身,也就是说,数据就包含在指令当中,取出指令也就取出了可以立即使用的操作数(这样的数称为立即数)。立即寻址指令举例如下: SUBSR0,R0,#1 ;R0减1,结果放入R0,并且影响标志位MOVR0,#0xFF000 ;将立即数0xFF000装入R0寄存器 寄存器移位寻址是ARM指令集特有的寻址方式。当第2个操作数是寄存器移位方式时,第2个寄存器操作数在与第1个操作数结合之前,选择进行移位操作。寄存器移位寻址指令举例如下:MOVR0,R2,LSL #3 ;R2的值左移3位,结果放入R0, ;即是R0=R28 ANDSR1,R1,R2,LSL R3 ;R2的值左移R3位,然后和R1相与”操作,结果放入R1 寄存器间接寻址指令中的地址码给出的是一个通用寄存器的编号,所需的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针。寄存器间接寻址指令举例如下: LDRR1,R2;将R2指向的存储单元的数据读出;保存在R1中 SWPR1,R1,R2;将寄存器R1的值和R2指定的存储单元的内容交换 基址寻址就是将基址寄存器的内容与指令中给出的偏移量相加,形成操作数的有效地址。基址寻址用于访问基址附近的存储单元,常用于查表、数组操作、功能部件寄存器访问等。基址寻址指令举例如下: LDRR2,R3,#0x0C ;读取R3+0x0C地址上的存储单元的内容,放入R2 STRR1,R0,#-4! ;先R0=R0-4,然后把R1的值寄存到保存到R0指定的存储单元 多寄存器寻址一次可传送几个寄存器值,允许一条指令传送16个寄存器的任何子集或所有寄存器。多寄存器寻址指令举例如下: LDMIAR1!,R2-R7,R12 ;将R1指向的单元中的数据读出到R2R7、R12中(R1自动加1) STMIAR0!,R2-R7,R12 ;将寄存器R2R7、R12的值保存到R0指向的存储; 单元中(R0自动加1)堆栈是一个按特定顺序进行存取的存储区,操作顺序为“后进先出” 。堆栈寻址是隐含的,它使用一个专门的寄存器(堆栈指针)指向一块存储区域(堆栈),指针所指向的存储单元即是堆栈的栈顶。存储器堆栈可分为两种: 向上生长:向高地址方向生长,称为递增堆栈向下生长:向低地址方向生长,称为递减堆栈堆栈指针指向最后压入的堆栈的有效数据项,称为满堆栈;堆栈指针指向下一个待压入数据的空位置,称为空堆栈。 所以可以组合出四种类型的堆栈方式:满递增:堆栈向上增长,堆栈指针指向内含有效数据项的最高地址。指令如LDMFA、STMFA等; 空递增:堆栈向上增长,堆栈指针指向堆栈上的第一个空位置。指令如LDMEA、STMEA等; 满递减:堆栈向下增长,堆栈指针指向内含有效数据项的最低地址。指令如LDMFD、STMFD等;空递减:堆栈向下增长,堆栈指针向堆栈下的第一个空位置。指令如LDMED、STMED等。 3、 ARM指令格式: S , 其中,opcode:指令助记符;cond:执行条件; S:是否影响CPSR寄存器的值; Rd:目标寄存器; Rn:第1个操作数的寄存器; operand2:第2个操作数; 灵活的使用第2个操作数“operand2”能够提高代码效率。它有如下的形式:#immed_8r常数表达式;Rm寄存器方式;Rm,shift寄存器移位方式;4、 ARM指令种类: (1)存储器访问指令(2)数据处理指令(3)乘法指令(4)ARM分支指令(5)协处理器指令(6)杂项指令(7)伪指令。5、 杂项指令: 在ARM指令集中杂项指令共有3条,它们非常重要,特别是与操作系统的使用息息相关: 1. 软件中断产生指令:SWI 2. 程序状态寄存器读指令:MRS 3. 程序状态寄存器写指令:MSR6、 软中断: SWI指令用于产生软中断,主要用于用户程序调用操作系统的系统服务。执行该指令后,处理器将完成以下动作:(1)切换到管理模式(2)将CPSR备份到管理模式下的SPSR寄存器(3.)程序跳转到软件中断入口。7、 软中断作用: (1)使用操作系统后,为了防止出错的任务影响其它任务的执行,通常将任务放在用户模式执行,以限制其权限; (2)对于一些重要的操作,如中断的开关,必须由操作系统完成。使用软件中断指令即可完成系统功能调用;8、 软中断参数的传递: SWI指令传递参数有以下两种方法, (1)指令中的24位立即数指定了用户请求的服务类型,参数通过通用寄存器传递。 MOV R0,#34;设置子功能号为34 SWI 12;调用12号软中断 (2)指令中的24位立即数被忽略,用户请求的服务类型由寄存器R0的值决定,参数通过其它的通用寄存器传递。 MOV R0,#12;调用12号软中断 MOV R1,#34;设置子功能号为34 SWI 0 9、软中断的处理: 在SWI异常中断处理程序中,取出SWI指令中立即数的步骤为: (1)首先确定引起软中断的SWI指令是ARM指令还是Thumb指令,这可通过对SPSR访问得到;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论