2022年ARM-cotex-A嵌入式原理与系统设计习题答案说课讲解 .pdf

上传人:C****o 文档编号:39667764 上传时间:2022-09-07 格式:PDF 页数:28 大小:335.21KB
返回 下载 相关 举报
2022年ARM-cotex-A嵌入式原理与系统设计习题答案说课讲解 .pdf_第1页
第1页 / 共28页
2022年ARM-cotex-A嵌入式原理与系统设计习题答案说课讲解 .pdf_第2页
第2页 / 共28页
点击查看更多>>
资源描述

《2022年ARM-cotex-A嵌入式原理与系统设计习题答案说课讲解 .pdf》由会员分享,可在线阅读,更多相关《2022年ARM-cotex-A嵌入式原理与系统设计习题答案说课讲解 .pdf(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、ARM-cot ex-A8 嵌 入式 原 理 与 系 统 设 计 习题 答 案名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 28 页 -第 1 章1.1 什么是嵌入式系统?嵌入式系统是以应用为中心、以计算机技术为基础、软/硬件可剪裁、适用于对系统功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。1.2 嵌入式系统的应用领域有哪些?列举一些生活中的嵌入式系统实例。嵌入式系统的应用领域有交通管理、工控设备、智能仪器、汽车电子、环境监测、电子商务、医疗仪器、移动计算、网络设备、通信设备、军事电子、机器人、智能玩具、信息家电等;网络设备:交换机、路由器、Modem 等。消费电

2、子:手机、MP3、PDA、可视电话、电视机顶盒、数字电视、数码照相机、数码摄像机、信息家电等。办公设备:打印机、传真机、扫描仪等。汽车电子:ABS(防死锁制动系统)、供油喷射控制系统、车载 GPS 等。工业控制:各种自动控制设备1.3 嵌入式系统的组成有哪些?嵌入式系统一般由硬件层,中间层,软件层三层组成。1.4 嵌入式系统的特点有哪些?嵌入式系统有以下4 个特点:系统内核小、专用性强、系统精简、实时性高。1.5 简述嵌入式系统的发展。嵌入式系统具有以下6 个发展趋势:系统工程化、开源化、功能多样化、节能化、人性化、网络化。1.6 常用的嵌入式处理器分为哪几类?常见的嵌入式处理器有一下四类:嵌

3、入式微处理器、嵌入式微控制器、嵌入式DSP 处理器、嵌入式片上系统。1.7 嵌入式操作系统的特点有哪些?嵌入式操作系统有以下6 个特点:系统内核小、专用性强、系统精简、高实时性、多任务的操作系统、需要专用开发工具和环境。1.8 什么是实时操作系统?IEEE 实时 UNIX 分委会认为实时操作系统应具备哪些特点?实时操作系统是指在限定的时间内能对过程调用产生正确的响应的操作系统。IEEE 的实时UNIX 分委会认为实时操作系统应具备以下特点:异步的事件响应、切换时间和中断延迟时间确定、优先级中断和调度、抢占式调度、内存锁定、连续文件、同步。名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页

4、,共 28 页 -1.9 常用的嵌入式操作系统有哪些?它们各有什么特点?操作系统特点uCLinux遵守GNU/GPL,完全开源;移植性好;网络功能优秀;支持多文件系统;API 接口丰富。Android良好的平台开放性、可以实现个性化应用设定和与Google 应用的无缝结合。Windows CE与 Windows 系列有较好的兼容性;能在多种处理器体系结构上运行;采用模块化设计;没有开放源代码;耗费内存。VxWorks支持多种处理器;具有先进的网络功能;具有良好的可靠性、卓越的实时性、高效的可裁剪性。Nucleus抢占式多任务操作系统内核;便于移植并且支持多种处理器;核心代码精简。uC/OS I

5、I公开源代码;可移植性强;可固化、可裁剪;占先式、多任务;系统任务;中断管理;稳定性和可靠性都很强。QNX实时可拓展;内核精简;运行速度快。Linux开源的自由操作系统;真正的多用户多任务操作系统;内核可剪裁;实时性好;网络功能强大;支持目前多数的处理器;稳定性和可靠性都很强。1.10 嵌入式系统工程设计的要点有哪些?应用需求;硬件要求;实时性的实现;系统功耗;系统升级方式;调试方式;开发环境的选择等。1.11 举出几个嵌入式系统应用的例子,通过查资料和独立思考,说明这些嵌入式系统产品主要由哪几部分组成,每个组成部分用于完成什么功能。比较典型的例子:手机。组成部分:处理器:核心处理器;内存:操

6、作系统,程序运行的存储空间;闪存:存放操作系统,文件等;屏幕:显示,如果是触摸屏还有输入功能;按键(非必须):输入。第 2 章2.1 ARM 微处理器及技术的应用领域及主要产品有哪些?举一些生活中常用的ARM 处理器应用的例子。ARM 微处理器觉得应用领域有工业控制领域、无线通信领域、网络应用、消费类电子产品、成像和安全产品等。目前绝大多数的手机、平板采用的处理器都是ARM 架构 cortex-a 系列的处理器,而其cortex-m 系列在智能设备也得到广泛应用,小米手环2 就是用的cortex-m4 的核。2.2 采用 RISC 架构的 ARM 微处理器有哪些特点?名师资料总结-精品资料欢迎

7、下载-名师精心整理-第 3 页,共 28 页 -体积小、低功耗、低成本、高性能;支持Thumb(16 位)/ARM(32 位)双指令集,能很好地兼容8 位/16 位器件;大量使用寄存器;指令执行速度更快;大多数数据操作都在寄存器中完成;寻址方式灵活简单,执行效率高;指令长度固定。2.3 ARM 内核基本版本有哪些?每个版本都有哪些基本的性能?内核基本版本基本的性能V1 版本基本的数据处理指令(无乘法);基于字节、半字和字的Load/Store 指令;转移指令,包括子程序调用及链接指令;供操作系统使用的软件中断指令 SWI;寻址空间:64 MB。V2 版本乘法和乘加指令;支持协处理器操作指令;快

8、速中断模式;SWP/SWPB 的最基本存储器与寄存器交换指令;寻址空间:64 MB。V3 版本寻址空间增至 32 位(4 GB);当前程序状态信息从原来的 R15 寄存器移到当前程序状态寄存器CPSR(Current Program Status Register)中;增加了程序状态保存寄存器 SPSR(Saved Program Status Register);增加了两种异常模式,使操作系统代码可方便地使用数据访问中止异常、指令预取中止异常和未定义指令异常;增加了 MRS/MSR 指令,以访问新增的 CPSR/SPSR 寄存器;增加了从异常处理返回的指令功能。V4 版本有符号和无符号半字及

9、有符号字节的存/取指令;增加了T 变种,处理器可工作在Thumb 状态,增加了 16 位 Thumb 指令集;完善了软件中断SWI 指令的功能;处理器系统模式引进特权方式时使用用户寄存器操作;把一些未使用的指令空间捕获为未定义指令。V5 版本新增带有链接和交换的转移BLX 指令;新增计数前导零CLZ 指令;新增BRK 中断指令;增加了数字信号处理指令(V5TE 版);为协处理器增加更多可选择的指令;改进了ARM/Thumb 状态之间的切换效率;V6 版本ThumbTM:35%代码压缩;DSP 扩充:高性能定点DSP 功能;JazelleTM:Java 性能优化,可提高 8 倍;Media 扩充

10、:音 /视频性能优化,可提高 4 倍。V7 版本首次采用了强大的信号处理扩展集;采用了Thumb-2 技术;采用了 NEON技术;支持改良的浮点运算。2.4 ARM 微处理器有哪些系列?它们有什么特点?微处理器系列特点ARM7 微处理器系列调试开发方便;功耗极低;能够提供0.9MIPS/MHz 的三级流水线结构;代码密度高并兼容16 的 Thumb指令集;对操作系统的支持广泛;指令系统与ARM9 系列、ARM9E 系列和ARM10E 系列兼容,便于用户的产品升级换代;主频最高可达130MIPS。ARM9 微处理器系列5 级整数流水线,指令执行效率更高;提供1.1MIPS/MHz 的哈佛结构;支

11、持32 位 ARM 指令集和16 位 Thumb指令集;支持32 位的高速AMBA 总线接口;全性能的MMU支持多种主流嵌入式操作系统;MPU 支持实时操作系统;支持数据Cache 和指令Cache,具有更高的指令和数据处理能力ARM9E微处理器系列支持DSP 指令集;5 级整数流水线;支持32 位ARM 指令集和16 位 Thumb 指令集;支持32 位的高速AMBA 总线接口;支持VFP9 浮点处理协处理器;全性能的 MMU 支持多种主流嵌入式操作系统;MPU 支持实时操作系统;支持数据Cache 和指令Cache,具有更高的指令和数据处理能力;主频最高可达300MIPS。名师资料总结-精

12、品资料欢迎下载-名师精心整理-第 4 页,共 28 页 -ARM10E 微处理器系列支持 DSP 指令集;6 级整数流水线;支持32 位 ARM指令集和16 位 Thumb 指令集;支持32 位的高速 AMBA 总线接口;支持VFP10 浮点处理协处理器;全性能的MMU,支持多种主流嵌入式操作系统;支持数据Cache 和指令Cache,具有更高的指令和数据处理能力;主频最高可达400MIPS;内嵌并行读/写操作部件SecurCore 微处理器系列带有灵活的保护单元,以确保操作系统和应用数据的安全;采用软内核技术,防止外部对其进行扫描探测;可集成用户自己的安全特性和其他协处理器。StrongAR

13、M 微处理器系列集成度高;在软件上兼容ARMv4 体系结构Xscale处理器全性能、高性价比、低功耗;支持16 位的 Thumb 指令和 DSP指令集。Cortex 系列处理器分为Cortex-M、Cortex-R 和 Cortex-A 三类;Cortex-M系列针对微控制器,在该领域中需要进行快速且具有高确定性的中断管理,同时需将门数和可能功耗控制在最低;Cortex-R 系列针对实时系统,面向深层的嵌入式实时应用;Cortex-A 面向尖端的基于虚拟内存的操作系统和用户应用,也叫应用程序处理器2.5 在选择 ARM 微处理器时要考虑哪些因素?处理器的基本架构与内核版本;处理器的性能,功耗;

14、处理器的兼容性;处理器的价格;支持的指令格式;处理器支持的操作系统等因素。2.6 Cortex-A8 内核结构有哪些组成部分?每个部分各完成什么功能?Cortex-A8 内核有以下结构组成:指令读取单元完成对指令流进行预测;指令解码单元对所有ARM 指令,Thumb-2 指令进行译码排序;指令执行单元执行所有整数ALl 运算和乘法运算,并影响标志位,根据要求产生用于存取的虚拟地址以及基本回写值,将要存放的数据格式化,并将数据和标志向前发送,处理分支及其他指令流变化,并评估指令条件码;数据存取单元包含了全部L1 数据存储系统和整数存取流水线;L2 Cache单元包含 L2 Cache 和缓冲接口

15、单元BIU;NEON单元单元包含一个10 段 NEON流水线,用于译码和执行高级SIMD 多媒体指令集;ETM 单元是一个非侵入跟踪宏单元,可以对指令和数据进行跟踪,并能对跟踪信息进行过滤和压缩;处理器外部接口。2.7 三星 S5PV210处理器是基于哪种架构的?它主要有哪些特点?三星 S5PV210 处理器基于ARM 架构,采用基于ARM V7 的 Cortex-A8 核;有如下特点:低功耗,高性能;主频可达1GHz,具有 64/32 位内部总线结构,32/32KB 的数据/指令一级缓存,512KB 二级缓存,运算能力可以达到2000DMIPS;支持LPDDR1,LPDDR2,DDR2类 型

16、RAM;Nandflash,Norflash,OneNand 等 类 型Flash;支 持 存 储 空 间 最 大32G(ROM),最大支持32G 的 TF 卡;包含强大的硬件编解码功能,内建MFC,支持多种格式视频编解码;支持 IIS、AC97 和 PCM 音频接口;外部总线模块支持4 路 UART 串口,3 路 IIC总线,2 路 SPI总线。2.8 ARM 集成开发环境 RVDS 包含哪几个模块?这些模块各有什么特点?RVDS包含 4 个模块:IDE、RVCT、RVD和 RVISS;IDE:将软件开发与ARM RealView 工具的编译和调试技术结合在一起。可以用作项目管理器,为 AR

17、M 目标创建、生成、调试、监视和管理项目。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 28 页 -RVCT:业界最优秀的编译器,支持全系列的ARM 和 XSCALE 架构,支持汇编、C和 C+语言,支持二次编译和代码数据压缩技术,能够生成更小的可执行文件,节省 ROM 空间。RVD:RVD 是 RVDS中的调试软件,功能强大,支持 Flash 烧写和多核调试,支持多种调试手段,快速错误定位RVISS:RVISS 是指令集仿真器,支持外设虚拟,可以使软件开发和硬件开发同步进行,同时可以分析代码性能,加快软件开发速度。2.9 ARM 集成开发环境 RVDS 支持哪些处理器和模拟器

18、?RVDS支持以下处理器:ARM7,ARM9,ARM10,ARM11 处理器系列;ARM11 MPCore多核处理器;Cortex 系列处理器;RealView Debugger 中的 SecurCore、SC100和 SC200 处理器;RVCT 中的 SecurCore SC300处理器;RealView Debugger 中支持 Faraday FA526、FA626和 FA626TE处理器;Marvell Feroceon 88FR101 和 88FR111处理器。RVDS 支持以下模拟器:RealView ARMulator指令集模拟器(RVISS);指令集系统模型(ISSM);RT

19、SM;SoC Designer。2.10 什么是嵌入式系统的交叉开发环境?嵌入式系统充当程序的运行环境而非开发环境,因此为了能够开发出适合在嵌入式系统运行的程序,就要使用交叉开发环境。在一个平台上开发出来在另一个平台运行的程序就是交叉开发。交叉开发环境就是用来在宿主机(通用计算机,通常为PC 或工作站)上面生成可以在目标机(嵌入式系统)运行的程序的开发环境。2.11 GCC 交叉编译器的编译流程和执行过程有哪些?GCC 编译常见的错误类型有哪些?GCC交叉编译的流程如下:源文件(*.c,*.s 等)-预处理(*.i)-编译(*.S)-汇编(*.o)-链接(elf 可执行文件)-转换(bin 文

20、件)GCC 编译常见的错误类型有:语法错误;头文件错误,找不到代码中使用的头文件;内建函数使用错误;档案库错误,找不到库文件;未定义的符号错误等2.12 嵌入式系统的交叉开发环境下有哪些调试方法?有以下调试方法:ROM 仿真、在线仿真、在系统编程、JTAG调试、软件仿真器等。2.13 Eclipse for ARM 开发环境搭建的步骤是什么?根据本书介绍搭建 Eclipse for ARM 开发环境。安装 YAGARTO GCC编译工具;安装YAGARTO 工具;安装JRE;安装 Eclipse for ARM;安装仿真器驱动和仿真器工具软件。2.14 在 Eclipse for ARM 开发

21、环境下构建一个工程并且编译调试工程,学会Eclipse for ARM 的使用。根据教材内容自行操作。名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 28 页 -第 3 章3.1 简述 Cortex-A8 微处理器的几种工作模式。Cortex-A8 处理器有8 种模式:用户模式(usr);系统模式(sys);管理模式(svc);中止模式(abt);未定义模式(und);通用中断模式(irq);快速中断模式(fiq);监控模式(mon)。3.2 举例说明 Cortex-A8 微处理器的存储格式。Cortex-A8 处理器支持小端格式和字节不变的大端格式。此外,处理器还支持混合大小端

22、格式(既有大端格式又有小端格式)和非对齐数据访问。对指令的读取,则总是以小端格式操作。3.3 简述机器指令 LDR 与汇编伪指令的区别。机器指令 LDR用于将存储器中的32 位的字数据传送到目标寄存器中,使用格式为:LDR条件目的寄存器 而 LDR伪指令的作用是将一个值加载到目标寄存器中,使用格式为:LDR目的寄存器=两者的本质的区别是一个是加载地址中的数据,一个是加载一个立即数。LDR 伪指令补充了 MOV 指令加载立即数限制的不足。3.4 简述 CPSR状态寄存器中各有效位的含义。条件标志位(N、Z、C、V);Q 标志位(定用于指示增强的DAP 指令是否发生了溢出);IT 块(用于对thu

23、mb 指令集中if-then-else 这一类语句块的控制);J 位用于表示处理器是否处于ThumbEE 状态;GE3:0(该位用于表示在SIMD 指令集中的大于、等于标志);E 位(控制存取操作的字节顺序);A 位(表示异步异常禁止);控制位(中断禁止位,T 位和模式位)。3.5 简述 Cortex-A8 微处理器的异常类型。异常类型说明复位异常当复位信号产生时,复位发生处理器放弃正在执行的指令快速中断异常FIQFIQ异常支持快速中断中断异常 IRQ 发生中断,在快速中断过程中中断异常不发生中止异常中止是一种异常,用于告知操作系统:与某个值关联的内存访问失效。软件中断进入管理模式监控异常当处

24、理器执行SMC 指令时,内核进入监控模式请求监控功能未定义指令异常遇到一条处理器或系统协处理器无法处理的指令时进入3.6 什么是寻址?简述 Cortex-A8 微处理器的寻址方式。寻址是根据指令中给出的地址码字段来寻找真实操作数地址的方式;Cortex-A8 支持的寻址方式有以下几种:寄存器寻址(取出寄存器中的值作为操作数)、立即数寻址(操作数为明确数值)、寄存器移位寻址(对操作数进行移位操作)、寄存器间接寻址(将寄存器中的值作为地址,去改地址中保存的值作为操作数)、变址寻址(在基址寄存器的基础名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 28 页 -上加上偏移量,然后将该值作

25、为地址取其地址中的值作为操作数)、多寄存器寻址(一次操作传送多寄存器的值)、堆栈寻址(堆栈是一种按特定顺序进行存取)、块拷贝寻址(把一块数据从存储器的某一位置复制到另一位置)、相对寻址(变址寻址的一种变通,由程序计数器(PC)提供基地址,指令中的地址码字段作为偏移量,两者相加后得到操作数的有效地址)等。3.7 编程实现 64位加法、64位减法、64 位求负数功能,结果放在R1、R0寄存器中。64 位加法:R2,R3存放第一个64 位数据R4,R5存放第二个64 位数据ADDS R0,R2,R4:加低 32 位字ADC R1,R3,R5:加高 32 位字64 位减法R2,R3存放第一个64 位数

26、据(被减数)R4,R5存放第二个64 位数据(减数)SUBS R0,R2,R4 SBC R1,R3,R5 64 位求负数RSB R0,R2,#0 RSC R1,R3,#0 3.8 B指令、BL 指令、BLX 指令和 BX 指令用于实现程序流程的跳转,有何异同?B 指令只是做简单的跳转;BL 指令在跳转之前会将当前PC 寄存器的值保存在R14 寄存器(LR)中,通过LDR PC,LR 语句可以返回跳转前的位置;BLX 指令与 BL 区别在于跳转的时候切换处理器工作状态,在ARM 状态和 Thumb 状态间切换。3.9 简述汇编语言的程序结构。汇编语言的程序结构由段(section)构成;段又分为

27、代码段和数据段;每个汇编程序至少包含一个代码段,零个或多个包含初值的数据段,零个或多个不包含初值的数据段。3.10 ALIGN 伪操作的指令的作用是什么?什么情况下需要伪操作?在 AREA 伪操作中有 ALIGN 属性,它与单独的 ALIGN 伪操作有什么不同?定义代码段和数据段的对齐方式。当某代码段的地址不是4 的整数倍的时候需要该伪操作。在AREA 伪操作中ALIGN 属性的作用范围只限定于AREA 申请的区域,而单独的ALIGN作用范围为该伪操作后面的所有代码。3.11 如何在 C 语言程序中内嵌汇编程序?如何在汇编程序中访问C 程序变量?在 C语言中使用以下格式来嵌套汇编代码_asm/

28、*汇编 1*/名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 28 页 -/*汇编 2*/.在汇编程序中访问C 程序变量方式如下:1)使用 IMPORT 伪指令声明这个全局变量;2)使用LDR 指令读取该全局变量的内存地址,通常该全局变量的内存地址存放在程序的数据缓冲池中;3)根据该数据类型,使用相应的LDR 指令读取该全局变量的值,使用相应的STR 指令修改该全局变量的值。3.12 程序设计:使用 LDR 指令读取 0 x40003100上的数据,将数据加 1,若结果小于10则使用 STR指令把结果写回原地址,若结果大于等于 10,则把 0 写回原地址。然后再次读取 0 x40

