当前位置: 首页 > >

ARM嵌入式系统基础与开发教程 丁文龙

第1章
1.填空题

嵌入式系统概述

(1)嵌入式系统硬件平台 嵌入式软件 (2)硬件抽象层 HAL 板级支持包 BSP (3)嵌入式微处理器 嵌入式微控制器 2.选择题 (1)B 3.简答题 (2)A B D (3)D

设备驱动程序 嵌入式片上系统 SoC

(1)什么是嵌入式系统?列举几个熟悉的嵌入式系统的产品。 嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系 统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。常见的有汽车、手机、 MP3 等等。 (2)嵌入式系统由哪几部分组成? 嵌入式系统从大的方面分嵌入式系统硬件平台和嵌入式软件两大部分, 其中软件部分又 具体分为若干层次。对于包含有操作系统的嵌入式系统来讲,嵌入式系统软件结构包含 4 个层次:设备驱动层、实时操作系统 RTOS 层、应用程序接口 API 层、应用程序层。 (3)简述嵌入式系统的特点。 系统内核小;专用性强;系统精简;软件固化;嵌入式软件开发要想走向标准化,就必 须使用多任务的操作系统;嵌入式系统开发需要开发工具和环境。

第2章
1.填空题 (1)Cortex-R4 处理器 (2)ARM Thumb (3)R13 R14 R15 (4)8 16 32 2.选择题 (1)A C D 3.简答题 (2)A

ARM 体系结构

Cortex-A8 处理器

(3)B C D

(1)简述 ARM 可以工作的几种模式。 ARM 体系结构支持 7 种处理器模式:用户模式、快中断模式、中断模式、管理模式、 中止模式、未定义模式和系统模式。 (2)ARM7 内部有多少个寄存器? 在 ARM7TDMI 处理器内部有 37 个用户可见的 32 位寄存器,其中 31 个通用寄存器,6 个状态寄存器。 (3)描述一下如何禁止 IRQ 和 FIQ 的中断? 在一个特权模式下,都可通过置位 CPSR 中的 I 位来禁止 IRQ。 在一个特权模式中,可通过置位 CPSR 中的 F 标志来禁止 FIQ 异常。 (4)请描述 ARM7TDMI 进入异常或退出异常时内核有何操作? 当异常发生时,ARM 处理器尽可能完成当前指令(除了复位异常)后,再去处理异常, 并执行如下动作: ① 进入与特定的异常相应的操作模式; ② 将引起异常指令的下一条指令的地址保存到新模式的 R14 中; ③ 将 CPSR 的原值保存到新模式的 SPSR 中; ④ 通过设置 CPSR 的第 7 位来禁止 IRQ;如果异常为快中断,则要设置 CPSR 的第 6 位禁止快中断; ⑤ 给 PC 强制赋向量地址值。 退出异常时: ① 将 LR 中的值减去偏移量后移入 PC,偏移量根据异常的类型而有所不同; ② 将 SPSR 的值复制回 CPSR; ③ 清零在入口置位的中断禁止标志。

第3章
1.填空题

ARM7TDMI(-S)指令系统

(1)ARM Thumb (2)存储器 目的寄存器 (3)寄存器寻址 立即寻址 2.选择题 (1)D 3.简答题 (2)C (3)B

寄存器移位寻址

寄存器间接寻址 基址寻址

(1)BIC 指令的作用是什么? BIC 指令用于位清除操作, 将寄存器 Rn 的值与 operand2 的值的反码按位作逻辑 “异或” 操作,结果保存到 Rd 中。 (2)描述 B、BL、BX 指令的区别。 B 指令实现跳转到指定的地址执行程序。注意:B 指令限制在当前指令的± 32MB 地址 范围内(ARM 指令为字对齐,最低两位地址固定为 0) 。 BL 指令实现先将下一条指令的地址拷贝到 R14(即 LR)连接寄存器中,然后跳转到指 定地址运行程序。注意:BL 指令限制在当前指令的± 32MB 地址范围内,BL 指令用于子程 序调用,在子程序的最后可以使用 MOV PC, LR 指令跳回 BL Label 指令处的下一条指令继 续执行。 BX 指令跳转到 Rm 指定的地址去执行程序。 若 Rm 的 bit0 为 1, 则跳转时自动将 CPSR 中的标志 T 位置,即把目标地址的代码解释为 Thumb 代码;若 Rm 的 bit0 为 0,则跳转时 自动将 CPRS 中的标志 T 复位,即把目标地址的代码解释为 ARM 代码。 (3)当执行 SWI 指令时,会发生什么? SWI 指令用于产生软件中断,以便用户程序能调用操作系统的系统例程。操作系统在 SWI 的异常处理程序中提供相应的系统服务,指令中 24 位的立即数指定用户程序调用系统 例程的类型,相关参数通过通用寄存器传递。当指令中 24 位的立即数被忽略时,用户程序 调用系统例程的类型由通用寄存器 R0 的内容决定,同时,参数通过其他通用寄存器传递。 (4)编写一段 ARM 汇编程序,实现数据块复制,将 R0 指向的 8 个字的连续数据保存 到 R1 指向的一段连续的内存单元。

