嵌入式Linux系统期末考试简答题、运用题_第1页
嵌入式Linux系统期末考试简答题、运用题_第2页
嵌入式Linux系统期末考试简答题、运用题_第3页
嵌入式Linux系统期末考试简答题、运用题_第4页
嵌入式Linux系统期末考试简答题、运用题_第5页
免费预览已结束,剩余7页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1、答:简答题与应用题什么是嵌入式系统?主要有什么特点?以应用为中心,以计算机技术为基础的, 并且软件硬件是可剪裁的,能满足应用系统对功能、可靠性、成本、体积、功耗等指标的严格要求的专用计算机系统。他可以实现对其他设备的控制、监视或者管理等功能。面向特定应用,一般都有实时要求;集先进性的计算机技术、半导体工艺、电子技术和通信网络技术于一体的并且在不断创新的知识集 成系统;嵌入式系统是和具体应用对象有机结合在一起,因而其升级换代也是和具体的产品同步进行的。 嵌入式系统的软硬件设计着重于高效率性。在最大限度满足应用需求的前提下,降低成本是必须要 考虑的主要问题。嵌入式系统软件一般都固化在存储器芯片

2、中。与通用的计算机系统相比,特点为:(1)(3)(4)(2)(5)*实际是一组软件模块集合满足多任务处理、稳定运行、安全可靠、占用系统资源少、特有的实时事件处理、便于维护和管理、简洁良好的用户界面2、答:3、嵌入式操作系统的作用是什么?嵌入式系统有哪几个部分?嵌入式系统通常由嵌入式处理机、嵌入式外围设备、嵌入式操作系统和嵌入式应用软件等几大部分组成。4、什么是Linux?什么是嵌入式 Linux?答:严格来讲,Linux是指由Linux本人维护并不断更新的内核。一个嵌入式Linux系统指的是一个基于 Linux内核的,但不包含有关这个内核的任何专业的库或是用户工具 的嵌入式系统。5、用答:(

3、1)(2)(3)(4)(5)(6)(7)(8)(9)Linux内核构建嵌入式操作系统有什么优势(优良特性)?程度代码是可以获取的,可靠度高; 有完整的源码,软件丰富并且免费; 得到众多硬件生产家的广泛支持;包括cpu、计算机外围设备完善的通信协议、软件标准和文件管理机制; 提供完全免费且优秀的开发工具;广泛的社群支持无需购买lice nee,是免费的;不依赖特定厂商、供应商;成本相对低廉。6、RTOS(嵌入式操作系统)强调的实时是什么概念?与中断的关系?答:实时指的是特定操作所消耗的时间(以及空间)的上限是可预知的。操作系统能够在规定响应时间内完成客户服务程序。中断程序响应中断并完成是在固定时

4、间内。7、什么是实时LinUX?涉及到哪些软硬件内容?答:实时LinUX( RT-Linux)通过在Linux内核与硬件中断之间增加一个精巧的可抢先的实时内核,把标准的Linux内核作为实时内核的一个进程与用户进程一起调度,标准的Linux内核的优先级最低,可以被实时进程抢断。正常的Linux进程仍可以在Linux内核上运行,这样既可以使用标准分时操作系统即Linux的各种服务,又能提供低延时的实时环境。它在硬件上涉及到硬件中断,软件上涉及到对高优先级的实时硬件中断的快速响应。能在规定的时间内完成对突发事件的处理的Linux系统;软件:中断服务程序、进程调度程序,硬件:嵌入式系统所采用的中断管

5、理硬件。8、试简要说明Linux内核构成,并简要说明各部分的功能?答:MMU :内存管理单元,完成地址映射(应用虚拟地址方式)VFS :虚拟文件管理系统,提供了统一管理计算机资源的途径。使统一规范计算机资源的使用格式成为可能,方便传输CPU的时间线划分给各个任务,完成多任SCHED:进程调用单元。支持多任务运行。利用软件中断的特点,将 务管理IPC:进程间通信单元。实现多个不同程序在运行时可以进行数据交换、通信。NET:网络。网络不做为通用设备,以特定工作单元存在。负责计算机系统与其他计算机相互通信的接口。上运行的机器码。2、C语言库是必需的,必需提供能在专用cpu上运行的库的二进制代码。以上

6、两点要求9、通常可采用哪几种方式来开发嵌入式Linux系统?给出示意图。答:方式有:(1)连接型(宿主机/目标板链接开发)(2) 可移动连接型(利用可移动的存储器作为宿主机/目标板之间的中介)(3)标准化(在开发板上进行独立开发)主机目标板跨平台开 发环境引导加载程序内核根文件系统(1)目标板引导加载程序内核主机目标板完整的根文件系统跨平台开 发环境r引导加载 程序固有的开发环境10、第二引导加载程序内核根文件系统(2)为什么要建立交叉开发平台?在何种情形下可以不必建立?答:嵌入式系统的构造决定。嵌入式处理器多为专用的cpu, 1、必须将用 C编写的程序编译成能在该专用平台有这么一种编译工具能