29、003100上的数据,将数据加 1,判断结果是否小于10周而复始循环。程序设计如下:_START:MAIN:LDR R0,=0X40003100 LDR R1,R0 ADD R1,R1,#1 MOV R2,#10 SUBS R3,R1,R2 MOVLT R3,#0 STR R3,R0 B MAIN 第 4 章4.1 S5PV210微处理器是哪种封装形式?这种封装有什么优缺点?S5PV210芯片是 584 引脚的 FCFBGA封装,引脚间距0.65mm,体积为17x17mm。FCFBGA封装既能容纳较多的管脚,又能保证管脚间距,具有良好的电气性能。但是对焊装的要求很高,无法手工焊装。4.2S5P

30、V210微处理器有多少个GPIO 端口?有多少 GPIO 引脚?S5PV210微处理器有35 组 GPIO端口,237 个 GPIO引脚。4.3如何对复用的 GPIO 引脚进行配置?通过设置该引脚所属组的端口控制寄存器的相应位进行配置其功能,例如GPA0组的第一个端口作为输入端口则只需要将GPA0CON的 0-3 位设置为0000 即可。寄存器具体地址以及相应位可以查询芯片手册。4.4 端口上拉寄存器的功能是什么?何种情况下需要上拉?名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 28 页 -端口上拉寄存器控制了每个端口的上拉电阻的允许/禁止;当引脚端口作为输入端口时,需要上拉,

