[U-Boot] dfu: dfu and UBI Volumes

Lukasz Majewski l.majewski at samsung.com
Mon May 27 09:02:54 CEST 2013


Hi Heiko,

> Hello Tom,
> 
> Am 24.05.2013 19:12, schrieb Tom Rini:
> > On Fri, May 24, 2013 at 07:42:01PM +0300, Pantelis Antoniou wrote:
> >> Hi Heiko,
> >>
> >> On May 24, 2013, at 7:39 PM, Heiko Schocher wrote:
> >>
> >>> Hello,
> >>>
> >>> just digging in DFU support in U-Boot for an upcoming board
> >>> support based on an AM335x. This board support uses for example a
> >>> rootfs in an UBI Volume on a NAND flash, and this should be
> >>> updated with dfu ...
> >>>
> >>> How To do this? Current state on this board is to erase the rootfs
> >>> mtd partition with a nand erase and write the new image using
> >>> dfu_nand.c ... which calls in the end nand_write ... which is ...
> >>> lets say ... not the prefered way on an UBI volume ...
> >>>
> >>> How to solve this? Any ideas?
> >>
> >> Well, what would you like ideally to do? Why is nand_write not
> >> ideal for a UBI volume.
> >>
> >> Note that dfu will skip over the bad blocks... 
> > 
> > Presumably because they want to replace say ubi0:rootfs (and leave
> > ubi0:user-data and ubi0:u-boot-env and so forth alone) rather than
> > write in a new ubi container of everything.
> > 
> > I would suggest that, so long as our existing UBI infrastructure
> > allows this, you add a new method, dfu_ubi which takes care of
> > programming things.  This shouldn't be too bad to write as I've
> > heard the existing infrastucture was easily expanded for SPI (and
> > patches are pending a little more clean up prior to posting).
> 
> This sounds easy ... but they have also raw nand partitions, for
> example spl partitions on one nand flash ... for which dfu_nand.c
> fits perfectly ... is it possible to use dfu_nand.c and another
> dfu_xxx.c at the same time?

I'm not so familiar with nand devices handling, but in my opinion we
shall create dfu_ubi.c file. 

I think that, nand part of dfu handling shall be separated from ubi,
even if UBI itself is layed on nand.

However, Tom and Pantelis shall give their opinion, since they spent a
lot of time on forcing dfu_nand.c to work.


> 
> I would say no, if I understand the code right:
> - starting dfu with "dfu interface={nand or mmc} ..."
> 
> and after that, you can not switch anymore between nand or mmc, right?
> 
> You must press Ctrl-C to end dfu and start it again for switching
> to another interface ...
> 
> Or should I look to add ubi support to drivers/dfu/dfu_nand.c?
> 
> Something like:
> Add in dfu_fill_entity_nand a "else if (!strcmp(st, "ubipart")) {"
> (Did not looked deeper in this, if this is a possible way... and
>  thinking about it ... it is not the correct way, ubi should be
>  seperate, because it maybe runs also on nor flash ...)
> 
> So, the best way would be, to switch in "dfu nand" mode between
> subinterfaces ... like "raw", "part", "ubi", ...
> 
> Ah, looking in drivers/dfu/dfu_mmc.c, they use dfu->layout
> for switching between DFU_RAW_ADDR, DFU_FS_FAT, DFU_FS_EXT4...
> 
> After all ... should we add a DFU_UBI and add this to
> drivers/dfu/dfu_nand.c?
> 
> bye,
> Heiko



-- 
Best regards,

Lukasz Majewski

Samsung R&D Poland (SRPOL) | Linux Platform Group


More information about the U-Boot mailing list