嵌入式Linux系统开发教程第二版参考答案贺丹丹.doc

上传人:h**** 文档编号:1371402 上传时间:2019-02-23 格式:DOC 页数:9 大小:45.50KB
下载 相关 举报
嵌入式Linux系统开发教程第二版参考答案贺丹丹.doc_第1页
第1页 / 共9页
嵌入式Linux系统开发教程第二版参考答案贺丹丹.doc_第2页
第2页 / 共9页
嵌入式Linux系统开发教程第二版参考答案贺丹丹.doc_第3页
第3页 / 共9页
嵌入式Linux系统开发教程第二版参考答案贺丹丹.doc_第4页
第4页 / 共9页
嵌入式Linux系统开发教程第二版参考答案贺丹丹.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、参考答案 第一章 一、填空题。 计算机软硬件技术、通信技术和微电子技术 应用、计算机技术 硬件层、中间层、系统软件层以及应用软件层 ARM、 MIPS、 Power PC Linux、 Vxworks、 WinCE、 Palm 体系结构设计、软硬件及机械系统设计、系统测试 二、选择题 A D B D A 三、叙述题 1、生活中最常见的嵌入式系统恐怕要数智能手机了,包括 Symbian、 Windows Mobile、Android 等手机嵌入式系统。还有,如路由器也是一个典型的嵌入式系统。 2、嵌入式系统是指: 以应用为中 心、以计算机技术为基础、软硬件可裁剪、适应应用系统对功能、可靠性、成本

2、、体积、功耗严格要求的专用计算机系统。他具有如下特点:1、嵌入式系统是面向产品、面向用户、面向应用的。 2、嵌入式系统是一个技术密集、集成度高、需要不断创新的集成系统。 3、嵌入式系统必须根据应用场合对软硬件进行必要的裁剪已实现需要的功能。 3、目前,嵌入式系统的开发有模拟开发调试、嵌入式在线仿真和远程调试等几种方法。 4、 嵌入式系统技术有着非常广泛的应用前景,其领域包括:工业控制领域、信息家电领域、机器人领域、 POS 网络及电子商务领域、家庭 智能管理系统、交通管理领域、环境工程与自然领域等。 第二章 一、填空题。 1、多任务、友好的用户界面、设备独立性、文件传输、远程访问、可靠的安全性

3、、良好的可移植性、 X Window 系统、内存保护模式。 2、内核( Kernel)、命令解释层( Shell或其他操作环境)、文件结构( File Structure)和实用工具。 3、 Gnome、 KDE 4、 mkdir linux、 pwd、使 linux.tar.gz 文件的拥有者权限、文件组权限和其他用户拥有相应的权限 5、 进程调度,内存管理,虚拟文件系统,网络接口, 进程间通信 ASP.NET 简明教程 2 二、选择题 B B B C D 三、叙述题 1、 Windows 操作系统是在个人计算机上发展起来的,在许多方面受到个人计算机硬件条件的限制,这些操作系统必须不断地升级

4、才能跟上个人计算机硬件的进步;而Linux 操作系统却是以另外一种形式发展起来的, Linux 是 UNIX 操作系统用于个人计算机上的一个版本, UNIX 操作系统已经在大型机和小型机上使用了几十年,直到现在仍然是工作站操作系统的首选平台。 Linux 给个人计算机带来了能够与 UNIX 系统相比的速度、效率和灵活性,使个人计算机所具有的潜力得到了充 分发挥。 Linux 与 Windows 工作方式存在一些根本的区别,这些区别只有在用户对两者都很熟悉之后才能体会到,但它们却是 Linux 思想的核心。 2、目前主流的图形界面环境有 KDE和 GNOME两种图形环境。 3、首先使用 fdis

