嵌入式期末复习

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

(1)简述嵌入式系统的定义和特点
答:定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。

特点:专用性强、实时性好、可裁剪性好、可靠性高和功耗低等。

(2)简述计算机系统的发展历程
第一阶段大致在20世纪70年代前后,可以看成是嵌入式系统的萌芽阶段;
第二阶段是以嵌入式微处理器为基础,以简单操作系统为核心的嵌入式系统;
第三阶段是以嵌入式操作系统为标志的嵌入式系统,也是嵌入式应用开始普及的阶段;
第四阶段是以基于Internet为标志的嵌入式系统,这是一个正在迅速发展的阶段。

(1)ARM和S3C2410X有什么关系?
S3C2410是韩国三星公司生产的嵌入式处理器,它采用了ARM公司的ARM920T(即ARM9)内核
(2)ARM7是多少位的RISC处理器?使用几级流水线?采用什么样的体系结构?支持MMU吗?
ARM7是32位RISC处理器,使用3级流水线,采用冯•诺依曼体系结构,不支持MMU。

(3)ARM9是多少位的RISC处理器?使用几级流水线?采用什么样的体系结构?支持MMU吗?
ARM8是32位RISC处理器,使用5级流水线,采用哈佛体系结构,支持MMU。

(4)S3C2410X芯片有多少根地址线,多少根片选线(nGCS),多少根数据线。

S3C2410X芯片有27根地址线,8根片选线(nGCS),32根数据线。

(5) s3c2410芯片内部集成了哪些控制接口?
S3C2410X芯片内部集成了一个LCD控制器,SDRAM控制器,3个通道UART,4个通道DMA,4个具有PWM功能的计时器和一个内部时钟,8通道的10位ADC。

(6)ARM体系结构有哪几种工作状态?又有哪几种运行模式?其中哪些为特权模式?哪些为异常模式?并指出处理器在什么情况下进入相应模式?
工作状态:
第1种:ARM状态。

处理器执行32位的字对齐的ARM指令。

第2种:Thumb状态。

处理器执行16位的半字对齐的Thumb指令。

运行模式:
用户模式(usr) 快速中断模式(fiq) 外部中断模式(irq) 管理模式(svc) 数据访问中止模式(abt) 系统模式(sys) 未定义指令中止模式(und)
在这7种运行模式,除了用户模式外,其他6种处理器模式都为特权模式。

在这6种特权模式中,除了系统模式外的其他5种特权模式又称为异常模式。

用户模式:非特权模式,也就是正常程序执行的模式,大部分任务在这种模式下执行。

在用户模式下,如果没异常发生,不允许应用程序自行切换果没异常发生,不允许应用程序自行改变处理器的工作模式,如果有异常发生,处理器会自动切换工作模式。

快速中断模式:支持高速数据传输和通道处理,当一个高优(fast)中断产生时将会进入这种模式。

外部中断模式:也称为普通中断模式,当一个低优先级中断产生时将会进入这种模式。

在这模式下按中断的处理器方式又分为向量中断和非向量中断两种。

通常的中断处理都在IRQ 模式下进行。

管理模式:是一种操作系统保护模式,当复位或软中断指令执行时处理器将进入这种模式。

数据访问中止模式:当存取异常时将会进入这种模式,用来处理存储器故障、实现虚拟存储或存储保护。

系统模式:使用和user模式相同寄存器组的特权模式,用来运行特权级的操作系统任务。

未定义指令中止模式:当执行未定义指令时会进入这种模式,主要是用来处理未定义的指令陷阱,支持硬件协处理器的软件仿真,因为未定义指令多发生在对协处理器的操作上。

(7)ARM体系结构支持的数据类型?有多少寄存器?如何组织?
支持的数据类型:
1.字节(byte),各种处理器体系结构中,字节的长度均为8位。

2.半字(half-word),在ARM体系结构中,半字的长度为16位。

3.字(word),在ARM体系结构中,字的长度为32位。

ARM处理器共有37个寄存器,其中31个通用寄存器,6个状态寄存器。

(8)S3C2410的存储控制器如何对内存空间进行管理?
S3C2410X存储控制器为片外存储器提供控制信号。

它将系统的存储空间分成8组(Bank),每组的大小为128MB,共1GB。

