OK335xS 256M 512M nand flash make ubifs hacking

/*********************************************************************************
 *              OK335xs 256M 512M nand flash make ubifs hacking
 * 声明:
 *     本文主要是记录分析如何生成ubifs文件系统。
 *
 *                                         2015-11-14 晴 深圳 南山平山村 曾剑锋
 ********************************************************************************/

                        \\\\\\\\\\\-*- 目录 -*-///////////
                        |   一、for 256M nand flash
                        |   二、for 512M nand flash
                        |   三、mkfs.ubifs Options:
                        |   四、ubinize Options:
                        |   五、分析示例:
                        ---------------------------------

一、for 256M nand flash
    ./mkfs.ubifs –F -q -r rootfs -m 2048 -e 126976 -c 2047 -o  ubifs.img
    ./ubinize -o ubi.img -m 2048 -p 128KiB ubinize.cfg

二、for 512M nand flash
    ./mkfs.ubifs –F -q -r rootfs_v2 -m 2048 -e 126976 -c 4040 -o  ubifs.img
    ./ubinize -o ubi.img -m 2048 -p 128KiB ubinize.cfg

三、mkfs.ubifs Options:
    -r, -d, --root=DIR       build file system from directory DIR
    -m, --min-io-size=SIZE   minimum I/O unit size
    -e, --leb-size=SIZE      logical erase block size
    -c, --max-leb-cnt=COUNT  maximum logical erase block count
    -o, --output=FILE        output to FILE
    -j, --jrn-size=SIZE      journal size
    -R, --reserved=SIZE      how much space should be reserved for the super-user
    -x, --compr=TYPE         compression type - "lzo", "favor_lzo", "zlib" or
                             "none" (default: "lzo")
    -X, --favor-percent      may only be used with favor LZO compression and defines
                             how many percent better zlib should compress to make
                             mkfs.ubifs use zlib instead of LZO (default 20%)
    -f, --fanout=NUM         fanout NUM (default: 8)
    -F, --space-fixup        file-system free space has to be fixed up on first mount
                             (requires kernel version 3.0 or greater)
    -k, --keyhash=TYPE       key hash type - "r5" or "test" (default: "r5")
    -p, --orph-lebs=COUNT    count of erase blocks for orphans (default: 1)
    -D, --devtable=FILE      use device table FILE
    -U, --squash-uids        squash owners making all files owned by root
    -l, --log-lebs=COUNT     count of erase blocks for the log (used only for
                             debugging)
    -v, --verbose            verbose operation
    -V, --version            display version information
    -g, --debug=LEVEL        display debug information (0 - none, 1 - statistics,
                             2 - files, 3 - more details)
    -h, --help               display this help text

四、ubinize Options:
    Example: ubinize -o ubi.img -p 16KiB -m 512 -s 256 cfg.ini - create UBI image
             'ubi.img' as described by configuration file 'cfg.ini'
    -o, --output=<file name>     output file name
    -p, --peb-size=<bytes>       size of the physical eraseblock of the flash
                                 this UBI image is created for in bytes,
                                 kilobytes (KiB), or megabytes (MiB)
                                 (mandatory parameter)
    -m, --min-io-size=<bytes>    minimum input/output unit size of the flash
                                 in bytes
    -s, --sub-page-size=<bytes>  minimum input/output unit used for UBI
                                 headers, e.g. sub-page size in case of NAND
                                 flash (equivalent to the minimum input/output
                                 unit size by default)
    -O, --vid-hdr-offset=<num>   offset if the VID header from start of the
                                 physical eraseblock (default is the next
                                 minimum I/O unit or sub-page after the EC
                                 header)
    -e, --erase-counter=<num>    the erase counter value to put to EC headers
                                 (default is 0)
    -x, --ubi-ver=<num>          UBI version number to put to EC headers
                                 (default is 1)
    -Q, --image-seq=<num>        32-bit UBI image sequence number to use
                                 (by default a random number is picked)
    -v, --verbose                be verbose
    -h, --help                   print help message
    -V, --version                print program version

