U-Boot: using nand write to flash an ubi image, ubi part fails
Lars Michael
lh_post at yahoo.com
Thu Sep 29 23:44:08 EDT 2011
--- On Thu, 29/9/11, Matthew L. Creech <mlcreech at gmail.com> wrote:
> On Wed, Jun 1, 2011 at 3:57 AM, Lars
> Michael <lh_post at yahoo.com> wrote:
> > Using mkfs.ubifs and ubinize I have created an image
> with 5 volumes. In Linux I could flash it using "ubiformat
> /dev/mtd1 -f /root/ubi.img" and attach it using "ubiattach
> /dev/ubi_ctrl -m 1". It worked.
> >
> > In production I would prefer to write the image from
> U-Boot. So in U-Boot I used "nand erase" then "nand write"
> to flash the image. Then I want to attach by "ubi part"
> command - but this fails: "UBI error: ubi_init: UBI error:
> cannot initialize UBI, error -17"
> >
>
> Basically, this isn't a valid combination: "nand write"
> doesn't know
> anything about UBI, and a UBIFS image isn't suitable for
> flashing
> directly to NAND - it expects to sit on top of UBI.
Hi Matthew,
I agree, which is why I used ubinize to create a UBI image (with 5 UBIFS images) and then tried to write that image.
> There are 2 ways to get it working:
>
> 1. Don't use "nand write". If U-Boot is built with
> UBI support, you
> can use "ubi write" to write a UBI image to flash. I
> _think_ you can
> use this to overwrite an existing volume with a new image,
> preserving
> ECs (haven't tried it myself). It certainly works
> fine to write a new
> image to blank flash.
>
> 2. Use the "ubinize" tool to create an image suitable for
> writing
> directly to NAND. This takes a UBIFS image and
> "wraps" it to turn it
> into a UBI image, which you can then use with "nand
> write".
This is what I am doing (or plan to do). But to get it to work, I need
the space fixup feature for the nand write in U-Boot. I got that feature in Linux, so in Linux it works. Unfortunately it is not easy to patch
that one in my 2009.08 U-Boot.
Thanks for your comments.
Regards
Lars
More information about the linux-mtd
mailing list