[U-Boot] dfu: dfu and UBI Volumes

Wolfgang Denk wd at denx.de
Tue May 28 07:55:03 CEST 2013


Dear Heiko,

In message <51A427A8.8090709 at denx.de> you wrote:
>
> > Where exactly is this 8 MB limit coming into play?
> 
> You find this in drivers/dfu/dfu.c:
> 
> static unsigned char __aligned(CONFIG_SYS_CACHELINE_SIZE)
>                                    dfu_buf[DFU_DATA_BUF_SIZE];

Ah, so it is a DFU restriction!

Well, this is a design problem that needs to be fixed.

> As I read in code: Raw nand partitions fill the above buffer, if
> it is full -> flush to nand, and go on ... so no limit for them.

So this boils down to the question whether there is some "incremental
ubi write" method.

Hello UBI experts?

> drivers/dfu/dfu_mmc.c use (another?, why?) buffer:
> 
> static unsigned char __aligned(CONFIG_SYS_CACHELINE_SIZE)
>                                 dfu_file_buf[CONFIG_SYS_DFU_MAX_FILE_SIZE];
...
> and use this buffer for not raw partitions ... and this buffer
> gets flushed, only if the complete file is transfered, as the
> README states:
> 
>                 CONFIG_SYS_DFU_MAX_FILE_SIZE
>                 When updating files rather than the raw storage device,
>                 we use a static buffer to copy the file into and then write
>                 the buffer once we've been given the whole file.  Define
>                 this to the maximum filesize (in bytes) for the buffer.
>                 Default is 4 MiB if undefined.

This makes very little sense to me.  Why do we need another (and even
smaller) buffer when we already have one?

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"We don't have to protect the environment -- the Second Coming is  at
hand."                                                   - James Watt


More information about the U-Boot mailing list