嵌入式Linux系统内核的配置、编译和烧写

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二 嵌入式Linux系统内核的配置、编译和烧写

1.实验目的

1)掌握交叉编译的基本概念;

2)掌握配置和编译嵌入式Linux操作系统内核的方法;

3)掌握嵌入式系统的基本架构。

2.实验环境

1)装有Windows系统的计算机;

2)计算机上装有Linux虚拟机软件;

3)嵌入式系统实验箱及相关软硬件(各种线缆、交叉编译工具链等等)。

3.预备知识

1)嵌入式Linux内核的配置和裁剪方法;

2)交叉编译的基本概念及编译嵌入式Linux内核的方法;

3)嵌入式系统的基本架构。

4.实验内容和步骤

4.1 内核的配置和编译——配置内核的MMC支持

1)由于建立交叉编译器的过程很复杂,且涉及汇编等复杂的指令,在这里

我们提供一个制作好的编译器。建立好交叉编译器之后,我们需要完成

内核的编译,首先我们要有一个完整的Linux内核源文件包,目前流行

的源代码版本有Linux 2.4和Linux 2.6内核,我们使用的是Linux 2.6内核;

2)实验步骤:

[1]以root用户登录Linux虚拟机,建立一个自己的工作路径(如用命令

“mkdir ‐p /home/user/build”建立工作路径,以下均采用工作路径

/home/user/build),然后将“cross‐3.3.2.tar.bz2、dma‐linux‐2.6.9.tar.gz、

dma‐rootfs.tar.gz”拷贝到工作路径中(利用Windows与虚拟机Linux

之间的共享目录作为中转),并进入工作目录;

[2]解压cross‐3.3.2.tar.bz2到当前路径:“tar ‐jxvf cross‐3.3.2.tar.bz2”;

[3]解压完成后,把刚刚解压后在当前路径下生成的“3.3.2”文件夹移

动到“/usr/local/arm/”路径下,如果在“/usr/local/”目录下没有“arm”

文件夹,用户创建即可;

[4]解压“dma‐linux‐2.6.9.tar.gz”到当前路径下:

tar ‐zxvf dma‐linux‐2.6.9.tar.gz

解压完成后,在当前目录下生成“linux‐2.6.9”文件夹。

[5]配置内核的MMC支持:进入内核源代码所在目录,即“linux‐2.6.9”,

输入“make menuconfig”后回车,弹出如下窗口:

用上下键选择“MMC/SD Card Support”,回车后显示:

按空格直到“MMC support”前出现“*”,以同样方式选择出现的几项如下:

然后按两次“Esc”键,提示你是否保存,选择“Yes”,至此内核MMC 驱动添加完毕。

[6]修改文件“Makefile”:输入“gedit Makefile”回车,弹出gedit窗口:

加入如下两行:

ARCH=arm

CROSS_COMPILE=/usr/local/arm/3.3.2/bin/arm‐linux‐

保存并关闭。

[7]编译内核:输入后“./compile‐dma‐270”后回车,开始编译,编译

成功时的现象是:

生成的内核映像文件“zImage”保存在“./arch/arm/boot/”目录下,

至此内核的配置和编译过程结束。

4.2 根文件系统的建立

1)在嵌入式系统中,大多数文件系统是从存储器中直接被加载的,但有时

受到ROM 或FLASH 大小的限制,文件系统要经过压缩放在存储器中,

这时就需要在RAM 中分配一块区域将文件系统解压后,再将文件系统

挂载到系统中,这种技术被称为“RAM Disk”,也称“RAM 盘”技术;

内核可以从存储器中导出RAM盘镜像,作为根文件系统来使用;在启动

时,内核首先检查引导选项是否存在一个initrd,如果有,内核就从指定的存储介质中获得压缩或未压缩的文件系统镜像,并导入到RAM盘中,将其挂载作为根文件系统;

2)下面主要介绍几种比较常用的文件系统:ROMfs文件系统是使用最多的

文件系统,它是一种简单、紧凑和只读的文件系统;ROMfs 顺序存储文件数据,并可以在uClinux支持的存储设备上直接运行文件系统,这样可以在系统运行时节省许多RAM空间。Cramfs文件系统是针对Linux内核

2.4之后的版本所设计的一种新型文件系统,也是压缩和只读格式的,其

主要优点是将文件数据以压缩形式存储,在需要运行时进行解压缩;由于它存储的文件形式是压缩的格式,所以文件系统不能直接在Flash上运行;虽然这样可以节约很多Flash存储空间,但是文件系统运行需要将大量的数据拷贝到RAM中,消耗了RAM空间。JFFS2日志文件系统是专门针对闪存的文件系统,除了有日志功能,还有负载平衡、垃圾收集等,并且源码公开。YAFFS2(Yet Another Flash File System)文件系统是一种和JFFSx类似的闪存文件系统,和JFFS2相比它减少了一些功能,所以速度更快,而且对内存的占用比较小;YAFFS自带NAND芯片驱动,并且为嵌入式系统提供了直接访问文件系统的API。除了上面介绍的文件系统之外,还有RAMDISK(一种基于内存的文件系统)、TrueFFS等等;

3)Linux内核在系统启动时的最后操作之一就是加载根文件系统,根文件系

统中存放了嵌入式系统使用的所有应用程序、库及一些需要用到的服务;

由于Linux受到UNIX系统发展的影响,Linux文件系统的组织和UNIX相同;根文件系统中每一个顶级目录都有特定的用途和目的,有些目录是为了多用户模式服务,在大多数没有用户和管理员的嵌入式Linux中,建立一个根文件系统可以不考虑大部分在多用户下需要注意的问题,下表列出了根文件系统顶层目录大致结构:

目录 内容

bin 基本命令的可执行文件

boot 内核及启动需要用到的一些文件

dev 设备文件

etc 系统配置文件,包括启动文件

home 用户目录

lib 基本库,例如c 库和内核模块

mnt 临时映射文件系统的映射点(映射目标)

proc 内核及进程信息的虚拟文件系统

相关文档
最新文档