5、k -l查看一下磁盘分区情况: 然后使用命令: mount t vfat /dev/sdb1 /mnt/USB 4、使用类似的命令: ifconfig eth0: 192.168.1.15 netmask 255.255.255.0 其中 192.168.1.15 为 ip, 255.255.255.0 为子网掩码。 5、 Linux 内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信 。其中, 进程调度( SCHED)控制进程对 CPU 的访问 ; 内存管理( MM)允许多个进程安全的共享主内存区域 ; 虚拟文件系统( VirtualFileSystem, VF

6、S)隐藏了各种硬件的具体细节,为所有的设备提供了统一的接口, VFS 提供了多达数十种不同的文件系统 ; 进程间通讯 (IPC) 支持进程间各种通信机制。 第三章 一、填空题。 1、 3、 1.1、 ARM指令集、 16 为 Thumb 指令集、 32 2、 数据缓存器( Data Cache)、指令缓存( Instruction Cache)、指令存储管理单元( Instruction MMU)、数据存储管理单元( Data MMU)、写缓冲( Write Buffer)和回写存储单元( Write Back PA TAG RAM) 3、 37、 31、 6、 32 4、立即寻址、寄存器寻址

7、、寄存器间接寻址、基址变址寻址 5、跳转指令、数据处理指令、程序状态寄存器( PSR)处理指令、加载 /存储( Load/Store)指令、协处理器指令 二、选择题 A C D D A 第 1 章 ASP.NET 概述 3 三、叙 述题 1、 ARM微处理器的运行模式有 7 种,分别为: 用户模式( User, usr):正常程序执行时, ARM 处理器所处的状态。 快速中断模式( FIQ, fiq):用于快速数据传输和通道处理。 外部中断模式( IRQ, irq):用于通常的中断处理。 特权模式( Supervisor, sve):供操作系统使用的一种保护模式。 数据访问中止模式( Abor

8、t, abt):当数据或指令预取终止时进入该模式,用于虚拟存储及存储保护。 未定义指令终止模式( Undefined, und):用于支持硬件协处理器软件仿真。 系统模式( System, sys):用于运行特权级的操作系统任务。 2、 ARM 储存器的组织最要有 2 大类型,分别为小端格式和大端格式,也称为小端次序(Little endian)和大端次序 (Big endian)的字节序( byte order)。两种储存类的区别在于一个 32 位的数据存放到储存器中的时候,到底是高位字节放在高地址还是低地址的区别。 3、 ARM微处理器选型时应注意: 1、 ARM微处理器内核的选择 2、

9、系统 的工作频率 3、芯片内 存储器 的 容量 4、片内外围电路的选择 第四章 一、填空题。 1、程序段 (Section)、代码段( Code Section)、数据段( Data Section) 2、:、 3、符号定义伪指令( Symbol Definition)、数据定义 伪指令 ( Data Definition)、汇编 控制伪指令 ( Assembly Control)、宏指令 4、 vi、 gedit、 gcc、 gdb、 make 5、 命令模式( command mode) 、 插入模式( insert mode) 、 底行模式( last line mode) 6、 预处理

10、 (也称预编译, Preprocessing)、编译 (Compilation)、汇 编 (Assembly)和连接(Linking)。 二、选择题 C B C C A 三、叙述题 1、汇编语言与 C的混合编程通常有以下几种方式:在 C 代码中嵌入汇编指令;在汇编ASP.NET 简明教程 4 程序和 C 的程序之间进行变量的互访;汇编程序、 C 程序间的相互调用。 2、参看教材 4.2.6。 3、 make 就是实现这样的功能: 它读入一个文件,叫 makefile,这个文件 不仅 决定了源文件之间的依赖关系 , 而且 还 决定了源文件什么时候该编译什么时候不应该编译。 第五章 一、填空题。

11、1、 S3C2440、 400M 2、 DNW 设置、 USB驱动 3、 Windows 系统下安装虚拟机 Vmware、 Windows+Linux 双系统安装、基于 Windows操作系统下的 Cygwin 4、命令行方式、图形界面操作方式 5、 SJF2440 二、选择题 C D D B A 三、叙述题 1、建立基于 Linux 嵌入式开发环境一般有三种方案可以选择:一是在 Windows 系统下安装虚拟机 Vmware。二是 Windows 系统和 Linux 系统同时安装。三是基于 Windows操作系统下的 Cygwin。 2、参看教材 5.3。 3、参看教材 5.4。 第六章 一

12、、填空题。 1、 为了编译、链接、处理和调试跨平台体系结构的程序代码、编译、链接、处理、调试。 2、 Binutils、 Gcc、 Glibc。 3、编译 binutils、编译辅助 gcc 编译器、编译 glibc 库、重新编译完整的 gcc。 4、建立脚本文件、建立配置文件、执行脚本文件。 5、定义生成编译工具链的名称、定义编译选项等。 二、选择题 B D B A B 三、叙述题 第 1 章 ASP.NET 概述 5 1、通常构建交叉工具链有三种方法: 方法一、分步编译和安装交叉编译工具链所需要的库和源代码,最终生成交叉编译工具链。方法二、通过 Crosstool 脚本工具来 实现一次编译

