用命令:du 要查看的文件夹的大小 -hs 算出根文件系统的大小将近两百兆(本人自己用的)
1)查看内核分区信息:
内核启动,终端会打印出类似以下这段(每个人的内核打印信息可能不一样,要根据nand 的驱动的配置)
0x000000000000-0x000000100000 : "boot" //0~1M 存放bootloader,也就是u-boot; /dev/mtdblock0
0x000000100000-0x000000600000 : "Kernel" //1M~6M,大小5M,用来存放内核映像。 /dev/mtdblock1
0x000000600000-0x000003600000 : "root_fs" //6M~48M,共42M,用来存放根文件系统 /dev/mtdblock2
0x000003600000-0x000007f00000 : "usr_fs" //48M到最结束,,用来存放用户文件系统 /dev/mtdblock3
xyd2440 # nand write.cramfs 30000000 600000 654000
NAND write: device 0 offset 0x600000, size 0x654000
[root@localhost opt]# du * -hs
133M qt-embedded-arm9
244K tslib
133M qt-embedded-arm9
244K tslib
从上可以看出, qt 的库函数占去了绝大多数的空间,所以需要对这个库进行缩减。
文件系统:
常用文件系统格式:
NFS:网络文件系统 ---开发时候使用这个,方便。
cramfs : 只读文件系统。
jaffs/2 : 比较适合在NorFlash上运行,最初为NorFlash介质发明
yaffs/2 : 比较适合在NandFlash上运行,最初为NandFlash介质发明
fat : U盘,SD,WINdows下常用的文件系统。
ext2/3/4: Linux专用的文件系统。一般Linux都会支持这种文件系统。
NFS:网络文件系统 ---开发时候使用这个,方便。
cramfs : 只读文件系统。
jaffs/2 : 比较适合在NorFlash上运行,最初为NorFlash介质发明
yaffs/2 : 比较适合在NandFlash上运行,最初为NandFlash介质发明
fat : U盘,SD,WINdows下常用的文件系统。
ext2/3/4: Linux专用的文件系统。一般Linux都会支持这种文件系统。
嵌入式常用:cramfs,jffs2,yaffs2。
cramfs 文件系统制作:
1. 下载 cramfs-1.1.tar.gz工具包
工具官网下载地址:http://nchc.dl.sourceforge.net/project/cramfs/cramfs/1.1/cramfs-1.1.tar.gz
2.解压这个压缩包并且编译。
cramfs 文件系统制作:
1. 下载 cramfs-1.1.tar.gz工具包
工具官网下载地址:http://nchc.dl.sourceforge.net/project/cramfs/cramfs/1.1/cramfs-1.1.tar.gz
2.解压这个压缩包并且编译。
一,进入解压后的文件夹中:输入命令 make ,之后会生成几个文件,其中包括根文件制作工具mkcramfs
二,将工具mkcramfs复制到/bin/ 目录下,
三,通过上面将我们的根文件系统缩减到最小的大小,这是输入命令:mkcramfs 根文件系统 *.cramfs ,这样我们就可以生成我们需要的根文件系统的镜像文件了 。
3.
复制生成的cramfs文件系统文件到tftp共享目录下,一会要使用tftp服务下载这个文件。
4.
下载cramfs到NandFlash中。
1)查看内核分区信息:
内核启动,终端会打印出类似以下这段(每个人的内核打印信息可能不一样,要根据nand 的驱动的配置)
0x000000000000-0x000000100000 : "boot" //0~1M 存放bootloader,也就是u-boot; /dev/mtdblock0
0x000000100000-0x000000600000 : "Kernel" //1M~6M,大小5M,用来存放内核映像。 /dev/mtdblock1
0x000000600000-0x000003600000 : "root_fs" //6M~48M,共42M,用来存放根文件系统 /dev/mtdblock2
0x000003600000-0x000007f00000 : "usr_fs" //48M到最结束,,用来存放用户文件系统 /dev/mtdblock3
2)通过tftp将镜像文件下载到内存中
xyd2440 # tftp 30000000 *.cramfs
3)擦除 nandflash
xyd2440 # nand erase 600000 700000 :从6m的地址开始,大小为7m
4)
把内存中的内容写入NandFlash
30000000:数据在内存中的起始地址; 600000:数据下载到NandFlash中的起始地址; 654000:数据大小(也 可以向上取整)
xyd2440 # nand write.cramfs 30000000 600000 654000
NAND write: device 0 offset 0x600000, size 0x654000
5)
修改环境变量,注意root=/dev/mtdblock2 要根据自己的内核分区信息而定。
xyd2440 # setenv bootargs noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0 rootfstype=cramfs
xyd2440 # setenv bootargs noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0 rootfstype=cramfs
5.加载 Linux内核到nandflash中
。。。。。。。。。。。。。。。。。。。
修改u-boot默认启动命令(实际是bootcmd这个环境变量)
/*nboot 32000000 0 100000 说明:从第0片NandFlash 100000 地址处把Linux内核映像读取出来,存放在32000000 这个地址上 */
xyd2440 # set bootcmd 'nboot 32000000 0 100000;bootm 32000000'
/*nboot 32000000 0 100000 说明:从第0片NandFlash 100000 地址处把Linux内核映像读取出来,存放在32000000 这个地址上 */
xyd2440 # set bootcmd 'nboot 32000000 0 100000;bootm 32000000'
6 jaffs2文件系统
解压,编译,安装: make && make install
yaffs2........ 同理。