五、分析示例:
    1. for 256M nand flash:
        1. ./mkfs.ubifs –F -q -r rootfs -m 2048 -e 126976 -c 2047 -o  ubifs.img
            -F:file-system free space has to be fixed up on first mount
            -q:未知
            -r:build file system from directory DIR
            -m:最小输入输出大小为2KiB(2048bytes),一般为页大小
            -e:逻辑可擦除块大小为124KiB=(每块的页数-2)*页大小=(64-2)*2KiB=124KiB=126976bytes
            -c:最多逻辑可擦除块数目为2047(2047*128KiB=255.8MiB),这个可根据ubi volume来设置,实际上是设置此卷的最大容量。
            -o:output to FILE
        2. for 256M nand flash ubinize.cfg:
            [ubifs]
            mode=ubi
            image=ubifs.img         // mkfs.ubi生成的源镜像
            vol_id=0                // 卷序号
            vol_size=231MiB         // 卷大小
            vol_type=dynamic        // 动态卷
            vol_name=rootfs         // 卷名
            vol_flags=autoresize
        3. ./ubinize -o ubi.img -m 2048 -p 128KiB ubinize.cfg
            -o:输出文件名
            -m:最小输入输出大小为2KiB(2048bytes),一般为页大小
            -p:物理可擦出块大小为128KiB=每块的页数*页大小=64*2KiB=128KiB
            -s:用于UBI头部信息的最小输入输出单元,一般与最小输入输出单元(-m参数)大小一样。

    2. for 512M nand flash:
        1. ./mkfs.ubifs –F -q -r rootfs_v2 -m 2048 -e 126976 -c 4040 -o  ubifs.img
            -F:file-system free space has to be fixed up on first mount
            -q:未知
            -r:build file system from directory DIR
            -m:最小输入输出大小为2KiB(2048bytes),一般为页大小
            -e:逻辑可擦除块大小为124KiB=(每块的页数-2)*页大小=(64-2)*2KiB=124KiB=126976bytes
            -c:最多逻辑可擦除块数目为2047(2047*128KiB=505MiB),这个可根据ubi volume来设置,实际上是设置此卷的最大容量。
        2. for 512M nand flash ubinize.cfg:
            [ubifs]
            mode=ubi
            image=ubifs.img         // mkfs.ubi生成的源镜像
            vol_id=0                // 卷序号
            // 卷大小(当然,个人感觉这里是错误的,在另外一份文件里面看到是492MiB,尚未验证)
            vol_size=231MiB
            vol_type=dynamic        // 动态卷
            vol_name=rootfs         // 卷名
            vol_flags=autoresize
        3. ./ubinize -o ubi.img -m 2048 -p 128KiB ubinize.cfg
            -o:输出文件名
            -m:最小输入输出大小为2KiB(2048bytes),一般为页大小
            -p:物理可擦出块大小为128KiB=每块的页数*页大小=64*2KiB=128KiB
            -s:用于UBI头部信息的最小输入输出单元,一般与最小输入输出单元(-m参数)大小一样。

 

时间: 2024-07-29 14:45:40

OK335xS 256M 512M nand flash make ubifs hacking的相关文章

Hi3531添加16GByte(128Gbit) NAND Flash支持