31、用于检测低电平信号。4.5 如何在 C 程序中给 32 位的寄存器中的某几位置1而不影响其他位的值?用位或和移位操作实现,例如将32 位整型数据的a 位、b 位(a、b 为整常量)置1,可参考以下代码:x|=(1a|1b);4.6 如何在 C 程序中给 32 位的寄存器中的某几位置0而不影响其他位的值?用位与和移位操作实现,例如将32 位整型数据的a 位、b 位(a、b 为整常量)置0,可参考以下代码:x&=(1a|1b);4.7 如何在 C 程序中编程检测 32 位寄存器中的某位是否为1?可以通过位与操作判断,例如判断a 位是否为1 示例如下:x&=(1a);if(x)/*该位为 1*/el

32、se /*该位为 0*/4.8 如何在 C 程序中编程检测 32 位寄存器中的某位是否为0?可以通过位与操作判断,例如判断a 位是否为0 示例如下:x&=(1a);if(!x)/*该位为 0*/else /*该位为 1*/第 5 章5.1 随机存储器和只读存储器有何区别?随机存储器数据掉电易丢失;随机存储器读写时可以从存储器任意地址处进行。只读存储器数据掉电不丢失。5.2 请解释 SRAM、DRAM 和 SDRAM。SRAM(Static Random Access Memory)静态随机存储器;DRAM(Dynamic Random Access Memory)动 态 随 机 存 储 器;S

