`
isiqi
  • 浏览: 16464612 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

增加u-boot对ubi的支持

阅读更多

最近需要让u-boot支持ubi,方便下载ubi根文件系统。


由于参照网上的文章http://blog.chinaunix.net/u3/96428/showart_2275685.html做还是有一些错误,所以总结一下自己的移植。

软件版本:
Linux内核:2.6.27.8
u-boot:201006
LZO:LZO-2.03
zlib:zlib-1.2.5
mtd-utils:mtd-utils-20090606

我使用的是smartarm3250开发板,首先移植开发板提供的u-boot-1.3.3到u-boot-201006。因为旧版本的u-boot不支持ubifs,当然是先移植u-boot了。

然后cd u-boot-2010.06/
修改include/configs/smartarm3250.h


(1)增加以下宏定义:
#if 1
#define MTDIDS_DEFAULT "nand0=nandflash0"
//定义默认的分区,这个分区尽量和你所使用的linux内核的分区一致,并且不要跳过任何不用的区域(比如我的params分区实际只有256k,它后面是256k保留的区域,由于后面分区的偏移是根据前面分区的大小推算的,因此我把保留分区合并到params)。我的分区有五个,编号从0~4。
#define MTDPARTS_DEFAULT "mtdparts=nandflash0:"1536k(bootloder)"\
"512k(params)"\
"4m(kernel)"\
"16m(safefs)"\
"-(root)"
#endif //end of yll

#if 1 //yll:UBI support
#define CONFIG_MTD_DEVICE 1
#define CONFIG_MTD_PARTITIONS 1
#define CONFIG_CMD_MTDPARTS
#define CONFIG_CMD_UBIFS
#define CONFIG_CMD_UBI
#define CONFIG_LZO 1
#define CONFIG_RBTREE 1
#endif//end of yll

(2)修改传给Linux内核的参数
#define CONFIG_BOOTARGS "ubi.mtd=4 root=ubi0:rootfs console=ttyS0,115200 mem=64M rootfstype=ubifs rw"
ubi在最后一个分区(第四个分区)上,根文件系统的类型是ubifs。

(3)修改malloc空间上限
#define CONFIG_SYS_MALLOC_LEN (1024 * 1024)
事实证明,CONFIG_SYS_MALLOC_LEN 的大小至少要有1M(1024*1024),否则u-boot会报告12号错误。
顺便说一下,u-boot的错误号定义在include/asm-generic/error.h,其中12号错误的定义是“#defineENOMEM 12/* Out of memory */”,内存不够了嘛。

(4)保证没有定义CONFIG_MTD_NAND_VERIFY_WRITE
如果定义了这个宏,请注释掉,否则会有5号错误( I/O error )。
http://www.linux-mtd.infradead.org/faq/ubi.html#L_subpage_verify_fail有对这个问题的专门描述:
I get "ubi_io_write: error -5 while writing 512 bytes to PEB 5:512"
If you have a 2048 bytes per NAND page device, and have CONFIG_MTD_NAND_VERIFY_WRITE enabled in your kernel, you will need to turn it off. The code does not currently (as of 2.6.26) perform verification of sub-page writes correctly. As UBI is one of the few users of sub-page writes, not much else seems to be affected by this bug.
虽然是说Linux内核配置,可是u-boot中同样有CONFIG_MTD_NAND_VERIFY_WRITE ,在smartarm3250.h中将这个宏注释掉,问题解决。看来是内核的问题,既然u-boot很大程度上使用了Linux内核的驱动,应该是ubi驱动的问题。


好了,我对u-boot的修改就这么多,而且所有的修改都在include/configs/smartarm3250.h中。

下面还需要修改内核配置。

分享到:
评论

相关推荐

    mtd-utils-ubi-1.5.0-2.el6.nux.i686.rpm

    mtd-utils-ubi-1.5.0-2.el6.nux.i686.rpm安装包,需要的可以下载安装,mtd-utils-ubi工具

    MTK 平台uboot下升级版本方法.docx

    在升级 U-Boot 版本后,需要将本地代码更新到最新,并且将内核代码 Clean 重新编译,以生成支持在 boot 下升级的内核和文件系统(image 文件夹下 kernel、rootfs.ubi)。 在 U-Boot 下升级 kernel 和 rootfs 的方法...

    Tekkaman_Ninja的uboot移植详细文档

    - U-Boot支持多种平台和操作系统,使得开发者可以在不同平台上快速进行移植工作。 - 具有良好的代码结构和易于扩展性,便于添加新功能或适应特定需求。 - 因此,熟悉U-Boot对于开发者来说是一个很有价值的技能,...

    openwrt-by-981213-2015-03-21-ar71xx-nand-wndr4300-ubi-factory.img

    openwrt-by-981213-2015-03-21-ar71xx-nand-wndr4300-ubi-factory.img 网件4300 openwrt 支持多拨 文件共享 迅雷远程下载

    2416 UBOOT

    u-boot-2009.11_TQ2416_V1.8.tar.bz2 u-boot的源码(支持硬件ECC,支持USB烧写,支持UBI烧写,支持yaffs烧写,支持tftp,支持SD卡自动烧写等特性)

    UBI文件系统移植总结

    为了使U-Boot支持UBI文件系统,需修改U-Boot的配置文件`include/configs/smdk2416.h`,添加必要的宏定义以启用UBI和UBIFS支持。例如,定义`CONFIG_CMD_UBI`、`CONFIG_CMD_UBIFS`等,并设置相关的闪存设备和分区参数...

    openwrt-19.07.4-ar71xx-nand-wndr4300-ubi-factory.img

    openwrt 19.0.7 for wndr4300 V1 自编译开启128M, 默认编译未增加新包。自用未发现问题。

    9260linux 系统移植及使用方法

    - **版本特性**:此处介绍了U-Boot 2011-03/06版本的主要特点及其对AT91SAM9260的支持情况。 ##### 3.2 SAM-BA烧写U-Boot - **烧写工具**:SAM-BA是一款专门用于Atmel微控制器的编程工具,可用于烧写U-Boot到目标...

    UBI 文件系统使用指南1

    在u-boot环境中使用UBI文件系统,需要确保u-boot也支持UBI,并正确配置了相关参数。通常需要执行以下操作: - 加载UBI模块。 - 初始化UBI设备。 - 将UBI卷挂载到指定的加载点。 ### **5. 结论** UBI文件系统是针对...

    openwrt-18.06.4-ar71xx-nand-wndr4300-ubi-factory.img

    WNDR4300V1 OpenWrt 18.06.4 128M内存固件,需要在让4300进入tftp模式进行升级。

    君正Linux_开发指南.pdf

    - U-BOOT是用于多种嵌入式平台的开放源代码启动加载程序。 - **配置和编译U-BOOT**: - 通过`make <board>_config`命令选择合适的配置文件。 - 使用`make`命令进行编译。 - **烧录U-BOOT到目标板**: - 可以通过...

    uboot201607移植记录

    ### U-Boot 201607 版本在 PLC 平台上的移植记录与经验分享 #### 一、前言 随着技术的发展,为了追求更高效、更稳定的系统性能,更新U-Boot版本成为了必然的选择。本文将详细介绍如何将U-Boot 201607版本移植到PLC...

    RT-AC86U_384.14_0_cferom_ubi-koolshare.w

    RT-AC86U_384.14_0_cferom_ubi-koolshare

    汽车保险的发展趋势--ubi论文.doc

    \n\nUBI车险的市场前景广阔,随着科技的进步和消费者对个性化服务需求的增长,UBI有望成为未来汽车保险市场的主流。保险公司需要积极拥抱技术创新,完善数据采集和分析能力,同时,政策法规也需要适应这种新型保险...

    mtd-utils-1.5.0-2.el6.nux.i686.rpm

    mtd-utils-1.5.0-2.el6.nux.i686.rpm安装包,需要的可以下载安装,mtd-utils工具

    linux_nand_flash_guide_CN

    - **u-boot**: U-Boot (Universal Boot Loader) 是一个广泛使用的开源启动加载程序,常用于嵌入式系统的引导。 - **烧录工具**: - **usbboot**: 特别是对于 JZ4740 和 JZ4750 芯片组支持较好,但不支持 JZ4730。 -...

Global site tag (gtag.js) - Google Analytics