东师2014年春季嵌入式系统期末考核试题和答案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2014年春季期末作业考核

《嵌入式系统》

满分100分

一、判断题(每题3分,共30分)

1. 嵌入式系统一般具有实时约束,有时限要求,因此,嵌入式系统一般都采用分时操作系统。(√)

2.嵌入式系统本身具备自举开发能力,用户可以直接在嵌入式设备上做开发。(×)3.硬件资源是硬件设计工程师在设计和调试硬件必备的工具,这些资源不包括示波器。(√)

4.嵌入式常用编程语言有汇编语言、C语言、C++语言以及Java语言等。(√)

5.嵌入式 Linux是以Linux为基础的嵌入式操作系统,它是一种开放源代码、软实时、多任务的嵌入式操作系统。(√)

6.uCLinux是面向支持MMU的处理器平台设计的。(×)

7.ARM指令中的第二个操作数可以是一个8位的立即数,也可以是一个任意的32位立即数。(×)

8.当异常发生时,需要保护程序执行现场,再进行异常处理。其中,现场保护包括返回地址和CPSR的值两个方面的内容。(√)

9.MAP用于定义一个结构化的内存表的首地址,可以用“*”代替。(×)

10.SPACE分配的内存单元用0初始化,DCB分配的内存用指定的值初始化。(√)

二、简答题(每题8分,共40分)

1. 什么是可编程片上系统(SOPC)?

答:SOPC(System On Programmable Chip)即可编程的片上系统,或者说是基于大规模FPGA的单片系统。SOPC技术是一门全新的综合性电子设计技术,涉及面广。

在二○世纪九十年度末,可编程逻辑器件(PLD)的复杂度已经能够在单个可编程器件内实现整个系统。完整的单芯片系统(SOC)概念是指在一个芯片中实现用户定义的系统,它通常暗指包括片内存储器和外设的微处理器。最初宣称真正的SOC――或可编程单芯片系统(SOPC)――能够提供基于PLD的处理器。在2000年,Altera发布了Nios 处理器,这是Altera Excalibur嵌入处理器计划中第一个产品,它成为业界第一款为可编程逻辑优化的可配置处理器。本文阐述开发Nios处理器设计环境的过程和涉及的决策,以及它如何演化为一种SOPC工具。

SOPC是基于FPGA解决方案的SOC,与ASIC的SOC解决方案相比,SOPC系统

及其开发技术具有更多的特色,构成SOPC的方案也有如下多种途径

2. 什么是嵌入式交叉调试?交叉调试的方式有哪几种?

答:就是宿主机(一般是电脑)与目标机(嵌入式系统)之间跨平台进行调试(一个是x86架构处理器,一个是ARM或其他嵌入式微处理器),这种跨平台的调试就叫交叉调试。当然,宿主机与目标机之间存在某种通信方式,以太网通信或串口通信等。

常用的调试方法有Monitor方式和片上调试方式。

3.嵌入式ARM Linux系统的一般开发步骤是什么?

第一步、建立交叉编译环境

没有交叉开发经验的读者,可能一时很难接受这个概念。首先,要明白两个概念:一般我们工作的机器,称为开发机、主机;我们制作好的系统将要放到某台机器,如手机或另一

台PC机,这台机我们称为目标主机。

我们一般开发机上已经有一套开发工具,我们称之为原生开发套件,我们一般就是用它们来写程序,那么,那什么又是交叉编译环境呢?其实一点也不神秘,也就是在开发机上再

安装一套开发工具,这套开发工具编译出来的程序,如内核、系统工作或者我们自己的程序,

是放在目标主机上运行的。

那么或许有初学者会问,直接用原生开发工具为目标主机编译程序不就完了?至少我当初是这么想的。一般来说,我们的开发机都是X86 平台,原生开发套件开发的工具,也针

对X86 平台,而我们的目标主机可能是PowerPC、IXP、MIPS……所以,我们的交叉编译

环境是针对某一类具体平台的。

一般来讲,交叉开发环境需要二进制工具程序、编译器、C链接库,嵌入式开发常用的这三类软件是:

Binutils

Gcc

uClibc

当然,GNU包含的工具套件不仅于此,你还要以根据实际需要,进行选择

第二步、编译内核

开发工具是针对某一类硬件平台,内核同样也是。这一步,我们需要用第一步中建立的工具,对内核进行编译,对于有内核编译经验的人来说,这是非常简单的;

第三步、建立根文件系统

也就是建立我们平常看到的bin、dev、proc……这一大堆目录,以及一些必备的文件;

另外,我们还需要为我们的目标系统安装一些常用的工具软件,如ls、ifconfig……当然,一个办法是找到这些工具的源代码,用第一步建立的交叉编译工具来编译,但是这些软件一

是数量多,二是某些体积较大,不适合嵌入式系统,这一步,我们一般都是用busybox 来完

成的,包括系统引导软件init;

最后,我们为系统还需要建立初始化的引导文件,如inittab……

4.试举例说明LDR和STR指令的前变址、后变址和回写前变址3种变址模式。

5.从IRQ和FIQ处理程序返回时,如何写返回指令?

简单说,把要返回的地址移入PC中即可。说复杂一点,这个输入的地址在进入中断处理例程的时候,保存在LR中,所以一般的做法是做一个movs pc, lr即可实现。

三、问答及应用题(每小题15分,共30分)

1.简述ARM的CPSR各状态位的作用,并说明如何对其进行操作,以改变各状态位。答:CPSR可在任何运行模式下被访问,它包含条件码标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。

条件码标志位:

∙N 当用两个补码表示的带符号数进行运算时,N=1表示运算的结果为负数;N=0 表示运算的结果为正数或零;

∙Z Z=1 表示运算的结果为零;Z=0表示运算的结果为非零;

∙ C ①加法(包括比较指令CMN)运算结果产生进位时(无符号数溢出),C=1,否则C=0。②减法(包括比较指令CMP)运算产生借位(无符号数溢出),C=0,否

则C=1。③对于包含移位操作的非加/减运算指令,C为移出值的最后一位。

∙V ①对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出。

∙CPSR的低8位(包括I、F、T和M[4:0])称为控制位,当发生异常时这些位可以被改变。

状态寄存器(PSR)中的其余位为保留位,当改变PSR中的条件码标志位或者控制位时,保留位不要被改变,在程序中也不要使用保留位来存储数据。

相关文档
最新文档