33、DRAM(Synchronous Dynamic Random Access Memory)同步动态随机存储器。5.3 简述内存管理单元的作用。地址存储单元(MMU)主要有两个作用:实现虚拟地址向物理地址的映射,即管名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 28 页 -理地址重定位;管理访问权限。5.4 试描述 ARM 存储器管理的分页功能和处理流程。ARM 存储管理器将物理地址和虚拟地址都划分一块块的小空间,这种划分成为分页;CPU 访问的地址空间为虚拟地址空间,而存储器对应的是物理地址空间。当CPU 去访问一个虚拟地址空间的时候,如下图所示,MMU会找到该虚拟地址空间

34、的所属页,然后根据预先设置好的对应规则去寻找相应的物理地址的所属页,在物理页的基础上加上偏移量从而完成虚拟地址向物理地址的映射。一般情况下虚拟地址空间大于物理地址空间,所以有可能多块虚拟地址映射到同一物理地址,也有可能没有映射到物理地址,当用到该虚拟地址时才得到映射。CPU 操作虚拟地址找到该虚拟地址所在页映射至物理地址页物理地址加偏移量MMU 处理流程5.5 嵌入式系统的初始化过程包括哪些步骤?嵌入式系统初始化包括两大步:初始化运行环境,初始化应用程序。在初始化运行环境的时候应该完成以下工作:标识初始化代码的入口;设置异常向量表、中断向量表;初始化存储器系统;初始化堆栈指针;初始化一些关键的