13、生成交叉编译工具链,该方法相对于方法一要简单许多,并且出错的机会也非常少,建议大多数情况下使用该方法构建交叉编译工具链;方法三、直接通过网上下载已经制作好的交叉编译工具链。 2、分布构建交叉编译工具链制作一般分成六步,主要步骤为: 准备工作:下载好所需要的软件包、准备好内核头文件、组织好目录; 编译 binutils:这个软件包的编译相对简单,一般容易实现; 编译辅助 gcc 编译器:对 gcc 进行简单配置后,编译 gcc,使其不依赖 glibc,只对 c 语言支持,为后面的 glibc 的编译做准备; 编译 glibc 库:在这一步,首先将解压的内核头文件进行配置。在上一步的编译过程中,已

14、经生成了 arm-linux-gcc 这个工具,利用这个工具去编译 glibc 库; 重新编译完整的 gcc:完整 gcc 的编译需要 glibc 库的支持,在第一步的时候 glibc 还没有被编译,所以只能简单配置,生成辅助的 gcc,而在这一步, glibc 库已经编译了,可以使用了,所以,就可以对 gcc 进行完整的编译了; 编译 gdb 调试器:调试器与前面的那些软件包是相互独立的,所以放在最后编译。 3、使用 Crosstool构建交叉编译工具链制作过程和上一节 中分布构建过程原理相似,由于 Crosstool是以 shell的形式编译的,所以只需要以下几步:建立脚本文件、建立配置文

15、件、执行脚本文件即可。其主要步骤为: 准备工作:下载好所需要的软件包、准备好内核头文件、组织好目录; 建立脚本文件:修改针对 arm9 架构的脚本文件; 建立配置文件:主要用于定义配置文件、定义生成编译工具链的名称以及定义编译选项等; 执行脚本文件:执行建立好的脚本文件来编译交叉编译工具; 添加环境变量:将生成的编译工具链路径添加到上一节中介绍到的环境变量 PATH 上去。 第七章 一、填空题。 1、系统加电后运行的第一段软件代码。 2、启动加载模式( Bootloading)、下载模式( Downloading) 3、网络启动、磁盘启动、 Flash 启动 4、初始化 LED、关闭 CPU内

16、部指令数据 cache 二、选择题 C B A D A ASP.NET 简明教程 6 三、叙述题 1、 BootLoader,亦称引导加载程序,是系统加电后运行的第一段软件代码。它是整个系统执行的第一步,所以它的地位在整个嵌入式软件系统中是非常重要的。 2、 Vivi 作为一种 Bootloader,其运行过程分成两个阶段 , 第一阶段的代码在Vivi/arch/s3c2440/head.s 中定义,大小不超过 10 KB,它包括从系统上电后在 0x00000000地址开始执行的部分。这部分代码运行在 Flash 中,它包括对 S3C2440 的一些寄存器、时钟等的初始化 ,然后 跳转到第二阶

17、段执行 ; 第二阶段的代码在 Viviinitmain.c 中,主要进行一些开发板初始化、内存映射和内存管理单元初始化等工作,最后会跳转到 boot_or_Vivi()函数中,接收命令并进行处理。需要注意的是在 Flash 中执行完内存映射后,会将 Vivi代码拷贝到 SDRAM 中执行。 3、 U-Boot 则支持大多 CPU,可以烧写 EXT2、 JFFS2 文件系统映象,支持串口下载、网络下载,并提供了大量的命令。相对于 Vivi,它的使用更复杂,但是可以用来更方便地调试程序; Vivi是 Mizi公司针对 SAMSUNG 的 ARM架构 CPU专门设计的,基本上可以直接使用,命令简单方