第4章
1.填空题 (1)代码 数据 (2)32 位的 ARM (3)指令 伪指令 2.选择题 (1)A 3.简答题

基于 ARM 的嵌入式软件设计

伪操作

(2)A B D

(3)B

(1)在 ARM 汇编中如何定义一个全局的算术变量? GBLA 伪指令用于定义一个 ARM 程序中的全局算术变量并将其初始化。 (2)ADR 和 LDR 的用法有什么区别? ADR 伪指令为小范围地址读取伪指令。ADR 伪指令将基于 PC 相对偏移地址或基于寄 存器相对偏移地址值读取到寄存器中,当地址值是字节对齐时,取值范围为?255~255,当 地址值是字对齐时,取值范围为?1020~1020。当地址值是 16 字节对齐时其取值范围更大。 LDR 伪指令装载一个 32 位的常数和一个地址到寄存器。 (3)什么是内联汇编?什么是嵌入式汇编?两者之间的区别是什么? 内联汇编程序是在 C 程序中直接编写汇编程序段而形成一个语句块,这个语句块可以 使用除了 BX 和 BLX 之外的全部 ARM 指令来编写,从而可以使程序实现一些不能从 C 获 得的底层功能。 嵌入式汇编程序是一个编写在 C 程序外的单独汇编程序段,该程序段可以像函数那样 被 C 程序调用。 与内联汇编不同, 嵌入式汇编具有真实汇编的所有特性, 数据交换符合 ATPCS 标准,同时支持 ARM 和 Thumb,所以它可以对目标处理器进行不受限制的低级别访问。但 是不能直接引用 C/C++的变量名。 内联汇编与嵌入式汇编的编译有如下区别: ① 内联汇编代码使用高级处理器抽象, 并在代码生成过程中与 C/C++代码集成。 因此, 编译程序将 C 和 C++代码与汇编代码一起进行优化。 ② 嵌入式汇编代码从 C/C++代码中分离出来单独进行汇编,产生与 C/C++源代码编译 对象相结合的编译对象。 ③ 可通过编译程序来内联汇编代码,但无论是显式还是隐式,都无法内联嵌入式汇编 代码。 (4)汇编代码中如何调用 C 代码中定义的函数? 首先,为保证程序调用时参数的正确传递,汇编语言程序的设计要遵守 ATPCS。其次, 在 C 语言程序中,不需要使用任何关键字来声明被汇编语言程序调用的 C 语言子程序。但 是在汇编语言程序调用 C 语言程序之前,需要在汇编语言程序中使用 IMPORT 伪指令对其 进行声明。汇编语言通过 BL 指令进行调用。

第5章
1.填空题

嵌入式系统常用开发工具

(1)ADS 1.2 (2)Microcontroller Development Kit(MDK) RealView Development Suite(RVDS) (3)PROTEUS 电路设计 PROTEUS 源程序设计和生成目标代码文件 PROTEUS 仿真 2.选择题 (1)A B C (2)A B C D (3)B 3.简答题 (1)如何使用 ADS1.2 集成开发环境新建一个工程。 略。 (2)新建一个 RealView MDK 工程,编写一个汇编程序实现 3+16 的操作。 略。 (3)如何在 Proteus 软件中搭建硬件开发平台进行源代码级调试。 略。

第 6 章 基于 LPC2000 系列的嵌入式应用开发实例
1.填空题 (1)JTAG 仿真/调试器 ISP IAP (2)片内 Flash 片内 SRAM Boot Block (3)对内部事件进行计数的间隔定时器;通过捕获输入实现脉宽解调器;自由运行的 定时器 2.选择题 (1)C (2)C (3)A B C D 3.简答题 (1)LPC2000 处理器是如何实现引脚多功能的? 略。 (2)如何对 GPIO 的输入/输出进行设置? 略。 (3)FIQ、IRQ 有什么不同?向量 IRQ 与非向量 IRQ 有何不同? 略。 (4)LPC2000 有几种串行通信接口?各有什么特点? 略。

第7章
1.填空题