(9)分析程序状态寄存器各位的功能描述,并说明C、Z、N、V在什么情况下进行置1和清0 状态寄存器(PSR)的具体格式为
V—溢出标志位
对于加/减法运算指令,当操作数和运算结果为二进制补码表示的带符号数时,V=1表示符号位溢出,其它指令通常不影响V位。

例如:两个正数(最高位为0)相加,运算结果为一个负数(最高位为1),则符号位溢出,相应V=1.
C--进位或借位标志位
对于加法指令(包括比较指令CMN),结果产生进位,则C=1,表示无符号数运算发生上溢出,其他情况下C=0;
在减法指令中(包括比较指令CMP),结果产生借位,则C=0,表示无符号数运算发生下溢出,其他情况下C=1;
对于包含移位操作的非加/减法运算指令,C中包含最后一次溢出位的数值;对于其他非加/减法运算指令,C位的值通常不受影响。

Z--结果为0标志位 Z=1表示运算结果是0,Z=0表示运算结果不是零;对于CMP指令,Z=1表示进行比较的两个数大小相等。

N--符号标志位
本位设置成当前指令运算结果的bit[31]的值。

当两个补码表示有符号整数运算时,N=1表示运算的结果为负数,N=0 表示结果为正数或零。

(10)ARM指令可分为哪几类?说出哪几条指令是无条件执行的。

ARM指令可分为:数据处理指令,跳转指令,程序状态寄存器处理指令,加载/存储指令,协处理器指令,异常产生指令。

无条件执行指令:BLX指令,BKPT指令(产生软件断点中断)
(1) make和Makefile之间的关系?
答:make是一种命令,是根据Makefile文件的规则决定如何编译和连接程序或其他的动作。

(2)Makefile的普通变量与预定义变量有什么不同?预定义变量有哪些?它们分别表示什么意思?
答:普通变量:引用变量时,只需在变量前面加上$符;预定义变量:已经定义好,直接引用即可。

预定义变量有:$@、$^、$<。

$@:表示完整的目标文件名;$^:表示所有的依赖文件;$<:表示依赖文件列表中的第一个文件。

(3)GCC编译器的常用参数有哪些?它们的功能分别是什么?
答:gcc编译器的常用参数:-o,-I,-L,-E,-S,-c
功能:-o表示编译成一个可执行程序;-I表示指定头文件目录;-L表示指定库文件目录选项;-E表示对源代码进行预编译;-S表示编译成汇编代码;-c表示把.c文件转换为以.o为扩展名的目标文件。

(1)简述嵌入式开发环境的搭建过程
答:1、交叉编译工具链的安装;2、安装配置TFTP服务;3、安装配置NFS服务;4、C-Kermit 的安装配置;5、minicom的安装配置;6、windows下超级终端的配置。

(2) BootLoader的结构分两部分,简述各部分的功能?
答:两部分:Stage1:用汇编语言编写,主要进行设备的初始化;Stage2:用C语言编写,增强程序的移植性和可读性。

(2) ARM常用的Bootloader程序有哪些?答:U-Boot,Blob,RedBoot,vivi
(3) 简述生成内核映像文件zImage的步骤。

答:1、make config 进入命令行;
2、make menuconfig 内核裁剪;
3、make clean 清理以前已生成的目标文件;
4、make dep 编译变量的依赖关系;
5、make zImage 生成内核镜像文件zImage。

(4) BusyBox工具的功能是什么?
答:BusyBox工具用来精简基本用户命令和程序,它将数以百计的常用UNIX/Linux命令集成到一个可执行文件中。

(5)简述根文件系统的创建过程。

答:1、建立基本的目录结构;
2、交叉编译BusyBox;
3、创建配置文件;
4、利用cramfs工具创建根文件系统映像文件。

(1) 简述驱动程序的主要功能。

答:1、对设备初始化和释放;2、数据传送;3、检测和处理设备出现的错误。

(2) 简述驱动程序的组成。

答:1、自动配置和初始化子程序;2、服务于I/O请求的子程序;3、中断服务子程序。

(3) 简述设备驱动程序与应用程序的区别。

答:1、设备驱动程序工作在内核态下,而应用程序工作在用户态下;2、设备驱动程序从module_init()开始,将初始化函数加入内核初始化函数列表中,在内核初始化时执行驱动的初始化函数,从而完成驱动的初始化和注册,之后驱动便停止工作,等待应用程序的调用;而应用程序从main()函数开始执行。

3、应用程序可以和GLIBC库连接,因此可以包含标准的头文件;驱动程序不能使用标准的C库,因此不能调用所有的C库函数。