18、便。不过其初始版本只支持串口下载,速度较慢。在网上出现了各种改进版本:支持网络功能、 USB 功能、烧写 YAFFS 文件系统映象等。 第八章 一、填空题。 1、 Makefile、配置文件、配置工具。 2、配置命令解释器、配置用户界面。 3、 注释 、 编译目标定义 、 适配段 。 4、 make config、 make menuconfig、 make xconfig、 make config 5、 zImage 二、选择题 C A D D B 三、叙述题 1、 Linux 内核各个部分与内核源码的各个目录都是对应起来的,比如有关驱动的内容,内核中就都组织到“ drive”这个目录中去,

19、有关网络的代码都集中组织到“ net”中。当然,这里有的目录是包含多个部分的内容。具体各个目录的内容组成如下: arch: arch 目录包括了所有和体系结构相关的核心代码。 include: include 目录包括编译核心所需要的大部分头文件,例如与平台无关的头文件在 inc lude/linux 子目录下; init:init 目录包含核心的初始化代码(不是系统的引导代码),有 main.c 和 Version.c 两个文件; mm: mm 目录包含了所有的内存管理代码。与具体硬件体系结构相关的内存管理代码位于 arch/*/mm 目录下; drivers: drivers 目录中是系统

20、中所有的设备驱动程序。它又进一步划分成几类设备驱动,每一种有对应的子目录,如声卡的驱动对应于第 1 章 ASP.NET 概述 7 drivers/sound; ipc: ipc 目录包含了核心进程间的通信代码; modules: modules 目录存放了已建好的、可动态加载的模块; fs: fs 目录存放 Linux 支持的文件系统代码。不同的文件系统有不同的子目录对应,如 ext3 文件系统对应的就是 ext3 子目录; Kernel:Kernel 内核管理的核心代码放在这里。同时与处理器结构相关代码都放在 arch/*/kernel 目录下; net: net 目录里是核心的网络部分代码

