嵌入式Linux系统开发教程很完整的习题答案.docx
《嵌入式Linux系统开发教程很完整的习题答案.docx》由会员分享,可在线阅读,更多相关《嵌入式Linux系统开发教程很完整的习题答案.docx(8页珍藏版)》请在冰豆网上搜索。
嵌入式Linux系统开发教程很完整的习题答案
嵌入式Linux系统开发教程很完整的习题答案
参考答案 第一章 一、填空题。
1、嵌入式系统主要融合了计算机软硬件技术、通信技术和微电子技术,它是将计算机直接嵌入到应用系统中,利用计算机的高速处理能力以实现某些特定的功能。
2、目前国内对嵌入式系统普遍认同的定义是:
以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
3、嵌入式系统一般嵌入式计算机和执行部件组成,其中嵌入式计算机主要四个部分组成,它们分别是:
硬件层、中间层、系统软件层以及应用软件层。
4、嵌入式处理器目前主要有ARM、MIPS、PowerPC、68K等,其中arm处理器有三大特点:
体积小、低功耗、的成本和高性能,16/32位双指令集,全球合作伙伴众多。
5、常见的嵌入式操作系统有:
Linux、Vxworks、WinCE、Palm、uc/OS-II和eCOS。
6、嵌入式系统开发的一般流程主要包括系统需求分析、体系结构设计、软硬件及机械系统设计、系统集成、系统测试,最后得到最终产品。
二、选择题 1、嵌入式系统中硬件层主要包含了嵌入式系统重要的硬件设备:
、存储器、设备I/O接口等。
A、嵌入式处理器 B、嵌入式控制器C、单片机 D、集成芯片 2、20世纪90年代以后,随着系统应用对实时性要求的提高,系统软件规模不断上升,实时核逐渐发展为 ,并作为一种软件平台逐步成为目前国际嵌入式系统的主流。
A、分时多任务操作系统 B、多任务操作系统 C、实时操作系统 D、实时多任务操作系统 3、于其高可靠性,在美国的火星表面登陆的火星探测器上也使用的嵌入式操作系统是 。
A、Palm B、VxWorksC、Linux D、WinCE [在此处键入] ?
2?
4、嵌入式系统设计过程中一般需要考虑的因素不包括:
A、性能 B、功耗C、价格 D、大小 5、在嵌入式系统中比较流行的主流程序有:
A、Angel B、BlobC、RedBoot D、U-Boot 三、叙述题 1、举例说明身边常用的嵌入式系统。
生活中最常见的嵌入式系统恐怕要数智能手机了,包括Symbian、WindowsMobile、Android等手机嵌入式系统。
还有,如路器也是一个典型的嵌入式系统。
2、如何理解嵌入式系统,谈谈自己的理解。
嵌入式系统是指:
以应用为中心、以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
他具有如下特点:
1、嵌入式系统是面向产品、面向用户、面向应用的。
2、嵌入式系统是一个技术密集、集成度高、需要不断创新的集成系统。
3、嵌入式系统必须根据应用场合对软硬件进行必要的裁剪已实现需要的功能。
3、简述嵌入式系统的开发方法有哪几种。
目前,嵌入式系统的开发有模拟开发调试、嵌入式在线仿真和远程调试等几种方法。
4、结合当前嵌入式系统的发展,想象一下嵌入式系统的应用前景。
嵌入式系统技术有着非常广泛的应用前景,其领域包括:
工业控制领域、信息家电领域、机器人领域、POS网络及电子商务领域、家庭智能管理系统、交通管理领域、环境工程与自然领域等。
第二章 一、填空题。
1、Linux具有UNIX的所有特性并且具有自己独特的魅力,主要表现在:
开放性、多用户、多任务、友好的用户界面、设备独立性、丰富的网络功能、文件传输、远程访问、可靠的安全性、良好的可移植性、XWindow系统、内存保护模式。
2、Linux一般包括四个主要部分:
内核、命令解释层、文件结构和实用工具。
3、目前几乎所有的Linux发行版本中都包含了Gnome和KDE两种图形操作环境。
4、在当前目录下建立目录,应使用命令:
mkdirlinux;查看当前路径应使用命令:
pwd;chmod765的作用是:
使文件的拥有者权限、文件组权限和其他用户拥有相应的权限。
5、Linux内核主要:
进程调度,内存管理,虚拟文件系统,网络接口,进程间通信五个子系统组成。
二、选择题 1、下列(D)系列处理器是Ubuntu不支持的。
A、ARM B、AMD C、X86 D、51单片机2、启动shell环境时,屏幕上显示“[arm@wwwhome]$”,其中的arm的意义是。
A、arm架构 B、用户名C、文件夹 D、路径 3、使用ls命令时,如果想对文件名中的不可显示字符用八进制逃逸字符显示,则应该选用的参数是。
A、-b B、-aC、-l D、-R 4、解压文件可使用命令。
A、tarjxvf B、tarjxvfC、tarzxvf D、tarczvf5、下列不属于Linux用的文件系统是。
A、ext2 B、ext3C、nfs D、ntfs三、叙述题 1、简述linux与windows的主要异同。
Windows操作系统是在个人计算机上发展起来的,在许多方面受到个 人计算机硬件条件的限制,这些操作系统必须不断地升级才能跟上个人计算机硬件的进步;而Linux操作系统却是以另外一种形式发展起来的,Linux是UNIX操作系统用于个人计算机上的一个版本,UNIX操作系统已经在大型机和小型机上使用了几十年,直到现在仍然是工作站操作系统的首选平台。
Linux给个人计算机带来了能够与UNIX系统相比的速度、效率和灵活性,使个人计算机所具有的潜力得到了充分发挥。
Linux与Windows工作方式存在一些根本的区别,这些区别只有在用户对两者都很熟悉之后才能体会到,但它们却是Linux思想的核心。
?
4?
2、目前主流的图形界面环境有哪些?
它们各有什么有缺点?
目前主流的图形界面环境有KDE和GNOME两种图形环境。
KDE与GNOME项目拥有相同的目标,就是为Linux开发一套高价值的图形操作环境,两者都采用GPL公约发行,不同之处在于KDE基于双重授权的Qt,而GNOME采用遵循GPL的GTK库开发—后者拥有更广泛的支持。
不同的基础决定两者不同的形态:
KDE包含大量的应用软件、项目规模庞大,因为没有太多的第三方开发者为KDE开发重量级软件;于自带软件众多,KDE比GNOME丰富多彩,加上使用习惯接近Windows,会更容易上手一些。
但KDE的毛病在于运行速度相对较慢,且部分程序容易崩溃。
GNOME项目专注于桌面环境本身,于软件较少、运行速度快,且稳定性相当出色,完全遵循GPL公约的属性让它赢得重量级厂商的支持。
从当前的情况来看,GNOME已经成为Novell、RedHat企业发行版的默认桌面,更偏向于商务领域;而丰富多彩的KDE有朝向家用和娱乐方向发展的趋势,它比GNOME显然更有趣味性一些。
3、在linux中如何使用mount命令挂载U盘?
首先使用fdisk-l查看一下磁盘分区情况:
然后使用命令:
mount–tvfat/dev/sdb1/mnt/USB 4、如何设置linux操作系统的网络参数?
使用类似的命令:
ifconfigeth0:
netmask其中为ip,为子网掩码。
5、简要分析linux内核的各个组成部分。
Linux内核主要五个子系统组成:
进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。
其中,进程调度控制进程对CPU的访问;内存管理允许多个进程安全的共享主内存区域;虚拟文件系统隐藏了各种硬件的具体细节,为所有的设备提供了统一的接口,VFS提供了多达数十种不同的文件系统;进程间通讯(IPC)支持进程间各种通信机制。
第三章 一、填空题。
1、ARM9系列微处理器在高性能和低功耗方面提供最佳的性能:
它具有3级整数流水线,指令执行效率更高;提供/MHz的哈佛总线结构;支持32位ARM指令集和16位Thumb指令集;支持32位的高速AMBA总线接口。
2、ARM芯片的内核一般包括以下几个单元:
ARM9TDMI32RISC处理器、数据缓存器、指令缓存、指令存储管理单元、数据存储管理单元、写缓冲和回写存储单元。
3、ARM处理器共有37个寄存器,其中31为通用寄存器,6个状态寄存器,这些寄存器都是32位。
4、ARM系统中寻址方式主要有立即寻址、寄存器寻址、寄存器间接寻址、基址变址寻址、多寄存器寻址、相对寻址和堆栈寻址。
5、ARM微处理器的指令集可以分为以下六大类:
跳转指令、数据处理指令、程序状态寄存器处理指令、加载/存储指令、协处理器指令和异常中断产生指令。
二、选择题 1.指令ADDR0,R0,#1第三个操作数得寻址方式是 A.立即寻址B.寄存器寻址C.寄存器间接寻址D.基址变址寻址2.指令LERR3,[R4]第二个操作数的寻址方式是 A.立即寻址B.寄存器寻址C.寄存器间接寻址D.基址变址寻址R0,[R1,#4]第二个操作数的寻址方式是(D) A.立即寻址B.寄存器寻址C.寄存器间接寻址D.基址变址寻址4.假设R0和R1寄存器中的值分别为8和6,执行指令:
LDRR0,[R1,#8]!
则寄存器R0和R1中的值分别为 A.8,6B.14,6C.14,14D.16,14 5.栈是一种数据结构,本质上是内存中一段连续的地址,对其最常见的操作为“压栈”和“出栈”,以临时保存数据。
其出入栈规则是。
A.先进先出B.先进后出C.只进不出D.只出不进三、叙述题 1、ARM处理器的运行模式有哪几种,各有什么特点?
ARM微处理器的运行模式有7种,分别为:
用户模式:
正常程序执行时,ARM处理器所处的状态。
快速中断模式:
用于快速数据传输和通道处理。
外部中断模式:
用于通常的中断处理。
特权模式:
供操作系统使用的一种保护模式。
数据访问中止模式:
当数据或指令预取终止时进入该模式,用于虚拟存储及存储保护。
未定义指令终止模式:
用于支持硬件协处理器软件仿真。
系统模式:
用于运行特权级的操作系统任务。
上出现了各种改进版本:
支持网络功能、USB功能、烧写YAFFS文件系统映象等。
第八章 一、填空题。
1、ARM-Linux内核的配置系统三个部分组成,它们分别是Makefile、配置文件和配置工具。
2、配置工具一般包括配置命令解释器和配置用户界面,前者主要作用是对配置脚本中使用的配置命令进行解释;而后者则是提供基于字符界面、基于Ncurses图形界面以及基于XWindow图形界面的用户配置界面。
3、Makefile文件主要包含注释、编译目标定义和适配段。
4、Linux内核常用的配置命令有makeoldconfig、makeconfig、makemenuconfig和makexconfig。
其中以字符界面配置的命令是makeconfig。
5、内核编译结束后,会在“/arch/arm/boot/”目录下面和根目录下面生成一个名为zImage的内核镜像文件。
二、选择题 内核中的makefile以及与makefile直接相关的文件不包括。
A.B.子目录下的MakefileC.后缀名为.inD.后缀名为.config2.用户通过makeconfig配置后,产生了后缀名为。
A.configB.inC.D. 文件定义了许多变量,最重要的是那些编译、连接列表变量,但不包括。
A.MX_OBJXB.O_TARGETC.O_OBJSD.O_OBJL4.在内核配置过程中,如果需要设置networkingsupport这个选项,进入的菜单项是。
setupsystemC.BootoptionsD.Devicederives5.在linux系统中,我们既需要标记变量的符号,有需要变量的物理地址,两者同时需要的时候可以采用符号表的方式,其对应的文件为。
A.vmlinuxB.C.vmlinuzD. 三、叙述题 1、Linux内核各个部分与内核源码的各个目录都是对应起来的,比如有关驱动的内容,内核中就都组织到“drive”这个目录中去,有关网络的代码都集中组织到“net”中。
当然,这里有的目录是包含多个部分的内容。
具体各个目录的内容组成如下:
arch:
arch目录包括了所有和体系结构相关的核心代码。
include:
include目录包括编译核心所需要的大部分头文件,例如与平台无关的头文件在 ?
12?
include/linux子目录下;init:
init目录包含核心的初始化代码,有和两个文件;mm:
mm目录包含了所有的内存管理代码。
与具体硬件体系结构相关的内存管理代码位于arch/*/mm目录下;drivers:
drivers目录中是系统中所有的设备驱动程序。
它又进一步划分成几类设备驱动,每一种有对应的子目录,如声卡的驱动对应于drivers/sound;ipc:
ipc目录包含了核心进程间的通信代码;modules:
modules目录存放了已建好的、可动态加载的模块;fs:
fs目录存放Linux支持的文件系统代码。
不同的文件系统有不同的子目录对应,如ext3文件系统对应的就是ext3子目录;Kernel:
Kernel内核管理的核心代码放在这里。
同时与处理器结构相关代码都放在arch/*/kernel目录下;net:
net目录里是核心的网络部分代码,其每个子目录对应于网络的一个方面;lib:
lib目录包含了核心的库代码,不过与处理器结构相关的库代码被放在arch/*/lib/目录下;scripts:
scripts目录包含用于配置核心的脚件;documentation:
documentation目录下是一些文档,是对每个目录作用的具体说明。
2、将自己开发的内核代码加入到Linux内核中,需要有三个步骤。
首先确定把自己开发代码放入到内核的位置;其次,把自己开发的功能增加到Linux内核的配置选项中,使用户能够选择此功能;最后,构建子目录Makefile,根据用户的选择,将相应的代码编译到最终生成的Linux内核中去。
主要步骤有:
组织目录结构,配置文件,修改makefile文件等。
3、Linux内核的移植过程比较繁琐,具体步骤如下:
解压内核文件、修改机器码、修改内核源码根目录下的 Makefile 文件、修改 “arch/arm/plat-s3c24xx/”文件,修改NandFlash的分区信息和NandFlash的硬件信息、修改时钟频率、增加Yaffs2文件系统的支持、配置内核、编译内核等。
4、为什么要进行内核裁剪?
内核裁剪,主要作用就是为了适应嵌入式系统的小体积、小存储的特点,在内核的大小方面进行裁剪。
内核编译之前,通过配置内核的选项参数进行设置,将不需要的功能删掉,保留系统需要的部分,这样就在一定程序上缩小了生成的镜像文件大小。
第九章 一、填空题。
1、Linux下的文件系统主要分为三个层次:
上层用户的应用程序对文件系统的系统调用、虚拟文件系统VFS和挂载到VFS中的各种实际文件系统。
2、Linux中三常见的块驱动程序:
Blkmem驱动层、RAMdisk驱动层、MTD驱动层 3、基于Flash存储常见的文件系统有JFFS2、Yaffs、Romfs和Cramfs。
4、基于RAM的文件系统常见的有Ramdisk和Ramfs/Tmpfs。
5、SystemVinit、Busyboxinit 二、选择题 1、也支持在一块Flash上建立多个Flash分区,没一个分区作为一个MTDblock设备,可以把系统软件数据等分配到不同的分区上,同时也可以在不同的分区采用不同的文件系统格式。
A、MTD驱动层B、Blkmem驱动层C、Romdisk驱动层D、Ramdisk驱动层 2、在Linux系统中,因为Flash可以以分区为单位拆开或者合并后使用,所以文件系统是针对于而言的。
A、存储芯片B、存储器分区C、FlashD、RAM 3、是可读写的、支持数据压缩的、基于哈希表的日志型文件系统,并提供了崩溃/掉电保护,提供了“写平衡”支持,是具有支持多种节点类型,提高了对Flash的利用率等优点的文件系统、 A、CramfsB、YaffsC、RomfsD、JFFS2 4、将一部分固定大小的内存当做分区来使用。
它并非一个实际的文件系统,而是一种将实际的文件系统装入内存的机制,并可以作为根文件系统。
A、JFFS2B、YaffsC、RomfsD、Ramdisk5、目录“rc”下存放的文件则是用来定义每个运行级别将会执行的应用程序名,通常情况下它们都是符号链接,具体的文件则位于目录下。
A、B、C、rcD、ABBDB三、叙述题 1、在Linxu根文件系统中,一般包括这样一些子目录:
/etc/、/dev/、/usr/、/usr/bin/、/bin/等。
根文件系统的建立需要遵循一定的规则,包括目录的位置及名字等。
用来建立根文件系统的规则被称作文件系统分类标准,该规则定义了在构建Linux根文件系统时文件和目录的名字和存放位置的标准。
2、简述Busybox的主要作用。
Busybox能使用户迅速方便的建立一套相对完整、功能丰富的文件系统,其中包括大量常用的应用程序。
Busybox将许多常用的UNIX命令和工具结合到了一个单独的可执行程序中。
它集成压缩了Linux的许多工具和命令。
虽 ?
14?
然与相应的GNU工具比较起来,Busybox所提供的功能和参数略少,但在比较小的系统或者嵌入式系统中,这些已经足够用了。
3、简述NFS文件系统的制作过程。
一般只要通过特殊的打包工具将文件系统打包,并刻录到非易失性存储器中中就可以了。
================================================================== 第十章 一、填空题。
1、Linux系统的设备文件分为四类:
块设备文件、字符设备文件、网络设备文件、杂项设备文件。
2、设备号是一个数字,它是设备的标志、如前所述,一个设备文件可以通过mknod命令来创建,其中指定了主设备号和次设备号。
前者表明某一类设备,用于表示设备对应的驱动程序,一般对应着确定的驱动程序;后者一般用于区分标明不同属性,它标志着某个具体的物理设备。
3、本章中的4种数据结构:
file_operations、file、inode和device_struct,其中file_operations存储驱动内核模块提供的对设备进行这种操作的函数指针,file代表一个打开的文件描述符,inode表示具体的文件。
4、创建设备节点的命令是mknod。
5、设备读写操作的功能之一就是控制硬件,最常用的通过设备驱动程序完成控制动作的方法就是实现ioctl方法。
二、选择题 1、磁盘属于。
A、字符设备B、块设备C、网络设备D、杂项设备2、USB属于。
A、字符设备B、块设备C、网络设备D、杂项设备 3、Linux内核是“单内核”结构,这个单内核很多构成。
A、模块B、函数C、设备D、驱动程序4、如果一个模块要实现read、open和release等功能,则将其定义为结构。
A、file_operationsB、inodeC、fileD、devicde_struct 5、数据结构,包含两个元素:
一个登记的设备驱动程序的指针和一个指向一组文件操作的指针。
A、file_operationsB、inodeC、fileD、device_structBDAAD三、叙述题 1、Linux驱动程序主要有哪些功能?
驱动程序主要提供以下功能:
应用程序通过驱动程序安全有效地访问硬件;驱动程序作为嵌入式系统的中间层软件,它隐藏了底层的细节,从而提高了软件的可移植性和可复用性;驱动程序文件节点可以方便地提供访问权限控制。
从下层驱动开发人员的角度来看,Linux驱动程序就是通过直接操控硬件的软件,来完成下面的功能:
对设备初始化和释放;直接读写硬件寄存器来控制硬件;把数据从内核传送到硬件和从硬件读取数据;操作设备缓冲区设备;操作输入、输出设备,如键盘、打印机等;读取应用程序传送给设备文件的数据和回送应用程序请求的数据;检测和处理设备出现的错误。
2、简述字符设备与块设备有什么区别。
块设备文件:
通常指一些需要以块的方式写入的设备,如IDE硬盘、SCSI硬盘、光驱等;字符型设备文件:
通常指可以直接读写,没有缓冲区的设备,如并口、虚拟控制台等; 3、Linux驱动程序可以通过哪两种方式集成到内核中?
Linux驱动程序可以通过两种方式集成到内核中去:
一是将其直接编译到内核; 二是将其编写成模块,在需要添加某种硬件的时候,内核可以将其调入。
在配置Linux内核时,可以选择“Enableloadablemodulesupport”选项,来支持可加载内核模块。
4、Linux设备驱动程序与外界的接口可以分为几个部分?
Linux设备驱动程序与外界的接口可以分为如下三个部分:
驱动程序与操作系统内核的接口:
这是通过数据结构file_operations来完成的。
驱动程序与系统引导的接口:
这部分利用驱动程序对设备进行初始化。
驱动程序与设备的接口:
这部分描述了驱动程序如何与设备进行交互,这与具体设备密切相关。
5、进行模块编程的一般步骤是:
首先建立模块文件,然后编写makefile文件,最后使用insmod加载模块文件。
6、编写一个字符设备驱动,主要是下面几步:
编写硬件接口函数;建立文件系统与设备驱动程序的接口变量,类型为structfile_operations结构体,并初始化该变量;注册设备到chrdevs全局数组中;以模块方式编译驱动源码,并将其加载到内核中;创建设备节点;编写应用程序访问底层设备。