35、I/O 口;初始化中断系统需要的RAM 变量;使能中断;如果需要,切换处理器模式;如果需要,切换处理器状态。在初始化应用程序的时候应该完成以下工作:通过复制初始化数据到可写数据段来初始化非 0 可写数据;对ZI 数据段清零;存储器初始化后,程序控制权交给应用程序的入口,如C运行时库。5.6 简述 S5PV210微处理器进行内存映射的机制。S5PV210 的虚拟地址由虚拟页号和页内偏移量两部分组成。MMU根据虚拟页号查找Translation Table 找到虚拟页号对应的物理页,然后加上页内偏移量即可得到虚拟地址对应的物理地址。例如如果虚拟地址的页内偏移量为4K,则需要12 位来表示,即虚拟地

36、址的低 12 位表示页内偏移量,其余高20 位保存着映射关系的信息(如段式转化,粗细页转化,细页转化等转化方式,以及虚拟地址的页信息,映射方式,访问控制位等信息)。这些信息可以查阅cortex-a8 的手册。5.7 读以下程序,说明程序功能.text.global _start _start:ldr r0,=0 xE2700000 mov r1,#0 str r1,r0 ldr sp,=0 xD0037D80 ;设置栈,以便调用 c 函数名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 28 页 -ldr r0,=main ldr r1,=0 xD0030000 ;0 xd003

