Sitara升级U-Boot那些事(支持ubifs)

转自http://bbs.21ic.com/icview-300872-1-1.html

基于Sitara的产品,大家都会用到比较大的Flash,不管你用没用,反正我用了。

文件 系统做出来还 比较胖的。好 人习惯性的沿用了用惯了的JFFS2来生成要烧写的文件。这样的交给生产线时不可避免的可能出现如下问题:
1. JFFS2的image是与文件系统大小一比一的,32MB的文件系统就对应32MB大小的rootfs.jffs2文件。而NAND FLASH都是有坏块的,U-Boot烧写JFFS2文件,那就是一个一个块挨着去写去,遇到坏块就跳到一下一个块。root 设备对应在的分区大小是多大合适。想充分利用FLASH容量,就意味JFFS2文件很可能刷不上(或是把别人分区的 数据给干掉了),而保证刷上就意味着浪费FLASH。
2. 你做的产品的寿命比别人用黑牌NAND做出来的产品还差。 不要怀疑,肯定是这样的,JFFS2的出生就是为着NOR FLASH的。

有的人说了,那我们可以用YAFFS2吧试的结果就是对于现在的NAND, 这种Page为2KiB, block为128KiB的,YAFFS确实有点老态胧肿了。

Linus说了,就像从一个小学什么女教导主任飞船式任命成女副市长一样,任命UBIFS为Linux的一个标准大容量FLASH用文件系统吧。
反正简历什么的都是国家机密,我们也整不清。那就试一下吧!
UBIFS确实不错,均衡擦写,大page大block的缓冲管理,都一级棒!

Linux从2.6.27开始支持UBIFS.

U-Boot从啥时开始支持,我不知道,我知道的是TI提供的Sitara SDK里的U-Boot不支持UBI。
那就升级U-Boot来支持吧。到哪里去升级,我就不告诉你是 http://www.denx.de/wiki/U-Boot/WebHome

元旦前后分别从denx那下了两次U-Boot. 分别从beagle拷修(拷贝修改)了配置,发现元旦前的能用,而元旦后的x-loader加载完u-boot.bin后就沿任何反映了。整搞了一天,跟呀看呀,发现代码都没问题。
姥姥,最近发现元旦后的版本将CONFIG_SYS_TEXT_BASE的值从之前的0x80008000改成了0x80100000。

朋友们注意。有升级U-Boot的,记得核对一下这个值。 0x80100000是之前SitraraSDK里的x-loader所不能正确中转的入口。留神!

如何在U-Boot中启用UBIFS

要打开UBI命令,其实简单
#define CONFIG_CMD_UBI
#define CONFIG_CMD_UBIFS
#define CONFIG_CMD_MTDPARTS
#define CONFIG_MTD_DEVICE
#define CONFIG_MTD_PARTITIONS
#define CONFIG_RBTREE
#define CONFIG_LZO
#define CONFIG_SYS_MALLOC_LEN  (1024 * 1024)

#define MTDIDS_DEFAULT "nand0=nand"

#define MTDPARTS_DEFAULT "mtdparts=nand:0x80000@0x0(xloader),"\
                "0x1c0000@0x80000(uboot),"\
                "0x20000@0x240000(params),"\
                "0x300000@0x280000(linux),"\
                "-(ubifs)"
#define MTD_ACTIVE_PART "nand,4"


这时编译出来的u-boot就支持了如下的命令:
  1.   mtdparts:  用来给NAND分区
  2.   nand erase.part: 用来擦除指的分区
  3.  UBI用来管理UBI分区及其上的卷
   4.  ubifsmount ubifsls ubifsload等用来对ubifs卷上的文件进行访问

如何在U-Boot中创建ubifs的卷
启动目标系统进入到u-boot命令行下按如下步骤操作。
1. 设置NAND的分区
blacksword.david@gmail.com #mtdparts default
2. 对ubi要用到的NAND分区进行erase操作
blacksword.david@gmail.com #nand erase.part fs
3. 将fs分区指定成ubi分区
blacksword.david@gmail.com #ubi part fs
4. 在ubi分区fs中创建ubifs卷
blacksword.david@gmail.com #ubi create rootfs 2000000
   上面的数字表示要创建的卷的容量,为16进制数  即32MiB
5. 在ubi分区fs中删除一个ubifs卷
blacksword.david@gmail.com #ubi remove volname

完事后, 在uboot的bootargs中设置:
              root=ubi0:rootfs ubi.mtd=4 rootfstype=ubifs
      即root为ubi0上的rootfs分区, ubi0是mtd设备上的第4个区块


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值