嵌入式操作系统复习题.docx
《嵌入式操作系统复习题.docx》由会员分享,可在线阅读,更多相关《嵌入式操作系统复习题.docx(17页珍藏版)》请在冰豆网上搜索。
嵌入式操作系统复习题
—
一、填空题
1.ARM处理器中断有快速中断模式(FIQ)和外部中断模式(IRQ)处理模式。
2.典型的ARM基于JTAG调试结构包括哪几个部分
Debug主控端,协议转换器,调试目标机
3.LINUX系统中设备文件通常分为哪几种
字符设备(无缓冲且只能顺序存取)、块设备(有缓冲且可以随机存取)。
4.LINUX环境中的变量包括哪几个
pathhomehistsizehostnameshellmailps1lang/langue
5.^
6.gcc编译分成哪4个阶段:
预处理(Pre-Processing)->编译(Compling)->
汇编(Assembling)->连接(Linking)
7.flashmemory上的两种技术分别是NAND和NOR
8.MMU是内存管理单元,主要作用有地址映射和对地址访问进行保护和限制
9.Pxa255拥有7级超级流水线,主要由主流水线、MAC流水线和内存访问流水线部分构成的
10.进程的虚拟内存包括和
11.内核(kernel)是操作系统内部核心程序,它向外部提供了对计算机核心管理调用
12.模块的装入通过insmod命令手工将module载入内核和根据需要载入module
13.&
14.嵌入式操作系统要为特定的硬件设备或环境设计符合要求的图形用户界面GUI
15.在LINUX根文件系统中所有的设备文件都放在目录dev下或其子目录之下
16.XWindows最先在Unix上使用的图形界面,由X服务器X客户机X协议三部分组成
17.内核最后一个初始化动作是启动初始化程序(运行/sbin/init可执行文件)
18.线程共享资源的程序实体,创建一个线程系统开销要比一个进程小的多
19.内核碰到错误时,会显示处理器状态,包括cpu寄存器的内容和页描述表的位置还有一些难理解的信息
20.在ARM LINUX体系中用来处理外设中断的异常模式是 中断请求
21.闪存主要由NORflash和NANDflash
22.}
23.预定义变量:
将所有的外部变量表示成内建环境变量,并且将错误信息表示成返回值
AS=as指定汇编器ASFLAGSAS指令的选项设置CC=cc=gcc指定编译器$*没有扩展名的当前目标文件$@当前目标文件$<规则的第一个依赖文件名$比目标文件更新的依赖文件列表$^规则的所有依赖文件列表$%如果目标是归档成员,则该变量表示目标的归档成员名称。
例如,如果目标名称为,则$@为,而$%为。
二、选择题
1.处理器的型号(嵌入式和非嵌入式)
ARM(XScale),EMPU,EDSP,SOC,MIPS,PowerPC,M68000,SecurCore,StrongARM,PalmOS,Psos
2.reboot命令可以马上重新启动正在运行的LINUX系统
3.处理器的选择要考虑的主要因素处理性能,技术指标,功耗,功率损耗检测
4.LINUX文件权限的含义(共四段)
<
第一位表示文件类型 -表示普通文件。
d表示目录文件
第二、三、四位表示文件所有者的读,写,执行权限
第五、六、七位表示文件所在属组的读,写,执行权限
第八、九、十位表示文件的其它用户的读,写,执行权限
5.用chmod命令可以更改一个文件的权限设置
6.找出一个不是LINUX设备驱动和外界的接口驱动程序与操作系统内核的接口,驱动程序与系统引导的接口,驱动程序与设备的接口
7.用Makefile命令来实现自动编译
8.在LINUX中,进程以PID作为标识
9.找出块设备IDE硬盘,SCSI硬盘,CD_ROM,大小通常为512B~32KB
在大多数Linux发行版本中,以下哪个属于块设备 (block devices)
A. 串行口B. 硬盘、磁盘C. 虚拟终端D. 打印机
选B
10.…
11.硬链接的特点1,不能跨分区,2,不能给目录作硬链接3,删除链接原始文件
硬链接只能引用同一文件系统中的文件。
它引用的是文件在文件系统中的物理索引(也称为inode)。
当您移动或删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在文件结构中的位置。
硬链接的文件不需要用户有访问原始文件的权限,也不会显示原始文件的位置,这样有助于文件的安全。
如果您删除的文件有相应的硬链接,那么这个文件依然会保留,直到所有对它的引用都被删除。
12.用find查找当前目录下的以.c结尾的文件并输出结果的命令是(D)
A.find . –name “.c” –print
B.find . –name “#.c” –print
C.find . –name “!
*.c” –print
D.find . –name “*.c” –print
13.在ARM处理器的工作模式中,快速中断(FIQ)模式有自己的独立寄存器r8~14
14.}
15.主目录的绝对路径名以形式显示(pwd)
16.在vi编辑器命令模式下,重复上一次对编辑的文本使用上箭头命令命令
17.在使用文件通配符的含义匹配任何单个字符
文件系统的主要功能是(嵌入式Linux文件系统)文件系统不仅要管理文件,提供文件系统API,还要管理各种设备,支持对设备和文件操作的一致性(像操作文件一样操作各种I/O设备)管理和调度文件的存储空间,提供文件的逻辑结构、物理结构和存储方法;实现文件从标识到实际地址的映射(即按名存取),实现文件的控制操作和存取操作(包括文件的建立、撤销、打开、关闭,对文件的读、写、修改、复制、转储等),实现文件信息的共享并提供可靠的文件保密和保护措施,提供文件的安全措施(文件的转储和恢复能力)。
18.找出不是断电的状态
19.嵌入式系统应用软件需要交叉编译环境支持宿主机开发及在目标机上运行
三、判断题
1.LINUX文件名的长度不得超过256个字符×
2.>
3.创建一个线程所花费的系统开销要比进程小的多√
4.基于ARM架构的指令都是32位×64位
5.Bootloader是嵌入式系统运行的第一个程序√
6.LINUX是一个真正的多用户多任务的操作系统,允许多个用户在相同的机器并能保证相互之间的共享和安全√
7.LINUX可根据系统物理内存的大小限制已打开进程的总数目√
8.根据文件系统所在的分区越大越好,因为越大,LINUX启动速度越快×
9.Flash存储器是一种可在系统进行擦写,掉电后,信息不会丢失的存储器√
10.Shell命令的第一个按键必须是字符,数字或空格×
11./
12.重定向的符号表示输入追加√
13.在gdb调试中,可以用make命令,不用退出gdb就能重新产生可执行文件√
14.在使用gcc编译文件,只想生成目标文件不进行连接,需要选项-c√
15.Busybox常用来替代桌面系统的shell等程序,为嵌入式用户提供使用环境√
16.用ls–c命令可以建立一个链接文件×是查找命令-L
17.LINUX采用线程调用程序,选择线程占用cpu运行×不占用
18.模块是具有独立功能的程序,它可以被单独编译,可以独立运行(不能独立运行)×
19.根文件系统是系统启动时,首先加载的文件系统,因此需要快速加载的内容放置其中,以加快系统运行速度×根文件系统是系统挂载的第一个文件系统,根文件系统要包括LINUX启动时所必需的文件和关键性的文件。
20.,
21.在下列arm处理器的各种模式中,只有系统模式不可以自由的改变处理器的工作模式
×用户模式
四、简答题
1.什么是符号链接(软链接)什么是硬链接两者区别
由于linux下的文件是通过索引节点(Inode)来识别文件,硬链接可以认为是一个指针,指向文件索引节点的指针,系统并不为它重新分配inode。
每添加一个一个硬链接,文件的链接数就加1。
软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。
因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。
如果给ln命令加上-s选项,则建立软链接。
如果[链接名]已经存在但不是目录,将不做链接。
[链接名]可以是任何一个文件名(可包含路径),也可以是一个目录,并且允许它与“目标”不在同一个文件系统中。
如果[链接名]是一个已经存在的目录,系统将在该目录下建立一个或多个与“目标”同名的文件,此新建的文件实际上是指向原“目标”的符号链接文件。
2.嵌入式系统的定义,整个嵌入式系统的体系结构可以分成哪4个
-
嵌入式系统是以应用为中心,以计算机技术为基础,采用可剪裁软硬件,适用于对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。
整个嵌入式系统的体系结构可以分成四个部分:
嵌入式处理器、嵌入式外围设备、嵌入式操作系统和嵌入式应用软件。
3.嵌入式系统的设计步骤有哪些各部分的主要工作是什么
嵌入式系统的设计可以分成三个阶段:
分析、设计和实现
分析阶段是确定要解决的问题及需要完成的目标,也常常被称为需求阶段;
设计阶段主要是解决如何在给定的约束条件下完成用户的要求;
实现阶段主要是解决如何在所选择的硬件和软件的基础上进行整个软、硬件系统的协调实现。
4.在LINUX中如何编辑c程序使其成为可执行文件,如何调试它
!
1)检查程序中.h文件所在的目录,将其加入系统PATH中;
2)执行C编译:
#gcc[源文件名]-o[目标文件名]
执行C++编译:
#g++[源文件名]-o[目标文件名]
3)改变目标文件为可执行文件:
#chmod+x[目标文件名]
4)如需将多个可执行文件连续执行,可生成批处理文件:
#vi[批处理文件名]
可执行文件1
可执行文件2
~
......
最后将该批处理文件属性该位可执行。
调试:
在编译时使用-g参数,就可以使用gdb进行调试。
5.ARM主要支持哪2种数据存储模式并描述特点
支持大端格式和小端格式。
大端格式:
字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。
小端格式:
低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。
6.简述ARM体系中地址映射采用哪2种方式,分别论述每种形成32位方法
虚拟内存到磁盘文件的映射虚拟内存到物理内存的映射
7.什么是bootloader主要工作模式主要功能
—
概括地说,BootLoader就是操作系统内核运行之前运行的一段小程序。
主要工作模式:
启动加载模式和下载模式
主要功能:
通过这段小程序,可以初始化硬件设备和建立内存空间的映射图,从而可以将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
8.简述嵌入式LINUX系统初始化过程
屏蔽所有的中断、设置CPU的速度和时钟频率、RAM初始化、初始化LED。
五、实验题
1.新建、移动、删除、复制、文件打包
新建:
mkdir
《
移动:
move
删除:
rm
复制:
cp
2.文件打包:
tar基本命令或shell编程:
提示用户输入文件名;判断这个文件是否为目录,如果是,将其目录设置为当前目录;
3.开发环境的建立tftpboot需要的镜像文件都有了,写出目标机下载bootload和kernel(内核)关键步骤和命令。
kernel是怎么下载到目标板上的,文件系统是怎么下载到目标板上的
[root@localhost]#cd/tftpboot
[root@localhosttftpboot]ls
[root@localhosttftpboot]minicom
、
在目标机上用TFTP下载镜像文件
XSBASE>tftpzImagekernel
复制到flash中
XSBASE>flashkernel
下载文件系统filesysytem
XSBASE>tftproot
XSBASE>flashroot
Reboot
4.^
5.gdb编译的步骤命令(填空—关键步骤)
编译文件:
gcc–g-ofilename
运行:
./filename
调试:
gdbfilename
(gdb)filefilename(这个命令将载入filename可执行文件,就像你在gdb命令行里装入它一样)
运行程序:
(gdb)run
(gdb)list(三次,列出源代码)
设置断点:
(gdb)break23
—
查看断电信息:
(gdb)infobreak
运行程序:
(gdb)r
单句执行:
(gdb)next
继续运行程序:
(gdb)c
打印变量i:
(gdb)pi
退出GDB:
(gdb)q
6.Makefile给出几个文件,写出makefile的文件(如果不使用预定义变量/使用预定义变量该怎么写)
~
通过vi编译器来创建两个文件和makefile
Makefile
#include“”CC=gcc
main()hello:
{$(CC)–ohello
printf(“welcometoshanghai!
\n”);:
}$(CC)––o
clean:
、
rm–rfhello*.o
使用预定义变量编译程序
Makefiel
CC=gcc
hello:
$(CC)$^-o$@
:
$(CC)–c$<-o$@
…
clean:
rm–rfhello*.o
7.Busybox文件系统操作的过程当中一些主要的命令
将放在/root/tars下并进行解压缩
#mkdir/root/tars
#cp/root/tars
:
#tarjxvf
#makemenuconfig(出现busybox的配置界面)
保存后,编译BusyBox
#makedep
#make
#makeinstall
编译和安装完后可以在生成_install目录。
第一题:
!
tar[-cxtzjvfpPN]文件与目录....
参数
-c:
建立一个压缩文件的参数指令(create的意思);
-x:
解开一个压缩文件的参数指令!
-t:
查看tarfile里面的文件!
特别注意,在参数的下达中,
c/x/t仅能存在一个!
不可同时存在!
因为不可能同时压缩与解压缩。
-z:
是否同时具有gzip的属性亦即是否需要用gzip压缩
-j:
是否同时具有bzip2的属性亦即是否需要用bzip2压缩
;
-v:
压缩的过程中显示文件!
这个常用,但不建议用在背景执行过程!
-f:
使用档名,请留意,在f之后要立即接档名喔!
不要再加参数!
例如使用『tar-zcvfP生成文件名目标文件夹』就是错误的写法,要写成『tar-zcvPftfilesfile』才对喔!
第二题:
echo"Name"
readfilename
if[-d$filename]
then
$
cd$filename
bash
else
echo"NOTDirectory"
fi
第三题:
1、TFTP命令下载kernel:
tftpzImagekernel
》
2、复制到flash中:
flashkernel
3、下载filesystem:
tftproot
flashroot
第四题:
编译GDB:
/usr/local文件夹下解压
(
tarxvzf
./configure--target=arm-linux--prefix=/usr/local/arm-gdb-v
make
makeintsall
GDB客户端编译:
cd/usr/local/
exportPATH=$PATH:
usr/local/arm-linux/bin
./configure--target=arm-linux--host=arm-linux
'
cdgdb/gdbserver
makeCC=/usr/local/bin/arm-linux-gcc(会出错)
修改gdb/gdbserver/文件
注释掉,修改为gdbserver:
1234test结果显示进程建立成功与进程PID
本机命令
cp/pxa255/test/usr/local/arm-gdb/bin
cd/usr/local/arm-gdb/bin
./arm-linux-gdbtest
?
连接成功,目标板回显消息:
remotedebuggingXXXXXXXX
list显示代码
breakn设断点,n代表行数
cont执行
step单步
quit退出
第五题:
CC=gcc
~
hello:
$(CC)-ohello
:
$(CC)-c
clean:
rm-rf*.o
CC=gcc
TARGET=cacu
—
OBJS=add/add/sub/
RM=rm-f
$(TARGET):
$(OBJS)
$(CC)-o$(TARGET)$(OBJS)
$(OBJS):
%.o:
%c将OBJS中所有.o的文件替换成.c文件
$(CC)-c$<-o$@编译生成目标文件
clean
-$(RM)$(TARGET)$(OBJS)
:
$*不包含扩展名的目标文件名称。
$+所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。
$<第一个依赖文件的名称。
$所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。
$@目标的完整名称。
$^所有的依赖文件,以空格分开,不包含重复的依赖文件。
第六题:
(详情见PDF)
#tarjxvf
}
#makemenuconfig
#makedep
#make
#makeinstall
建立etc目录:
[root@localhost_install]#mkdiretc
在etc目录下,建立rc文件:
#!
/bin/sh
`
hostnameFIGO
mount-tprocproc/proc
cat/etc/motd
改变其文件属性
#chmod777rc
在etc目录下,建立inittab文件
:
:
sysinit:
/etc/rcS
#Startan"askfirst"shellontheconsole(whateverthatmaybe)
:
:
askfirst:
-/bin/sh
#Stufftodowhenrestartingtheinitprocess
:
:
restart:
/sbin/init
#Stufftodobeforerebooting
:
:
ctrlaltdel:
/sbin/reboot
:
:
shutdown:
/bin/umount-a-r
:
:
shutdown:
/sbin/swapoff-a
在etc目录下,配置motd文件,下面我们用图示的文字表示,也可以使用其它的文字。
Welcometo
ARM-LINUXWORLD
在etc目录下,建立目录,在目录下,建立rc文件的符号连接文件rcS。
[root@localhostetc]#ls
inittabmotdrc
[root@localhostetc]#mkdir
[root@localhostetc]#cd
[root@localhost]#ln-s../rcrcS
[root@localhost]#filercS
rcS:
symboliclinkto../rc
在_install目录下,建立dev目录,创建设备文件。
在本实验中一些设备文件是必需的,比如系统控制台console,MTD块设备mtdblock3等,可以使用mknod命令来创建。
#mknodconsolec51
#mknodmtdblock3b313
除了使用mknod命令来手工创建设备文件外,还可以复制主机平台/dev目录下一些必要的设备文件到/_install/dev目录下:
#cp-dpR/dev/root/tars/_install/dev
制作JFFS2文件映像
在busybox目录下,将文件拷贝到busybox目录下:
#cp/pxa255/Filesystem/./
返回到busybox的根目录下,运行命令
#./-o-e0x40000-r_install-p-l