37、0000 目标地址 ldr r2,=redirt_end cmp r0,r1 beq run_on_dram copy_loop:ldr r3,r0,#4 ;源 str r3,r1,#4 ;目的 cmp r0,r2 bne copy_loop run_on_dram:ldr pc,=0 xD0030008 ;跳转halt:b halt 该段代码完成的功能是代码的复制以及重定位:将以标号main 开始到 redirt_end 这段地址空间的代码复制到以0 xD0030000(RAM 起始地址)为起始地址的存储区域。如果标号 main 的地址恰好等于0 xD0030000 就跳过复制,直接到RAM

38、 中去执行。5.8 读以下电路图,说明该内存单元应该如何和 S5PV210 微处理器进行硬件连接?如何进行虚拟内存地址映射?(图略)略第 6 章6.1 简述嵌入式系统通过查询方式和中断方式获取数据的特点。程序查询方式:操作简单,但因为处理器一直查询I/O 端口或部件的状态,所以处理器的效率非常低。中断方式:CPU 在中断信号到来时决定是否处理该中断,处理完成后返回中断前的程序,继续执行效率高,但实现相对于查询方式复杂。6.2 请阐述 ARM 的异常向量表的结构。在 ARM 体系中,有7 种异常处理。当异常发生时,处理器会把PC 设置为一个特定的存储器地址。这一地址被放在异常向量表中。异常向量表