(4)简述设备文件、驱动文件、主设备号和次设备号之间的关系。

答:驱动程序加载到内核后有一个主设备号。

在Linux内核中,主设备号标识设备对应的驱
动程序,告诉Linux内核使用哪一个驱动程序为该设备(也就是/dev下的设备文件)服务,而次设备号则用来标识具体且唯一的某个设备。

(5)简述字符设备驱动程序提供的常用入口点及各自的功能。

答:open入口点:对将要进行的I/O操作做好必要的准备工作,如清除缓冲区等。

如果设备是独占的,即同一时刻只能有一个程序访问此设备,则open子程序必须设置一些标志以表示设备处于忙状态。

close入口点:当设备操作结束时,需要调用close子程序关闭设备。

独占设备必须标记设备可再次使用。

read入口点:当从设备上读取数据时,需要调用read子程序。

write入口点:向设备上写数据时,需要调用write子程序。

ioctl入口点:主要用于对设备进行读写之外的其他操作,比如配置设备、进入或退出某种操作模式等,这些操作一般无法通过read或write子函数完成操作。

(1)关于嵌人式系统发展趋势,描述不正确的是(A )
A.产品性能不断提高,功耗不断增加
B.体积不断缩小
C.网络化、智能化程度不断提高
D.软件成为影响价格的主要因素
嵌入式系统的发展趋势表现在以下几方面: 1.产品种类不断丰富,应用范围不断普及 2.产品性能不断提高 3.产品功耗不断降低,体积不断缩小 4.网络化、智能化程度不断提高 5.软件成为影响价格的主要因素
(2)嵌人式操作系统有很多,但(D )不是。

A. Linux
B. Windows CE
C. V×Works
D. Windows XP
常见的嵌入式操作系统: VxWorks,Windows CE、uC/OS-II和嵌入式Linux。

(3) V×Works是( A)于1983年开发的一种32位嵌人式实时操作系统。

A. WindRiver
B. Microsoft
C. Jean brosse
D. LinusTorvalds
说明:VxWorks是美国WindRiver公司于1983年开发的一种32位嵌入式实时操作系统。

(1)ARM公司主要依靠(D)获得利润。

A.生产芯片B.销售芯片 C.制定标准 D.出售芯片技术授权
(2) S3C2410X是( C)公司生产的嵌人式处理器。

A. AKM
B.Sony
C. Samsung
D. Motorola
(3)S3C2410X选用的内核是( A)公司设计的。

A. ARM
B. Sony
C. SamsLing
D. Motorola
(4)S3C2410X采用的内核是(B).
A. ARM720T
B. ARM920T
C. ARM1020
D. ARM9E
(5)S3C2410×芯片采用的封装是( B).
A. DIP
B. BGA
C. QFP
D. PGA
(6)S3C2410X 是 ( C)位处理器。

A. 8
B.16
C.32
D.64
(7)S3C2410X有(D)位通道的I/O口。

A.8
B.64
C.100
D.117
(8)S3C2410X有(C)个外部中断源。

A. 8
B.16
C.24
D.32
(9)S3C2410X将系统的存储空间分成(C ) 组 (bank).
A. 2
B.4
C.8
D.166
(10)S3C2410×能管理的最大存储空间是(
B )。

A.512MB
B.1GB
C.2GB
D.4GB
(1)GCC软件是(B )
A.调试器
B.编译器
C.文本编辑器
D.连接器
(2)GDB软件是(A )
A.调试器
B.编译器
C.文本编辑器
D.连接器
(3)如果生成通用计算机上(系统是Linux操作系统)能够执行的程序,则使用的C编译是(C)
A.TC
B.VC
C.GCC
D.Arm-linu X-gcc
(4)GCC用于指定头文件目录的选项是(D )
A.-o
B.-L
C.-g
D.-I
(5)make有许多预定义变量,表示“目标完整名称”的是(A )
A. $@
B. $^
C.$<
D.$>
(1) minicom 是 ( A)
A.串口通信工具
B.图像软件
C.操作系统
D.远程控制软件
(2)vivi工程序分2个阶段,第1阶段是用( C)语言编写的。

A.C语言
B.机器语言
C.汇编语言
D.Basic语言
(3)vivi工程序分2个阶段,第2阶段是用(A)语言编写的。