7、够实现两种当执行应用程序的平台和用来建立应用程序的平台相同时就可以不建立交叉开发平台。试简要叙述GNU及其所提供的开发工具链。答:GNU是“GNU's Not Unix”的递归缩写,它是一个自由软件工程项目组织。提供各种开源代码。提供一 整套的开发工具链包括:GNU工具链基础,内核头文件安装程序,Bin utils (二进制工具)的安装程序,引导编译器安装程序,12、 试解释make和答:使用make就必须写 是一组规则,它指导 标和目标运行规则一旦建立,make就会按此进行工作。11、GNU工具链基础,内核头文件安装程序, C库安装程序,全编译器安装程序,完成工具链的设置。 make

8、file的关系?简单举例说明。 makefile文件,它描述工程中文件之间的关系,提供更新每个文件的命令。make程序的运行,告诉 make需要做什么,多数情况是怎样编译和链接一个程序。目Makefile 就15、(此段为 Makefile )(此为make 执行上述Makefilemake clea n13、答:GcC是由GNU组织开发的一个免费的 C/C+编译工具,由它将高级语言转换为机器语言。因为GCC是什么?为什么说它是必不可少的?个交叉平台的编译器,几乎所有主流CPU处理平台上目标代码的变换,它有力的支持了 Linux没有就无法获得可执行程序。规则)GCC 是-系统的发展。edit

9、: main.o kbd.o comma nd.o dis play.o in sert.o search.outils.occ -o edit main.o kbd.o comma nd.o dis pl ay.o in sert.o search.outils.omai n.o : main .c defs.hcc -c mai n.ckbd.o : kbd.c defs.h comma nd.hcc -c kbd.ccomma nd.o : comma nd.c defs.h comma nd.hcc -c comma nd.cdis play.o : dis play.c defs.h

10、 buffer.h cc -c dis play.cin sert.o : in sert.c defs.h buffer.hcc -c in sert.csearch.o : search.c defs.h buffer.hcc -c search.cdefs.h buffer.h comma nd.hcc -cutils.o : utils.c defs.hcc -c utils.cclea n :rm edit mai n.o kbd.o comma nd.o dis play.o in sert.o search.outils.oC库是什么概念?在嵌入式LinUX系统中对此有何要求?1

11、4、答:提供C语言里包含常用函数的源代码。在嵌入式Linux系统中是必不可少的。否则无法获得可执行程序的完整代码。因为操作系统是用 C语言编写的。在设计嵌入式Linux系统时为什么要配置内核?可用哪几种命令来配置?答:针对嵌入式系统,内核需要知道运行在怎么样的平台上,它要管理的硬件单元,这就需要我们重新组装内核 来达成上述目标。因为完整的Linux的内核比较庞大,不适合嵌入式系统这样的对速度、容量要求苛刻的系统上面运行,因此我们需要去掉那些与目标系统无关的、只编译系统需要的功能的代码。我们通常使用内核配置命令make config (字符界面);make oldconfig ; make me

12、nuconfig (文本图形界面);16、make xconfig (x-window图形界面)来配置内核。通常使用后两个命令,在图形界面下比较直观。显然,在 makefile中详细定义了界面是如何生成的,以及配置和编译内核的规则。此外还有make oldconfig命令。模块是什么概念?答:建立依存关系,建立内核,建立模块。模块的概念:可动态、静态加载的二进制代码。程中要加载的模块17、什么是根文件系统?Linux内核启动与根文件系统的关系?答:根文件系统是 Linux系统的安装点,应该包括支持Linux系统正常运行的基本内容,包含着系统使用的软件18、在构建嵌入式Linux系统时,对根文件

13、系统的目录项有什么要求?答:构建嵌入式操作系统时应包括的目录项有:/bin ; /boot; /dev; /ect; /home; /lib; /mnt; /opt; /proc; /root;/sbin ; /tmp ; /usr; /var其中 /bin ; /dev; /ect; /lib ; /proc ; /sbin ; /tmp ; /usr; /var 这 9 项必须包含,另外 5 项可有可无。19、Linux内核在目标板上启动过程(简要叙述)?需要考虑哪些因素?答:1、通过合适的bootloader找到内核源代码,加载到内存2、内核源代码开始进行初始化3、内核源代码初始化完毕,

