《嵌入式LInux设计与开发》练习题.docx
- 文档编号:4553114
- 上传时间:2022-12-06
- 格式:DOCX
- 页数:11
- 大小:155.82KB
《嵌入式LInux设计与开发》练习题.docx
《《嵌入式LInux设计与开发》练习题.docx》由会员分享,可在线阅读,更多相关《《嵌入式LInux设计与开发》练习题.docx(11页珍藏版)》请在冰豆网上搜索。
《嵌入式LInux设计与开发》练习题
练习题
(一)
一、填空题
1.嵌入式系统一般包括、嵌入式操作系统和。
2.Arm7内核采用的是体系结构。
3.S3C2410X芯片包含通道PWM定时器和道内部计时器。
4.gcc的编译流程分为预处理.编译、和
5.C语言中的预处理语句是以符号开头的。
6.多任务系统中有3个功能单位:
任务、和°
二、选择题
(
)
A.
VxWorks
B.QNXC.WindowsCE
D・Linux
2•使vi编辑器处于可编辑状态的命令是
(
)
A.
r
B・pC.i
D.b
3
・下列
选项中,能帮助用户
生成makefile
的工具
是
(
)
A.
gcc
B・autotoolsC.gdb
D.vi
4.可以使用TFTP通过网络下载文件的命令是
(
)
A.
run
B.tftpbootC.sleep
D.mv
5・下列不属于Linux系统中线程的是
(
)
下列操作系统中
具有
Windows
图形界
面的是
A.用户级现程B.网络级线程C.轻量级线程
D.内核级线程
6.下列选项中,常用于网络中不同机器之间的进程间通信的是
&TCP/IP参考模型包含几层
A.4B.5
C.6
D・7
(
)
9.在TCP中,用于发送数据的函数是
(
)
A.bind()B.send()
C.accept()
D.recv()
10.下列选项中,不
属于Linux
系统的设备
分类的
是
()
A.字符设备B.数据设备
C.块设备
D.网络设备
三、判断对错
1.Arm9采用的是5级指令流水线。
(
)
2・Vi编辑器有4种模式:
标准模式、插入模式、命令行模式和可视模式。
(
)
3.NFS文件系统的目的是让不同的机器、不同的操作系统之间可以共享文件。
()
4.一个线程可以包含多个进程。
()
5.TCP和UDP都是面向可靠的传输服务。
()
6.设备驱动程序可以使用模块的方式动态加载到内核去。
()
7•标准I/O提供了3种类型的缓冲存储:
全缓冲、行缓冲、不带缓冲。
()
8.交叉编译操作需要在安装交叉编译器后才能进行。
()
9.Linux环境下不能同时打开多个终端。
()
10.进程具有动态性、交互性和异步性,但不具有并发性。
()
四、问答题
1.简述并行通信和串行通信的概念及各自的特点。
并行通信是指利用多条数据传输线将一个字数据的各比特位同时传送。
它的特点是传输速度快,适用于传输距离短且传输速度较高的通信。
串行通信是指利用一个传输线将数据以比特位为单位顺序传送。
特点是通信线路简单,利用简单的线缆就可以实现通信,成本低,适用于传输距离长且传输速度较慢的通信。
2.阐述什么是交叉编译,并解释为什么要进行交叉编译。
所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。
由于一般通用计算机拥有非常丰富的系统资源、使用方便的集成开放环境和调试工具等,而嵌入式系统的系统资源非常紧缺,无法在其上运行相关的编译工具,因此,嵌入式系统的开发需要借助宿主机(通用计算机)来编译出目标机的可执行代码。
3.
画出OSI参考模型与TCP/IP参考模型的对应关系°
五、程序填空题
1.在书写makefile时,适当使用变量替换会使其进一步得到简化。
题中给出了一个makefile的原始写法,随后给出了经变量替换后的前三行语句,请在下划线上填写后续语句。
完整的makefile原始写法如下:
david:
gcc-odavid
gcc-Wall-g-c-o
gcc-Wai1-g-c-o经过变量替换后的makefile如下:
OBJS=
CC=gcc
CFLAGS=-Wall-g
(3)
(4)
(5)
⑹
2.已知和两个文件,按要求将所需命令写在下划线上。
预处理阶段的命令是:
(D
编译阶段的命令是:
(2)
汇编阶段的命令是:
(3)
链接阶段的命令是:
(4)
运行可执行文件的命令是:
(5)
六、综合题(共34分)
1.用QT编写一个显示“welcomelinux”的窗口程序。
2.有如下二叉树,写出它的先序序列、中序序列和后序序列。
3.编程实现如下功能:
使用fork()函数创建一个子进程,根据其返回值result判断函数fork()的返回情况,并进行错误处理。
练习题
(二)
一.填空题
1.嵌入式系统一般具备的三个基本要素是:
“计算机系统化和
2.ARM(AdvancedRISCMachines)有3种含义,它是一个的名称,也是一类
的通称,还是一种技术的名称。
二.单项选择题
1.下列选项中,不属于嵌入式系统特点的是
A.面向特定应用B.量体裁衣C.对代码要求低D.不具备二次开发功能
2.使vi编辑器处于标准模式的命令是
4.
单向链表的最后一个节点的指针域为
5.
可以让不同的机器、不同的操作系统直接进行彼此共享文件的文件系统是
7.
在对文件的操作中,既可以对文件施加建议性锁,又可以施加强制锁的函数是()
8.
9.下列选项中,不属于设备驱动程序特点的是
10.下列选项中,用于在内核空间向控制台输出信息的函数是
三、判断对错
1.在S3C2410芯片中,对内核的供电电压和对存储器的供电电压可以不同。
()
2.gcc的编译流程可分为4个步骤:
预处理、编译、汇编、链接。
()
3.tftp服务中使用的tftp协议是基于UDP实现的。
()
4.BootLoader是不依赖硬件平台的,所以在新电路板上无需移植U-boot程序。
()
5.在Linux中,所有的设备文件一般都位于“/dev”下,其中串口一和串口对应的设备名是相同的,都是“/dev/ttyS”o
()
6.设备驱动程序既可以用静态方式编译在内核中,也可以动态加载到内核中。
()
7.TCP协议适于可靠传输,UDP协议适于不可靠传输。
()
8.嵌入式Linux驱动的设备号是一个数字,由主设备号和次设备号组成。
()
9.嵌入式Linux系统中控制一个LED小灯,直接对其操作即可,无需编写驱动。
()
10.进程具有动态性、交互性和异步性,但不具有并发性。
()
四、问答题
1.简述vim编辑器的几种工作模式。
Vim编辑器的使用按不同的使用方式可以分为4种模式:
标准模式、插入模式、命令行模式和可视模式。
标准模式:
在此模式下任何键盘的输入都是作为命令来对待。
命令的输入通常是不回显的,只显示执行的结果。
在此模式下用户可以输入命令来控制屏幕光标的移动,字符、子或行的删除等操作,也可进入到其它3种模式下。
在其它任何模式下按下“Esc”键都可以回到此模式。
插入模式:
用户只有在此模式下才可以进行文字输入和修改等编辑工作,因此也称此模式为编辑模式。
在标准模式下输入“i”即可进入此模式。
命令行模式:
在此模式下,用户可以将文件保存或退出vim,也可设置编辑环境,比如査找字符、列出行号等。
在命令模式中输入“:
”(一般命令)、"/”(正向搜索)或“”(反向搜索)进入该模式,在此模式下输入的命令会在底行显示,这些命令输入后要按“Enter”键才执行。
可视模式:
在命令模式中输入“v”(按字符选择)、“V”(按行选择)、“Ctrl”+“v”(按块选择)进入该模式。
在此模式下,通过移动光标来选择文本,选择的文本将反白显示。
2.简述嵌入式Linux中I/O处理的五种模型。
I/O处理的模型有以下五种。
(1)阻塞I/O模型:
在此模型下,若调用的I/O函数没有完成相关的功能,则会使进程挂起,直到相关数据到达才会返回。
(2)非阻塞模型:
在此模型下,当请求的I/O操作不能完成时,不让进程睡眠,而且立即返回。
非阻塞I/O使用户可以调用不会阻塞的I/O操作,如open()、write()、read
()o如果该操作不能完成,则会立即返回出错或者返回0。
(3)I/O多路转接模型:
此模型下,如果请求的I/O操作阻塞,且它不是真正阻塞I/O,而是让其中一个函数等待,期间,I/O还能进行其他操作。
(4)信号驱动I/O模型:
此模型下,通过安装一个信号处理程序,系统可以自动捕获特定信号,从而启动I/O。
这是由内核通知用户何时启动一个I/O操作决定的。
(5)异步I/O模型:
此模型下,当一个描述符已准备好,可以启动I/O时,进程会通知内核。
3.列举并简述嵌入式Linux中使用较多的进程间通信的几种工作方式。
现在在Linux中使用较多的进程间通信方式主要有以下几种。
(1)管道及有名管道:
管道可用于具有亲缘关系进程间的通信,有名管道除具有管道所有的功能外,还允许无亲缘关系进程间的通信。
(2)信号:
信号是在软件层次上对中断机制的一种模拟,它是比较复杂的通信方式,用于通知进程有某事件发生,一个进程收到一个信号与处理器收到一个中断请求效果上可以说是一样的。
(3)消息队列:
消息队列是消息的链接表,包括POSIX消息队列,SystemV消息队列。
它克服了前两种通信方式中信息量有限的缺点,具有写权限的进程可以按照一定的规则向消息队列中添加新消息;对消息队列有读权限的进程则可以从消息队列中读取消息。
(4)共享内存:
它使得多个进程可以访问同一块内存空间,不同进程可以及时看到对方进程中对共享内存中数据的更新,这种通信方式需要依靠某种同步机制,如互斥锁或信号量等。
(5)信号量:
主要作为进程之间以及同一进程的不同线程之间的同步或互斥手段。
(6)套接字:
用于网络中不同机器之间的进程通信。
4・画出设备驱动程序流程图。
insmod
rmmod
5.程序填空题
1・在嵌入式Linux开发过程中,为了驱动LED小灯,需要编写LED驱动,在驱动中
实现对端口寄存器的配置,对端口数据寄存器的操作,以及设备的注册.打开.各种I/O操作和注销等。
下面是一个LED驱动的框架,请在下划线上填写合适的语句。
#include
#defineDEVICEJJAME“led”
ttdefineDEVICE_MAJOR231
staticstructfi1eloperationsled_fops=
(1)
(2)
(3)
(4)
};
staticintled.init(void)
{;register_chrdev_region();}
staticintled_release(structinode*node,structfile*file)
staticintled_ioctl(structinode*inode,structfile*file,unsignedintcmd,unsignedlongarg)
{}
staticintled_open(structinode*inode,structfile*file)
{}
staticvoidled_cleanup(void)
{unregister_chr(iev_region();}
(5);(6)(7);(8)
2.假设由上述驱动程序得到的驱动模块为“”,那么请将该模块动态加载到内核中,并且生成相应的结点所需的命令写在下划线上。
动态加载命令是:
(9)
生成结点命令是:
(10)
六、综合题(共40分)
1.用QT编写一个如下图所示的窗口程序,当点击“quit”按钮时,程序退出。
■hellol
2.在ARMLinux中,二叉树是最为基本的数据结构,请分析二叉树的先序遍历.中序遍历和后序遍历的流程,并写出下列二叉树的先序序列、中序序列和后序序列。
3.编程实现一个完整的守护进程:
首先创建一个子进程1(守护进程),然后在该子
进程中新建一个子进程2,该子进程2暂停10s,然后自动退出,并由子进程1收集子线
程退出的消息。
在这里,子进程1和子进程2的消息都在系统日志文件(例如
“vw/log/messages”,日志文件的全路径名因版本不同可能会有不同)中输出。
在向日
志文件中写入消息之后,守护进程(子进程1)循环暂停,其间隔时间为10s。
4.用套接字(socket)编程来实现一个嵌入式Linux环境下的通信模型。
该模型分为客户端和服务器端,其中服务器端首先建立其socket,然后与本地端口进行绑定,接着开始接收从客户端的连接请求并建立连接,接下来,接收客户端发送的消息。
客户端则在建立socket之后调用connect()函数来建立连接。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式LInux设计与开发 嵌入式 LInux 设计 开发 练习题
![提示](https://static.bdocx.com/images/bang_tan.gif)