A.C语言
B.机器语言
C.汇编语言
D.Basic语言
(4)内核映像文件是(A )
A. zImage
B. kernel
C.root.cramfs
D.Yaffs
(5)创建根文件系统映像文件使用的工具是(A )
A. BusyBox
B.cramls
C.Make
D.vi
(1)驱动程序的主要功能包括3个方面,但(B)不属于。

A.对设备初始化和释放
B.控制应用程序
C.检测和处理设备出现的错误
D.数据传送
(2)驱动程序主要由3部分组成,但( D)不属于。

A.自动配置和初始化子程序
B.服务于I/0请求的子程序
C.中断服务子程序
D.服务于CPU子程序
(3)字符设备提供给应用程序的人口点有很多,但(C )不是。

A.ioctl B.read C.main D.open
(4)Linux系统通常将设备分为3类,但( A)不属于
A.输人设备
B.字符设备
C.块设备
D.网络设备
(5)Linux系统用(C)字母表示字符设备。

A.A
B.B
C.C
D.D
(6)设备文件包括了较多信息,但没有包括(D ).
A.设备类型
B.主设备号
C.次设备号
D.驱动程序名称
(1)通常可以将计算机分为两类,即通用计算机和__嵌入式计算机_______。

(2)嵌人式系统硬件可分为__微处理器_、_外围电路_和_外部设备__等3部分。

(3)嵌人式系统软件可分为板级支持包、_实时操控系统_、应用编程接口和应用程序等4部分
(4)根据结构和功能特点不同,嵌人式处理器可分嵌入式处理器、微控制器和数字信号处理器等3类。

(1)ARM微处理器目前包括_ARM7、ARM9_、ARM9E_、ARM10E__、ARM11__、等
(2)RISC的意思是精简指令集。

(3)S3C2410x 是_Samsung_公司生产的嵌人式处理器,它采用了ARM公司的
内核,芯片内部还设计了__IIC____线,并集成了一些外围设备控制电路。

(4)S3C2410x采用BGA封装,主要解决因_显卡布线_____带来的问题。

(5)S3C2410x使用了两组电压供电,内核采用__1.8_v___供电,存储器和I/O采用__3.3v___供电
(6)S3C2410x将系统的存储空间分成___8___组(bank),每组的大小为_128____MB,共___1___GB。

(7)UP-2410S实验箱硬件使用的MCU是__s3c2410____;内存是__64MB____;Flash是__64MB____。

(1)Linux下,动态链接库文件是以__.SO_结尾的,静态链接库文件是以__.a____结尾的。

动态链接库是在_程序运行过程中_____动态加载的,静态链接库是在编译过程中静态加载的。

(2)GCC指定库文件目录选项的字母是__L____。

指定头文件目录选项的字母_I_____。

指定输出文件名选项的字母是__O____
(3)为了方便文件的编辑,在编辑Makefile时,可以使用变量。

引用变量时,只需在变量前面加上__$____符。

(4)Makefile文件预定定义变量有很多,列举3个预定定义变量:__$@____,__$_∧__和
_$<_____。

(5)Makefile文件预定定义变量“$@”表示_目标文件的完整名称_____,“$^”表示_所有不重复的依赖文件,以空格隔开_____,“$<”表示_第一个依赖文件的名称_____。

(1)当宿主机使用Linux操作系统的minicom操作实验箱时,宿主机和实验箱之间是利用__串____口来传输数据。

(2)配置minicom时,一般参数为波特率__115200____,数据位__8____位,停止位___1___位,奇偶校验位__无____,软硬件控制流为___无___。

(3)对嵌人式系统Flash存储器烧写可以通过__编程口____、__串口____和__网络接口____和等不同方式。

(4)在构建一个嵌人式系统,最先被烧写到Flash存储器中的软件是Bootload_。

(5)JTAG仿真器有两种功能,即__程序仿真调试____和_程序烧写_____。

(6)嵌人式Linux的内核映像文件是zImage_,根映像文件是_root.cramfs_____。

(7)大多数Bootloader程序包括两种不同的操作模式,即_启动加载模式_____和___下载___模式。

(8)Bootloader程序有stagel和stage2,它们分别是用__汇编语言____和____C__语言来编写的。

(9)流行的LinuxBootloader有_U-Boot_____、_Blob__和_ARMBoot_____。

(10)在嵌人式Linux系统中,创建根文件系统的工具是__BusyBox____。