14、开始调用和用户有关的进程。用户进程初始化选用和目标板相配的启动装载程序如何理解文件系统?常用的文件系统有哪几种?20、 答: 文件系统是对一个存储设备上的数据和元数据进行组织的机制 另一种看待文件系统的方式是把它看作一个协议。网络协议(比如给出特定存储媒体上数据的意义。常用的文件系统: CRAMFS ; JFFS2; Ext2 over NFTL ; Ext3 over NFTL ; Ext2 over RAM disk ; EXT4。21、 什么是VFS?它在Linux内核中的主要作用是什么?答:VFS (虚拟文件系统)是物理文件系统与服务之间的接口层。它对Linux的每个文件系统的所有细节

15、进行抽象,使得不同的文件系统在Linux核心以及系统中运行的其它进程看来,都是相同的。文件系统类型,将设备同对应的文件系统联系起来, 操作时,VFS把它们影射到与控制文件、目录以及22、内核模块的编程和普通程序的编程有哪些区别?( 参考答案: 主要区别为:(1)因为内核模块运行在内核态,所以包含的头文件是内核程序相关的头文件,而普通程序则包含的是 的头文件(1分)(2) 模块程序没有 main函数,而是通过init_module 函数在加载后初始化。(2分)(3)模块程序内可直接调用内核函数,而普通程序则只能通过系统调用使用内核函数。(4) 普通用户程序可运行多次,而内核函数通常则只能加载1次

16、(1分)。23、 什么是交叉编译?为什么要采用交叉编译(5分)参考答案:所谓交叉编译,是指在一个平台上编译生成在另一个平台上运行的可执行程序。 交叉编译,是因为目标平台上不具备直接运行开发环境的条件。(2分)24、简述嵌入式Linux系统的初始化过程(5分) 参考答案:嵌入式Linux系统开机首先运行 设备,载入设备的驱动程序模块,安装 运行完成并启动其它必要的后续进程后,IP )规定了互联网上传输的数据流的意义,同样,文件系统会处理一些面向文件的通用操作, inode。6分)作用为:记录可用的 涉及到针对文件系统的(2 分)glibc(3分)。之所以采用由内核检查和初始化硬件in it的进程

17、(2分)。在init配置文件,该文件确定in it在系统启动和关机时的工作特性。BootLoader,然后由BootLoader引导启动内核,root文件系统,然后内核将启动一个名为系统开始运行,引导过程结束。in it进程启动时需要读取ini ttab(3分)应用题1、管道是Linux中进程通信的一种方式,以下程序在父进程和子进程之间创建了一个管道,然后建立它们之间 的通信,实现父进程向子进程写数据的功能。说明标号所在行代码的功能。#in elude <uni std.h> #in elude <sys/t yp es.h>#in clude <err no .

18、h> #i nclude <stdio.h>#in elude <stdlib.h> int mai n()int pip e_fd2;pid_t p id;char buf_r100;char* p _wbuf;int r_num;memset(buf_r,0,sizeof(buf_r); (1)if(pip e( pip e_fd)<0)(2)printf("pipe create error'n"); return -1;if(pid=fork()=0)( 3)prin tf("n");close (pi

19、p e_fd1);( 4)slee p(2);if(r_ num=read( pip e_fd0,buf_r,100)>0) (5)prints "%d nu mbers read from the pipe is %sn ”,r_ nu m,buf_r);(6)elose( pip e_fd0);exit(0);else if(pi d>0)(8)elose( pip e_fd0);if(write( pip e_fd1,"Hello",5)!=-1) pnntf("parent write1 sueeess!n");if(wri

20、te( pip e_fd1," Pip e",5)!=-1) pnntf("parent write2 sueeess!n");elose(pipe_fd1);( 10)slee p(3);wait pid( pid,NULL,0); exit(0);(9)答案要点:将数据缓冲区清 0(2)描述符 (5)子进程读取管道内容关闭子进程写 父进程运行控制语句创建子进程(4)创建管道 _(6 关闭子进程读描述符 将数据写入缓冲区(8)关闭父进程的读描述符(10) 关闭父进程写描述符2、由于 Boot Loader 的实现依赖于 CPU 的体系结构,因此大多数

21、大部分。依赖于 CPU体系结构的代码,比如设备初始化代码等,通常都放在(9)Boot Loader 都分为 stagel 和 stage2 两stagel中,而且通常都用汇编语 言来实现,以达到短小精悍的目的。而stage2则通常用C语言来实现,这样可会具有更好的可读性和可移植性。请根据你对嵌入式系统中bootloader 的理解,简要设计一下 stagel 和stage2需要完成的功能。参考答案:BootLoader的stagel 通常包括以下步骤(以执行的先后顺序):(3分)基本硬件设备初始化。为加载 Boot Loader 的stage2 准备RAM空间。拷贝Boot Loader 的s

22、tage2 到RAM空间中。设置好堆栈。跳转到stage2 的C入口点。BootLoader的stage2 通常包括以下步骤(以执行的先后顺序):(3分)初始化本阶段要使用到的硬件设备。检测系统内存映射 (memory map)。将kernel映像和根文件系统映像从flash 上读到RAM空间中。为内核设置启动参数。调用内核。3、Qt/Embedded对嵌入式GUI提供了强大的支持,信号和插槽机制是QT的核心机制,使用 QT实现如下界面的登陆程序,其原代码如下所示,请回答如下问题.E孟Efflple* evx| 11匚 FT口 r!1) 什么是Qt中的信号插槽机制?(3分)2个并说明该控件的特