21、,其每个子目录对应于网络的一个方面;lib: lib 目录包含了核心的库代码,不过与处理器结构相关的 库代码被放在 arch/*/lib/目录下; scripts: scripts 目录包含用于配置核心的脚本文件; documentation: documentation 目录下是一些文档,是对每个目录作用的具体说明。 2、 将自己开发的内核代码加入到 Linux 内核中,需要有三个步骤。首先确定把自己开发代码放入到内核的位置;其次,把自己开发的功能增加到 Linux 内核的配置选项中,使用户能够选择此功能;最后,构建子目录 Makefile,根据用户的选择,将相应的代码编译到最终生成的 Li

22、nux 内核中去。 主要步骤 有:组织目录结构,配置文件,修改makefile 文件等。 3、 Linux 内核的移植过程比较繁琐,具体步骤如下: 解压内核文件、 修改机器码 、 修改内核源码根目录下的 Makefile 文件 、 修改 “ arch/arm/plat-s3c24xx/common-smdk.c” 文件,修改 Nand Flash 的分区信息和 Nand Flash 的硬件信息 、 修改时钟频率 、 增加 Yaffs2 文件系统的支持 、 配置内核 、 编译 内核等。 4、内核裁剪,主要作用就是为了适应嵌入式系统的小体积、小存储的特点,在内核的大小方面进行裁剪。内核编译之前,通

23、 过配置内核的选项参数进行设置,将不需要的功能删掉,保留系统需要的部分,这样就在一定程序上缩小了生成的镜像文件大小。 第九章 一、填空题。 1、上层用户的应用程序对文件系统的系统调用、虚拟文件系统 VFS、挂载到 VFS 中的各种实际文件系统。 2、 Blkmem 驱动层 、 RAMdisk 驱动层 、 MTD 驱动层 3、 JFFS2、 Yaffs、 Romfs 4、 Ramdisk、 Ramfs/Tmpfs 5、 System V init、 Busybox init 二、选择题 A B B D B 三、叙述题 1、 在 Linxu 根文件系 统中,一般包括这样一些子目录: /etc/、

24、/dev/、 /usr/、 /usr/bin/、 /bin/等。根文件系统的建立需要遵循一定的规则,包括目录的位置及名字等。 用来建立根文件系统的规则被称作文件系统分类标准( Filesystem Hierarchy Standard, FHS),该规则定义了在构建 Linux 根文件系统时文件和目录的名字和存放位置的标准。 ASP.NET 简明教程 8 2、 Busybox 能使用户迅速方便的建立一套相对完整、功能丰富的文件系统,其中包括大量常用的应用程序。 Busybox 将许多常用的 UNIX 命令和工具结合到了一个 单独的可执行程序中。它集成压缩了 Linux 的许多工具和命令。虽然与

25、相应的 GNU工具比较起来,Busybox 所提供的功能和参数略少,但在比较小的系统或者嵌入式系统中, 这些已经足够用了 。 3、参考教材 9.3.2。 4、参考教材 9.3.3。 第十章 一、填空题。 1、块设备文件、字符设备文件、网络设备文件、杂项设备文件。 2、主设备号、次设备号 3、 file_operations、 file、 inode 4、 mknod 5、 ioctl 二、选择题 B D A A D 三、叙述题 1、驱动程序主要提供以下功能 :应用程序通过驱动程序安全有效地访问硬件;驱动程序作为嵌入式系统的中间层软件,它隐藏了底层的细节,从而提高了软件的可移植性和可复用性;驱动

26、程序文件节点可以方便地提供访问权限控制。从下层驱动开发人员的角度来看, Linux 驱动程序就是通过直接操控硬件的软件,来完成下面的功能: 对设备初始化和释放 ;直接读写硬件寄存器来控制硬件; 把数据从内核传送到 硬件和从硬件读取数据;操作设备缓冲区设备;操作输入、输出设备,如键盘、打印机等; 读取应用程序传送给设备文件的数据和回送应用程序请求的数据 ; 检测和处理设备出现的错误 。 2、块 设备文件:通常指一些需要以块(如 512 字节)的方式写入的设备,如 IDE硬盘、SCSI 硬盘、光驱等; 字符型设备文件:通常指可以直接读写,没有缓冲区的设备,如并口、虚拟控制台等; 3、 Linux

27、驱动程序可以通过两种方式集成到内核中去: 一是将其直接编译到内核; 二是将其编写成模块,在需要添加某种硬件的时候,内核可以将其调入。在配置 Linux内核时,可以选择“ Enable loadable module support”选项,来支持可加载内核模块。 4、 Linux 设备驱动程序与外界的接口可以分为如下三个部分: 驱动程序与操作系统内核的接口:这是通过数据结构 file_operations 来完成的。 驱动程序与系统引导的接口:这部分利用驱动程序对设备进行初始化。 驱动程序与设备的接口:这部分描述了驱动程序如何与设备进行交互,这与具体设备密切相关。 第 1 章 ASP.NET 概

28、述 9 5、进行模块编程的一般步骤是:首先建立模块文件,然后编写 makefile 文件,最后使用 inmod 加载模块文件。 6、编写一个字符设备驱动,主要是下面几步: 编写硬件接口函数;建立文件系统与设备驱动程序的接口变量,类型为 struct file_operations 结构体, 并初始化该变量;注册设备到 chrdevs 全局数组中;以模块方式编译驱动源码,并将其加载到内核中;创建设备节点;编写应用程序访问底层设备。 第十一章 一、填空题。 1、视窗、单一文件界面或者多文件界面、标签、菜单 2、窗口系统、字体、输入设备及输入法、屏幕加速 3、 tmake 工具安装包、 Qt/Emb

29、edded 安装包、 Qt 的 X11 版的安装包、 Qt/Embedded 安装包。 4、配置、编译、测试 5、 QDevelop、 Qt designer 二、选择题 B A B D D 三、简答题 略 四、上机题 1、 ( 1)、从 ftp:/ ( 2)、新建一个目录用来编译,具体命令如下: $tar xvf qt-all-opensource-src-4.3.3.tar.gz $mkdir build $cd build ( 3)、配置,进入 build 目录,开始配置安装文件。在命令行中输入以下命令: $cd build $./qt-all-opensource-src-4.3.3/

30、configure -release -no-qvfb -xplatform qws/linux-arm-g+ -embedded arm -no-stl -plugin-sql-sqlite -no-qt3support -no-nis -no-cups -no-iconv -no-qdbus -no-freetype -depths 4, 8, 16, 32 -qt-mouse-linuxtp 配置过程中有一些确认选项,确认之后,我们就可以使用“ gmake”命令编译安装 ( 4) 、编译,在命令行中输入 gmake 命令安装: $gmake $gmake install 2、参见光盘“ /src/第十一章 /computer”。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 试题真题

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。