1、Hosting environment:VMare Ubuntu10.04
2、Cross-compiling environment:arm-2009q3.tar.bz2
3、Development board:QT6410
4、nanflash:K9F2G08(256M)
5、linux -version:Linux-2.6.39
6、uboot-version:u-boot-2010.06
-------cramfs文件系统之安装内核模块,在QT6410移植linux-2.6.39 笔记(二)-添加NANDFLASH分区 ( 见 ) 的基础上重新配置内核并编译
root@bootloader:/home/eilian/development/Linux/linux-2.6.39#make menuconfig
加入文件系统的支持
│ │ File systems --->
│ │ [*] Miscellaneous filesystems --->
│ │ <*> Compressed ROM file system support (cramfs) #支持cramfs
<*> yaffs2 file system support #支持yaffs2
│ │ -*- 512 byte / page devices
配置好后保存退出
root@bootloader:/home/eilian/development/Linux/linux-2.6.39#make uImage
root@bootloader:/home/eilian/development/Linux/linux-2.6.39#make modules ARCH=arm CROSS_COMPILE=arm-linux-
root@bootloader:/home/eilian/development/Linux/linux-2.6.39#make modules_install ARCH=INSTALL_MOD_PATH=/home/eilian/development/rootfs
至此文件系统已完善,再接下来就是要将roots压缩成cramfs
-------- 编译cramfs制作工具
从下载cramfs-1.1.tar.gz。然后执行
root@bootloader:/home/eilian/development/Tools#tar zxvf cramfs-1.1.tar.gz
root@bootloader:/home/eilian/development/Tools/cramfs-1.1#make
编译完成之后,会生成mkcramfs和cramfsck两个可执行文件,其中mkcramfs工具是用来创建cramfs文件系统的,而cramfsck工具则用来进行cramfs文件系统的释放以及检查。将这两个文件拷贝到/usr/local/bin目录下,方便使用.
root@bootloader:/home/eilian/development/Tools/cramfs-1.1#cpmkcramfs /usr/local/bin
root@bootloader:/home/eilian/development/Tools/cramfs-1.1#cpcramfsck /usr/local/bin
---------mkcramfs的命令格式
mkcramfs [-h] [-e edition] [-i file] [-n name] dirname outfile
mkcramfs的各个参数解释如下:
-h: 显示帮助信息
-e edition:设置生成的文件系统中的版本号
-i file: 将一个文件映像插入这个文件系统之中(只能在Linux2.4.0以后的内核版本中使用)
-n name: 设定cramfs文件系统的名字
dirname: 指明需要被压缩的整个目录树
outfile: 最终输出的文件
cramfsck的命令格式:
cramfsck [-hv] [-x dir] file
cramfsck的各个参数解释如下:
-h: 显示帮助信息
-x dir: 释放文件到dir所指出的目录中
-v: 输出信息更加详细
file: 希望测试的目标文件
--------压缩rootfs根文件系统生成 cramfs
root@bootloader:/home/eilian/development#mkcramfs ./rootfs ./cramfs
---------通过SD卡一键烧写将cramfs烧写到NANDFLASH中
当前,NandFlash分区情况如下:
-------------------------------------------------------------------------------------------------------------
NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V 8-bit)
Creating 4 MTD partitions on "NAND 256MiB 3,3V 8-bit":
0x000000000000-0x000000100000 : "Bootloader"
0x000000100000-0x000000600000 : "Kernel"
0x000000600000-0x000007e00000 : "User"
0x000007e00000-0x000010000000 : "File System"
-------------------------------------------------------------------------------------------------------------
值得注意的事:修改uboot中启动参数
setenv bootargs 'root=/dev/mtdblock2 rootfstype=cramfs console=ttySAC0,115200'
注意:启动参数里没有写上init=/linuxrc,所以启动默认是按照busybox的配置文件来进行的.
另一个要注意的就是:如果没SD卡怎么办?怎么一键烧写,身边有个朋友说,没SD卡那还烧个毛。。。。。。。
好了这样做,同理打开超级终端(uboot已烧入nand的第一分区)
U-Boot 2010.06 (Dec 12 2011 - 18:39:28) for QT6410
**********************************************
** u-boot-2010.06
** Updated for QT6410 Board
** Version 1.0 (11-12-15)
** Author: eilian
** blog:
** E-mail: 305075262@qq.com
**********************************************
CPU: S3C6410@667MHz
Fclk = 667MHz, Hclk = 133MHz, Pclk = 66MHz (ASYNC Mode)
Board: QT6410
DRAM: 128 MiB
NAND: 256 MiB
*** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
Net: dm9000
Hit any key to stop autoboot: 0
QT6410#
将上面制作好的cramfs通过tftp服务下载到DDR(放心这个cramfs只有9M,DDR有128M呢),再把cramfs从内存中写入nandflash,操作如下
QT6410# tftp 50000000 cramfs
写nand前需要先擦除nand,我们需要将cramfs写到nandflash的0x000000600000-0x000007e00000处
QT6410#nand erase 0x000000600000 0x000007e00000
QT6410#nand write 50000000 0x000000600000 12000000
将DDR中50000000处的cramfs 写入nandflash,写到那个地方?0x000000600000开始处