[U-Boot] [PATCH v2] dfu, nand, ubi: add partubi alt settings for updating ubi partition

Lukasz Majewski l.majewski at samsung.com
Tue Jul 16 10:19:07 CEST 2013


Hi Heiko,

> Hello Lukasz,
> 
> Am 16.07.2013 09:41, schrieb Lukasz Majewski:
> > Hi Heiko,
> >
> >> updating an ubi partition needs a completely erased mtd partition,
> >> see:
> >> http://lists.infradead.org/pipermail/linux-mtd/2011-May/035416.html
> >>
> >> So, add partubi alt setting for the dfu_alt_info environment
> >> variable to mark this partition as an ubi partition. In case we
> >> update an ubi partition, we erase after flashing the image into the
> >> partition, the remaining sektors.
> >>
> >> Signed-off-by: Heiko Schocher<hs at denx.de>
> >> Cc: Pantelis Antoniou<panto at antoniou-consulting.com>
> >> Cc: Tom Rini<trini at ti.com>
> >> Cc: Lukasz Majewski<l.majewski at samsung.com>
> >> Cc: Kyungmin Park<kyungmin.park at samsung.com>
> >> Cc: Marek Vasut<marex at denx.de>
> >> Cc: Wolfgang Denk<wd at denx.de>
> >>
> >> ---
> >>
> >> - This patch is also a good starting point to fix up updating ubi,
> >> as we currently use "nand erase" for erasing the sektors. This is
> >>    not the prefered way for writing an ubi image, see:
> >>    http://www.linux-mtd.infradead.org/faq/ubi.html#L_flash_img
> >>
> >>    This must be fixed ... we have no "ubiformat" in u-boot, or?
> >>
> >> - changes for v2:
> >>    - do not use spread = 1 for nand_erase_opts, to prevent
> >>      errormessage if there are bad blocks in the erase range.
> >> ---
> >>   drivers/dfu/dfu.c      | 30 +++++++++++++++++++++++++++++-
> >>   drivers/dfu/dfu_nand.c | 26 ++++++++++++++++++++++++++
> >>   include/dfu.h          |  2 ++
> >>   3 Dateien geändert, 57 Zeilen hinzugefügt(+), 1 Zeile entfernt(-)
> >>
> >> diff --git a/drivers/dfu/dfu.c b/drivers/dfu/dfu.c
> >> index 0521752..7ba7026 100644
> >> --- a/drivers/dfu/dfu.c
> >> +++ b/drivers/dfu/dfu.c
> >> @@ -23,6 +23,7 @@
> >>   #include<errno.h>
> >>   #include<malloc.h>
> >>   #include<mmc.h>
> >> +#include<nand.h>
> >>   #include<fat.h>
> >>   #include<dfu.h>
> >>   #include<linux/list.h>
> >> @@ -176,6 +177,34 @@ int dfu_write(struct dfu_entity *dfu, void
> >> *buf, int size, int blk_seq_num) ret = dfu->flush_medium(dfu);
> >>   		printf("\nDFU complete CRC32: 0x%08x\n",
> >> dfu->crc);
> >>
> >> +		/* in case of ubi partition, erase rest of the
> >> partition */
> >> +		if (dfu->ubi == 1) {
> >> +			int ret;
> >> +			nand_info_t *nand;
> >> +			/* erase complete partition */
> >> +			nand_erase_options_t opts;
> >> +
> >> +			if (nand_curr_device<  0 ||
> >> +			    nand_curr_device>=
> >> CONFIG_SYS_MAX_NAND_DEVICE ||
> >    ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - this config won't be defined at
> >    devices, which don't have NAND memory (like Trats).
> >    Due to that Trats board is not building.
> >
> >    Please remove memory type dependent code from the common dfu
> > code.
> 
> Oh... Hmm... maybe I move this code to drivers/dfu/dfu_nand.c
> and make there a dfu_nand_flush() ?

Sounds like a good idea :-). I would prefer to encapsulate NAND (MMC)
code at dfu_nand.c (dfu_mmc.c) file.


> 
> bye,
> Heiko



-- 
Best regards,

Lukasz Majewski

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


More information about the U-Boot mailing list