您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 嵌入式Linux系统内核的配置、编译和烧写
实验二嵌入式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 内核及进程信息的虚拟文件系统root root用户目录sbin 用于系统管理的可执行程序tmp 临时文件,在SDRAM中建立usr 该目录的二级目录包含大部分对大多数用户很有用的应用程序和文档4)实验步骤: [1]解压“dma‐rootfs.tar.gz”到当前路径下:“tar ‐zxvf dma‐rootfs.tar.gz”; [2]制作根文件系统f1.jffs2:拷贝Windows目录mkfs下的文件mkfs.jffs2到虚拟机相应目录之下(即与“dma‐rootfs.tar.gz”在同一目录下),之后运行如下命令生成根文件系统: ./mkfs.jffs2 ‐r ./rootfs ‐o f1.jffs2 ‐e 0x40000 ‐‐pad=0x01000000 至此,制作根文件系统完成。 4.3 准备虚拟端口GiveIO 实验步骤: 1)在Windows系统下,进入“GiveIOInstaller”目录中,双击“GiveIOInstaller.exe”启动“GiveIO Installer”程序,显示如下界面: 2)点击“Install Service”按钮,启动GiveIO服务,显示界面为: 保留此窗口(即让此程序运行),GiveIO虚拟端口准备完毕。 4.4 烧写BLOB 实验步骤: 1)拷贝光盘上的“JFlash_27x”文件夹到计算机,如下图所示: 2)点击开始‐程序‐附件‐命令提示符,打开命令行终端,并进入“JFlash_27x”目录,然后输入“JFlashMM.exe pxa270 blob”(注意:1 输入后先不要按“Enter”键;2 blob文件应首先从tftp‐download目录下拷贝到JFlash_27x目录下,或者在命令行上给出blob文件所在的完整路径则无需拷贝): 3)把烧写数据线插入板子上的JTAG头,确保硬件连接正常后,拨动电源开关上电,输入“Enter”键,开始烧写: 4)烧写完成后,会给出烧写成功的提示,如下图所示: 至此,烧写blob完成。 4.5 烧写文件系统 实验步骤: 1)把前面编译好的内核和制作好的文件系统——f1.jffs2、zImage拷贝到Windows下的目录“tftp‐download”之中; 2)点击Windows“开始菜单”,选择“设置‐网络连接”,禁用VMware的两个网络;同时,配置本地连接的IP地址、子网掩码(特别注意:配置之前请记录PC机原来所使用的IP地址和子网掩码,本实验完成之后,要求按原样设置回去,实验结束时老师要检查!另外,VMware的两个网络实验结束时,也要求重新启用!),并用交叉网线将PC与开发板连接起来,IP 地址:192.168.0.100,子网掩码:255.255.255.0; 3)进入“Cisco TFTP Server”目录,双击“TFTPServer.exe”,运行该服务器; 4)启动TFTP服务器之后,点击菜单“查看‐选项”,对服务器参数进行配置,其中最重要的是设置服务器的根目录,显然该目录应设置为“tftp‐download”(注意是完整路径,可通过“浏览”按钮选择); 5)板子重新上电,会看到如下所示界面,在BLOB启动过程,按“Enter”或者“Space”键,进入BLOB命令终端; 6)“blobhelp”,输入help命令,查看所有命令; 7)“blobinitethernet”启动BLOB的以太网支持,命令执行后,可看到网口的LED开始闪烁,表示网络初始化成功; 8)“blobsetip s 192.168.0.100”配置TFTP Server的IP地址为192.168.0.100,和刚才配置的PC机的IP地址要相同; 9)“blobsetip c 192.168.0.101”配置TFTP Client的IP地址为192.168.0.101,这就是配置板子的IP地址; 10)“blobtftp f1.jffs2”通过TFTP服务下载文件系统f1.jffs2到内存; 11)“blobfwrite 0xa1000000 0x280000 0x1000000”烧写文件系统到Flash; 至此文件系统f1.jffs2烧写完成。 4.6 烧写内核 实验步骤(紧接着前面的实验,因此blob已经启动,且网络已经初始化): 1)“blobtftp zImage”通过TFTP服务下载zImage文件到内存; 2)“blobfwrite 0xa1000000 0x80000 0x200000”烧写zImage到Flash; 至此烧写zImage成功。 4.7 更新BLOB 1)如果想烧写新版本的BLOB,可以使用BLOB的自我更新功能,不需要每次都用“JFlashMM.exe”烧写工具,这样可以提高烧写速度; 2)实验步骤(紧接着前面的实验,因此blob已经启动,且网络已经初始化): [1]把板子上电重新引导,进入BLOB命令终端; [2]“blobtftp blob”通过TFTP服务把BLOB下载到内存; [3]“blob fwrite 0xa1000000 0x0 0x80000”烧写BLOB到Flash中; 至此成功更新BLOB; [4]重新上电,BLOB成功引导Linux内核。 4.8 启动操作系统 把BLOB、文件系统和内核都烧写成功后,重新上电,BLOB成功引导Linux内核,进入Linux的命令终端。 5.实验要求和实验报告 1)实验前要求准备实验预习报告(即实验目的、实验环境、预备知识、实验内容和步骤,实验内容和步骤自己简单总结一下即可,无需照搬实验指导书,尤其是无需贴太多图片); 2)实验报告必须按照附录1的格式撰写; 3)每位同学请撰写一份自己的实验报告,不同组的实验报告不能雷同,凡是出现雷同情况的组,本次实验分数均记为零;同一组的实验总结部分不得雷同,凡是出现雷同情况的组员,本次实验分数均记为零; 4)实验内容应包含(但不限于)以下内容: [1]总结从内核
本文标题:嵌入式Linux系统内核的配置、编译和烧写
链接地址:https://www.777doc.com/doc-5737932 .html