器,除了具有ARM体系结构的共同特点以外,每一个系列的ARM微处理器都有各自的特点和应用领域。
? ARM7系列 ? ARM9系列 ? ARM9E系列 ? ARM10E系列 ? ARM11系列 ? SecurCore系列 ? Inter的Xscale
? Inter的StrongARM
其中,ARM7、ARM9、ARM9E和ARM10E为4个通用处理器系列,每一个系列提供一套相对独特的性能来满足不同应用领域的需求。SecurCore系列专门为安全要求较高的应用而设计。
6、比较ARM9与ARM7处理器的性能特点,试说明它们有何异同。(P55~56) 答:ARM7提供了非常好的性能-功耗比,它包含了Thumb指令集快速乘法指令和ICE调试技术的内核。ARM9处理器通过全新的设计,采用了更多的晶体管,能够达到两倍以上于ARM7处理器的处理能力。ARM7内核是0.9MIPS/MHz的三级流水线和冯·诺伊曼结构,而ARM9内核是5级流水线,提供1.1MIPS/MHz的哈佛结构。
从ARM7到ARM9的性能提升还来源于存储器读写指令——load和store,以及互锁技术的应用。
7、简单介绍OMAP5912微处理器的特点和功能。(P59~60)
答:OMAP5912处理器是OMAP1510系列的一个分支,是由TI应用最为广泛的TMS320C55X DSP内核与低功耗、高性能的ARM926EJ-S微处理器组成的双核应用处理器,这两个内核通过一种专用的处理器内部通信机制相连接。OMAP5912的结构如图3-10所示。C55x系列可提供对低功耗应用的实时多媒体处理的支持;ARM926可满足控制和接口方面的处理需要。基于双核结构,OMAP5912具有极强的运算能力和极低的功耗,一方面,产品性能高、省电;另一方面,同其它OMAP处理器一样,采用开放式、易于开发的软件设施,支持广泛的操作系统,如Linux、Windows、WinCE、Nucleus、Palm OS、VxWorks等。可以通过API及用户熟悉且易于使用的工具优化其应用程序。
OMAP5912处理器的目标应用是: ? 需要密集信号处理的设备 ? 通讯终端 ? WAN 802.11X ? BlueTooth
? GSM,GPRS,EDGE
? ? ? ? ? ?
CDMA
视频和图像处理(MPEG4,JPEG,Windows Media Video,etc.) 高级语言处理应用(text-to-speech,speech recognition) 音频处理(MPEG-1 Audio Layer3 [MP3],AMR,WMA,AAC,及其它GSM Speech Codecs)
图形和视频加速 数据处理
8、常用的OMAP5912开发工具有哪些?(P60~61)
答:常用的OMAP5912开发工具有: (1)OMAP5912 Starter Kit (OSK)
Omap5912基本板,提供了完成设计与测试过程所需的所有软件,这包括一系列主板专用库、芯片专用库以及一套针对OMAP5912 Linux内核的Linux开发工具。
(2)MU-Q-VGA LCD Module for OMAP5912 OSK的LCD扩充套件,提供了LCD触摸屏。 (3)Accelerator Program for OMAP5912
针对omap5912OSK的Linux和WinCE 4.2 BSP和驱动程序软件包,方便易用,支持很多设备和扩展模块,如LCD、USB Client & Host、键盘、触摸屏、以太网、串口等设备。
(4)RAPID DEVELOPMENT KIT (RDK) omap5912 OSK无线模块扩充套件。
(5)Portable Data Terminal Reference Design
基于omap5912的便携式数据终端(PDT)参考设计,一个完整的多媒体智能手机设计案例。相关应用包括导航、游戏、学习辅助、通话、娱乐等等。
??
第4章 ARM微处理器的编程模型与指令系统
1、ARM微处理器有哪几种运行模式?其中哪些是特权模式,哪些又是异常模式?(P64) 答:ARM微处理器支持7种运行模式,分别为:用户模式;快速中断模式;外部中断模式;管理模式;数据访问终止模式;系统模式;未定义指令中止模式。除用户模式以外,其余的所有6种模式称之为非用户模式,或特权模式(Privileged Modes);而除去用户模式和系统模式以外的5种又称为异常模式(Exception Modes),常用于处理中断或异常。
2、ARM体系结构的存储器格式有哪几种?(P64~65)
答:ARM体系结构可以用两种方法存储字数据,称之为大端格式(big-endian)和小端格式(little-endian)。大端格式:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中;小端格式:低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。
3、ARM状态下和Thumb状态下寄存器的组织有何不同?(P69~70)
答:Thumb状态下的寄存器集是ARM状态下寄存器集的一个子集,程序可以直接访问8个通用寄存器(R7~R0)、程序计数器(PC)、堆栈指针(SP)、连接寄存器(LR)和CPSR。同时,在每一种特权模式下都有一组SP、LR和SPSR。在Thumb状态下,高位寄存器R8~R15并不是标准寄存器集的一部分,但可使用汇编语言程序受限制的访问这些寄存器,将其用作快速的暂存器。
4、简述CPSR各状态位的作用,并说明如何对其进行操作,以改变各状态位。(P67~68) 答:CPSR可在任何运行模式下被访问,它包含条件码标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。
条件码标志位:
N(Negative)当用两个补码表示的带符号数进行运算时,N=1表示运算的结果为负数;N=0 表示运算的结果为正数或零;
? Z(Zero)Z=1 表示运算的结果为零;Z=0表示运算的结果为非零;
? C(Carry)可以有4种方法设置C的值:① 加法运算(包括比较指令CMN):当
运算结果产生了进位时(无符号数溢出),C=1,否则C=0。② 减法运算(包括比较指令CMP):当运算时产生了借位(无符号数溢出),C=0,否则C=1。③ 对于包含移位操作的非加/减运算指令,C为移出值的最后一位。④ 对于其他的非加/减运算指令,C的值通常不改变。
? V(OVerflow)可以有2种方法设置V的值:① 对于加/减法运算指令,当操作数
和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出。② 对于其他的非加/减运算指令,V的值通常不改变。
CPSR的低8位(包括I、F、T和M[4:0])称为控制位,当发生异常时这些位可以被改变。如果处理器运行特权模式,这些位也可以由程序修改。
状态寄存器(PSR)中的其余位为保留位,当改变PSR中的条件码标志位或者控制位时,保留位不要被改变,在程序中也不要使用保留位来存储数据。保留位将用于ARM版本的扩展。 5、ARM体系结构所支持的异常类型有哪些?具体描述各类异常,在应用程序中应该如何处理?(P70~71)
答:ARM体系结构所支持的异常类型有复位、未定义指令、软件中断、指令预取中止、数据中止、外部中断请求、快速中断请求。具体地:
? 当处理器的复位电平有效时,产生复位异常,程序跳转到复位异常处理程序处执行; ? 当ARM处理器或协处理器遇到不能处理的指令时,产生未定义指令异常。可使用
该异常机制进行软件仿真;
? 软件中断异常由执行SWI指令产生,可用于用户模式下的程序调用特权操作指令。
可使用该异常机制实现系统功能调用; ? 若处理器预取指令的地址不存在,或该地址不允许当前指令访问,存储器会向处理
器发出中止信号,但当预取的指令被执行时,才会产生指令预取中止异常; ? 若处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据
中止异常;
? 当处理器的外部中断请求引脚有效,且CPSR中的I位为0时,产生IRQ异常。系
统的外设可通过该异常请求中断服务;
? 当处理器的快速中断请求引脚有效,且CPSR中的F位为0时,产生FIQ异常。
6、ARM指令有哪几种寻址方式?试分别叙述其各自的特点并举例说明。(P77)
答:ARM指令系统支持的基本寻址方式有7种:立即数寻址、寄存器寻址、寄存器间接寻址、基址变址寻址、多寄存器寻址、堆栈寻址、相对寻址。他们的特点分别是:
? 立即数寻址:操作数本身就在指令中给出。如:ADD R0,R0,#0x3f ? 寄存器寻址:指令中地址码给出的是寄存器编号。如:ADD R0,R1,R2
? 寄存器间接寻址:寄存器中的值作为操作数的地址,操作数本身存放在存储器中。
如:ADD R0,R1,[R2] ? 基址变址寻址:将寄存器的内容与指令中给出的地址偏移量相加,从而得到一个操
作数的有效地址,用于访问基址附近的存储器单元。如:LDR R0,[R1,#4] ? 多寄存器寻址:块拷贝寻址。如:LDMIA R0,{R1,R2,R3,R4}
?
? ?
堆栈寻址:用堆栈作为地址。如:STMFD SP! {R1-R7,LR}
相对寻址:以程序计数器PC的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址。如:BL NEXT
7、简述ARM指令集的分类。(P81) 答:ARM指令集总体分为六大类:数据处理指令、程序状态寄存器访问指令、Load/Store指令、跳转指令(转移指令)、异常中断指令、协处理器指令。
8、假设R0的内容为0x8000,寄存器R1、R2内容分别为0x01和0x10,存储器内容为空。执行下述指令后,说明PC如何变化?存储器及寄存器的内容如何变化? STMIB R0!,{R1,R2} LDMIA R0!,{R1,R2} 答:略。
9、如何从ARM指令集跳转到Thumb指令集?ARM指令集中的跳转指令与汇编语言中的跳转指令有什么区别?(P96)
答:进入Thumb指令模式有2种方法:一种是执行一条交换转移指令BX,将指令中的目标地址寄存器的最低位置1,并将其他位的值放入程序计数器PC,则可进入Thumb指令。另一种方法是利用异常返回,也可把微处理器从ARM模式转换为Thumb模式。在这个过程中,ARM提供了2种机制:当返回地址保存在当前异常模式的R14(LR)时,采用传送指令;当返回地址保存在堆栈时,使用多寄存器Load/Store指令。ARM指令集中的跳转指令与汇编语言中的跳转指令的区别是ARM指令集中的跳转指令可以直接向程序计数器PC写入跳转地址值。
10、ARM指令集支持哪几种协处理器指令?试分别简述并列举其特点。(P93)
答:ARM协处理器指令包括以下5条,其特点分别是: ? CDP协处理器数操作指令:用于ARM处理器通知ARM协处理器执行特定的操作,
若协处理器不能成功完成特定的操作,则产生未定义指令异常。
? LDC协处理器数据加载指令:用于将源寄存器所指向的存储器中的字数据传送到
目的寄存器中,若协处理器不能成功完成传送操作,则产生未定义指令异常。 ? STC协处理器数据存储指令:用于将源寄存器中的字数据传送到目的寄存器所指向
的存储器中,若协处理器不能成功完成传送操作,则产生未定义指令异常。
? MCR处理器寄存器到协处理器寄存器的数据传送指令:用于将ARM处理器寄存
器中的数据传送到协处理器寄存器中,若协处理器不能成功完成操作,则产生未定义指令异常。
? MRC协处理器寄存器到ARM处理器寄存器的数据传送指令:用于将协处理器寄
存器中的数据传送到ARM处理器寄存器中,若协处理器不能成功完成操作,则产生未定义指令异常。
第5章 嵌入式操作系统
1、嵌入式操作系统进程的定义是什么?(P101)
答:进程是可并发执行的、具有独立功能的程序在一个数据集合上的运行过程,是操作系统进行资源分配和保护的基本单位。
2、一个比较完善的操作系统应当包括哪几个模块?(P100)
答:一个比较完善的操作系统应当包括内存管理、进程管理、文件管理以及为了充分利用各种资源而设计的调度机制等四个模块。
3、说明嵌入式操作系统进程调度的几种策略,并说出不同之处和优缺点。(P105~108) 答:实时调度方法大致可以划分为以下几类:
离线和在线调度:对于离线调度算法,运行过程中使用的调度信息在系统运行之前就确定了。离线调度算法具有确定性,但缺乏灵活性,适用于那些特性能够预先确定,且不容易发生变化的应用。在线调度算法的调度信息则在系统运行过程中动态获得,在线调度算法在形成最佳调度决策上具有较大的灵活性。
抢占和非抢占调度:在抢占式调度算法中,正在运行的任务可能被其他任务所打断,抢占式调度算法,使关键任务能够打断非关键任务的执行,确保关键任务的截止时间能够得到满足,抢占式调度算法要更复杂些,且需要更多的资源,并可能在使用不当的情况下会造成低优先级任务出现长时间得不到执行的情况。非抢占式调度常用于那些任务需要按照预先确定的顺序进行执行,且只有当任务主动放弃CPU资源后,其他任务才能得到执行的情况。
静态和动态调度:在静态调度算法中,任务的优先级需要在系统运行前进行确定,且在运行过程中不会发生变化。在动态调度算法中,任务的优先级可根据需要进行改变,也可能随着时间按照一定的策略自动发生变化。
4、嵌入式系统中进程间通信主要采用哪几种形式?(P110)
答:嵌入式系统中进程间通信主要采用两种形式:共享内存和消息传递。二者在逻辑上没有什么区别,进程通信采用哪种方式,主要依赖实际需要。进程间通信也可以采用信号和管道的方式。
5、简述嵌入式操作系统的中断管理和时钟管理模式。(P117-118)
答:在嵌入式操作系统中,中断前导和中断后续通常由内核的中断接管程序来实现。硬件中断发生后,中断接管程序获得控制权,先由中断接管程序进行处理,然后才将控制权交给相应的用户中断服务程序。用户中断服务程序执行完成后,又回到中断接管程序。实时内核通常还提供如下中断管理功能:挂接中断服务程序、获得中断服务程序入口地址、获取中断嵌套层次、开中断、关中断。
在实时系统中,时钟具有非常重要的作用。通过时钟,应用和内核能够查询当前时间、定时地完成各项工作、报警、有限的等待和睡眠等,是处理具有时间约束特性应用必不可少的内容。因此,实时内核都需要提供对时钟进行管理的机制。
时钟管理一般具有以下功能:维持日历时间,任务有限等待的计时,软定时器的定时管理和维持系统时间片轮转调度。
6、嵌入式操作系统中的内存管理功能有哪些?并做简要阐述。(P120) 答:嵌入式操作系统中的内存管理功能有:
1)虚拟内存空间:操作系统采用虚拟内存功能使系统显得它有比实际大得多的内存空间,虚拟内存可以比系统中的物理内存大许多倍。
2)内存保护:系统中每个进程有自己的虚拟地址空间,这些虚拟地址空间相互之间完