logo资料库

arm&Linux;嵌入式系统马忠梅课后习题答案第一至四章.docx

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
1. 什么是嵌入式系统?它由哪几部分组成?有何特点? 第一章 以应用为中心,计算机技术为基础,软硬件可裁减,从而能够适应实际应用中对功能、可靠 性、成本、体积、功耗等严格要求的专用计算机系统。 嵌入式系统通常由嵌入式处理器、外围设备、嵌入式操作系统、应用软件等几大部分组成。 嵌入式处理器与通用处理器的最大不同点在其大多工作在为特定用户群设计的系统。外围设备包 括:存储器、接口、人机交互。 嵌入式操作系统的特点:软硬件一体化,集计算机技术、微电子技术和行业技术为一体;需 要操作系统支持,代码小,执行速度快;专用紧凑,用途固定,成本敏感;可靠性要求高;多样 性,应用广泛,种类繁多。 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 微处理器,外围和系统芯片设计技术转 让给合作伙伴来生产各具特色的芯片。 ARM 处理器的特点:小体积、低功耗、低成本而性能高。16/32 位指令集。全球至多的合作 伙伴。 4. 什么是实时系统?它由哪些特征?如何分类? 实时系统是具有实时性且能支持实时控制系统工作的操作系统。其首要任务是调动一切可利 用的资源来完成实时控制任务,其次才着眼于提高计算机系统的使用效率,其重要特点是能满足 对时间的限制和要求。 实时性:实时系统所产生的结果在时间上有严格的要求,只有符合时间要求的结果才是正确 的。 并行性:要求系统有并行处理能力,以便能同时相应来自不同端口的输入信号。 多路性:对多个不同的现场进行采集,以及对多个对象和多个执行实行控制。 独立性:每个用户向实时系统提出服务请求,相互间是独立的。在实时控制系统中对信号的 采集和对象控制也是独立的。 可预测性:实时系统的实际行为必须处在一定的限度内,而这个限度由系统的定义获得。 可靠性:一方面指系统的正确性,另一方面指系统的健壮性,即使系统出现错误,仍然处于 可预测状态,仍可以安全地带错运行和平缓降级它的性能。 分类:强实时系统(保质、保量、在限定时间内完成任务)、弱实时系统(没有限制完成时间)、 一般实时系统(强和弱的折中)。 5. RTOS 由几部分组成?它由哪些特点?与一般操作系统有何不同? 实时内核(主要实现任务管理,定时器管理,存储器管理、任务间通信与同步,中断管理等)、 网络组件、文件系统、图形用户界面。 特点:支持异步事件的响应;中断和调度任务的优先级机制;支持抢占式调度;确定的任务 切换时间和中断延迟时间;支持同步。 6. 实时操作系统常用的任务调度算法有哪几种? 基于优先级的调度算法:非抢占式调度,抢占式调度 同一优先级的时间轮转调度算法(执行一段时间无论完成与否,处理器均转入下一个就绪的 同一优先级任务) 单调速率调度算法(执行频率越高,其优先级越高) 7. 用什么方法解决优先级反转问题? (1) 优先级继承:设 C 为正占用着某项共享资源的进程 P 以及所有正在等待占用此项资源的 进程集合;找出这个集合的优先级最高者 P_h,其优先级为 p’;把进程 P 的优先级设 置成 P 成’。 (2) 优先级封顶:设 C 为所有可能竞争使用某项共享资源的进程的集合。事先为这个集合规 定一个优先级上限 p’,使得这个集合的所有优先级都小于 p’;在创建保护该项资源 的信号量或互斥量时,将 P 将’作为一个参数;每当有进程通过这个信号量或互斥量取
得对共享资源的独占使用权时,就将此进程的优先级暂时提高到 P’’,一直到释放该 项资源时菜恢复对其原有的优先级。 第二章 1. 嵌入式系统开发过程分为哪几个阶段?每个阶段的特点是什么? (1) 需求分析阶段:对问题的识别和分析;制定规格说明文档;需求评审 特点:采用成熟、易于二次开发的系统易于节省时间,从而以最短时间面世。 (2) 设计阶段:数据流分析-划分任务-定义任务间接口 特点:DARTS 的设计方法-是结构化设计的扩展,划分出任务,并提供定义任务间的接 口机制,适合设计多个并发执行的任务。 (3) 生成代码阶段:代码编程-交叉编译和链接-交叉调试-测试(单元和集成测试) 特点:一般采用的方法是现在通用 PC 机上编程,然后通过交叉编译、链接,将程序做 成目标平台上可以运行的二进制代码格式,最后将程序下载到目标平台上的特定位置,在目标板 上启动这段二进制代码。 (4) 固化阶段:嵌入式应用软件完成以后,编译器要对源代码重新编译一次,以产生固化到 目标坏境的可执行代码,再烧到环境目标环境的 Flash 中。 固化的可执行代码和用于 调试的可执行代码有些不同。固化用的代码在目标文件中把调式用的信息都屏蔽掉了。 固化后没有监控器执行硬件的启动和初始化,这部分工作必须由固化的程序自己完成, 所以启动模块必须包含在固化代码中。 特点:程序需要写入到 Flash 中固化,保证每次运行后下一次运行无误,所以嵌入式 开发相比增加了软件的固化阶段。 2. 嵌入式系统有哪几种调试方式?现在流行的哪种?使用什么接口? (1) 源程序模拟器方式:在 pc 机上,通过软件手段模拟执行为某种嵌入式处理器写的源程 序的测试工具。三级模拟功能(指令级、周期级、定时级) (2) 监控器方式:宿主机和目标机建立物理上的连接,通过串口、以太口等把两台机器相连, 使之正常工作,然后在宿主机上运行调试器,目标机运行监控程序和被调试程序。 (3) 仿真器方式:使用处理器内嵌的调试模块接管中断及异常处理。用户通过设置 CPU 内部 的寄存器来指定哪些中断或异常发生后处理器直接进入调试状态,而不进入操作系统的 处理程序。JTAG、IDE(在线仿真器 in-circuit Emulator)、ICD(in-circuit Debugger 在线调试器)接口。通过 JTAG 既可以对目标系统进行测试,也可以对目标系统的存储单 元进行编程。 3. 什么是板级支持包?它一般应完成哪些工作? 板级支持包(Board Support Package)是操作系统与目标应用硬件环境的中间接口,它是软 件包中具有平台依赖性的那一部分。 功能:在系统启动时,对硬件进行初始化;为驱动程序提供访问硬件的手段。 工作:在系统启动时,对硬件进行初始化进行: (1) 将系统代码定位到 CPU 将要执行的内存入口处,比便硬件初始化完毕后 CPU 能够执 行系统代码 (2) 根据不同 CPU 在启动时的硬件规定,BSP 要负责将 CPU 设置为特定状态。 (3) 对内存进行初始化,根据系统的内存配置将系统的内存划分为代码、数据、堆栈等 不同的区域。 (4) 如果有特殊的启动代码,BSP 要将控制权移交给启动代码。 (5) 如果应用软件中包含一个嵌入式操作系统,BSP 要负责将操作系统需要的模块加载 到内存中。 (6) 如果应用软件中包含一个嵌入式操作系统,BSP 还要在操作系统初始化之前,将硬 件设置为静止状态,以免造成操作系统初始化失败。 为驱动程序提供访问硬件的手段进行: (1) 将驱动程序提供的 ISR(中断服务程序)挂载到中断向量表上。 (2) 创建驱动程序初始化所需要的设备对象,BSP 将硬件设备描述为一个数据结构。 (3) 为驱动程序提供访问硬件设备寄存器的函数。 (4) 为驱动程序提供可重用性措施。只要不同的硬件系统 BSP 提供的接口相同,驱动程序就 可在不同的硬件系统上运行。
第三章 1. 从技术角度讲,Linux 是一个什么样的操作系统?你认为它由哪些不足? Linux 是一个类 Unix 操作系统,它完全是一个自由的操作系统,它是一个单一内核的操作 系统,这是由于 Linus Torvalds 以代码执行效率为自己操作系统的第一要务,比起结构的清晰 他们更加注重功能的强大和高效率,他们花大量的经历在优化代码上,而这样以损失结构精炼作 为代价,导致 Linux 中的每个部件都不能被轻易拆出,否则破坏效率。虽然 Linux 是单一结构但 是他和 UNIX 操作系统不一样 Unix 操作系统所有代码是静态编译的,而在 Linux 中代码可以动态 装入和卸载内核中的部分代码。Linux 不支持用户态线程,Linux 中通过另一种方法解释并实现 LWP 的机制。Linux 高效而稳定,以独占的方式执行最底层的任务,保证其他程序的正常运行。 缺陷:只有抢占式的操作系统才可以成为“实时”操作系统。要对 Linux 的中断处理、进进 程调度和进程抢占这 3 个方面进行改进。 2. GPL 协议的主要内容是什么?你了解自由软件的开发模式,愿意让大家共享你的软件么?为 什么? GPL(General public license)通用公共许可证,GPL 保证任何人有共享和修改自由软件的 自由,任何人有权取得、修改和重新发布自由软件的源代码,并且规定在不增加费用的条件下得 到源代码(基本的发布费除外)。 开发模式是“巴扎模式”,一大批广泛分布于世界各地的软件爱好者 ,以互联网为纽带,通 过 BBS、新闻组及电子邮件等现代通信方式,同时参与一个软件开发项目。以个初步工作的软件 雏形首先发布出来,然后大家同时开始工作,分别结合自己的实际经验和需要,寻找软件中的漏 洞,提出修改意见,发布在互联网上,然后其他人也发现了漏洞,接着提出改进方案,给出补丁, 这个软件像滚雪球一样不断完善。 3. 进程和程序有什么区别?什么是进程间的互斥和同步? 可执行文件由指令和数据组成。进程就是在计算机上运行的可执行文件针对特定的输入数据 的一个实例,同一个可执行程序文件如果操作不同的输入数据就是两个不同的进程。 互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无 法限制访问者对资源的访问顺序,即访问是无序的。 同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。 在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是 指可以允许多个访问者同时访问资源 4. 进程调度的功能是什么?Linux 的进程调度发生在什么情况下?Linux 系统的实时调度和普 通调度有什么区别? 高级、中级和低级调度作业从提交开始直到完成,往往要经历下述三级调度: 高级调度:(High-Level Scheduling)又称为作业调度,它决定把后备作业调入内存运行; 低级调度:(Low-Level Scheduling)又称为进程调度,它决定把就绪队列的某进程获得 CPU;中 级调度:(Intermediate-Level Scheduling)又称为在虚拟存储器中引入,在内、外存对换区进 行进程对换。 调度发生的情况: (1)正在执行的进程执行完毕。这时如果不选择新的就绪进程执行,将浪费处理机资源。 (2)执行中进程自己调用阻塞原语将白己阻塞起来进入睡眠等状态。 (3)执行中进程调用了 P 原语操作,从而因资源不足而被阻塞;或调用了 v 原语操作激活了 等待资源的进程队列。 (4)执行中进程提出 I/O 请求后被阻塞。 (5)在分时系统中时间片已经用完。 (6)在执行完系统调用等系统程序后返回用户进程时,这时可看作系统进程执行完毕,从而 可调度选择一新的用户进程执行。 (7)就绪队列中的某进程的优先级变得高于当前执行进程的优先级,从而也将引发进程调度。 区别:Linux 根据政策从整体上区分实时进程和普通进程,因为实时进程和普通进程度调度是不 同的,它们两者之间,实时进程应该先于普通进程而运行,然后,对于同一类型的不同进程,采 用不同的标准来选择进程:对于普通进程,Linux 采用动态优先调度, Linux 中某个进程的调度 策略(policy)、优先级(priority)等可以作为参数由用户自己决定,具有相当的灵活性。
对于实时进程,Linux 采用了两种调度策略,即 FIFO(先来先服务调度)和 RR(时间片轮转 调度)。因为实时进程具有一定程度的紧迫性,所以衡量一个实时进程是否应该运行,Linux 采 用了一个比较固定的标准。有两个优先级,实时优先级就是用来衡量实时进程是否值得运行的。 5. Linux 中从用户态进入核心态的唯一途径是什么? 从用户态转换为核心态的唯一途径是中断。CPU 处于用户态时,所运行的程序只能执行非特 权指令,如果用户程序在用户态下执行特权指令,将发生中断,由操作系统获得控制。操作系统 在核心态下运行。从核心态到用户态可以通过修改程序状态字来实现,这将伴随这由操作系统程 序到用户程序的转换。 6. 在 Linux 系统中,为什么可以像使用文件一样操作一个设备? 设备文件是 Linux 系统很重要的一个特色。Linux 系统把每一个 I/O 设备都看成一个文件, 与普通文件一样处理,这样可以使文件与设备的操作尽可能统一。从用户的角度来看,对 I/O 设备的使用和一般文件的使用一样,不必了解 I/O 设备的细节。设备文件可以细分为块设备文件 和字符设备文件。前者的存取是以一个个字符块为单位的,后者则是以单个字符为单位的。 7. 什么是设备驱动程序?Linux 系统中,用户怎么使用设备驱动程序? 设备驱动程序在 Linux 内核中扮演着特殊的角色。他们是一个个独立的“黑盒子”,是某个 特定的硬件相应一个定义良好的内部编程接口,这些接口完全隐藏了设备的工作细节。用户的操 作通过一组标准化的调用执行,而这些调用独立于特定的驱动程序。将这些调用映射到作用于实 际硬件的设备特有操作上,则是设备驱动程序的任务。这个编程接口能使得驱动程序独立于内核 的其他部分而建立,必要的情况下可在运行时“插入”内核。 8. Linux 文件类型常见的有:普通文件、目录、字符设备文件、块设备文件、套接口文件、符号链 接文件 Linux 文件有哪些类型? 普通文件:我们用 ls -lh 来查看某个文件的属性,可以看到有类似 -rw-r--r-- ,值得注 意的是第一个符号是 - ,这样的文件在 Linux 中就是普通文件。这些文件一般是用一些相关的 应用程序创建。 目录:看到有类似 drwxr-xr-x ,这样的文件就是目录,目录在 Linux 是一个比较特殊的文 件。注意它的第一个字符是 d,创建目录的命令可以用 mkdir 命令,或 cp 命令。 字符设备文件:文件的属性,注意前面第一个字符是 c ,这表示字符设备文件。比如猫等 串口设备 块设备文件:文件的属性,注意前面的第一个字符是 b,这表示块设备,比如硬盘,光驱等 设备 套接口文件:注意这个文件的属性的第一个字符是 s。 符号链接文件:我们查看文件属性时,注意第一个字符是 l,这类文件是链接文件 9. 主流的 Linux 操作系统有哪些? 国外封装的 Linux 以 Red Hat(又称为“红帽 Linux”)、OpenLinux、SuSE(SuSE 是欧洲最流 行的 Linux 发行版)、TurboLinux(TurboLinux 是日本制作的 Linux 发行版,其最大特色便是以 日文版、中文简/繁体版、英文版三种形式发行)等最为成功。国内 Linux 发行版做的相对比较成 功是红旗和中软两个版本。 第四章 1. ARM7 和 ARM9 在流水线方面有何不同? ARM7 处理器核使用了典型三级流水线的冯·诺伊曼结构,ARM9 系列则采用了基于五级流水 线的哈佛结构。通过增加流水线级数简化了流水线各级的逻辑,进一步提高了处理器的性能。ARM7 系列处理器中每条指令分取指、译码、执行三个阶段,分别在不同的功能部件上依次独立完成。 取指部件完成从存储器装载一条指令,通过译码部件产生下一周期数据路径需要的控制信号,完 成寄存器的解码,再送到执行单元完成寄存器的读取、ALU 运算及运算结果的写回,需要访问存 储器的指令完成存储器的访问。ARM9 系列处理器的流水线分为取指、译码、执行、访存、回写。 取指部件完成从指令存储器取指;译码部件读取寄存器操作数,与三级流水线中不占有数据路径 区别很大;执行部件产生 ALU 运算结果或产生存储器地址(对于存储器访问指令来讲);访存部件 访问数据存储器;回写部件完成执行结果写回寄存器。 2. ARM 处理器支持的数据类型有哪些?
字节:在 ARM 体系结构中字节的长度均为 8 位。 字:在 ARM 体系结构中字节的长度均为 32 位。 半字:在 ARM 体系结构中字节的长度均为 16 位 3. 写出 ARM 使用的各种工作模式和状态。 ARM 微处理器的工作状态一般有两种,并可在两种状态之间切换: 第一种为 ARM 状态,此时处理器执行 32 位的字对齐的 ARM 指令; 第二种为 Thumb 状态,此时处理器执行 16 位的、半字对齐的 Thumb 指令。 在程序的执行过程中,微处理器可以随时在两种工作状态之间切换,并且,处理器工作状态的转 变并不影响处理器的工作模式和相应寄存器中的内容。但 ARM 微处理器在开始执行代码时,应该 处于 ARM 状态。 ARM 处理器模式 ARM 微处理器支持 7 种运行模式,分别为: 用户模式(usr):ARM 处理器正常的程序执行状态。 快速中断模式(fiq):用于高速数据传输或通道处理。 外部中断模式(irq):用于通用的中断处理。 管理模式(svc):操作系统使用的保护模式。 数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。 系统模式(sys):运行具有特权的操作系统任务。 定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件 仿真。 ARM 微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。大多数 的应用程序运行在用户模式下,当处理器运行在用户模式下时,某些被保护的系统资源是不能被 访问的。 除用户模式以外,其余的所有 6 种模式称之为非用户模式,或特权模式;其中除去用户模式 和系统模式以外的 5 种又称为异常模式,常用于处理中断或异常,以及需要访问受保护的系统资 源等情况 4. 哪个寄存器用做 PC?哪个用做 LR? 寄存器 R14 称为链接寄存器 LR,它用于保存子程序的返回地址。如果在子程序中保存了返 回地址,寄存器 R14 则可以用做其他用途。寄存器 R15 为程序计数器 PC,不能用做其他用途 5. CPSR 的哪位定义状态? M0、M1、M2、M3、M4 是模式位。这些位决定了处理器的运行模式。具体含义如表 2 表 2-2 运 行模式位 M[4:0]的具体含义 M[4:0] 处理器模式 可访问的寄存器 0x10000 用户模式 PC,CPSR,R0-R14 0x10001 FIQ 模式 PC,CPSR, SPSR_fiq,R14_fiq-R8_fiq, R7~R0 0x10010 IRQ 模式 PC,CPSR, SPSR_irq,R14_irq,R13_irq,R12~R0 0x10011 管理模式 PC,CPSR, SPSR_svc,R14_svc,R13_svc,,R12~R0, 0x10111 中止模式 PC,CPSR, SPSR_abt,R14_abt,R13_abt, R12~R0, 0x11011 未定义模式 PC,CPSR, SPSR_und,R14_und,R13_und, R12~R0, 0x11111 系统模式 PC,CPSR(ARM v4 及以上版本), R14~R0 ARM 与 Thumb 指令的边界对准有何不同? 用于字访问的地址通常应当字对准,用于半字访问的地址通常应当半字对准。ARM 执行期间 6. 是字对准方式,而 Thumb 指令时半字对准方式。 7. 假设 R0=0X12345678,使用指令 R0 存储到 0X4000 的指令存到存储器中。若存储器为大端 组织,写出从存储器 0X4000 处加载一个直接到 R2 的指令执行后 R2 的值。 小端:高字节在高地址;大端:高字节在低地址。所以 R2=0X12345678 8. 假定有一个 25 个字的数组。编译器分别用 R0 和 R1 分配变量 x 和 y。若数组的基地址放在 R2 中,使用后变址形式翻译:x=array[5]+y ADD R0, [R2, #20], R1 9. 使用汇编完成下列 C 的数值赋值:For(i=0;i<10;i++) {a[i]=b[i]+c}
分享到:
收藏