嵌入式实时操作系统μ C/OS-II 基础

(1)嵌入式 Linux Windows CE VxWorks (2)应用软件层 与应用相关的配置代码 与处理器无关的核心代码 与处理器相 关的设置代码 (3)OSStart() 2.选择题 (1)B 3.简答题 (1)μC/OS-II 的临界区是如何处理的? 同其他内核一样,μC/OS-II 为了处理临界段代码,须关中断,处理完毕后,再开中断。 μC/OS-II 定义了 2 个宏(macros)来关中断和开中断,分别是:OS_ENTER_CRITICAL()和 OS_EXIT_CRITICAL()。 (2)什么是任务控制块?它有何作用? 任务控制块(OS_TCB)是一个数据结构,全部存放在 RAM 中。一旦任务建立,一个 任务控制块 OS_TCB 就被赋值。当任务的 CPU 使用权被剥夺时,μC/OS-II 用它来保存该任 务的状态。当任务重新得到 CPU 使用权时,任务控制块能确保任务从当时被中断的那一点 丝毫不差地继续执行。 (3)任务调度的功能是什么?它有哪几种方式? μC/OS-II 是占先式实时内核,优先级最高的任务一旦进入就绪态,立即拥有 CPU 的控 制权并开始运行。μC/OS-II 的调度器(scheduler)就是用来查找准备就绪的优先级最高的任 务并进行任务切换。 任务级的调度是由 OSSched()函数完成的, 中断级的调度是由 OSIntExt() 函数完成的。 (4)μC/OS-II 是如何处理中断的? μC/OS-II 系统响应中断的过程是:系统接收到中断请求后,如果这时 CPU 处于中断允 许状态(即中断是开放的) ,系统就会中止正在运行的当前任务,而按照中断向量的指向转 而去运行中断服务子程序; 当中断服务子程序的运行结束后, 系统将会根据情况返回到被中 止的任务继续运行,或者转向运行另一个具有更高优先级别的就绪任务。 (2)C (3)A

第8章
1.填空题

μC/OS-II 在 ARM7 上的移植

(1)ChangeToUSRMode() (2)OS_ENTER_CRITICAL( ) OS_EXIT_CRITICAL( ) (3) ① 编写或获取启动代码; ② 挂接 SWI 软件中断; ③ 中断及时钟节拍中断; ④ 编 写应用程序。 2.选择题 (1)B 3.简答题 (1)移植的概念是什么? 略。 (2)μC/OS-II 移植的前提是什么?写出移植的主要内容。 略。 (3)移植 μC/OS-II 到 ARM7 为何使用 SWI 软件中断异常接口? 略。 (4)在 LPC2000 上编写一个简单的基于 μC/OS-II 的程序。 略。 (2)C (3)B

第9章
1.简答题

综合实例――超声波测距仪设计

(1)列举几个常用的温度传感器。 热电偶、DS18B20、热电阻 RTD、AD590 (2)反相器 74LS04 在发射电路中的作用是什么? 略。 (3)请设计出该系统的电源电路。 略。

遇到失意伤心事,多想有一个懂你的人来指点迷津,因他懂你,会以我心,换你心,站在你的位置上思虑,为你排优解难。

一个人,来这世间,必须懂得一些人情事理,才能不断成长。就像躬耕于陇亩的农人,必须懂得土地与种子的情怀,才能有所收获。

一个女子,一生所求,莫过于找到一个懂她的人,执手白头,相伴终老。

即使芦花暖鞋,菊花枕头,也觉温暖;即使粗食布衣,陋室简静,也觉舒适,一句“懂你”,叫人无怨无悔,愿以自己的一生来交付。

懂得是彼此的欣赏,是灵魂的轻唤,是惺惺相惜,是爱,是暖,是彼此的融化;是走一段很远的路,蓦然回首却发现,我依然在你的视线里;是回眸相视一笑的无言;是一条偏僻幽静的 小路,不显山,不露水,路边长满你喜爱的花草,静默无语却馨香盈怀,而路的尽头,便是通达你心灵的小屋……

瑟瑟严冬,窗外雪飘,絮絮自语说了这多,你可懂我了吗?若你知晓,无需说话,只报一声心灵的轻叹,那,便是我的花开春暖。

你相不相信,人生有一种念想,不求奢华不求结果,不求你在我身边,只愿有一种陪伴暖在心灵,那,便是懂得。

有人懂得是一种幸福,懂得别人是一种襟怀,互为懂得是一种境界。

懂得,真好!




友情链接: 时尚网 总结汇报 幼儿教育 小学教育 初中学习资料网