39、包含一系列不能修改的指令,用以跳转到各异常的响应程序。ARM 的异常向量表由异常类型对应的跳转指令构成。名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 28 页 -6.3 软中断指令中的中断号可以通过哪几种方式获取?软中断指令中的中断号可以通过以下两种方式获取:SWI 指令后的24 位立即数;SWI指令后的24 位立即数被忽略,中断号保存在R0 寄存器中。6.4 IRQ 中断和 FIQ 中断发生时,处理器进行哪些工作?IRQ中断和 FIQ中断发生时的处理步骤如下:1)初始化微处理器中断有关的寄存器,开放中断;2)I/O 端口或部件完成数据操作后产生中断请求信号;3)当中断请求信

40、号有效时,微处理器可能处在不可中断状态,等微处理器允许中断时保存当前状态,停止它现行的操作并开始进行中断源的识别;4)在识别出优先级最高的中断源后,微处理器转到对应的中断服务例程入口,并应答中断,I/O 端口或部件收到应答信号后,撤销其中断请求;5)微处理器读入或写出数据,当中断服务例程结束后,返回到原来的被中断程序处继续执行。6.5 中断处理完毕后,处理器是如何回到原来的程序断点处的?中 断 处 理 程 序 中 首 先 应 该 保 存 现 场(中 断 之 前 的 现 场,包 括 程 序 状 态 寄 存 器(CPSR),PC 的指向等);在中断服务程序执行完毕之后,就要恢复现场,即重新加载PC

41、,寄存器等。从而回到原来的程序断点处。事实上,当异常发生时,分组寄存器R14 和 SPSR用于保存处理器状态,异常返回时,SPSR 内容恢复到CPSR,连接寄存器R14恢复到程序计数器PC。6.6 什么是向量中断控制器?其主要工作是什么?向量中断控制器(Vectored Interrupt Controller),是中断控制器的组成部分。S5PV210的中断控制器有4 个向量中断控制器(VIC)。向量中断控制器的主要工作是:支持93 个向量IRQ 中断;配置中断优先级;硬件中断优先级屏蔽;产生IRQ与 FIQ;产生软件中断;限制访问特权模式等。6.7 请解释中断优先级仲裁。若嵌入式系统中有多个

42、中断源,则这些中断源必须要进行中断优先级的排列。所谓优先级仲裁,指的是以下两层含义:1)若有 2 个及 2 个以上的中断源同时提出中断请求,微处理器先响应哪个中断源,后响应哪个中断源。2)若 1 个中断源提出中断请求,得到响应后,又有1 个中断源提出中断请求,后来的中断源能否中断前一个中断源的中断服务程序。6.8 在对图 6-1 所示硬件电路进行中断编程时,如果没有在start.s中定义异常向量表,那么中断能够正常被响应吗?为什么?不能。如果为未定义异常向量表,则CPU 跳转到向量入口地址之后不知道接下该执行哪里的代码,无法正确跳转到中断服务程序中,因此不能正常响应。名师资料总结-精品资料欢迎

43、下载-名师精心整理-第 13 页,共 28 页 -第 7 章7.1 简述通用定时器工作原理。通用定时器内部工作原理:以一个N 位的加 1 或减 1 计数器为核心,计数器的初始值由初始化编程设置,计数脉冲的来源有系统时钟或外部事件脉冲。若编程设置定时/计数器为定时工作方式时,则N 位计数器的计数脉冲来源于内部系统时钟,并经过M 分频。每个计数脉冲使计数器加1 或减 1,当 N 位计数器里的数加到0 或减到 0 时,则会产生一个“回 0 信号”,该信号有效时表示N 位计数器里的当前值是0。因为系统时钟的频率是固定的,其 M 分频后所得到的计数脉冲频率也就是固定的,因此通过对该频率脉冲的计数就转换为

