1、嵌入式系统课后习题参考答案第一章1. 什么是嵌入式系统?它由哪几部分组成?有何特点?以应用为中心,计算机技术为基础,软硬件可裁减,从而能够适应实际应用中对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。嵌入式系统通常由嵌入式处理器、外围设备、嵌入式操作系统、应用软件等几大部分组成。嵌入式处理器与通用处理器的最大不同点在其大多工作在为特定用户群设计的系统。外围设备包括:存储器、接口、人机交互。嵌入式操作系统的特点:软硬件一体化,集计算机技术、微电子技术和行业技术为一体;需要操作系统支持,代码小,执行速度快;专用紧凑,用途固定,成本敏感;可靠性要求高;多样性,应用广泛,种类繁多。2. 嵌
2、入式处理器分为哪几类?低端的微控制器(MicroConctroller Unit,MCU)中高端的嵌入式微处理器(Embedded MicroProcessor Unit,EMPU)通信领域的 DSP 系统(Digital Signal Processor,DSP)高度集成的片上系统(System on Chip,SoC)3. ARM 英文原意是什么?它是个怎样的公司?其处理器有何特点?ARM(Advanced RISC Machines)公司是全球领先的 16/32 位 RISC 微处理器知识产权设计供应商。ARM 公司通过将其高性能、低功耗、低成本的 RISC 微处理器,外围和系统芯片设计
3、技术转让给合作伙伴来生产各具特色的芯片。ARM 处理器的特点:小体积、低功耗、低成本而性能高。16/32 位指令集。全球至多的合作伙伴。4. 什么是实时系统?它由哪些特征?如何分类?实时系统是具有实时性且能支持实时控制系统工作的操作系统。其首要任务是调动一切可利用的资源来完成实时控制任务,其次才着眼于提高计算机系统的使用效率,其重要特点是能满足对时间的限制和要求。实时性:实时系统所产生的结果在时间上有严格的要求,只有符合时间要求的结果才是正确的。并行性:要求系统有并行处理能力,以便能同时相应来自不同端口的输入信号。多路性:对多个不同的现场进行采集,以及对多个对象和多个执行实行控制。独立性:每个
4、用户向实时系统提出服务请求,相互间是独立的。在实时控制系统中对信号的采集和对象控制也是独立的。可预测性:实时系统的实际行为必须处在一定的限度内,而这个限度由系统的定义获得。 可靠性:一方面指系统的正确性,另一方面指系统的健壮性,即使系统出现错误,仍然处于可预测状态,仍可以安全地带错运行和平缓降级它的性能。分类:强实时系统(保质、保量、在限定时间内完成任务)、弱实时系统(没有限制完成时间)、一般实时系统(强和弱的折中)。5. RTOS 由几部分组成?它由哪些特点?与一般操作系统有何不同?实时内核(主要实现任务管理,定时器管理,存储器管理、任务间通信与同步,中断管理等)、网络组件、文件系统、图形用
5、户界面。特点:支持异步事件的响应;中断和调度任务的优先级机制;支持抢占式调度;确定的任务切换时间和中断延迟时间;支持同步。6. 实时操作系统常用的任务调度算法有哪几种?基于优先级的调度算法:非抢占式调度,抢占式调度同一优先级的时间轮转调度算法(执行一段时间无论完成与否,处理器均转入下一个就绪的同一优先级任务)单调速率调度算法(执行频率越高,其优先级越高)7. 用什么方法解决优先级反转问题?(1) 优先级继承:设 C 为正占用着某项共享资源的进程 P 以及所有正在等待占用此项资源的进程集合;找出这个集合的优先级最高者 P_h,其优先级为 p;把进程 P 的优先级设置成 P 成 。(2) 优先级封
6、顶:设 C 为所有可能竞争使用某项共享资源的进程的集合。事先为这个集合规定一个优先级上限 p,使得这个集合的所有优先级都小于 p;在创建保护该项资源的信号量或互斥量时,将 P 将作为一个参数;每当有进程通过这个信号量或互斥量取得对共享资源的独占使用权时,就将此进程的优先级暂时提高到 P,一直到释放该项资源时菜恢复对其原有的优先级。第二章1. 嵌入式系统开发过程分为哪几个阶段?每个阶段的特点是什么?(1) 需求分析阶段:对问题的识别和分析;制定规格说明文档;需求评审特点:采用成熟、易于二次开发的系统易于节省时间,从而以最短时间面世。(2) 设计阶段:数据流分析-划分任务-定义任务间接口特点:DA
7、RTS 的设计方法-是结构化设计的扩展,划分出任务,并提供定义任务间的接口机制,适合设计多个并发执行的任务。(3) 生成代码阶段:代码编程-交叉编译和链接-交叉调试-测试(单元和集成测试)特点:一般采用的方法是现在通用 PC 机上编程,然后通过交叉编译、链接,将程序做成目标平台上可以运行的二进制代码格式,最后将程序下载到目标平台上的特定位置,在目标板上启动这段二进制代码。(4) 固化阶段:嵌入式应用软件完成以后,编译器要对源代码重新编译一次,以产生固化到目标坏境的可执行代码,再烧到环境目标环境的 Flash 中。 固化的可执行代码和用于调试的可执行代码有些不同。固化用的代码在目标文件中把调式用
8、的信息都屏蔽掉了。固化后没有监控器执行硬件的启动和初始化,这部分工作必须由固化的程序自己完成,所以启动模块必须包含在固化代码中。特点:程序需要写入到 Flash 中固化,保证每次运行后下一次运行无误,所以嵌入式开发相比增加了软件的固化阶段。2. 嵌入式系统有哪几种调试方式?现在流行的哪种?使用什么接口?(1) 源程序模拟器方式:在 pc 机上,通过软件手段模拟执行为某种嵌入式处理器写的源程序的测试工具。三级模拟功能(指令级、周期级、定时级)(2) 监控器方式:宿主机和目标机建立物理上的连接,通过串口、以太口等把两台机器相连,使之正常工作,然后在宿主机上运行调试器,目标机运行监控程序和被调试程序
9、。(3) 仿真器方式:使用处理器内嵌的调试模块接管中断及异常处理。用户通过设置 CPU 内部的寄存器来指定哪些中断或异常发生后处理器直接进入调试状态,而不进入操作系统的处理程序。JTAG、IDE(在线仿真器 in-circuit Emulator)、ICD(in-circuit Debugger 在线调试器)接口。通过 JTAG 既可以对目标系统进行测试,也可以对目标系统的存储单元进行编程。3. 什么是板级支持包?它一般应完成哪些工作?板级支持包(Board Support Package)是操作系统与目标应用硬件环境的中间接口,它是软件包中具有平台依赖性的那一部分。功能:在系统启动时,对硬件
10、进行初始化;为驱动程序提供访问硬件的手段。工作:在系统启动时,对硬件进行初始化进行:(1) 将系统代码定位到 CPU 将要执行的内存入口处,比便硬件初始化完毕后 CPU 能够执行系统代码(2) 根据不同 CPU 在启动时的硬件规定,BSP 要负责将 CPU 设置为特定状态。(3) 对内存进行初始化,根据系统的内存配置将系统的内存划分为代码、数据、堆栈等不同的区域。(4) 如果有特殊的启动代码,BSP 要将控制权移交给启动代码。(5) 如果应用软件中包含一个嵌入式操作系统,BSP 要负责将操作系统需要的模块加载到内存中。(6) 如果应用软件中包含一个嵌入式操作系统,BSP 还要在操作系统初始化之
11、前,将硬件设置为静止状态,以免造成操作系统初始化失败。为驱动程序提供访问硬件的手段进行:(1) 将驱动程序提供的 ISR(中断服务程序)挂载到中断向量表上。(2) 创建驱动程序初始化所需要的设备对象,BSP 将硬件设备描述为一个数据结构。(3) 为驱动程序提供访问硬件设备寄存器的函数。(4) 为驱动程序提供可重用性措施。只要不同的硬件系统 BSP 提供的接口相同,驱动程序就可在不同的硬件系统上运行。第四章1. ARM7 和 ARM9 在流水线方面有何不同?ARM7 处理器核使用了典型三级流水线的冯诺伊曼结构,ARM9 系列则采用了基于五级流水线的哈佛结构。通过增加流水线级数简化了流水线各级的逻
12、辑,进一步提高了处理器的性能。ARM7 系列处理器中每条指令分取指、译码、执行三个阶段,分别在不同的功能部件上依次独立完成。取指部件完成从存储器装载一条指令,通过译码部件产生下一周期数据路径需要的控制信号,完成寄存器的解码,再送到执行单元完成寄存器的读取、ALU 运算及运算结果的写回,需要访问存储器的指令完成存储器的访问。ARM9 系列处理器的流水线分为取指、译码、执行、访存、回写。取指部件完成从指令存储器取指;译码部件读取寄存器操作数,与三级流水线中不占有数据路径区别很大;执行部件产生 ALU 运算结果或产生存储器地址(对于存储器访问指令来讲);访存部件访问数据存储器;回写部件完成执行结果写
13、回寄存器。2. ARM 处理器支持的数据类型有哪些?字节:在 ARM 体系结构中字节的长度均为 8 位。字:在 ARM 体系结构中字节的长度均为 32 位。半字:在 ARM 体系结构中字节的长度均为 16 位3. 写出 ARM 使用的各种工作模式和状态。ARM 微处理器的工作状态一般有两种,并可在两种状态之间切换:第一种为 ARM 状态,此时处理器执行 32 位的字对齐的 ARM 指令;第二种为 Thumb 状态,此时处理器执行 16 位的、半字对齐的 Thumb 指令。在程序的执行过程中,微处理器可以随时在两种工作状态之间切换,并且,处理器工作状态的转变并不影响处理器的工作模式和相应寄存器中
14、的内容。但 ARM 微处理器在开始执行代码时,应该处于 ARM 状态。 ARM 处理器模式ARM 微处理器支持 7 种运行模式,分别为:用户模式(usr):ARM 处理器正常的程序执行状态。快速中断模式(fiq):用于高速数据传输或通道处理。外部中断模式(irq):用于通用的中断处理。管理模式(svc):操作系统使用的保护模式。数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。系统模式(sys):运行具有特权的操作系统任务。定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。ARM 微处理器的运行模式可以通过软件改
15、变,也可以通过外部中断或异常处理改变。大多数的应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的。除用户模式以外,其余的所有 6 种模式称之为非用户模式,或特权模式;其中除去用户模式和系统模式以外的 5 种又称为异常模式,常用于处理中断或异常,以及需要访问受保护的系统资源等情况4. 哪个寄存器用做 PC?哪个用做 LR?寄存器 R14 称为链接寄存器 LR,它用于保存子程序的返回地址。如果在子程序中保存了返回地址,寄存器 R14 则可以用做其他用途。寄存器 R15 为程序计数器 PC,不能用做其他用途5. CPSR 的哪位定义状态?比较 ARM 与 X86
16、 处理器 CPU 标志位的异同。M0、M1、M2、M3、M4 是模式位。这些位决定了处理器的运行模式。具体含义如表 2 表 2-2 运行模式位 M4:0的具体含义 M4:0 处理器模式 可访问的寄存器0x10000 用户模式 PC,CPSR,R0-R140x10001 FIQ 模式 PC,CPSR, SPSR_fiq,R14_fiq-R8_fiq, R7R00x10010 IRQ 模式 PC,CPSR, SPSR_irq,R14_irq,R13_irq,R12R00x10011 管理模式 PC,CPSR, SPSR_svc,R14_svc,R13_svc,R12R0,0x10111 中止模式
17、PC,CPSR, SPSR_abt,R14_abt,R13_abt, R12R0,0x11011 未定义模式 PC,CPSR, SPSR_und,R14_und,R13_und, R12R0,0x11111 系统模式 PC,CPSR(ARM v4 及以上版本), R14R0 ARM 标志位包括 N、Z、C、V 四个标志位,分别作为符号标志、0 标志、进位标志和溢出标志,X86 中由 SF、AF、CF、OF 分别作为这四种标志,此外 X86 中还包括辅助进位标志 AF和奇偶校验标志 PF。6. ARM 与 Thumb 指令的边界对准有何不同?用于字访问的地址通常应当字对准,用于半字访问的地址通常
18、应当半字对准。ARM 执行期间是字对准方式,而 Thumb 指令时半字对准方式。7. ARM 为何没有移位指令?ARM 在指令中使用第二操作数可以直接实现移位操作。8. 如何区分伪指令 LDR 和汇编指令 LDR?看指令中的操作数有无等号。9. 假设 R0=0X12345678,使用指令 R0 存储到 0X4000 的指令存到存储器中。若存储器为大端组织,写出从存储器 0X4000 处加载一个直接到 R2 的指令执行后 R2 的值。小端:高字节在高地址;大端:高字节在低地址。所以 R2=0X1234567810. 假定有一个 25 个字的数组。编译器分别用 R0 和 R1 分配变量 x 和 y
19、。若数组的基地址放在R2 中,使用后变址形式翻译:x=array5+yADD R0, R2, #20, R1或者 ldr r3,r2,#20add r0,r3,r111. 使用汇编完成下列 C 的数值赋值:For(i=0;i10;i+) ai=bi+c;编程实现 For(i=0;i10;i+) ai=bi+carea arraydata,data,readwritearraya dcd 0,0,0,0,0,0,0,0,0,0arrayb dcd 1,2,3,4,5,6,7,8,9,10constc dcd 20area arrayadd,code,readonlyentrystartldr r0,constcmov r1,#10ldr r2,=arraya-4ldr r3,=arrayb-4nextldr r4,r3,#4!add r4,r4,r0str r4,r2,#4!subs r1,r1,#1bne nextextmov r0,#0x18mov r1,#0x20000add r1,r1,#0x26;ldr r1,=0x20026swi 0x123456end