资源描述
嵌入式Linux软件开发工程师职业资格认证考卷
注: 一般教室 考试时间:120分钟
题 号
一
二
三
四
五
六
七
九
十
合 分
评卷人
应得分
20
15
15
10
20
20
实得分
一、填空题(每题1分,共20分)
1、在linux系统中,以 文献 方式访问设备 。
2、安装linux系统对硬盘分区时,必须有两种分区类型: 文献系统分区 和 互换分区 。
3、在Linux系统中,用来存储系统所需要的配备文献和子目录的目录是 /etc 。
4、进行远程登录的命令是 telnet 。
5、利用gdb进行调试时,可通过 step 或 next 命令进行单步执行。
6、gcc的编译可分为__预处理__、编译、汇编和_ ___链接 __等四个阶段。
7、卸载Linux内核模块使用命令___ rmmod ___。
8、 ARM处理器的中断有两种处理模式,分别为___迅速中断_ ___模式和的___迅速中断_ ___模式。
9、 Linux文献的链接可分为符号链接和___ _硬链接__两种。
10、 Qt/Embedded使用___ 信号 ___和___ _插槽_ ___的机制实现函数的回调。
11、 ARM处理器有多个运行模式,用户程序运行在其中的__ _用户___模式。
12、 Linux系统在开启init进程时使用的配备文献是_ _/etc/inittab ____。
13、 交叉编译是指___ 在一个平台上生成能够在另一个平台上执行的代码 ___。
14、 在linux系统中,以 文献 方式访问设备 。
15、 利用gdb进行调试时,可通过step或 next 命令进行单步执行。
16、 Qt/Embedded的底层图形引擎基于 FrameBuffer 接口技术。
17、 Linux操作系统的系统管理员(也就是超级用户)帐号是 root 。
18、 编写的shell程序运行前必须赋予该脚本文献 执行 权限 。
19、 使用gcc编译c程序生成可执行文献有时似乎是一步完成的,但实际要经历如下四步:预处理、编译、 汇编 和连接。
20、 内核分为 进程管理系统 、 内存管理系统 、 IO管理系统 和文献管理系统 等四个子系统。
二、单项选择题。(每题1分,共15分)
1、如下哪一个命令能够协助你懂得shell命令的使用方法( A)
A. man B. pwd C. help D. more
2、在大多数Linux发行版本中,如下哪个属于块设备 ( B )
A. 串行口 B. 硬盘 C. 虚拟终端 D. 打印机
3、在Linux系统,默认的shell是什么( A )
A.bash B.ash C.csh D.gnush
4、LILO的配备文献是:( B )
A. /etc/conf B. /etc/lilo.conf
C. /proc/kcore D. /usr/local/
5、Linux文献权限一共10位长度,提成四段,第三段表示的内容是( D )
A.文献类型 B.文献所有者的权限
C.文献所有者所在组的权限 D.其他用户的权限
6、不是shell具备的功效和特点的是 ( A )
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
9、( B )命令可更改一个文献的权限设置?
A. attrib B. chmod C. change D. file
10、系统中有用户user1和user2,同属于users组。在user1用户目录下有一文献file1,它拥有644的权限,假如user2用户想修改user1用户目录下的file1文献,应拥有( B )权限。
A. 744 B. 664 C. 646 D. 746
11、在CPU和物理内存之间进行地址转换时,( B )将地址从虚拟(逻辑)地址空间映射到物理地址空间。
A、TCB B、MMU C、CACHE D、DMA
12、有关文献系统的安装和卸载,下面描述正确的是( A )。
A. 假如光盘未经卸载,光驱是打不开的
B. 安装文献系统的安装点只能是/mnt下
C. 无论光驱中是否有光盘,系统都能够安装CD-ROM设备
D. mount /dev/fd0 /floppy 此命令中目录/floppy是自动生成的
13、用下列( A )命令查看Linux使用了多少内存
A.cat /proc/meminfo B. cat /bin/meminfo
C.vi /proc/meminfo D.vi /user/local/meminfo
14、下列( D )设备是字符设备。
A. hdc B. fd0 C. hda1 D. tty1
15、有如下的命令:$dd if=f1 of=f2。其中if=f1表示( A )
A. 以f1作为源文献,替代标准输入
B. 以f1作为目标文献,替代标准输出
C. 当条件满足f1的时候,执行真正的拷贝
D. 拷贝的过程中,不转化文献
三、多项选择题。(每题3分,共15分)
1. 嵌入式操作系统不一样于通用操作系统的功效是( BC )
A、任务调度 B、可裁减性 C、 强实时 D、设备管理 E、存储器管理
2. Linux系统中的设备文献一般有如下分类( BCD )
A、虚拟设备 B、字符设备 C、网络设备 D、块设备 E、存储设备
3. 常用的软件开发模型有( BCD )
A、结构型 B、 原型模型 C、 迭代型 D、瀑布型 E、综合型
4. ARM处理器的工作模式中属于异常模式的有( CDE )
A、用户模式usr B、系统模式sys
C、 外部中断模式irq D、中断模式abt E、迅速中断模式fiq
5. 芯片总线又称元件级总线,它是指系统内或插件板内各元件之间所使用的总线,下列属于芯片总线的有( ACD )
A、I2C总线 B、ISA总线 C、SPI总线 D、SCI总线 E、PCI总线
四、判断题。(每题1分,共10分)
1、在gdb调试过程中,不退出gdb也能够执行UNIX shell命令。( 对 )
2、Linux文献系统的文献都按其作用分门别类地放在有关的目录中,对于外部设备文献,一般应将其放在/etc目录中。( 错 )
3、 在Linux系统中,测试DNS服务器是否能够正确解析域名的的客户端命令,使用命令 nslookup 。( 对 )
4、 激活网卡需要编译内核。( 错 )
5、 在gdb调试过程中,用make命令能够不用退出gdb就能够重新产生可执行文献。( 对 )
6、 在重新开启Linux系统的同时把内存中的信息写入硬盘,应使用shutdown –r now命令实现。( 对 )
7、 ARM处理器的运行模式可通过中断或异常处理变化。( 对 )
8、 BootLoader属于嵌入式操作系统的一部分。( 错 )
9、 Busybox常用于替代桌面系统中的init和shell等程序,为嵌入式用户提供使用环境。( 对 )
10、 在嵌入式系统中,整个系统的加载开启任务就完全由 Boot Loader 来完成。( 对 )
五、综合题。(每题5分,共20分)
1、已知C语言程序有主程序模块prog.c,prog.h,其中调用了另一模块subr.c, subr.h中的功效。试写出一个可将这两个模块编译成可执行文献pr1的makefile。(5分)
pr1: prog.o subr.o
gcc –o pr1 prog.o subr.o
prog.o: prog.c prog.h
gcc –c –o prog.o prog.c
subr.o: subr.c subr.h
gcc –c –o subr.o subr.c
2、下面几条宏定义语句的GPBCON 、GPBDAT、GPBUP地址分别是多少?
#define GPIO_CTL_BASE 0x56000000
#define bGPIO(p) __REG(GPIO_CTL_BASE + (p))
#define GPBCON bGPIO(0x10)
#define GPBDAT bGPIO(0x14)
#define GPBUP bGPIO(0x18)
GPBCON存储器地址0X56000010
GPBDAT存储器地址0X56000014
GPBUP 存储器地址0X56000018
3、简述阐明字符设备注册函数register_chrdev和注销函数unregister_chrdev中参数的意义。
int register_chrdev(unsigned int major, const char *name, struct file_ operations *fops);
其中,major是为设备驱动程序向系统申请的主设备号,假如为0,则系统为此驱动程序动态分派一个主设备号。name是设备名,fops是对各个调用的入口点阐明。此函数返回0时表示成功;返回-EINVAL,表示申请的主设备号非法。假如动态分派主设备号成功,此函数将返回所分派的主设备号。假如register_chrdev()操作成功,设备名就会出目前/proc/dvices文献中。
当设备驱动模块从Linux内核中卸载,对应的主设备号必须被释放。字符设备在cleanup_ module()函数中调用unregister_chrdev()来完成设备的注销。unregister_chrdev()的定义为:
int unregister_chrdev(unsigned int major, const char *name);
此函数的参数为主设备号major和设备名name。Linux内核把name和major在内核注册的名称对比,假如不相等,卸载失败,并返回-EINVAL;假如major不小于最大的设备号,也返回-EINVAL。
4、Linux设备驱动程序通过调用request_irq函数来申请中断,通过free_irq来释放中断。它们在linux/sched.h中的定义如下:
int request_irq(unsigned int irq, void (*handler)(int irq,void dev_id,struct pt_regs *regs),unsigned long flags, const char *device, void *dev_id );
void free_irq(unsigned int irq, void *dev_id);
试简述request_irq函数。
Linux设备驱动程序通过调用request_irq函数来申请中断,从request_irq函数返回的值为0时,表示申请成功;负值表示出现错误。
该函数中的参数为:
irq表示所要申请的硬件中断号。
handler为向系统登记的中断处理子程序,中断产生时由系统来调用,调用时所带参数irq为中断号,dev_id为申请时告诉系统的设备标识,regs为中断发生时存储器内容。
device为设备名,将会出目前/proc/interrupts文献里。
flag是申请时的选项,它决定中断处理程序的某些特性,其中最重要的是决定中断处理程序是迅速处理程序(flag里设置了SA_INTERRUPT)还是慢速处理程序(不设置SA_INTERRUPT)。
六、应用实践题(每题10分,共20分)
1、Qt/Embedded对嵌入式GUI提供了强大的支持,信号和插槽机制是QT的核心机制,使用QT实现如下界面的登陆程序,其原代码如下所示,请回答如下问题:
1)什么是Qt中的信号插槽机制?(3分)
2)应用程序中用到了哪些控件,列举2个并阐明该控件的特点?(4分)
3)依照注释完成程序中对应的语句?(4分)
#include <QtGui/QtGui>
#include "window.h"
CWinDlg::CWinDlg(QWidget* parent) : QDialog(parent)
{
setWindowTitle("Example"); /*设置窗口的标题*/
Edit1 = new QLineEdit; /*创建一个Edit1和一个Buttion1*/
Button1 = new QPushButton("OK");
Edit1->setEchoMode(QLineEdit::Password);
QVBoxLayout* Layout1 = new QVBoxLayout; /*创建一个布局对像Layout1*/
Layout1->addWidget(Edit1); /*把Edit1加入到Layout1*/
Layout1->addWidget(Button1); /*把Button1加入到Layout1*/
(1) ; /*应用Layout1布局*/
(2) ; /*建立Signal-Slot,使button1与function()有关联*/
}
CWinDlg::~CWinDlg()
{
delete Edit1; /*删除Edit1与Button1对象*/
delete Button1;
}
void CWinDlg::function()
{
if(Edit1->text() == "example") /*假如Edit1输入"example"*/
{ /*显示"Pass!"消息框*/
QMessageBox::warning(this, "warning", "Pass!", QMessageBox::Yes);
}
else
{ /*显示"Error!"消息框*/
QMessageBox::warning(this, "warning", "Error!", QMessageBox::Yes);
}
}
#include <QtGui/QtGui>
#include "window.h"
int main(int argc, char* argv[])
{
QApplication app(argc, argv); /*创建QT应用程序*/
CWinDlg dlg; /*创建窗口*/
return dlg.exec(); /*运行程序*/
}
1、参考答案:
答案要点:
1)什么是Qt中的信号插槽机制?与回调函数机制有何不一样?(3分)
答案要点:回调函数机制是事先将一个回调函数指针传递给一个处理过程,当这个处理过程得到执行时,回调预先定义好的回调函数以期实现激活其他处理程序的目标。不一样与回调函数机制,Qt提供了信号和插槽机制,信号是一个特定的标识;一个槽就是一个函数,与一般函数不一样,槽函数既能和信号关联,当某个事件出现时,通过发送信号,能够将与之有关联的槽函数激活,执行对应代码。
2)应用程序中用到了哪些控件,列举2个并阐明该控件的特点?(4分)
答案要点:应用程序中用到的控件有(1)文本框控件Edit,文本框控件重要用来显示或接收用户的输入信息。(2)按钮控件Button,按钮控件重要响应用户单击功效。
3)依照注释完成程序中对应的语句?(4分)
(1)setLayout(Layout1);
(2) connect(Button1, SIGNAL(clicked()), this, SLOT(function()));
2、假定你在目录/home/arm下有一个C程序,他由几个单独的文献组成,而这几个文献又分为包括了其他文献,如下图所示:
文献
包括文献
main.c
stdio.h, table.h
list.c
list.h
symbol.c
symbol.h
table.c
table.h
table.h
symbol.h, list.h
完成下列任务:
1)编写makefile文献,最后的目标文献为hello(交叉编译器为arm-linux-gcc)。
2)在目标机上通过网络文献系统挂载/mnt 到宿主机上的/home/arm目录。
hello: main.o list.o symbol.o table.o
arm-linux-gcc -o prog main.o list.o symbol.o table.o
main.o: main.c table.h symbol.h list.h
arm-linux-gcc -c -o main.o main.c
list.o: list.c list.h
arm-linux-gcc -c -o list.o list.c
symbol.o: symbol.c symbol.h
arm-linux-gcc -c -o symbol.o symbol.c
table.o: table.c table.h symbol.h list.h
arm-linux-gcc -c -o table.o table.c
clean:
rm hello *.o
2)Mount –t nfs –o noclock 192.168.0.10:/home/armtest/hello /mnt 试题 第6页(共 6 页)
展开阅读全文