使用YAFFS2作為根檔案系統

2021-05-28 05:59:49 字數 1226 閱讀 5368

在我們的專案應用中,有較大的nand flash,而ram資源比較緊張。因此考慮使用nand flash做為根檔案系統,而不採用常見的ramdisk作為rootfs。

使用yaffs2作為根檔案系統,需要注意兩點:

使用yaffs作為rootfs時,需要uboot提供如下啟動引數給核心:

setenv bootargs mem=64m console=ttys0,115200 root=/dev/mtdblock1 rootfstype=yaffs2 rw

1,首先nfs方式啟動linux。 

2,進入開發板linux shell裡。 

3,擦除mtd1。 

eraseall /dev/mtd1

4,把nfs.tar.gz拷貝到/home/radionfs根目錄下。 

5,掛載mtdblock1。 

mount –t yaffs2 /dev/mtdblock1 /mnt

6,解壓根檔案系統到mnt也就是寫到mtdblock1.

cd /mnt

tar xvzf /nfs.tar.gz

7,解除安裝mtd1

umount /mnt

這樣,我們的根檔案系統就固化到nand裡面了。

注:這樣方式需要啟動虛擬機器,進入開發板linux之後才能操作,很不方便。同時在生產階段效率很低。不推薦使用。

yaffs2提供了乙個mkyaffs2image的使用工具,可以直接把我們的根檔案系統打包生成乙個yaffs2的映象,然後使用uboot燒入到nand flash中即可。這種方法不需要啟動虛擬機器和目標板上的linux系統。非常方便,速度也更快捷。

映像打包

yaffs2/utils/mkyaffs2image.c

160行,增加

char oobdata[sparesize];

188行,增加

//return write(outfile,&pt,sparesize);

memset(oobdata,0xff,sparesize);

memcpy(&(oobdata[2]),&pt,sizeof(yaffs_packedtags2));

??? return write(outfile,oobdata,sparesize);

#make

在當前目錄下生成 mkyaffs2image

uboot修改

具體見《uboot.doc》

製作yaffs2檔案系統

由於核心裡沒有yaffs2檔案系統生成功能,所以需要新增補丁。1.fsmakefile.path in fs yaffs2.tgz is the patch for kernel fs makefile 在 kernel fs makefile中新增如下內容 root localhost fs ya...

Yaffs2檔案系統的製作

yaffs2檔案系統的製作網上方法很多,這裡就不在贅述了。主要就是這樣幾步吧。然後,make menuconfig 新增你所需要的選項。busybox就像是乙個工具集,通過它來編譯出我們在linux下面所使用的命令,一些命令工具鏈。然後就是make make install 在 install 目錄...

製作yaffs2檔案系統簡程

平台 ubuntu 目標 jz2440 工具 arm linux gcc 3.4.5 busybox 1.7.0 1.在ubuntu上建立根檔案系統的存放目錄,這裡為 work myfs 命令 mkdir work myfs 2.安裝busybox a.解壓busybox 1.7.0.tar.bz2...