2015秋东师嵌入式系统作业答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
期末作业考核
《嵌入式系统》
满分100分
一、判断题(每题3分,共30分)
1. 嵌入式系统中的软件系统主要由嵌入式操作系统和应用软件组成,其中嵌入式微处理器属于嵌入式软件系统的核心。(×)
2. 运行在智能手机或平板电脑中的Android系统是一种嵌入式操作系统。(√)
3. WindRiver公司所提供的软件开发包是Tornado,基所使用的操作系统是Windows。(×)
4. 基于ARM的开发工具仅包括编辑器、编译器、汇编器、链接器和调试器。(×)
5. 在Linux系统中,目录不能有硬连接,且硬连接不能跨越文件系统。(√)
6. Linux系统中卸载某个文件系统需要使用的命令是unload。(×)
7. 当ARM处理器执行异常处理程序时,处理器处于ARM状态。(√)
8. ARM处理器的快速中断模式下的影子寄存器数量最多。(√)
9. EXTERN在引用某个外来的符号时,如果本源文件设有实际引用该符号,该符号也会被加入到本源文件的符号表中。(×)
10. 在ARM汇编语言中,基本指令必须从一行的行头开始。(×)
二、简答题(每题8分,共40分)
1. 试比较SRAM、DRAM和SDRAM有什么区别?
答:1)SRAM:加电情况下不需要刷新,数据不会丢失,一般不是行列地址复用。存取速度较快,且比较省电,但存1位信息需要4-6只晶体管,制造成本高。一般用做cache。
2)DRAM:需要不断刷新才能保存数据,行列地址复用。存1位信息只需要1只晶体管。一般用做主存。
3)SDRAM:数据的读写需要时钟来同步,多bank结构。
4)DRAM和SDRAM的容量较SRAM大,但读写速度不如SRAM。
5)DDR SDRAM: SDRAM在一个时钟周期内只传输一次数据,它是在时钟的上升期进行数据传输;而DDR内存则是一个时钟周期内传输两次数据,它能够在时钟的上升期和下降期各传输一次数据,因此称为双倍速率同步动态随机存储器。DDR内存可以在与SDRAM相同的总线频率下达到更高的数据传输率。
2.什么是映像文件?什么是映像文件的加载视图和执行视图?
答:映像文件(Image)是一个计算机上的可执行文件,在执行之前被加载到计算机的存储器中。通常,一个映像文件中包含多个线程。
映像文件的加载视图是指映像文件开始执行前它的域和段在存储器中的位置视图,该视图根据映像文件装载到存储器时的地址描述每一个域和段。
映像文件的执行视图是指映像文件在执行时其每一个域和段在内存中的地址描述视图。
3.Linux的开发工具有哪些?
答:1)程序编辑器:Vi、emacs、gedit。
2)编译器套装:GCC
3)链接器:ld
4)汇编器:as
5)调试器:gdb
6)项目管理工具:make
4.什么是ARM处理器的影子寄存器?
答:影子寄存器的引入是ARM的一个特点(X86,PowerPC都没有)。我们知道,ARM有16个通用寄存器,这16个通用寄存器在指令中使用4个bit来标识,但是在不同的模式下,同样的4个bit 指向不同的物理寄存器,这些不同的物理寄存器就被称之为影子寄存器。不同的通用寄存器的影子寄存器个数也不相同,有的没有,有的只有1个,有的多达5个。要记住一点:所有的影子寄存器都是一个实际存在的物理寄存器。
ARM核是一个非常紧凑的设计,影子寄存器的引入就是这种设计的表现。通过引入影子寄存器,
指令可以重复使用相同的寄存器编码,但是在不同模式下,这些编码对应不同的物理寄存器。比如Abort模式下的R13就同用户模式下的R13不同,虽然它们编码一样,但是实际上对应的是不同的物理寄存器(可以将CPSR的模式域当作片选)。
5.ARM汇编的符号命名和书写规则有哪些?
答:1.符号命名可以使用大小写字母,数字和下划线。
2.符号是大小写字母敏感的。
3.除本地行号外,名称不能不能以数字开头。
4.一个程序段中不能重名。
5.符号在其作用范围内必须唯一。
6.符号不能够与系统内部变量或者系统预定义的符号同名。例如:a1 or R0、sp、cpsr、{PC} or .、{VAR} or @、{CONFIG}、{CPU}等等。
7.当程序中的符号与指令助记符或者指示符同名时,用双竖线将符号括起来。如||buffe_a||,这时双竖线并不是符号的组成部分。
8.在ARM汇编语言程序中,所有符号必须在一行的最左边位置开始书写,即所谓的顶格书写,不允许包含空格或者制表符。
9.符号的字符序列中不能大小写字母相混杂。
10.如果符号使用了更大范围的字符集,则需要用单竖线将符号括起来,以便编译器处理。例如:|.text|和|Image$$ZI$$Limit|
11.单竖线不属于符号,在两个单线之间不能适用单竖线、分号。
三、问答及应用题(每题15分,共30分)
1.Linux的makefile有什么作用?例如,在某目录下某工程有三个源文件,分别是xa1.c、xa2.c和xa3.c,其分别对应的头文件是xa1.h、xa2.h和xa3.h,该工程的最终可执行文件名是mytest,此外,
xa2.c和xa3.c还依赖于xa1.h,试写出该目录下最通用的makefile文件。
答:make工具通过一个称为makefile的文件来完成并自动维护编译工作。Makefile需要按照某种语法进行编写,其中说明了如何编译各个源文件并连接生成可执行文件,并定义了源文件之间的依赖关系。当修改了其中某个源文件时,如果其他源文件依赖于该文件,则也要重新编译所有依赖该文件的源文件。
具体makefile文件之一如下:
#This is a makefile for make tools.
Mytest:xa1.oxa2.oxa3.o
Gcc–o mytestxa1.oxa2.oxa3.o
Xa1.o:xa1.cxa1.h
Gcc–cxa1.c
Xa2.o:xa2.cxa2.hxa1.h
Gcc–cxa2.c
Xa3.o:xa3.cxa3.hxa1.h
Gcc–cxa3.c
2.试编写一个ARM汇编子程序SUMMING,用于计算1000以内所有能被3整除的自然数之和。要求该子程序可被其他程序调用。
答:EXPORT SUMMING
AREA MYSUM, CODE, READONLY
ENTRY
SUMMING
LDRR0, =1000
MOV R1, #0
MOV R2,#3
CMP R2,R0
LOOP
ADDLO R1,R1,R2
ADDS R2,R2,#3
BLOLOOP
MOV PC,LR
END