vim arch/arm/tools/mach-types
让网络系统支持 TCP/IP网络协议 [*] Networking support --->
Networking options ---> [*] TCP/IP networking
[*] IP: kernel level autoconfiguration
#mini6410 MACH_MINI6410 MINI6410 2520 mini6410 MACH_MINI6410 MINI6410 1626 #smdk6410 MACH_SMDK6410 SMDK6410 1626 smdk6410 MACH_SMDK6410 SMDK6410 2520
S3C6410的网卡是dm9000,这里编译内核的时候选上dm9000的设备驱动
支持NFS的网络文件系统
File systems --->
[*] Network File Systems (NEW) ---> <*> NFS client support [*] Root file system on NFS Device Drivers --->
[*] Network device support --->
[*] Ethernet driver support (NEW) ---> <*> DM9000 support
Make xconfig使用鼠标选择对应的选项, make menuconfig使用空格选择相应的选项,每个选项前的括号可以是〔〕、<>和()。中括号中要么是空格,要么是*,尖括号里可以是空格、*和M;小括号里的内容是在所提供的几个选项里选择一个。空格表示不将该功能编译进内核,*表示将该功能编译进内核,M表示将该功能编译成模块,在需要时将其动态插入到内核。
图4-2 内核配置的图形界面修改
3)make xconfig(不推荐使用)
用于X Window下的配置,将配置选项以图形菜单的形式显示出来。 在进行相应的配置的时候,有三种方式选择: Y:将该功能编译进内核;
N:不将该功能编译进内核;
M:将该功能编译成可译载需要时动态插入到内核的模块。
make xconfig使用鼠标选择对应的选项,make menuconfig使用空格选择相应的选项,每个选项前的括号可以是[]、<>和()。中括号中要么是空格,要么是*,尖括号里可以是空格、*和M;小括号里的内容是在所提供的几个选项里选择一个。空格表示不将该功能编译进内核,*表示将该功能编译进内核,M表示将该功能编译成模块,在需要时将其动态插入到内核。
1) 执行make -j2 zImage生成可以移植到开发板的zImage。
其中 –j2 表示使用双核编译,加快编译速度。 使用zImage 自解压内核镜像。
图4-3 内核zImage生成的界面
2)make modules
此命令可以完成对所选的内核选项进行组件化编译,所需时间取决于所选的内核组件选项的多少。还可以使用命令:
# make modules SUBDIRS = drivers/x
将编译好的U-Boot.bin、zImage、rootfs文件系统放在linux系统下的tftpboot下面以便烧写,tftp和nfs配置在第二章已经讲过,配置好可以执行下面操作进行对内核、文件系统的烧写:
1)移植uboot
连接好JTAG并口线,用./JLASH_2410EP_Nor /f:u-boot.bin;
2)移植内核
tftp 0x500080000 zImage /*下载内核到开发板*/ bootm 0x500080000 /*启动内核*/ 3)移植文件系统
tftp 0x50000000 rootfs /*下载文件系统到开发板*/ nand 0x50000000 0x200000 /*将rootfs烧入开发板*/ 移植好的内核启动在超级终端会可以看到如下所示:
图4-4 内核启动界面
4.6本章小结
关于内核移植,主要介绍了Linux2.6的新特性,内核的启动流程以及内核移植要修改的几个重点文件,在内核添加Flash分区信息,使内核的mtd驱动能识别Flash分区,最后,介绍了内核的配置和编译。最终在选用的开发板上移植了U-Boot并成功加载了Linux2.6内核,系统配置、编译正确,能够正常运行。
5
文件系统制作
文件系统是操作系统的一个重要组成部分, 通过对操作系统所管理的存储
空间的抽象,向用户提供统一的、对象化的访问接口,屏蔽对物理设备的直接操作和资源管理。
5.1 yaffs文件系统简介
Yaffs(Yet Another Flash File System)文件系统是专门针对NAND闪存设计的嵌入式文件系统,目前有YAFFS和YAFFS2两个版本,两个版本的主要区别之一在于YAFFS2能够更好的支持大容量的 NAND FLASH芯片。 这也就是系统加载YAFFS2时给切换到YAFFS1的原因,YAFFS文件系统会根据NAND Flash的页面的大小来主动的配置是使用YAFFS1还是YAFFS2。
目前支持FLASH的文件系统还有JFFS和JFFS2,JFFS和JFFS2对NOR Flash的支持还是非常好的,是基于日志的文件系统。具体的介绍请查看相关文件。与NOR相比,NAND不是完全可靠的,每块芯片出厂时都有一定比例的坏块存在对数据的存取不是使用地址映射而是通过寄存器的操作,串行存取数据。NAND Flash上的YAFFS文件系统主要包含两个部分,一个部分是NAND Flash上的MTD的驱动,另一个是YAFFS文件系统的支持。其中YAFFS的文件系统与硬件的相关性比较小,我们先完成内核对YAFFS文件系统的支持。
5.2 内核支持YAFFS文件系统
下载下来源码之后,在根目录下存在一个patch-ker.sh,这是一个给linux打补丁的脚本,打上这个补丁之后,内核的源代码就支持yaffs2了,我们来看一下这个脚本的最后部分。脚本中每个命令行必须以TAB键开始,这是基本常识。
首先,解压安装busybox修改Makefile,执行以下命令: # tar jxvf busybox-1.9.2.tar.bz2 # cd busybox-1.9.2 # vim Makefile 对其做如下修改: ARCH ?= arm
CROSS_COMPILE ? = arm-linux- 退出Makefile。
然后通过make menuconfig图形界面根据你的要求进行修改。 # make menuconfig
图5-1 menuconfig目录下的修改
下面是根据文件选项往下一步一步设置的说明: Busybox setting -> build option -> [*]build busybox as a static binary Init Utilities -> [*]init
[*]Support reading as inittab file Shells ->
choose your devifault shell(ash) -> (X) ash
Linux Module Utilities->
[*]Support version 2.2.x to 2.6.x Linux kernels *表示选上,空格表示不选,M表示用到的时候调用。 然后修改文件applets/applets.c 将第21行如下代码注释掉
/* # error Aborting compilation */
否则出现错误: applets/applets.c:21:2: error: # error Aborting compilation。 执行 # make ...
# make CONFIG_PREFIX=/root_01 install
busybox 就被安装到根目录/root_01下了(/root_01下生成 bin linuxrc sbin usr) /root_01是自己在主机根目录下建的一空文件。
图5-2 表示根文件下生成的root_01
linux操作系统在ARM平台上的移植毕业论文
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)