题型:填空题40分(2*20) 简答题20分(每题5*4) 指令测试题 共20分4+4+8+4=20 综合题20分(10+5+5)复习提纲:第一章:1、 嵌入式的定义嵌入式系统的定义:嵌入式系 统是以应用为中心,以计算机技术为基础,软硬件可裁剪, 成本、体积和功耗等严格要求的专用计算机系统。
2、 嵌入式的组成结构 嵌入式系统的组成结构 :硬件层、中间层、 软件层和功能层。
3、 嵌入式系统的分类按照嵌入式软件结构分类:嵌入式系统可分为循环轮询系统、前后台系统和多任务系统。
4、与通用PC的区别答:嵌入式系统一般是专用系统,而PC是通用计算平台嵌入式系统的资源比PC少得多嵌入式系统软件故障带来的后果比PC机大得多嵌入式系统一般采用实时操作系统嵌入式系统大都有成本、功耗的要求嵌入式系统得到多种微处理体系的支持嵌入式系统需要专用的开发工具什么是多任务系统?多任务系统的特点有哪些?答:多任务系统的软件由多个任务、多个中断服务程序以及嵌入式操作系统组成。
特点:(1)每个任务都是一个无限循环的程序,等待特定的输入,从而执行相应的处理。
(2)这种程序模型将系统分成相对简单、相互合作的模块。
(3)不同的任务共享同一个CPU和其它硬件,嵌入式操作系统对这些共享资源进行管理。
(4)多个顺序执行的任务在宏观上看并行执行,每个任务都运行在自己独立的CPU上。
第二章2、指令集(分成ARM和THUMB)ARM 标准32位指令集THUMB 16位压缩形式,与多数CISC相比,编码密度更高,在流水线中进行动态压缩特点:①所有指令长度为32位.②多数指令在单周期内执行./在单时钟周期内执行Shift & ALU 操作③每条指令都有执行条件(load/store 结构,数据处理指令仅作用在寄存器上,三个操作数格式,合并ALU和移位器,用于高速的位操作,特殊的记忆接入指令,强大的自动检索地址模式,32 位和8位的数据类型,v4.中有16位的数据类型,灵活的多个寄存器load和store指令)④通过一个压缩器扩展指令3、ARM型号的识别,有几种变种ARM体系结构的版本1)Thumb指令集(T变种)2)长乘法指令(M变种)3)增强型DSP指令(E变种)4)Java加速器Jazelle(J变种)5)ARM媒体功能扩展(SIMD变种)4、寄存器组,特别是几种特殊的寄存器,R13,R14,R15…..还有程序状态寄存器各个bit的含义。
寄存器r13和r14的用途比较特殊:1.寄存器R13常作为堆栈指针(SP),被初始化成指向异常模式分配的堆栈。
处理异常时,在程序入口处将异常处理程序用到的其他寄存器的值压入堆栈,返回时重新将这些值加载到寄存器中。
这样就可以保证出现异常时不导致程序状态不可靠。
2.R14通常用作子程序链接寄存器(LR),当执行分支指令BL时,r15的内容拷贝到r14中,从而成为子程序调用后的返回地址。
采用这种方式可以类似地用来处理异常的返回。
程序计数器r15。
寄存器r15通常备用作程序计数器PC。
在ARM状态下,由于ARM 指令始终是字对准的,因此PC的值保存在位[31:2],而位[1:0]位0;在Thumb状态下,由于Thumb指令时半字对准的,因此PC的值保存在位[31:1],而位[0]位0。
P39①读程序计数器PC:用指令读出的r15的值为指令地址加8个字节。
读PC主要用于快速对临近的指令和数据进行位置无关的寻址。
②写程序计数器PC:写r15的结果是将写到r15的值作为指令地址,并根据这个地址发生转移。
当前程序状态寄存器CPSR。
当前程序状态寄存器(CPSR)在用户级编程时用于存储条件码。
例如,使用CPSR的相应位来记录比较操作的结果和控制转移的条件。
此外,CPSR 还包含了中断禁止位、当前处理器模式以及其他的一些状态和控制信息。
同时,为了在异常出现时能够保存CPSR的状态,每种异常模式都设置了一个程序状态保存寄存器(SPSR)。
3、指令集,ARM有特色的指令,比如条件执行,块传送指令,ARM和THUMB的切换(一些常见的编程格式错误,详见PPT),区别ARM指令集条件执行是指只有在当前程序状态寄存器CPSR中的条件码标志满足指定的条件时,带条件码的指令才能执行。
条件转移是绝大多数指令集的标准特征,但ARM指令集将条件执行扩展到所有指令,包括监控调用和协处理器指令。
条件域占据32个指令域的高岑位,如图2.17所示。
条件域共有16个值,即16个条件码,如表2-5所示,其中AL阻lways涤件是缺省条件。
1)LDR、STR2)LDM、STM P52句法:op{cond}mode Rn{!},reglist{^}符号说明:mode:包括IA每次传送后地址加1 IB一每次传送前地址加1DA每次传送后地址减1 DB——每次传送前地址减1FD--满递减堆栈ED--空递减堆栈FA——满递增堆栈EA空递增堆栈Reglist:加载或存储的寄存器列表,包含在括号中,也可以包含寄存器的范围,必须用逗号隔开。
^:可选后缀。
不允许在用户模式或系统模式下使用。
用途包括以下两点:若op是LDM,且reglist中包含R15,则进行多寄存器传送时,也将SPSR拷贝到CPSR;用于从异常返回,仅在异常模式下使用。
数据传送的是用户模式的寄存器,而不是当前模式的寄存器。
指令说明:指令用于加载或存储多个寄存器,可传送R0~R15的任何组合。
指令忽略地址的位[1:0]。
到R15的加载将引起处理器转移到加载地址处的指令。
如果Rn包含在寄存器列表中,且用“!”表明要写回,那么若op是STM,且Rn是寄存器列表中数字最小的寄存器,则Rn的初值被保存;否则,Rn的加载和存储值不可预知。
例:LDMIA R8,{R0,R2,R9}STMDB R1!,{R3-R6,R11,R12}STMFD R13!,{R0,R4-R7,LR} ;寄存器进栈LDMFD R13!,{R0,R4-R7,PC} ;寄存器出栈,从子程序返回STMIA R5!,{R5,R4,R9} ;错误,R5的值不可预知LDMDA R2,{} ;错误,列表中至少要有一个寄存器ARM分支指令P57-62Thumb指令集P62 Thumb状态切换P63CPSR的T位决定ARM处理器执行的是ARM指令流还是Thumb指令流。
若T置1,则认为是Thumb指令流;若T置巳则认为是ARM指令流。
⑴进入Thumb状态。
系统复位后,处理器处于ARM状态。
执行BX指令,将转移地址寄存器的位[0]置1,其他位放入PC,即可进入Thumb状态。
由于BX指令引起转移,因此流水线被刷新,已在流水线上的指令将被丢弃。
⑵退出Thumb状态。
退出Thumb状态的方法与进入Thumb状态的方法相对应,使用BX指令,将转移地址寄存器的位[1:0]置为b00,即可退出Thumb状态。
如果发生异常,无论处理器当前的工作状态如何,异常都会使处理器返回到ARM状态。
Thumb指令集与ARM指令集的区别⑴Thumb指令除了分支B指令外大多是无条件执行的。
⑵大多数Thumb指令采用2地址格式,即目的寄存器和源寄存器。
⑶Thumb指令集没有协处理器指令、信号量(semaphore)指令和访问PSR的指令。
⑷Thumb分支指令与ARM分支指令相比,在寻址范围上有更多限制。
⑸Thumb数据处理指令访问R8~R15受限。
除MOV和ADD指令访问R8~R15外,数据处理指令总是更新CPSR的ALU状态标志。
访问RS~R15的Thumb数据处理指令不能更新标志。
⑹Thumb的寄存器Load/Store指令只能访问R0~R7。
PUSH和POP指令使用堆栈指针R13(SP)作为基址实现满递减堆栈。
除传送R0~R7外,PUSH还可用于存储链接寄存器R14(LR)POP还可用于加载程序计数器指针PC。
⑺Thumb伪指令不支持ADRL。
第三章1图3-10 分级存储器系统1.寄存器组寄存器组是最高一级的存储器。
在计算机设备中,寄存器组一般是微处理器内含的,ARM处理器中有37个寄存器。
有些待使用的数据或者运算的中间结果可以暂存在这些寄存器中。
微处理器在对本芯片内的寄存器读写时,速度很快,一般在一个时钟周期内完成。
从总体上说,设置一系列寄存器是为了尽可能减少微处理器直接从外部取数的次数。
但由于寄存器组是制作在微处理器内部的,受芯片面积和集成度的限制,寄存器的数量不可能做得很多。
2.高速缓冲存储器(Cache)第二级存储器是高速缓冲存储器(Cache)。
高速缓存是一种小型、快速的存储器,其存取速度足以与微处理器相匹配。
高速缓存能够保存部分内存的内容的拷贝,如果正确使用,它能够减少内存平均访问时间。
3.内存第三级是内存。
运行的程序和数据都放在内存中。
由于微处理器的寻址大部分在高速缓存上,内存就可以采用速度稍慢的存储器芯片,对系统性能的影响不会太大,同时又降低了成本。
内存除主要使用RAM外,还要使用一定量的ROM。
4.外存最低一级存储器是大容量的外存。
这种外存容量大,但是在存取速度上比内存要慢得多。
目前嵌入式系统中常用闪存作为大容量硬盘存储各种程序和数据。
第四章1、驱动层直接和硬件相关的驱动层软件的类型和用途嵌入式软件的体系结构包括驱动层、操作系统层、中间件层和应用层。
其中,驱动层直接与硬件相关,为操作系统和应用程序提供支持。
可以将驱动层软件分为三种类型:⑴板级初始化程序:在系统上电后,初始化系统的硬件环境,包括嵌入式微处理器、存储器、中断控制器、DMA和定时器等。
⑵与系统软件相关的驱动程序:用于支持操作系统和中间件等系统软件所需的驱动程序。
嵌入式微处理器已经提供了操作系统内核所需的硬件支持,因此开发人员一般所需编写的驱动程序主要是键盘、显示器、外存、网络等外部设备的驱动程序。
⑶与应用软件相关的驱动程序:这类驱动程序不一定要与操作系统连接,其设计和开发由应用所决定。
2、BSP和HAL的概念设备驱动概述:使用任何外部设备都需要有相应驱动程序的支持。
驱动程序为上层软件提供设备的操作接口。
驱动层软件有两个重要的概念:硬件抽象层(HAL,Hardware Abstraction Layer)和板级支持包(BSP,Board Support Package)。
可以简单地理解为硬件抽象层与硬件具有更加紧密的相关性,而板级支持包与操作系统具有更加紧密的相关性。
具体地讲,硬件抽象层的目的是为了将硬件抽象化,即通过程序来控制诸如CPU、I/O、存储器等硬件的操作,从而使得系统的设备驱动程序与硬件无关。
P135设计板级支持包的目的主要是为驱动程序提供访问硬件设备寄存器的函数包,从而实现对操作系统的支持。
为保证与操作系统保持正确的接口,以便良好地支持操作系统,不同的操作系统应对应不同定义形式的板级支持包。