嵌入式系统测试题
一、单选
1. 下面( B )特性不符合嵌入式操作系统特点。
A.实时性 B.不可定制 C.微型化 D.易移植
注:特点:
▪ 1)系统内核小
▪ 2)专用性强
▪ 3)系统精简
▪ 4)高实时性
▪ 5)多任务的操作系统
▪ 6)需要开发工具和环境
2. 在大多数Linux发行版本中,以下哪个属于块设备 ( B )。
A. 串行口 B. 硬盘 C. 虚拟终端 D. 打印机
注:字符设备
一个字节一个字节读写的设备,
读取数据需要按照先后数据(顺序读取)
常见的字符设备有鼠标、键盘、串口、控制台和LED设备
每个字符设备在/dev目录下对应一个设备文件,linux用户程序通过设备文件(或称设备节点)来使用驱动程序操作字符设备。
块设备
数据以固定长度进行传输,比如512K
从设备的任意位置(可跳)读取,但实际上,块设备会读一定长度的内容,而只返回用户要求访问的内容,所以随机访问实际上还是读了全部内容。
块设备包括硬盘、磁盘、U盘和SD卡等
每个块设备在/dev目录下对应一个设备文件,linux用户程序通过设备文件(或称设备节点)来使用驱动程序操作块设备。
块设备可以容纳文件系统,比如磁盘
网络设备
面向报文而不是面向流的,因此将网络接口映射到文件系统的节点比较困难
内核调用一套和数据包相关的函数,而不是read,write。
网络接口没有像字符设备和块设备一样的设备号,只有唯一的名字,如eth0,eth1
主要通过socket操作,打开通常用命令行。
3. 下列Shell查询命令中,主要用于“查找命令”的命令是( C )。
A.find B.grep C.which D.Whereis
注:
grep |
|
查找文件内容 |
find |
|
查找文件 |
which |
|
查找命令 |
whereis |
|
查找特定的程序 |
4. 在Linux系统,默认的shell是什么( A )。
A. bash B. ash C. csh D. gnush
注:sh(即Bourne Shel)是UNIX最初使用的shell。
bash是LinuxOS默认的是Bourne Again Shell。
cshl是一种比Bourne Shell更适合的变种Shell,它的语法与C语言很相似。
tcsh是C Shell的一个扩展版本。
5. Linux中,用于挂载共享文件夹的目录为( C )。
A.boot B.etc C.mnt D.Tmp
注:/bin, /usr/bin 是放置 “用户可执行的二进制文件的目录”,ls(list)、 mv(move)、rm(remove)、 mkdir(make directory) 等重要命令都放在这个目录中。
/boot 主要放置Linux 系统启动时用到的文件。
/dev Linux 系统中,任何设备都以文件类型存放在这个目录中。访问这个目录下面的某个文件,就等于访问某台设备。
/etc 系统的主要设置文件几乎都放在这个目录内。
/home 系统默认的用户家目录。
/lib 系统使用的函数库的目录。
/lost+found 系统出现异常,产生错误时,会将一些遗失的片段放于此目录中。
/media , /mnt 软盘和光盘的默认载入点。
/opt 这是主机额外安装软件所放的目录。不过,以前的Linux 系统中,我们还是习惯放在 /usr/local 目录下。
/proc 这个目录本身是一个“虚拟文件系统”。它放置的数据都在内存中。
/root 系统管理员的家目录。
/sbin 放一些系统管理员才会用到的执行命令。
/srv 一些服务启动之后,这些服务所需要访问的数据目录。
6.Linux文件权限一共10位长度,分成四段,第三段表示的内容是( C )。
A.文件类型 B.文件所有者的权限
C.文件所有者所在组的权限 D.其他用户的权限
7.用vi编辑器编写了一个脚本文件shell.sh,想将改文件名称修改为shell2.sh,下列命令( B )可以实现。
A. cp shell.sh shell2.sh B. mv shell.sh shell2.sh
C. ls shell.sh >shell2.sh D. ll shell.sh >shell2.sh
8. 字符设备文件类型的标志是 ( B )。
A. p B. c C. s D. l
注:b 块设备
c 字符设备
d 目录
- 普通
l 链接
s 套接字
p 管道
9. 删除文件命令为( D )。
A. mkdir B. rmdir C. mv D. rm
注:mkdir 创建目录
rmdir 删除空目录
mv 重命名或移动文件
rm 删除文件
10. ( B )命令可更改一个文件的权限设置。
A. attrib B. chmod C. change D. file
注:attrib(Dos命令)指令用于修改文件的属性.文件的常见属性有:只读.存档.隐藏和系统.
chmod更改文件权限.
chage命令用于密码实效管理,该是用来修改帐号和密码的有效期限。
change(一组指令总称)包括chattr,chgrp,chmod,chown,chfn,chsh,chroot。
file显示文件类型
11. 系统中有用户user1和user2,同属于users组。在user1用户目录下有一文件file1,它拥有644的权限,如果user2用户想修改user1用户目录下的file1文件,应拥有( B )权限。
A. 744 B. 664 C. 646 D. 746
注:r--4
w--2
x--1
12. 下列( D )设备是字符设备。
A. hdc B. fd0 C. hda1 D. tty1
注:hdc 指的是IDE硬盘接口, sda 指的是IDE硬盘 sda1指的是硬盘的第一个分区,其余的类推即可
fd* 软驱
hda*指的是ide接口的硬盘的名称
tty是Teletype或者Teletypewriter的缩写。是早期的一种终端设备--电传打字机。通过串行线连接打印机键盘阅读和发送信息的东西,后来被键盘与显示器取代,所以现在一般叫做“终端”。
13. 一般可以用( C )实现自动编译。
A.gcc B.gdb * C.make D.vi
14. Linux分区默认的文件系统的类型是:( B )。
A. vfat B. ext2/ext3 C. swap D. dos
15. 文件之间可以建立两种链接关系:软链接和硬链接,硬链接的特点是( C )。
A. 等同于文件复制操作 B. 可以对目录文件名建立硬链接
C. 删除源文件,将使其他链接文件失效
D. 类似于文件复制,但新的链接文件并不占用文件磁盘存储空间
16. 嵌入式系统由硬件部分和软件部分构成,以下不属于嵌入式系统软件的是( C )。
A.系统内核 B. 驱动程序 C. FPGA编程软件 D.嵌入式中间件
17.下列哪种文件系统的写入是LINUX所不能完全支持的是( D )。
A. FAT B. UFS C. JFS D. NTFS
18. 文件系统的主要功能是( A )。
A. 实现对文件的按名存取 B. 实现虚拟存储
C. 提高外存的读写速度 D. 用于保存系统文档
19. 下面关于Shell的说法,不正确的是( D )。
A. 操作系统的外壳 B. 用户与Linux内核之间的接口程序
C. 一个命令语言解释器 D. 一种和C类似的程序语言
20. init可执行文件通常存放在( C )目录中。
A./etc B./boot C./sbin D./root
注:init(见https://www.cnblogs.com/kingsZh/p/5259438.html)
21. ( B )命令是在vi编辑器中执行存盘退出。
A.q B. wq C. q! D.WQ
22. 下列( A )命令以文本菜单方式界面配置内核选项。
A. Make menuconfig B. make xconfig
C. make config D. make mrproper
注:make menuconfig 基于文本选单的配置界面,字符终端下推荐使用
make mrproper 删除不必要的文件和目录
make oldconfig 如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦
make config 基于文本的最为传统的配置界面,不推荐使用
make xconfig 基于图形窗口模式的配置界面,Xwindow下推荐使用
make config,make menuconfig,make xconfig目的都是生成一个.config文件。
23. 如果要将文件名file1修改为file2,下列( B )命令可以实现。
A. cp file1 file2 B. mv file1 file2 C. ls file1 >file2 D. ll file1 >file2
24. 下面对于Bootloader的描述不正确的是( C )。
A.是上电后运行的第一个程序 B.改变系统时钟
C.Bootloader的两种模式对开发人员没有意义 D.向内核传递启动参数
25. Linux系统中的设备可分为三类:字符设备、块设备和网络设备,其中不是基于文件系统访问的设备是( C )。
A. 字符设备 B. 块设备 C. 网络设备 D. 字符和块设备
26. 在使用GCC编译器的过程中,如果只想生成目标文件而不进行连接,需要使用选项( c)。
A.-S B.-o C.-c D.-E
注:-o:指定生成的输出文件;
-E:仅执行编译预处理;
-S:将C代码转换为汇编代码;
-wall:显示警告信息;
-c:仅执行编译操作,不进行连接操作。
27. 关于Qt说法不正确的是( C )。
A.是跨平台的C++图形用户界面库
B.Qt Embedded(Qtopia)基于Framebuffer
C. Qt的各元件通信是基于callback的
D. 可以同几种Java虚拟机集
28. ( B )不是进程和程序的区别。
A. 程序是一组有序的静态指令,进程是一次程序的执行过程
B. 程序只能在前台运行,而进程可以在前台或后台运行
C. 程序可以长期保存,进程是暂时的
D. 程序没有状态,而进程是有状态的
29. Boot Loader 的stage2通常使用C语言实现,以完成复杂的功能,并增加可读性和可移植性,以下( D )步骤属于stage2的内容。
A. 为加载BootLoader的stage2准备RAM空间
B. 设置好堆栈 C. 硬件设备初始化
D.将kernel映像和根文件系统映像从flash上读到RAM空间中
注: 由于Boot loader 的实现依赖于CPU 的体系结构,因此大多数 Boot Loader 都分为stage1 和 stage2 两大部分。依赖于CPU 体系结构的代码,比如设备初始化代码等,通常都放在stage1 中,而且通常都用汇编语言来实现,已达到短小精悍的目的。而stage2 则通常用C 语言来实现,这样可以实现其复杂的功能,而且代码会具有更好的可读性和可移植性。
从固态存储设备上启动的Boot Loader 大多都是2 阶段的启动过程,也即启动过程可以分为 stage1 和 stage2 两部分。在stage1 阶段,通常将完成以下工作(以执行的先后为顺序):
1. 硬件设备初始化,通常只初始化的最基本的设备,如内存控制器、串口等设备
2. 为加载 Boot Loader的 stage2 准备内存空间
3. 复制Boot Loader 的stage2 到内存空间中
4. 设置堆栈
5. 跳转至 stage2 的入口点
Boot Loader 的stage 2 通常包括以下步骤:
1. 初始化本阶段要使用到的硬件设备,如以太网、USB等
2. 检测系统内存的映射
3. 将内核映像和根文件系统映像从固体存储器Flash 等上读到内存空间中
4. 设置内核启动参数
5. 启动内核
30. 一个文件名字为rr.tar.z,可以用来解压缩的命令是( D )。
A. tar B. gzip C. compress D. uncompress
注:uncompress命令用来解压缩由compress命令压缩后产生的“.Z”压缩包。
tar是打包,不是压缩!
gzip命令用来压缩文件。gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处“.gz”扩展名。
二、填空
1. 中国计算机学会微机专业委员会对嵌入式系统的定义是:嵌入式系统是以嵌入式应用为目的的计算机系统,可分为____系统级_______、____板级_______和_____片级_____3级。
2. FLASH存储技术中两种流行的存储技术是 NOR Flash 、 NAND Flash ,
其中成本较低,而接口比较复杂的FLASH存储技术是 NAND Flash 。
3. linux系统中的 makefile 是linux软件开发管理工具,决定程序的编译链接规则,使工程编译链接自动化,它依赖于 make 工作。
4. 嵌入式Linux系统包含_Bootloader(引导程序)_、_内核__和_文件系统___3部分。
5. S3C2410芯片采用的是__ARM920T__核,属于__32 _位的微处理器,地址空间总共为__4GB__,其中1GB地址空间用于支持外部存储器的链接,另外的空间部分用于IO端口或部件的寻址,部分空间保留使用。
6. 交叉编译就是在一个平台上生成另一个平台上的__可执行代码__。平台有两层含义:处理器的__体系结构___和所运行的__操作系统__。
7. Linux 系统中的shell的主要功能 命令解释、 任务自动化 、系统管理,是通过编写脚本文件来实现系统管理和使任务自动化的。
三、简答
1. Linux系统软件开发中makefile作用是什么?
linux系统中的makefile是linux软件开发管理工具,决定程序的编译链接规则,使工程编译链接自动化,它依赖于make工作
2. 简述嵌入式Linux系统根文件系统的作用。
根文件系统一直以来都是所有类Unix操作系统的一个重要组成部分,也可以认为是嵌入式Linux系统区别于其他一些传统嵌入式操作系统的重要特征,它给 Linux带来了许多强大和灵活的功能,同时也带来了一些复杂性。我们需要清楚的了解根文件系统的基本结构,以及细心的选择所需要的系统库、内核模块和应用程序等,并配置好各种初始化脚本文件,以及选择合适的文件系统类型并把它放到实际的存储设备的合适位置。
3. 简述嵌入式Linux系统开发流程。
1.建立开发环境
2.配置开发主机
3.建立引导装载程序BOOTLOADER
4.下载别人已经移植好的Linux操作系统
5.建立根文件系统
6.建立应用程序的Flash磁盘分区
7.开发应用程序
8.烧写内核、根文件系统、应用程序
9.发布产品
四、编程
编写hello_module驱动模块。要求需要具有各个功能模块,仅仅在模块注册时输出“hello,world!”,模块卸载时输出“goodbye,world!”。
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "hello, world!\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "goodbye, world!\n");
}
module_init(hello_init);
module_exit(hello_exit);