1、嵌入式系统复习题一、填空题:1、试列举三种主流的嵌入式处理器:( ARM )、( MIPS )、(PowerPC)。2、ARM 处理器共有(37)个寄存器,其中包括(31 个通用寄存器)和(6 个状态寄存器)。3、寄存器 R13在 ARM指令中(堆栈指针 SP )。R14 也称(程序连接寄存器 LR)在程序里的作用是(程序计数器 PC的备份)。当发生中断或异常时,对应分组寄存器分别是(R14_svc、R14_irq、R14_fiq、R14_abt 和 R14_und用来保存R15的返回值)。4、ARM 微处理器支持两种指令集:(ARM)和(Thumb)。5、寄存器 R15用作(程序计数器 PC
2、)。该寄存器在 ARM状态下,(位1:0为 00),位31:2用于保存 PC;在 Thumb状态下,(位0为 0),位31:1用于保存 PC。6、CPSR 用作( 状态寄存器 ),CPSR可在任何运行模式下被访问。每一种运行模式下又都有一个专用的物理状态寄存器,称为(程序状态保存寄存器SPSR)。7、Thumb 状态下的寄存器集是ARM状态下寄存器集的一个子集,程序可以直接访问的通用寄存器是(R0R7,PC,SP,LR,CPSR)。8、ARM 指令中条件执行功能是通过( 指令中添加条件码)来实现的,包含的条件码位于指令的最高(四)位。9、试列举五种以上常见的嵌入式操作系统:(C/OS-II)、
3、(Vxworks)、(WinCE)、(Linux/CLinux)、(PalmOS)。10、计算机结构中,哈佛结构和冯?诺依曼结构的主要区别是(指令与数据分开),ARM7 采用(冯?诺依曼结构),ARM9 采用(哈佛结构)。11、ARM 处理器采用(Thumb 指令)操作来访问 SFR。12、在 ARM汇编语言程序设计中,语句一般是由(指令操作码)、(指令的条件码)、(目标寄存器编码)和(包含第一个操作数的寄存器编码)组成。二、名词解释:1、ARM 处理器:先进的 RISC指令集处理器。广泛地使用在许多嵌入式系统设计。2、交叉编译:在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的
4、代码,这个编译过程就叫交叉编译。3、异常:异是导致程序中断运行的一种指令流。(是指 CPU在执行指令时出现的错误,即不正常的情况。异常是与当前所执行的程序有关的,如存取数据或指令错误、计算结果溢出等。)4、大端格式:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。5、小端格式:低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。6、寻址方式:处理器根据指令中给出的(地址)信息,寻找操作数(物理地址)的方式。7、嵌入式系统:广义上:凡是不用于通用目的的可编程计算机设备,就可以算是嵌入式计算机系统。狭义上而言,嵌入式系统是指以应用为核心,以计算机技术为基础,软硬件可裁剪,
5、对功能、可靠性、成本、体积和功耗严格要求的专用计算机系统。8、GNU:GNU(GNUs Not Unix),它的目标是建立可自由发布和可移植的类 Unix操作系统。9、伪指令:是汇编语言程序里的特殊指令助记符,在汇编时被合适的机器指令替代。10、伪操作:为汇编程序所用,在源程序进行汇编时由汇编程序处理,只在汇编过程起作用,不参与程序运行。11、RTOS :实时系统,能够对外部事件做出及时响应的系统。12、微控制器:俗称“单片机,它将整个计算机系统集成到一块芯片中。3、 简答题: 1、 请从广义和狭义两个方面简述嵌入式系统的含义。答:嵌入式系统:Embedded System广义上:凡是不用于通
6、用目的的可编程计算机设备,就可以算是嵌入式计算机系统。狭义上:,嵌入式系统是指以应用为核心,以计算机技术为基础,软硬件可裁剪,对功能、 可靠性、成本、体积和功耗严格要求的专用计算机系统。2、简述采用 RISC架构的 ARM微处理器的特点。a.采用固定长度的指令格式,指令规整,简单,基本寻址 23种。b.使用单周期指令,便于流水线操作。c.大量使用寄存器,提高指令的执行效率。d.所有的指令都可以根据前面的执行后,决定是否执行从而提高指令的执行效率。e.可以加载/存储指令,批量传输数据,以提高数据的传输效率。3、 选择嵌入式微处理器时,应考虑那些因素?a, 调查市场上已有的 CPU供应商。b, C
7、PU的处理速度c,技术指标。d,处理器的低功耗。e,处理器的软件支持工具。f,处理器是否内置调试工具。g,处理器供应商是否提供评估板。h,片内存储容量。4、简述嵌入式系统的特点。(1)软硬件一体化,集计算机技术、微电子技术、行业技术于一体;(2)需要操作系统支持,代码少,执行速度快;(3)系统内核小、专用性强、系统精简。(4)高实时性的系统软件(OS)是嵌入式软件的基本要求。(5)嵌入式软件开发要想走向标准化,就必须使用多任务的操作系统。 (6)嵌入式系统开发需要开发工具和环境。5、画出当前主流嵌入式系统的硬件组成结构框图。6、 比较 ARM920T和 ARM720T的主要异同。ARM9 5级
8、流水线 独立的指令总线哈佛结构 ARM7 3级流水线 数据与指令一起 冯诺依曼结构7、ARM9 指令是几级流水线,各阶段执行什么操作?答:ARM9 采用 5级流水线。取指:从指令 Cache中读取指令。译码:对指令进行译码,识别出是对哪个寄存器进行操作并从通用寄存器中读取操作数。执行:进行 ALU运算和移位操作,如果是对存储器操作的指令,则在 ALU中计算出要 访问的存储器地址。数据缓冲:如果是对存储器访问的指令,用来实现数据缓冲功能(通过数据 Cache)回写:将指令运算或操作结果写回到目标寄存器中。8、写出不少于 12类嵌入式产品中的常用接口。UART接口、SPI 接口、I2C 接口、AD
9、C和触摸屏接口、USB 接口、以太网接口、外存接口、LCD 接口、时钟接口、PWM 接口、中断接口、JTAG 接口、VGA 接口、音频接口9、 若允许 FIQ、IRQ 中断,CPSR如何设置?FIQ: CPSR4:0=0B10001 IRQ: CPSR4:0=0B10010CPSR5=0CPSR6=0CPSR7=010、举例说明 ARM的各种寻址方式。寄存器寻址:LDR R1,R2寄存器间接寻址:LDR R1,R2寄存器偏移寻址:LDR R1,R2,-R4,LSL#3立即寻址:LDR,R3,#34多寄存寻址:LDMIA R0,R1,R3,R4,R511、 对比说明 ADR、ADRL 与LDR的
10、区别与联系。ADR:小范围的地址读取伪指令。ADRL:中等范围的地址读取伪指令。LDR:大范围的地址读取伪指令。ADR伪指令功能:将基于 PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中。ADRL伪指令功能:将基于 PC相对偏移的地址值或基于寄存器相对偏移的地址值读取到寄存器中,比 ADR伪指令可以读取更大范围的地址。LDR伪指令功能:用于加载 32位立即数或一个地址值到指定的寄存器。12、(没找到)13、 简述 S3C2410 Nand flash存储器的启动过程。(1)完成复位(2)如果自动启动模式使能,NAND Flash存储器的前 4KB自动复制到 Steppingsto
11、ne内部缓冲器中(3)Steppingstone映射到nGCS0(4)CPU在 Steppingstone的4KB内部缓冲器中开始执行启动代码14、简述 Bootloader启动过程。第一阶段(1)、基本的硬件设备初始化(2)、为阶段 2代码准备RAM空间(3)、拷贝阶段 2代码到RAM空间(4)、设置好堆栈(5)、跳转到阶段 2的 C程序入口点第二阶段(1)、初始化本阶段要使用到的硬件(2)、检测系统内存映射(memory map)(3)、将 kernel和根文件系统映像从 flash读到 RAM空间(4)、为 kernel设置启动参数(5)、调用内核15、请简述嵌入式软件Bootloade
12、r的两种工作模式。(1)启动加载模式:启动加载模式称为“自举”(Autonomous)模式。即Bootloader从目标机上的某个固态存储设备上将操作系统加载到 RAM 中运行,整个过程并没有用户的介入。启动加载模式是 Bootloader的正常工作模式,在嵌入式产品发布的时侯,Bootloader必须工作在这种模式下。(2)下载模式:在这种模式下,目标机上的 Bootloader将通过串口连接或网络连接等通信手段从主机下载文件。下载内容及存储:主要是下载内核映像和根文件系统映像等。从主机下载的文件通常首先被Bootloader保存到目标机的RAM中,然后再被 Bootloader写到目标机上
13、的 FLASH 类固态存储设备中。16、简述 ARM9处理器的 7种运行模式。(1)用户模式(usr):非特权模式,大部分任务执行在这种模式。(正常程序执行的模式)(2)快速中断模式(fiq):当一个高优先级(fast)中断产生时将会进入这种模式。(高速数据传输或通道处理)(3)外部中断模式(irq):当一个低优先级(normal)中断产生时将会进入这种模式。(通常的中断处理)(4)管理模式(svc):当复位或软中断指令执行时将会进入这种模式。(供操作系统使用的一种保护模式)(5)中止模式(abt):当存取异常时将会进入这种模式。(虚拟存储及存储保护)(6)未定义模式(und):当执行未定义指
14、令时会进入这种模式。(软件仿真硬件协处理器)(7)系统模式(sys):供需要访问系统资源的操作系统任务使用。(特权级的操作系统任务)17、ARM9 处理器的寻址方式有那些?立即寻址、寄存器寻址、寄存器间接寻址、基址寻址、堆栈寻址 、块拷贝寻址、相对寻址18、ARM9 有哪些处理器模式?哪些是特权模式?哪些是异常模式?异常模式:除用户模式、系统模式之外的五种模式称为异常模式。特点:以各自的中断或异常方式进入,并且处理各自的中断或异常。特权模式:除用户模式之外的工作模式又称为特权模式 特点:应用程序可以访问所有的系统资源,可以任意地进行处理器模式的切换19、ARM9 的 7种工作模式中用户模式为非
15、特权模式,与特权模式相比有哪些权限限制?(1)在用户模式下,应用程序不能访问受操作系统保护的系统资源,不能进行处理器模式的切换。(2)在特权模式下,应用程序可以访问所有的系统资源,可以任意进行处理器模式的切换。20、S3C2410 存储器组织及地址分配。S3C2410X的存储器管理器提供访问外部存储器的所有控制信号:26 位地址信号、32 位数据信号、8 个片选信号、以及读/写控制信号等。S3C2410X的存储空间分成8组,最大容量是 1GB,bank0-bank5为固定 128MB,bank6和 bank7的容量可编程改变,可以是2、4、8、16、32、64、128MB,并且 bank7的开
16、始地址与bank6的结束地址相连接,但是二者的容量必须相等。bank0可以作为引导 ROM,其数据线宽只能是 16位和 32位,复位时由 OM0、OM1 引脚确定;其它存储器的数据线宽可以是 8位、16 位和 32位。S3C2410X的存储器格式,可以编程设置为大端格式,也可以设置为小端格式。21、ARM7 在 ARM状态下有多少个寄存器?通常堆栈指针使用哪个寄存器?连接寄存器 LR有什么功能?答: 有 37个 32位的寄存器其中 31个为通用寄存器;6 个为状态寄存器。R13:寄存器 R13在 ARM指令中常用作堆栈指针 SP。而在Thumb指令集中,某些指令强制性的要求使用 R13作为堆栈
17、指针。R14:寄存器 R14也称作子程序链接寄存器(Subroutine Link Register)或链接寄存器LR。当执行 BL子程序调用指令时,R14 中得到 R15(程序计数器 PC)的备份。其他情况下,R14用作通用寄存器。22、嵌入式处理器 ARM7/9TDMI中 TDMI的基本含义是什么? TDMI的基本含义为(对其它系列也适用):T: 支持 16位压缩指令集 Thumb,称为 T变种D: 支持片上 Debug,称为 D变种M:内嵌硬件乘法器 Multiplier,称为 M变种I: 嵌入式 ICE,支持片上断点和调试,称为 I变种23、简述冯-诺伊曼、哈佛结构的特点(1)冯诺曼结
18、构特点:必须有一个存储器;必须有一个控制器;必须有一个运算器,用于完成算术运算和逻辑运算;必须有输入和输出设备,用于进行人机通信。但是,这种指令和数据共享同一总线的结构,读取数据不能在同一时刻进行,影响了数据处理速度的提高。(2)哈佛结构的特点使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存;使用独立的两条总线,分别作为 CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联。24、CPSR 各位的含义及作用。31 30 29 28 27 8 7 6 5 4 3 2 1 0N Z C V (保留)I F T M4 M3 M2 M1 M01、条件码标志位(
19、保存 ALU中的当前操作信息)N:正负号/大小 标志位Z:零标志位C:进位/借位/移出位V:溢出标志位2、控制位I、F 中断控制位控制允许和禁止中断T控制(标志)位反映处理器的运行状态M控制位决定了处理器的运行模式25、简述 ARM9异常的优先级由高到低依次为: 复位、数据中止、FIQ 、IRQ、预取中止、未定义指令、SWI;26、ARM 处理器支持的数据类型有哪些?ARM微处理器支持字节(8位)、半字(16 位)、字(32位)3 种数据类型,可以表示有符号数和无符号数。27、Linux 的主要特点有哪些?开放性、多用户、多任务、良好的用户界面、设备独立性、丰富的网络功能、可靠的安全系统、良好
20、的可移植性。28、Linux 常用命令。ls-文件及子目录名列表cat-连续显示cd-改变工作目录(目录切换)cp-复制文件和目录29、Linux 文件系统目录树结构是怎样的?Linux文件系统是一个目录树结构,最上层是根目录,其他的所有目录都是从根目录出发而生成的。Linux 下,任何一个目录都可以是一个分区。因此,在分区时,必须将一个分区安装在树根下面。Linux 不仅将分区安装为一个目录,而且还将所有的硬件设备都安装成一个个设备文件。对设备的操作是通过文件的操作完成的。30、常用的 Bootloader有那些?(1)vivi(2)RedBoot (3)U-Boot 31、Makefile
21、 和 Make各实现什么功能?Makefile文件内容按照规则,对系统中本目录下的文件(.c、.s、.o、.h、.lib 等)根据相互关系和要求进行组织,设定各自的编译方法,指定所生成的目标。 Makefile是一种文本格式文件。Make是 Makefile文件的解释器Make对 Makefile文件解释后,生成 Linux的 shell命令和 gcc编译命令,接着对命令执行,最终生成目标文件。Makefile是工程系统编译批处理文件。32、ARM 有哪两种工作状态,怎样有指令进行切换?从 ARM状态切换到 Thumb状态有两种情况 ARM处理器自动切换到 Thumb状态。(1)执行 BX指令
22、,当操作数寄存器的位0为 1时,则微处理器从 ARM状态切换到Thumb状态。此为主动切换。(2)当处理器处于 Thumb状态时发生异常(如 IRQ、FIQ等),处理完异常后,在异常处理返回时,自动切换到 Thumb状态。此为自动切换。从 Thumb状态切换到 ARM状态有两种情况 ARM处理器自动切换到 Thumb状态。(1)执行 BX指令,当操作数寄存器的位0为 0时,则微处理器从 Thumb状态切换到 ARM状态。(2)当处理器在 Thumb状态时发生异常(如 IRQ、FIQ 等),则处理器从 Thumb状态自动切换到 ARM状态进行异常处理33、熟悉 ARM9指令系统、伪指令、伪操作。
23、34、S3C2410 有那些数据通信接口?UART接口 、SPI 接口、IIC接口、JTAG 接口、以太网接口、USB 接口35、简述 JTAG借口、串口和以太网接口在一般嵌入式系统调试中的作用(1) JTAG一般用于Bootloader等底层程序的调试,下载;(2)串口是在已有Bootloader/BIOS的前提下用于操作系统的调试,下载;(3)以太网口是在操作系统内核已经调试好了的前提下用于应用文件的调试,下载。36、ARM 所有的 37个寄存器,分为哪两大类?31个通用寄存器 和 6个状态寄存器。37、在异常发生后,ARM9TDMI内核会做哪些工作?在异常发生后,ARM7TDMI内核会作
24、以下工作:1.在适当的 LR中保存下一条指令的地址2.将 CPSR复制到适当的SPSR中; 3. 将 CPSR模式位强制设置为与异常类型相对应的值;4.强制 PC从相关的异常向量处取指。38、ARM9 处理器有哪些堆栈方式,各堆栈的特点是什么?(1)Full descending 满递减堆栈,堆栈首部是高地址,堆栈向低地址增长。栈指针总是指向堆栈最后一个元素(最后一个元素是最后压入的数据)。(2)Full ascending 满递增堆栈,堆栈首部是低地址,堆栈向高地址增长。栈指针总是指向堆栈最后一个元素(最后一个元素是最后压入的数据)。(3)Empty descending 空递减堆栈,堆栈首
25、部是低地址,堆栈向高地址增长。栈指针总是指向下一个将要放入数据的空位置。(4)Empty ascending 空递增堆栈,堆栈首部是高地址,堆栈向低地址增长。栈指针总是指向下一个将要放入数据的空位置。39、比较 Nor Flash 和 Nand flash 存储器的优缺点Nor Flash:读数据速度快,而擦写速度慢,容量小,价格高;Nand flash: 读数据速度不如 Nor,但擦写速度快,容量大,价格低。40、gcc 的整个编译过程有哪 4个步骤?预处理、编译、汇编、连接四、编程题:1、编写一个汇编程序,在 ARM程序代码中调用 Thumb子程序,并返回 ARM程序完成其功能。CODE3
26、2-BLX TSUB1-CODE16TSUB1-BX R142、将存储器中 0x30000000开始的 200字节的数据,传送到地址从 0x10000000开始的某接口电路的存储区域。STARTLDR R0,=0X30000000LDR R1,=0X10000000MOV R4,#0LKMLDRB R2,R0,#1STRB R2,R1,#1ADD R4,R4,#1CMP R4,#200BLNE LKMEND3、编写一简单 ARM汇编程序段,实现 1+2+1000的累加运算。MOV R0,#0MOV R1,#0LKMADD R0,R0,#1ADD R1,R1,R0CMP R0,#1000BLNE
27、 LKMEND4、将内存中从 0x30000FFF开始的 100个字数据相加,其结果存于 R3、R2 中。LDR R0,=0X30000000MOV R4,#0MOV R2,#0MOV R3,#0LKMLDR R5 , R0,#4ADDS R3, R3,R5ADDC R2, R2,#0ADD R4,R4,#1CMP R4,#100BLNE LKMEND5、编写一程序,查找存储器从0x30000000开始的 100个字中为 0的数目,将其结果存到0x30000012中。STARTLDR R0,=0X30000000LDR R1,=0X30000012MOV R3,#0MOV R4,#0LKMLD
28、R R2,R0,#4ADD R3,R3,#1CMP R2,#0ADDEQ R4,R4,#1CMP R3,#100BLNE LKMSTR R4,R1END6、R0 和 R1中有两个 32位无符号数,若 R0R1,则R0R0R1;若 R0R1,则R1R1R0;若 R0R1,则R1、R0 保持不变。CMP R0,R1SUBHS R0,R0,R1SUBCC R1,R1,R07、试编写程序,实现计算2468+2N 的值。MOV R5,#0MOV R3,#0MOV R4,#0LABLE EQU #0X2300000MOV LABLE,#300LKMADD R3,R3,#2ADD R4,R4,R3ADD R
29、5,R5,#1CMP R5,#LABLEBLNE LKMEND9、编程实现 S3C2410工作模式的切换。MRS R0,CPRSBIC R0,R0,#RADCTSC = 10;RADCCDN = (114) | (496) | (ch3) | (02) | (01) |(0);12、定时器初始化编程;ARMADR R0,lable+1BX R0THUMBThumbProgADR R0,lableBX R0ARM ARM Progmov R4,#413、编程实现在用户模式下打开 IRQ中断。14、编程实现禁止 ARM处理器内部看门狗;INIT:LDR R0,=0x53000000Mov R1,#
30、0STR R1,R0END15、编程实现各工作模式的堆栈初始化。未定义模式:LDR r0, =_stack Read the stack addressMSR cpsr_c, #MODE_UND|I_F_BIT switch to undef modeMOV sp,r0 write the stack pointerSUB r0, r0, #UND_STACK_SIZE give stack space中止模式 MSR cpsr_c, #MODE_ABT|I_F_BIT Change to abort modeMOV sp, r0 write the stack pointerSUB r0,r
31、0, #ABT_STACK_SIZE give stack space快速中断模式:MSR cpsr_c, #MODE_FIQ|I_F_BIT change to FIQ modeMOV sp,r0 write the stack pointerSUB r0,r0, #FIQ_STACK_SIZE give stack space外部中断模式:MSR cpsr_c, #MODE_IRQ|I_F_BIT change to IRQ modeMOV sp,r0 write the stack pointerSUB r0,r0, #IRQ_STACK_SIZE give stack space管理模式: MSR cpsr_c, #MODE_SVC|I_F_BIT change to SVC modeMOV sp,r0 write the stack pointerSUB r0,r0, #SVC_STACK_SIZE give stack space用户/系统模式: MSR cpsr_c, #MODE_SYS|I_F_BIT change to system modeMOV sp,r0 write the stack point考试题型填空 20分;单项选择 20分;名词解释 12分;简答题 20分;编程题 28分。