23、点?(4分)(4分)2)应用程序中用到了哪些控件,列举3)根据注释完成程序中相应的语句?#in elude <QtGui/QtGui> #i nclude "wi ndow.h"eWin Dlg:CWi nDlg(QWidget* pare nt) : QDialog( parent)设置窗口的标题*/创建一个 Editl 和一个 Buttion1*/setWi ndowTitle("Exam pl e");/*Editl = new QLi neEdit;/*Butto n1 = new QP ushButt on ("OK&qu

24、ot;);Edit1->setEchoMode(QLi neEdit: Password);QVBoxLayout* Layoutl = new QVBoxLayout; /*创建一个布局对像 Layoutl*/Layout1->addWidget(Edit1); /*把Editl 加入到 Layoutl*/Layout1->addWidget(Button 1); /*把Button1 加入到 Layoutl*/* 建立 Signal-Slot, 使 button1 与 function()相关联 */CWin Dlg:CWi nDlg()delete Edit1;dele

25、te Butto n1;void CWin Dlg:fu nctio n()if(Edit1->text() = "exa mp le") /*/*/*删除Editl与Button1对象*/如果 Editl 输入"example"*/ 显示"Pass!"消息框*/QMessageBox:war nin g(this, "war nin g", "P ass!", QMessageBox:Yes);else/*显示"Error!" 消息框*/QMessageBox:war

26、 nin g(this, "war nin g", "Error!", QMessageBox:Yes);#i nclude <QtGui/QtGui>#i nclude "wi ndow.h"int main (i nt argc, char* argv)QApp licati on app( argc, argv); /* CWin Dlg dlg;retur n dlg.exec();/*/*运行程序*/创建QT应用程序*/创建窗口 */答案要点:1)什么是Qt中的信号插槽机制?与回调函数机制有何不同?(3分)答案要

27、点:回调函数机制是事先将一个回调函数指针传递给一个处理过程,当这个处理过程得到执行时,回调预先定义好的回调函数以期实现激活其他处理程序的目的。不同与回调函数机制,Qt提供了信号和插槽机制,信号是一个特定的标识;一个槽就是一个函数,与一般函数不同,槽函数既能和信号关联,当某个事件出现时,通过发送信号,可以将与之相关联的槽函数激活,执行相应代码。2)应用程序中用到了哪些控件,列举2个并说明该控件的特点?(4分)答案要点:应用程序中用到的控件有(1)文本框控件Edit,文本框控件主要用来显示或接收用户的输入信息。按钮控件Butt on,按钮控件主要响应用户单击功能。3)根据注释完成程序中相应的语句?

28、(1) setLayout(Layout1);(2) co nn ect(Butto n1, SIGNAL(clicked(), this, SLOT(fu nctio n();(4分)4.在Linux操作系统下,完成下列任务:1、编程实现以下功能主程序 hello.c(打印 Hello World!)/*(1) setLayout(Layout1) ;/* 应用 Layout1 布局 */(2) conn ect(Butto n1, SIGNAL(clicked(), this, SLOT(fu nctio n();主程序通过头文件 hello.h 调用message函数 头文件hello.

29、h( 声明message函数) message 函数由 message.c 定义 ( 打印 This is a message!)1、答:hello.c:# include <stdio.h> # include <stdlib.h># include <string.h># include "head.h" int main (int argc,char *argv) printf("Hello World!n"); message();return 0;head.h:void message(void);message.c:# include <stdio.h> void message (void)printf("This is a message!n");5. 用 C 语言编写一个源程序 main.c ,( 1)用以在打开当前目录下的文件“test.txt ”,如果没有创建该文件,并使其具有读写属性,(2)编写一个 makefile实现自动编译,生成可执行文件 main。注:头文件可忽略。1、(1)(5 分 )Void main(void)int fid; fid = open( if(fid=-1) Printf( exit(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论