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

Heiko Schocher hs at denx.de
Tue Jul 23 15:12:03 CEST 2013


Hello Scott,

Am 22.07.2013 23:24, schrieb Scott Wood:
> On 07/18/2013 11:32:14 PM, Heiko Schocher wrote:
>> 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?
>
> In the meantime, should you be using WITH_DROP_FFS when "ubi" is set? Though we really should be skipping FFs at the end of each block, rather than just at the end of the image.

Yes, but this would be another patch, as this patch did not
touch the nand write part ...!

>> - changes for v2:
>> - do not use spread = 1 for nand_erase_opts, to prevent
>> errormessage if there are bad blocks in the erase range.
>>
>> - changes for v3:
>> - add comment from Marek Vasut:
>> - prevent losing memory
>> - added comment from Lukasz Majewski:
>> - move code to dfu_nand.c dfu_flush_medium_nand()
>>
>> - changes for v4:
>> - add comment from Lukasz Majewski:
>> - move ubi var to internal struct struct nand_internal_data
>> ---
>> drivers/dfu/dfu_nand.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++
>> include/dfu.h | 2 ++
>> 2 Dateien geändert, 60 Zeilen hinzugefügt(+)
>>
>> diff --git a/drivers/dfu/dfu_nand.c b/drivers/dfu/dfu_nand.c
>> index 07dee89..c0f8adf 100644
>> --- a/drivers/dfu/dfu_nand.c
>> +++ b/drivers/dfu/dfu_nand.c
>> @@ -148,11 +148,43 @@ static int dfu_read_medium_nand(struct dfu_entity *dfu, u64 offset, void *buf,
>> return ret;
>> }
>>
>> +static int dfu_flush_medium_nand(struct dfu_entity *dfu)
>> +{
>> + int ret = 0;
>> +
>> + /* in case of ubi partition, erase rest of the partition */
>
> Did you have a chance to investigate the errors you saw when erasing the whole partition up front? If there's other DFU data in the partition that needs to be preserved, then replace "partition" with "area reserved for this image".

Currently no :-(

But I hope to get the chance to fix this in the correct way, by
introducing an "ubi format ..." command ...

bye,
Heiko
-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany


More information about the U-Boot mailing list