zoukankan      html  css  js  c++  java
  • 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参数)大小一样。
  • 相关阅读:
    Android UI 之实现多级列表TreeView
    python小游戏实现代码
    【iOS知识学习】_UITableView简介
    根据指定电话号码得到通讯录上的姓名
    【转载】公钥、私钥、数字签名等知识
    常见的哈希Hash算法 & MD5 & 对称非对称加密 & 海明码
    Mac电脑解压文件unrar用密码问题解决
    一道题目- Find the smallest range that includes at least one number from each of the k lists
    求逆序对数总结 & 归并排序
    【转载】非常棒的算法面试类资源汇总
  • 原文地址:https://www.cnblogs.com/zengjfgit/p/4963986.html
Copyright © 2011-2022 走看看