(11)开始操作实验箱,当出现提示PressReturnstarttheLINUXnow,anyotherkeyforvivi时,按Enter键,则进入vivi的_启动加载_____模式。

(1)驱动程序运行在_内核态_____,应用程序运行在用户态。

(2) Linux系统的设备一般分为三类,即_字符设备_____、__块设备____和网络设备。

(3)在Linu“系统中,设备号包括两部分,即_主设备号_____和次设备号设备号。

(4) Linux驱动程序的编译方法有两种,即_静态编译__和_动态编译_____。

(5)Linux系统中,用于加载模块化驱动程序的命令是__insmod____。

4.程序题
(1) 分析下列每条语句,并说明程序实现的功能。

CMP R0, #0 //判断R0是否等于0
MOVEQ R1, #0 //当R0等于0,则R1等于0
MOVGT R1,#1 //当R0为正数时,则R1等于1
此功能码段可以判别R0中的值为正数还是0。

(2) 写一条ARM指令,分别完成下列操作。

R0 = 16 MOV RO, #16
R0 = R1 / 16 MOV RO,R1,LSR#4
R1 = R2 * 4 ADD R1,R2.R2.LSL#1
R0 = - R0 RSB RO,RO,#0
(3) 写出实现下列操作的ARM指令。

当Z=1时,将存储器地址为R1的字数据读入寄存器R0。

MOVEQ R0, [R1]
当Z=1时,将存储器地址为R1+R2的字数据读入寄存器R0。

LDREQ R0, [R1,R2]
将存储器地址为R1-4的字数据读入寄存器R0。

LDR R0,[R1,#-4]
将存储器地址为R1+R6的字数据读入寄存器R0,并将新地址R1+R6 写入R1。

LDR R0,[R1,R6]!
(4) 写出下列指令所实现的操作。

LDR R2 ,[R3,#-2]!
将存储器地址为R3-2的字数据读入R2,并将地址R3-2写入R3
LDR R0 ,[R0],R1
将存储器地址为R0的字数据读入R0,并将地址R0+R1写入R0
LDR R1 ,[R0,R2,LSL #2]!
将存储器地址为R0+R2*4的字数据读入R1,并将地址R0+R2*4写入R0
STRB R1 ,[R2,#0xB0]
R0的低8位存入存储器地址为 R2+0xB0字节中
LDMIA R0 ,{R1,R2,R8}
将内存单元R0所指向的地址单元以字为单位递减方式读取到R1,R2,R8 中,低地址编号的字数据内存单元对应低编号寄存器
STMDB R0!, {R1~R5,R8,R9}
R1~R5,R8,R9存储到以R0为起始地址的递减内存中,最终R0 指向存放 R9的地址单元
4. 编程及调试题
(1)根据要求编写Makefile文件。

有5个文件分别是main.c、visit.h、study.h、visit.c、study.c,具体代码如下。

1)如果上述文件在同一目录,请编写Makefile文件,用于生成可执行程序zhs。

//Makefile 文件
2) 如果按照下面的目录结构存放文件,请改写Makefile文件。

bin:存放生成的可执行文件 obj:存放.o文件
include:存放visit.h、study.h
src:存放main.c、visit.c、study.c和Makefile.
3) 如果按照下面的目录结构存放文件,请改写Makefile文件。

bin:存放生成的可执行文件 obj:存放.o文件
include:存放visit.h、study.h src:存放main.c和Makefile src/src1:存放visit.c src/src2:存放study.c
说明:这可能只是其中一种方法,方法不唯一。

我这种做法有一个缺点就是需要修改visit.c 和study.c文件的内容,如修改#include “../include/visit.h”。

(2) 按要求完成以下操作。

① vi编辑test.c文件,其内容如下。

#include <stdio.h>
int main()
{
int s=0,I;
for(i=1;i<=15;i++)
{
S=s+I;
Printf(“the value of a is %d\n”,s)
}
Return 0;
}
②用gcc –o test.o test.c编译,生成test.o gcc –o test.o test.c
③用gcc –g –o test1.o test.c编译,生成test1.o
④比较test.o和test1.o文件的大小,思考为什么?
带调试选项-g的目标文件test1.o比较大。

因为在gcc编译源代码时指定-g选项可以产生带有调试信息的目标代码
(4)编写一个程序,将系统时间以year-month-day hour:minute:second格式显示在屏幕上,并将它保存在time.txt文件。

. . .。

相关文档
最新文档