0.板子上已有Nor Flash了,添加的Nand Flash型号为MT29F128G08CJABAWP,进系统挂接NAND作为一个分区 1.修改uboot u-boot-2010.06/drivers/mtd/nand/nand_spl_ids.c 第108行,添加这个NAND Flash { {0x2C, 0x88, 0x05, 0xC6, 0x89, 0x00, 0x00, 0x00}, 8, _16G, NULL, "MT29F128G08CJABA", _4K,  _1M,

使用JLink间接烧写S3C2410、S3C2440开发板Nor、Nand Flash的方法

1. 简要说明 JLink的调试功能.烧写Flash的功能都很强大,但是对于S3C2410.S3C2440的Flash操作有些麻烦:烧写Nor Flash时需要设置SDRAM,否则速率很慢:烧写Nand Flash只是从理论上能够达到,但是还没有人直接实现这点. 本文使用一个间接的方法来实现对S3C2410.S3C2440开发板的Nor.Nand Flash的烧写.原理为:JLink可以很方便地读写内存.启动程序,那么可以把一个特制的程序下载到开发板上的SDRAM去,并运行它,然后使用这个程序来

Davinci DM6446开发攻略-UBOOT-2009.03移植2 nand flash的烧写

  很长一段时间没有更新博客了,是因为要推出新开发方案和做好客户服务工作,忙得不易乐乎.有关DAVINCI U-BOOT的移植,以前写过一篇u-boot-1.3.4(2008年的),其实和这个u-boot-2009.03差别不大,只不过这个u-boot-2009.03是从TI的网站上下载的,是DAVINCI系列最新的u-boot,也适合DM6467和DM365/368,移植的方法承接<Davinci DM6446开发攻略--u-boot-1.3.4移植(1)>,而本篇着重介绍nand flas

NAND flash和NOR flash的区别

FLASH简介 使用的智能手机除了有一个可用的空间(如苹果8G.16G等),还有一个RAM容量,很多人都不是很清楚,为什么需要二个这样的芯片做存储呢,这就是我们下面要讲到的.这二种存储设备我们都统称为"FLASH",FLASH是一种存储芯片,全名叫Flash EEPROM Memory,通地过程序可以修改数据,即平时所说的"闪存".Flash又分为NAND flash和NOR flash二种.U盘和MP3里用的就是这种存储器. 相"flash存储器&quo

S3c2440如何利用JLINK烧写U-boot到NAND Flash中

      很多同学使用笔记本作为自己的ARM开发和学习的平台,绝大多数笔记本都没有并口,也就是无法使用JTag调试和烧写程序到Nand Flash中,幸好我们还有JLINK,用JLINK烧写U-boot到Nor Flash中很简单,大部分NOR Flash都已经被JLink的软件SEGGER所支持,而新手在学习的时候经常会实验各种各样的命令,最悲剧的莫过于将NAND Flash中原有的bootloader给删除了,这时候开发板上电后由于没有bootloader,硬件没有被初始化,在NAND F

Linux块设备驱动之NAND FLASH

讲解驱动最好的办法是看代码,然后看注释,相信凭你的智慧能够轻松理解的.有些人就会问了,我怎么看不懂呢?这里我得声明一下了,你如果连LED驱动都没有写过,驱动的框架你又怎么会了解呢?   写驱动的人只需更改一些硬件相关的代码和一些时序.这个看起来工作很简单,实际上你得看懂整个框架,你才能明白那些地方需要修改.废话不多说还是直接上代码. /* 参考   * drivers\mtd\nand\s3c2410.c  */    struct s3c_nand_regs {/*C中struct只是定义这种

FL2440的U-boot-2009.08移植(五)uboot架构中NAND Flash驱动修改

移植NAND花了我一下午的时间才把他弄明白,解决错误的途中,我也学到了更多的东西,希望大家自己要尝试亲手移植,不要老是用别人的补丁文件,自己你懂手做了才真正是你的东西.       分析了一下Uboot中Nandflash的驱动,u-boot-2009.08使用的是和Linux内核一样的MTD(内存技术设备)架构.在Uboot下对Nand的支持体现在命令行下实现对nand flash的操作,为:nand info,nand device,nand read,nand write,nand ere

NAND Flash将难以摆脱被淘汰的命运

  NAND Flash的普及给发展缓慢的存储市场注入了新的动力,虽然相比较机械硬盘(HDD)的价格仍然较高,但凭借着出色的性能表现,全闪存阵列已经稳稳的占据了存储高端市场.目前,很多公司的关键性业务上均采用了高端的全闪存存储. NAND Flash开创了固态硬盘(SSD)时代 虽然,NAND Flash开创了固态硬盘(SSD)时代,优势已经得到了认可.但是,随着新技术的发展,仅仅只是开始的NAND Flash,或将面临着被淘汰的命运. 首先,由美光(Micro)和英特尔(Intel)合作开发的

全面理解SSD和NAND Flash

 Flash Memory又叫做闪存,是一种非易失性存储器.非易失性是指断电之后数据不会丢失,这里就涉及到断电保护(后面详细讲解). 总体思路 1.NAND Flash的用途. 2.NAND Flash规则介绍. 3.SSD固件(Firmware,FW)包括:映射表(Mapping Table).垃圾回收(Garbage Collection).磨损平衡(Wear Leveling,WL)等. 4.补充概念:写入放大(Write Application).预留空间(Over Provisioni