44、定时,实现了定时功能。若编程设置定时/计数器为计数方式时,则N 位计数器的计数脉冲来源于外部事件产生的脉冲信号。有一个外部事件脉冲,则计数器加1 或减 1,直到 N 位计数器中的值为0,产生“回0 信号”。7.2 什么是 ARM 的脉宽调制定时器?S5PV210 有 5 个32 位双缓冲脉冲宽度调制定时器。配合定时器计数缓冲寄存器TCNTBn和定时器比较缓冲寄存器TCMPBn,可以很方便地实现脉宽调制功能,所以被称为脉宽调制定时器。7.3 如何对 S5PV210微处理器的定时器时钟进行分频?定时时间如何计算?定时器 0 和 1 共用一个可编程8 位分频器,该分频器为PCLK提供第一层分频,定时

45、器2,3,4 共用一个不同的8 位分频器。每个定时器都有自己的专用时钟分频器提供第二层分频(又称分割器,可提供1,2,4,8,16 分频)。定时时间=计数器初值*定时器时钟频率。7.4 试编写定时器控制蜂鸣器鸣叫频率和占空比的程序。参考代码如下:(篇幅有限,在此只给出核心代码供参考)void timer_init(unsigned long utimer,unsigned long uprescaler,unsigned long udivider,unsigned long utcntb,unsigned long utcmpb)unsigned long temp0;/定时器的输入时钟=P

46、CLK/(prescaler value+1)/divider value=PCLK/(65+1)/16=62500hz/设置预分频系数为66 temp0=TCFG0;temp0=(temp0&(0 xff00ff)|(uprescaler-1)0);TCFG0=temp0;/16 分频temp0=TCFG1;temp0=(temp0&(0 xf4*utimer)&(120)|(udivider4*utimer);TCFG1=temp0;/1s=62500hz TCNTB0=utcntb;TCMPB0=utcmpb;/手动更新TCON|=11;/清手动更新位名师资料总结-精品资料欢迎下载-名师

47、精心整理-第 14 页,共 28 页 -TCON&=(11);/自动加载和启动timer0 TCON|=(10)|(13);/使能 timer0 中断temp0=TINT_CSTAT;temp0=(temp0&(1utimer)|(1(utimer);TINT_CSTAT=temp0;/中断处理函数void irs_timer()unsigned long uTmp;/清 timer0 的中断状态寄存器uTmp=TINT_CSTAT;TINT_CSTAT=uTmp;int main(void)system_initexception();intc_setvectaddr(NUM_TIMER0,

48、irs_timer);intc_enable(NUM_TIMER0);timer_init(0,65,4,62500,31250);while(1);return 0;7.5 嵌入式系统为什么需要看门狗?嵌入式系统对可靠性有严格要求。为保证系统能够长期可靠地运行,需要加入看门狗,在程序发生错误时自动重新启动系统,避免系统死锁。7.6 简述看门狗定时器工作原理。看门狗定时器是一个特殊的定时器,它既能引起中断,也能发送一个系统重启信号。看门狗定时器被使能之后,需要在一定周期内(小于看门狗定时器产生的时间间隔)执行重置看门狗的动作(喂狗)。如果在看门狗定时器产生的时间间隔内没有喂狗操作,定时器将会发

49、送一个重启信号,系统将重新启动。7.7 编写 0.1s看门狗复位的程序。参考代码如下:(篇幅有限,在此只给出核心的设置看门狗的代码供参考)(设 PCLK为 32MHz)void enable_watchdog()/允许输出重置信号,允许中断生成,128 分频,预分频78 rWTCON=(10)|(12)|(0b113)|(0 x4E8);rWTDAT=0 x8000;名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 28 页 -rWTCON=1 5;/启动看门狗 void feed_dog()rWTCNT=0 x8000;7.8 为什么嵌入式系统使用RTC定时器获取时间,而不用普

50、通定时器?普通定时器在系统关机状态下无法工作,而实时时钟单元即使在系统处于关机状态下它也能够正常工作(通常采用后备电池供电),为系统提供可靠的时钟,包括时、分、秒和年、月、日。7.9 读以下程序,试述各语句的作用和该段程序的功能。year=(year/100)8)+(year/10)%10)4)+(year%10);/将 year转换为BCD 码month=(month/10)4)+(month%10);/将month转换为 BCD 码date=(date/10)4)+(date%10);/将 date转换为 BCD 码weekday=(weekday%10);/将weekday转换为 BCD

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