[Linux驱动开发] ramdisk文件系统制作及移植

工程实例

1、重新规划FLASH分区如下:

    [Linux驱动开发] ramdisk文件系统制作及移植_第1张图片

2重新修改内核

    根据“nand flash的布局图,修改内核nandflash分区请修改内核源代码的vi arch/arm/ plat-s3c24xx/common-smdk.c

    [Linux驱动开发] ramdisk文件系统制作及移植_第2张图片

    重新编译内核,后续用新的内核做实验

    $ cp arch/arm/boot/uImage /tftpboot/uImage -f

3烧录内核
    OpenJTAG> tftp 30800000 uImage       (通过tftp协议将/tftpboot中的uImage下载到内存的3080000)

    OpenJTAG> nand erase 60000 200000    (Nand Flash0x60000处开始擦出一块大小为200000(2MB)的空间准备放kernel)

    OpenJTAG> nand write 30800000 60000 200000   (uImage烧录到Nand Flash0x60000)

    OpenJTAG> setenv bootcmd nand read 30800000 60000 200000 \;bootm 30800000   (设置u_boot环境参数)

    OpenJTAG> save

    [Linux驱动开发] ramdisk文件系统制作及移植_第3张图片

    

4重新整理根文件系统:
 $  cd /opt/rootfs
 $  cp -a etc etc_defaults       (etc_defaults做为以后恢复出厂设置的缺省配置信息)  
 $  mkdir ../prepare
 $  cp -a data etc ../prepare    (拷贝data、etc目录以备做成 .jffs2 的文件系统)
 在../prepare/data 目录里面放一些文件文件或者其他数据文件(模拟实际产品中生成的用户数据,但rootfs/data目录我们只是用来挂载的目录,里面不要放数据)
 $  cd ../prepare
 $  mkfs.jffs2 -r ./data -o mydata.jffs2 -e 0x20000 -n  (注意: -e 0x20000: 表示擦除FLASH的扇区大小为128KB[这个参数一定要参考NAND FLASH芯片手册],我们这里参考的是K9F2G08U0B手册)
 $  mkfs.jffs2 -r ./etc -o myetc.jffs2 -e 0x20000 -n 
 $  cp mydata.jffs2 myetc.jffs2 /tftpboot

 在/opt/rootfs/etc/rc.d/rc.local中添加data,etc的挂载命令如下:
 

 重新进到rootfs的上一级目录,重新制作根文件系统(CRAMFS格式)
 $  cd /opt
 $  mkfs.cramfs rootfs myrootfs.cramfs
 $  cp myrootfs.cramfs /tftpboot


 重新在UBOOT中烧录根文件系统并烧录data,etc分区

 烧录根文件系统(myrootfs.cramfs)

 OpenJTAG> tftp 30100000 myrootfs.cramfs

 OpenJTAG> nand erase 260000 800000
 OpenJTAG> nand write.cramfs 30100000 260000 400000

 


 烧录ETC分区:

 OpenJTAG> tftp 30500000 myetc.jffs2
 OpenJTAG> nand erase a60000 100000

 OpenJTAG> nand write 30500000 b60000 20000

 [Linux驱动开发] ramdisk文件系统制作及移植_第4张图片
 
 烧录data分区:

 OpenJTAG> tftp 30600000 mydata.jffs2
 OpenJTAG> nand erase b60000 4a0000
 OpenJTAG> nand write.jffs2 30600000 b60000 20000
 [Linux驱动开发] ramdisk文件系统制作及移植_第5张图片


 再次确认一下uboot的参数:  

 [Linux驱动开发] ramdisk文件系统制作及移植_第6张图片
 

 重新启动开发板,正常情况下,系统就登录进去了,通过df命令可看到,系统按照我们的分区进行挂载了 

 
 很遗憾,一直没有得到预期的结果

 就是我们自己构建的两个文件系统myetc.jffs2mydata.jffs2没有挂载上...大哭

你可能感兴趣的:([Linux驱动开发] ramdisk文件系统制作及移植)