好文档 - 专业文书写作范文服务资料分享网站

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

天下 分享 时间: 加入收藏 我要投稿 点赞

ASP.NET简明教程 ? 6 ? 三、叙述题

1、BootLoader,亦称引导加载程序,是系统加电后运行的第一段软件代码。它是整个系统执行的第一步,所以它的地位在整个嵌入式软件系统中是非常重要的。

2、Vivi作为一种Bootloader,其运行过程分成两个阶段,第一阶段的代码在Vivi/arch/s3c2440/head.s中定义,大小不超过10 KB,它包括从系统上电后在0x00000000地址开始执行的部分。这部分代码运行在Flash中,它包括对S3C2440的一些寄存器、时钟等的初始化,然后跳转到第二阶段执行;

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

Vivi是Mizi公司针对SAMSUNG的ARM架构CPU专门设计的,基本上可以直接使用,命令简单方便。不过其初始版本只支持串口下载,速度较慢。在网上出现了各种改进版本:支持网络功能、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”这个目录中去,有关网络的代码都集中组织到“net”中。当然,这里有的目录是包含多个部分的内容。具体各个目录的内容组成如下:

arch:arch目录包括了所有和体系结构相关的核心代码。include:include 目录包括编译核心所需要的大部分头文件,例如与平台无关的头文件在include/linux 子目录下; init:init 目录包含核心的初始化代码(不是系统的引导代码),有main.c 和Version.c 两个文件;mm:mm 目录包含了所有的内存管理代码。与具体硬件体系结构相关的内存管理代码位于arch/*/mm 目录下;drivers:drivers 目录中是系统中所有的设备驱动程序。它又进一步划分成几类设备驱动,每一种有对应的子目录,如声卡的驱动对应于

第1章 ASP.NET概述 ? 7 ?

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/common-smdk.c”文件,修改Nand Flash的分区信息和Nand Flash的硬件信息、修改时钟频率、增加Yaffs2文件系统的支持、配置内核、编译内核等。

4、内核裁剪,主要作用就是为了适应嵌入式系统的小体积、小存储的特点,在内核的大小方面进行裁剪。内核编译之前,通过配置内核的选项参数进行设置,将不需要的功能删掉,保留系统需要的部分,这样就在一定程序上缩小了生成的镜像文件大小。 第九章 一、填空题。

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/、/dev/、/usr/、/usr/bin/、/bin/等。根文件系统的建立需要遵循一定的规则,包括目录的位置及名字等。用来建立根文件系统的规则被称作文件系统分类标准(Filesystem Hierarchy Standard,FHS),该规则定义了在构建Linux根文件系统时文件和目录的名字和存放位置的标准。

ASP.NET简明教程 ? 8 ?

2、Busybox能使用户迅速方便的建立一套相对完整、功能丰富的文件系统,其中包括大量常用的应用程序。Busybox将许多常用的UNIX命令和工具结合到了一个单独的可执行程序中。它集成压缩了 Linux 的许多工具和命令。虽然与相应的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、驱动程序主要提供以下功能:应用程序通过驱动程序安全有效地访问硬件;驱动程序作为嵌入式系统的中间层软件,它隐藏了底层的细节,从而提高了软件的可移植性和可复用性;驱动程序文件节点可以方便地提供访问权限控制。从下层驱动开发人员的角度来看,Linux驱动程序就是通过直接操控硬件的软件,来完成下面的功能:对设备初始化和释放;直接读写硬件寄存器来控制硬件;把数据从内核传送到硬件和从硬件读取数据;操作设备缓冲区设备;操作输入、输出设备,如键盘、打印机等;读取应用程序传送给设备文件的数据和回送应用程序请求的数据;检测和处理设备出现的错误。 2、块设备文件:通常指一些需要以块(如512字节)的方式写入的设备,如IDE硬盘、SCSI硬盘、光驱等; 字符型设备文件:通常指可以直接读写,没有缓冲区的设备,如并口、虚拟控制台等;

3、Linux驱动程序可以通过两种方式集成到内核中去: 一是将其直接编译到内核;

二是将其编写成模块,在需要添加某种硬件的时候,内核可以将其调入。在配置Linux内核时,可以选择“Enable loadable module support”选项,来支持可加载内核模块。 4、Linux 设备驱动程序与外界的接口可以分为如下三个部分:

驱动程序与操作系统内核的接口:这是通过数据结构 file_operations来完成的。 驱动程序与系统引导的接口:这部分利用驱动程序对设备进行初始化。

驱动程序与设备的接口:这部分描述了驱动程序如何与设备进行交互,这与具体设备密切相关。

第1章 ASP.NET概述 ? 9 ?

5、进行模块编程的一般步骤是:首先建立模块文件,然后编写makefile文件,最后使用inmod加载模块文件。

6、编写一个字符设备驱动,主要是下面几步:

编写硬件接口函数;建立文件系统与设备驱动程序的接口变量,类型为struct file_operations结构体,并初始化该变量;注册设备到chrdevs全局数组中;以模块方式编译驱动源码,并将其加载到内核中;创建设备节点;编写应用程序访问底层设备。

第十一章 一、填空题。

1、视窗、单一文件界面或者多文件界面、标签、菜单 2、窗口系统、字体、输入设备及输入法、屏幕加速

3、tmake 工具安装包、Qt/Embedded安装包、Qt的X11版的安装包、Qt/Embedded安装包。

4、配置、编译、测试 5、QDevelop、Qt designer

二、选择题 B A B D D 三、简答题 略

四、上机题 1、

(1)、从ftp://ftp.qtsoftware.com/qt/source/下载源码 (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/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”。

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

ASP.NET简明教程?6?三、叙述题1、BootLoader,亦称引导加载程序,是系统加电后运行的第一段软件代码。它是整个系统执行的第一步,所以它的地位在整个嵌入式软件系统中是非常重要的。2、Vivi作为一种Bootloader,其运行过程分成两个阶段,第一阶段的代码在Vivi/arch/s3c2440/head.s中定义,大小不超过10KB,它包
推荐度:
点击下载文档文档为doc格式
6zn7e9v03w9o8y29xxe3
领取福利

微信扫码领取福利

微信扫码分享