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 <h...@denx.de>
Cc: Pantelis Antoniou <pa...@antoniou-consulting.com>
Cc: Tom Rini <tr...@ti.com>
Cc: Lukasz Majewski <l.majew...@samsung.com>
Cc: Kyungmin Park <kyungmin.p...@samsung.com>
Cc: Marek Vasut <ma...@denx.de>
Cc: Wolfgang Denk <w...@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
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to