嵌入式linux开发技术基础习题答案.docx
习题答案弟一早1 .在三极管驱动电路中上拉电阻和下拉电阻的作用是什么?答:上拉电阻:电阻一端接VCC, 一端接逻辑电平接入引脚(如单片机引脚)下拉电阻:电阻一端接GND, 一端接逻辑电平接入引脚(如单片机引脚)其主要作用是提高驱动能力:例如,用单片机输出高电平,但由于后续电路的影响,输出的高电平不高,就是达不到 VCC,影响电路工作。所以要接上拉电阻。下拉电阻情况相反,让单片机引脚输出低电平, 结果由于后续电路影响输出的低电平达不到GND,所以接个下拉电阻。2 .什么是灌电流和拉电流,为什么驱动LED有时要加一个三极管作为反相器?答:拉电流和灌电流是衡量电路输出驱动能力的参数,高电平输出时,一般是输出端对 负载提供电流,其提供电流的数值叫“拉电流”;低电平输出时,一般是输出端要吸收负载 的电流,其吸收电流的数值叫“灌(入)电流”。普通LED,正常静态工作电流最大能达到70-80mA, 一般单片机10 口不足以提供这么 大的电流。加三极管可扩展10 口的驱动能力。另外,加三极管可以起到缓冲和隔离作用, 使单片机工作更加稳定可靠。3,阅读嵌入式开发板原理图,分析按键电路,蜂鸣器电路,用户LED灯电路等。答:略4 .简单分析儿种典型嵌入式操作系统的主要特点。答:略5 ,举出几个生活当中应用嵌入式产品的例子。答:略6 .简述嵌入式系统开发流程、开发要点。答:在一个已经烧写好系统的开发平台上只需要(1)建立开发环境(2)配置开发主机(3)嵌入式系统软件开发(4)烧写应用程序,发布产品。弟一早1 . Linux系统中的文件属性与Windows系统的文件属性有何区别?答:Linux文件系统就是一个树形的分层组织结构,根(/)作为整个文件系统的惟一起 点,其他所有目录都从该点出发。在Linux中,将所有硬件都视为文件来处理,包括硬盘分 区、CD-ROM,软驱以及其他USB移动设备等。inux文件系统使用的主要文件格式有EXT2、 EXT3、RerserFS、509660、vfat等。Windows文件系统使用的主要文件格式有FAT16、FAT32、 NTFS等。Linux文件系统中严格区分大小写。区分文件类型不依赖于文件后缀。Windows文 件系统中不区分大小写。使用文件后缀来标识文件类型。2 .为什么在多用户、多任务的系统中不能以切断电源的方法关闭计算机?答:多用户、多任务的操作系统在其关闭时系统所要进行的处理操作与单用户、单任务 的操作系统有很大的区别;非正常关机对Linux操作系统的损害是非常大的,非法关机轻 则使下次启动时要花一定的时间检查文件系统,重则造成根文件系统崩溃,甚至无法进入 Linux系统。因此、要养成良好的系统重启和关机习惯。Linux作为多任务的操作系统,尤其 是在作为服务器使用时,可能会有许多的后台程序正在运行中,例如、后台打印、后台备份 等等;非正常关机会使这些后台进程的数据丢失。3 .Linux系统为用户提供了哪些接口?各有何用途?答:Linux系统提供三种接口:1、图形界面操作接口,Linux系统一般提供KDE、Gnome等图形界面接口,目的是方便 普通用户操作计算机。2、控制台接口,即终端接口,Linux系统一般提供bash shell、cshell等等终端接口,目 的是方便系统管理员操作计算机,事实上Linux功能的强大也主要体现在终端接口。3、API接口: BP apllication interface,这是应用程序接口,从编程角度Linux系统就是一 个大的程序调用库,它提供大量的API函数,目的是方便程序员开发应用程序。4 .说出下列目录中存放的是哪些文件。/etc:该目录下保存着关系到系统运行方式的重要配置文件,如系统的运行级、系统启 动的服务、用户账户信息、组账户信息等。以下列举了几个嵌入式开发经常用到的文件。/etc/rc.d/init.d/:系统启动或改变运行级时需要运行的脚本程序或脚本程序的目录/bin:该目录下存放的大多是二进制文件的可执行程序,也有一些较小的可执行程序是 shell脚本程序。这些程序都是系统程序,实际上我们所使用的许多命令就是该目录中的程 序。/sbin:该目录与/bin目录类似,也是存放二进制文件的可执行程序、shell脚本程序和 一些符号链接文件,这些程序也是Linux系统的命令,不过这些命令是给超级用户或系统管 理员进行系统维护使用的,普通用户没有使用它们的权限。/var/log:该目录存放各种程序产生的记录文件。/etc/samba:存放Samba的主配置文件smb.conf/mnt:该目录为超级用户或系统管理员安装临时文件系统时使用的目录(安装挂接点)第二早1 .修改用户属性、删除用户账户有几种方法?答:修改用户属性的终端命令是usermode修改配置文件的方法直接修改/etc/passwd和 /etc/shadow文件中该用户的账户信息行也可以达到修改用户属性目的。2 .某个文件的数字视图为621,则它所代表的含义是什么?答:文件拥有可写和可执行,创建的目录拥有写的权限;同组用户和其他用户只有可执行权 限。3 ,硬链接与软链接有何异同点。答:硬链接指向文件的i节点。两个文件有相同的文件创建日期和时间;有相同的文件大小。 软链接是与要链接文件或目录的路径链接,而不是与i节点链接;因此,软链接只是指向i 节点号。可以用In-s命令创建一个软链接。文件有不同的i节点或索引号;有不同的文件 创建日期和时间;有不同的文件大小。与硬链接相比,软链接不直接访问文件系统,因此它 可以位于不同的磁盘分区上;但是,移动它会影响原文件。4 .复制一个目录下的所有子目录及其中的文件。答:cp -ri A/B/* Al/Bl/5 .从网上下载.tar格式的软件包并解压缩安装。答:略6在自己的计算机上手动设置网卡的IP地址并激活它。答:略第四章1 .分别简述gcc工具包里都有哪些工具,各自的作用是什么?答:包括 BINUTILS、GCC、GLIBC、GDB 等。BINUTILS是二进制程序处理工具,包括链接器、汇编器等目标程序处理的工具。GCC (GNU Compiler Collection)是编译器。对于C/C+语言的完整支持,需要支持glibc库。 GLIBC是应用程序编程的函数库软件包,可以编译生成静态库和共享库。完整的GCC需要支 持 glibcoGDB是调试工具,可以读取可执行程序中的符号表,对程序进行源码调试。2 .编译C语言的基本流程是什么?答:1,预处理,生成预编译文件(.文件):Gcc-E hello.c-o hello.i2 .编译,生成汇编代码(.s文件):Gcc -S hello.i -o hello.s3 .汇编,生成目标文件(.。文件):Gcc -c hello.s -o hello.o4 .链接,生成可执行文件:Gcchello.o-o hello3 .编写makefile文件的作用是什么?答:一个工程中的源文件很多,其按类型、功能、模块分别放在若干个目录中,makefile定 义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新 编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以 执行操作系统的命令。写好makefile文件,只需要一个make命令,整个工程完全自动编译, 极大的提高了软件开发的效率。4 .简述gdb调试工具的好处。答:可以单步跟踪自己的代码,或者通过断点暂时中止程序的执行。止匕外,还能够随时察看 变量和内存的当前状态,并监视关键的数据结构是如何影响代码运行的。5 .使用vi编辑器,gcc编译器,gdb调试器编写用选择法对输入的10个整数从大到小排序。 答:略6 .在linux底下最常使用的文书编辑器为vi ,请问如何进入编辑模式?答:vi被运行时,通常处在命令模式下,键入以下命令可以使vi退出命令模式,进入输 入模式:I (i)、A (a)、0 (o)o7 .如何由编辑模式跳回一般模式?答:按ESC键,可以跳回到vi的命令方式8 .若上下左右键无法使用时,请问如何在一般模式移动光标?答:h:向左移动一个字符,I:向右移动一个字符,j:向下移动一行,k:向上移动一行9 .若pagedown pageup在一般模式无法使用时,如何往前或往后翻一页?答:Ctrl+b:上滚一屏。Ctrl+f:下滚一屏。10 .如何到本档案的最后一行、第一行;本行的第一个字符、最后一个字符?答:H:光标移至屏幕顶行L:光标移至屏幕最后行,0:(注意是数字零)光标移至当前行 首$:光标移至当前行尾。11 .如何删除一行、n行;如何删除一个字符?答:do:删至行首d$:删至行尾。ndd:删除当前行及其后n-1行。x或X:删除一个字符,x删除光标后的,而X删除光标前的。12 .如何删除一行、n行;如何删除一个字符?13 .如何搜寻string这个字符串?答:/string:从光标开始处向文件尾搜索string, ?string:从光标开始处向文件首搜索string14 .如何读取一个档案filename进来目前这个档案?答::r filename15 .如何另存新档成为newfilename?答::wnewfilename16 .如何存档、离开、存档后离开、强制存档后离开?答::w; :q: :wq; :wq!17 .如何设定与取消行号?答::set nu:setnonu1 .交叉开发环境主要由哪些工具组成?答:宿主机与目标机间的串口连接和网络连接配置工具,文本编辑器、交叉编译器、交叉调 试器、仿真器、下载器等。2 .简述采用交叉编译的主要原因?答:为了在一个平台上生成另一个平台上的可执行代码,目标平台上不允许或不能够安装我 们所需要的编译器,有时是因为目标平台上的资源不够,例如内存,无法运行我们所需要编 译器;有时因为目标平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。3 简述建立交叉编译工具链的方法。答:略4 .简述boa服务的配置过程。答:略5 .简述超级终端,minicom, nfs, tftp在嵌入式开发中的作用和优缺点。答:略6 简述环境变量的作用和几种配置方法。答:因为我们在执行某个命令时,系统无法在当前路径下找到对应的命令,那么就会去path 包含的路径挨个找,一旦找到第一个对应的命令就运行命令,其他的路径下就不找了。如果 找不到你就会看到"*:未找到命令”的提示。配置方法略。弟八早1 .解释类申明和类定义之间的差异,何时使用类申明,何时使用类定义?答:类声明是不完全类型,只能以有限方式使用,不能定义该类型的对象,只能用于定义指 向该类型的指针及引用,或者声明使用该类型作为形参类型或返回类型的函数。类定义, 一旦类被定义,我们就可以知道所有类的成员,以及存储该类的对象所需的存储空间。在 创建类的对象之前或者使用引用或指针访问类的成员之前必须定义类。2 .使用构造函数初始化列表编写类的默认构造函数,该类包含如下成员:一个const string 一个int 一个float *0初始化string来保存类的名字。答:略3 .判断正误并说明为什么1)类必须提供至少一个构造函数2)默认构造函数的形参列表中没有形参3)如果一个类没有有意义的默认值,则该类不应该提供默认构造函数4)如果一个类没有定义默认构造函数,则编译器会自动生成一个,同时将每个数据成员初 始化为相关类型的默认值答:1)、错,因为构造函数可以不用显式声明,如果不声明则自动使用默认构造函数,即无 参构造函数2)、错,因为默认构造函数有:不带任何参数的构造函数;带有参数,但是所有的参数都有 默认值。3)、错,如果一个类没有默认的构造函数,而只有自己写的构造函数,在编译器需要隐式使 用默认构造函数时,这个类就不能使用,编译不通过,所以如果一个类定义了其他的构造函 数,通常也应该提供一个默认的构造函数。4)、错,当一个类中自己定义了构造函数时,编译器就不会自动合成一个默认构造函数了, 编译器不是将每个数据成员初始化为相关类型的默认值,而是使用与变量初始化相同的规则 来初始化成员:类类型的成员执行各自的默认构造函数进行初始化,内置和复合类型的成员, 只对定义在全局作用域中的对象才初始化。4 .简述CGI程序和web服务程序的关系。答:Web服务器可以解析HTTP协议。当Web服务器接收到一个HTTP请求,会返回一个 HTTP响应,例如送回一个HTML页面。为了处理一个请求,Web服务器可以响应一个静态 页面或图片,进行页面跳转,或者把动态响应的产生委托给一些其它的程序例如CGI脚本, 无论它们的目的如何,这些服务器端的程序通常产生一个HTML的响应来让浏览器可以浏览。第七章1、简述开发QT应用程序的流程及编译步骤。答:略2、槽函数一般添加在哪个文件中,有哪几种添加槽函数的方法。答:第一种方法:1)在头文件mainwindow.h的类MainWindow的定义中声明槽函数。2)在mainwindow.cpp文件中,定义槽函数3)建立映射,在类MainWindow的构造函数中添加,以便将信号和槽函数进行连接第二种方法:右击“0K”按钮,选择“Go to slot",选择clicked。,单击OK,即完成信号和槽函数的链 接。clicked 是信号函数,槽函数是 on_pushButton_clicked();第三种方法:1)右击界面选择“change signals/slot"(改变信号/槽)选项,单击“ + 添加新的槽函数2)在窗体编辑区的下方有信号和槽的映射窗口,单击左上角的加号,出现一行新的映射, 在这里编辑映射函数。3)在头文件mainwindow.h的类MainWindow的定义中声明槽函数。4)在mainwindow.cpp文件中,定义槽函数3、用QTcreator设计的程序产生的文件.pro, .cpp,.h,.ui各自的作用是什么。答:ui通常是用Qt设计师设计出来的界面文件的后缀。通常情况下ui是一个指向这个界面 类的指针。ui-一般就是用来访问这个界面类里面的控件。.pro文件是供qmake使用的文件,决定Makefile文件中该生成什么。Qt自带的用户界面编译器(User Interface Compiler)将界面文件(filename.ui)转换成C+ 代码并保存在ui_filename.h文件中。C+源文件是 filename.cpp4、如何给项目(工程)添加头文件和源文件。答:略5、创建QT窗口程序时,选择的基类Qwidget, QMainWindows, QDialog各自的含义是什么?答:QWidget类是所有用户界面对象的基类。QMainWindow类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序 窗口。QDialog类是对话框窗口的基类。对话框窗口是主要用于短期任务以及和用户进行简要通讯 的顶级窗口。在Qt中,QMainWindow和不同的QDialog的子类是最普通的顶级窗口。如果是顶级对话框,那就基于QDialog创建,如果是主窗体,那就基于QMainWindow,如 果不确定,或者有可能作为顶级窗体,或有可能嵌入到其他窗体中,则基于QWidget创建。第八章1、请解释数据库,数据表,记录和字段。答:数据库就是二维表集合形式。二维表由行(row)和列(column)组成的表格。表中的 一行也叫作一条记录,表中的一列叫做字段。2、列出常用的SQIite shell命令,操作数据库的SQL主要命令有哪些?答:略3、添加数据库驱动的语句是?答:略4、QT中执行SQL查询的语句用到哪些类?答:略