1、ARM嵌入式系统基础与开发教程丁文龙整理精品文档ARM嵌入式系统基础与开发教程丁文龙 编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(ARM嵌入式系统基础与开发教程丁文龙)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快 业绩进步,以下为ARM嵌入式系统基础与开发教程丁文龙的全部内容。第1章 嵌入式系统概述1填空题(1)嵌入式系统硬件平台 嵌
2、入式软件(2)硬件抽象层HAL 板级支持包BSP 设备驱动程序(3)嵌入式微处理器 嵌入式微控制器 嵌入式片上系统SoC2选择题(1)B (2)A B D (3)D 3简答题(1)什么是嵌入式系统?列举几个熟悉的嵌入式系统的产品.嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统.常见的有汽车、手机、MP3等等。(2)嵌入式系统由哪几部分组成?嵌入式系统从大的方面分嵌入式系统硬件平台和嵌入式软件两大部分,其中软件部分又具体分为若干层次。对于包含有操作系统的嵌入式系统来讲,嵌入式系统软件结构包含4个层次:设备驱
3、动层、实时操作系统RTOS层、应用程序接口API层、应用程序层.(3)简述嵌入式系统的特点。系统内核小;专用性强;系统精简;软件固化;嵌入式软件开发要想走向标准化,就必须使用多任务的操作系统;嵌入式系统开发需要开发工具和环境。第2章 ARM体系结构1填空题(1)Cortex-R4处理器 Cortex-A8处理器(2)ARM Thumb(3)R13 R14 R15(4)8 16 322选择题(1)A C D (2)A (3)B C D3简答题(1)简述ARM可以工作的几种模式。ARM体系结构支持7种处理器模式:用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式.(2)ARM
4、7内部有多少个寄存器?在ARM7TDMI处理器内部有37个用户可见的32位寄存器,其中31个通用寄存器,6个状态寄存器。(3)描述一下如何禁止IRQ和FIQ的中断?在一个特权模式下,都可通过置位CPSR中的I位来禁止IRQ。在一个特权模式中,可通过置位CPSR中的F标志来禁止FIQ异常。(4)请描述ARM7TDMI进入异常或退出异常时内核有何操作?当异常发生时,ARM处理器尽可能完成当前指令(除了复位异常)后,再去处理异常,并执行如下动作: 进入与特定的异常相应的操作模式; 将引起异常指令的下一条指令的地址保存到新模式的R14中; 将CPSR的原值保存到新模式的SPSR中; 通过设置CPSR的
5、第7位来禁止IRQ;如果异常为快中断,则要设置CPSR的第6位禁止快中断; 给PC强制赋向量地址值。 退出异常时: 将LR中的值减去偏移量后移入PC,偏移量根据异常的类型而有所不同; 将SPSR的值复制回CPSR; 清零在入口置位的中断禁止标志.第3章 ARM7TDMI(-S)指令系统1填空题(1)ARM Thumb(2)存储器 目的寄存器(3)寄存器寻址 立即寻址 寄存器移位寻址 寄存器间接寻址 基址寻址2选择题(1)D (2)C (3)B3简答题(1)BIC指令的作用是什么?BIC指令用于位清除操作,将寄存器Rn的值与operand2的值的反码按位作逻辑“异或”操作,结果保存到Rd中.(2
6、)描述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,则跳转时自动将
7、CPRS中的标志T复位,即把目标地址的代码解释为ARM代码。(3)当执行SWI指令时,会发生什么?SWI指令用于产生软件中断,以便用户程序能调用操作系统的系统例程。操作系统在SWI的异常处理程序中提供相应的系统服务,指令中24位的立即数指定用户程序调用系统例程的类型,相关参数通过通用寄存器传递。当指令中24位的立即数被忽略时,用户程序调用系统例程的类型由通用寄存器R0的内容决定,同时,参数通过其他通用寄存器传递.(4)编写一段ARM汇编程序,实现数据块复制,将R0指向的8个字的连续数据保存到R1指向的一段连续的内存单元.第4章 基于ARM的嵌入式软件设计1填空题(1)代码 数据 (2)32位的
8、ARM(3)指令 伪指令 伪操作 2选择题 (1)A (2)A B D (3)B3简答题(1)在ARM汇编中如何定义一个全局的算术变量?GBLA伪指令用于定义一个ARM程序中的全局算术变量并将其初始化。(2)ADR和LDR的用法有什么区别?ADR伪指令为小范围地址读取伪指令。ADR伪指令将基于PC相对偏移地址或基于寄存器相对偏移地址值读取到寄存器中,当地址值是字节对齐时,取值范围为255255,当地址值是字对齐时,取值范围为10201020。当地址值是16字节对齐时其取值范围更大.LDR伪指令装载一个32位的常数和一个地址到寄存器.(3)什么是内联汇编?什么是嵌入式汇编?两者之间的区别是什么?
9、内联汇编程序是在C程序中直接编写汇编程序段而形成一个语句块,这个语句块可以使用除了BX 和BLX之外的全部ARM指令来编写,从而可以使程序实现一些不能从C获得的底层功能。嵌入式汇编程序是一个编写在C程序外的单独汇编程序段,该程序段可以像函数那样被C程序调用.与内联汇编不同,嵌入式汇编具有真实汇编的所有特性,数据交换符合ATPCS标准,同时支持ARM和Thumb,所以它可以对目标处理器进行不受限制的低级别访问。但是不能直接引用C/C+的变量名。内联汇编与嵌入式汇编的编译有如下区别: 内联汇编代码使用高级处理器抽象,并在代码生成过程中与C/C+代码集成.因此,编译程序将C和C+代码与汇编代码一起进
10、行优化。 嵌入式汇编代码从C/C+代码中分离出来单独进行汇编,产生与C/C+源代码编译对象相结合的编译对象。 可通过编译程序来内联汇编代码,但无论是显式还是隐式,都无法内联嵌入式汇编代码。(4)汇编代码中如何调用C代码中定义的函数?首先,为保证程序调用时参数的正确传递,汇编语言程序的设计要遵守ATPCS.其次,在C语言程序中,不需要使用任何关键字来声明被汇编语言程序调用的C语言子程序。但是在汇编语言程序调用C语言程序之前,需要在汇编语言程序中使用IMPORT伪指令对其进行声明。汇编语言通过BL指令进行调用。第5章 嵌入式系统常用开发工具1填空题(1)ADS 1。2(2)Microcontrol
11、ler Development Kit(MDK) RealView Development Suite(RVDS)(3)PROTEUS电路设计 PROTEUS源程序设计和生成目标代码文件 PROTEUS仿真2选择题(1)A B C (2)A B C D(3)B3简答题(1)如何使用ADS1.2集成开发环境新建一个工程。略。(2)新建一个RealViewMDK工程,编写一个汇编程序实现3+16的操作。略。(3)如何在Proteus软件中搭建硬件开发平台进行源代码级调试.略。第6章 基于LPC2000系列的嵌入式应用开发实例1填空题(1)JTAG仿真/调试器 ISP IAP(2)片内Flash 片
12、内SRAM Boot Block(3)对内部事件进行计数的间隔定时器;通过捕获输入实现脉宽解调器;自由运行的定时器2选择题(1)C(2)C(3)A B C D3简答题(1)LPC2000处理器是如何实现引脚多功能的?略.(2)如何对GPIO的输入/输出进行设置?略。(3)FIQ、IRQ有什么不同?向量IRQ与非向量IRQ有何不同?略。(4)LPC2000有几种串行通信接口?各有什么特点?略。第7章 嵌入式实时操作系统C/OSII基础1填空题(1)嵌入式Linux Windows CE VxWorks (2)应用软件层 与应用相关的配置代码 与处理器无关的核心代码 与处理器相关的设置代码(3)O
13、SStart()2选择题(1)B (2)C (3)A3简答题(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/OSII用它来保存该任务的状态。当任务重新得到CPU使用权时,任务控制块能确保任务从当时
14、被中断的那一点丝毫不差地继续执行。(3)任务调度的功能是什么?它有哪几种方式?C/OSII是占先式实时内核,优先级最高的任务一旦进入就绪态,立即拥有CPU的控制权并开始运行.C/OS-II的调度器(scheduler)就是用来查找准备就绪的优先级最高的任务并进行任务切换.任务级的调度是由OSSched()函数完成的,中断级的调度是由OSIntExt()函数完成的。(4)C/OSII是如何处理中断的?C/OS-II系统响应中断的过程是:系统接收到中断请求后,如果这时CPU处于中断允许状态(即中断是开放的),系统就会中止正在运行的当前任务,而按照中断向量的指向转而去运行中断服务子程序;当中断服务子
15、程序的运行结束后,系统将会根据情况返回到被中止的任务继续运行,或者转向运行另一个具有更高优先级别的就绪任务。第8章 C/OS-II在ARM7上的移植1填空题(1)ChangeToUSRMode()(2)OS_ENTER_CRITICAL( ) OS_EXIT_CRITICAL( )(3) 编写或获取启动代码; 挂接SWI软件中断; 中断及时钟节拍中断; 编写应用程序。2选择题(1)B (2)C (3)B3简答题(1)移植的概念是什么?略。(2)C/OSII移植的前提是什么?写出移植的主要内容.略.(3)移植C/OS-II到ARM7为何使用SWI软件中断异常接口?略.(4)在LPC2000上编写一个简单的基于C/OS-II的程序。略.第9章 综合实例超声波测距仪设计1简答题(1)列举几个常用的温度传感器。热电偶、DS18B20、热电阻RTD、AD590(2)反相器74LS04在发射电路中的作用是什么?略。(3)请设计出该系统的电源电路。略。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1