All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution
@ 2013-07-16 15:35 Lukasz Majewski
  2013-07-16 21:27 ` Tormod Volden
                   ` (3 more replies)
  0 siblings, 4 replies; 25+ messages in thread
From: Lukasz Majewski @ 2013-07-16 15:35 UTC (permalink / raw)
  To: u-boot

Dear All,

Since DFU usage at u-boot is spreading to different device types (MMC,
NAND), file systems, raw partitions, ubi, etc, I think that it is a
good moment to unify and structure the form of dfu_alt_info environment
variable.


Proposed new format for single dfu entity:

NAME     | Type | Device | Dev_num | Dev_part | FS   | start | size  | 

where:

Name     - name of the alt setting (as seen by dfu-util -l)
Type     - description of the image (raw, file, img, command [*])
Device   - physical device on which data are stored (mmc, nand, "-")
Dev_num  - number of the device - it is possible to store data via DFU
           on several devices of the same type.
Dev_part - number of partitions on the device.
FS       - information about file system on the device (fat,
	   ext2/ext4, ubi).
start    - start offset from the beginning of the Device (byte or LBA
           number addressed)
size     - maximal number of blocks to be stored on the Device
 	   (expressed with Bytes of LBA number) (protection from
 	   overwriting the whole device)


Example:

NAME     | Type | Device | Dev_num | Dev_part | FS   | start | size  |
----------------------------------------------------------------------
u-boot   | raw  | mmc    | 0       | "-" [**] | "-"  | 0x80  | 0x100 |
uImage   | file | mmc    | 0       | 2        | ext4 | "-"   | "-"   |
root.img | img  | mmc    | 0       | 5        | "-"  | "-"   | "-"   |
root.img | raw  | mmc    | 0       | "-"      | "-"  | 0x1000| 0x4000|

u-boot   | raw  | nand   | 0       | "-"      | "-"  | 0x100 | 0x100 |
uImage   | file | nand   | 0       | 3        | ubi  | "-"   | "-"   | 

command  | cmd  | "-"    | "-"     | "-"      | "-"  | "-"   | "-"   |

[*]  - support for sending command via DFU (see below)
[**] - "-" - indicates that no value is provided for this field.
	Despite of that it is mandatory to facilitate parsing. 


Please share any possible use cases - for now and for the future. My
goal is to devise dfu_alt_info structure which would work for us for a
long time.

After setting up new format, it would be possible to replace different
dfu command variations (i.e. dfu mmc 0, dfu nand) with only one command
"dfu".


------------------------------------------------------------------------
DFU extension - Command execution. 
------------------------------------------------------------------------

As a follow up I plan to add support for sending file filled with
command[s]. This would provide interface for automated tests and
force board to reset itself after emulated reset command from dfu-util
program.

dfu_alt_info = "command cmd - - - - - -;"

and then on host:
dfu-util -aN -D file_with_commands

The end step would be to extend dfu-util to support -C switch, which
would allow to send u-boot command quoted as text:

dfu-util -aN -C "reset"


-- 
Best regards,

Lukasz Majewski

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

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution
  2013-07-16 15:35 [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution Lukasz Majewski
@ 2013-07-16 21:27 ` Tormod Volden
  2013-07-16 21:46   ` Lukasz Majewski
  2013-07-17 10:26 ` Heiko Schocher
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 25+ messages in thread
From: Tormod Volden @ 2013-07-16 21:27 UTC (permalink / raw)
  To: u-boot

On Tue, Jul 16, 2013 at 5:35 PM, Lukasz Majewski wrote:
> The end step would be to extend dfu-util to support -C switch, which
> would allow to send u-boot command quoted as text:
>
> dfu-util -aN -C "reset"

Instead of adding a new, rather u-boot specific option to dfu-util,
would implementation of the commonly used "-" filename for stdin work
for you?

echo "reset" | dfu-util -aN -

Cheers,
Tormod

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution
  2013-07-16 21:27 ` Tormod Volden
@ 2013-07-16 21:46   ` Lukasz Majewski
  0 siblings, 0 replies; 25+ messages in thread
From: Lukasz Majewski @ 2013-07-16 21:46 UTC (permalink / raw)
  To: u-boot

On Tue, 16 Jul 2013 23:27:44 +0200
Tormod Volden <lists.tormod@gmail.com> wrote:

Hi Tormod,

> On Tue, Jul 16, 2013 at 5:35 PM, Lukasz Majewski wrote:
> > The end step would be to extend dfu-util to support -C switch, which
> > would allow to send u-boot command quoted as text:
> >
> > dfu-util -aN -C "reset"
> 
> Instead of adding a new, rather u-boot specific option to dfu-util,
> would implementation of the commonly used "-" filename for stdin work
> for you?

Definitely YES :-).

> 
> echo "reset" | dfu-util -aN -

I think, that above is more versatile solution.

> 
> Cheers,
> Tormod

Regards,
Lukasz Majewski

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20130716/f416b3e9/attachment.pgp>

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution
  2013-07-16 15:35 [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution Lukasz Majewski
  2013-07-16 21:27 ` Tormod Volden
@ 2013-07-17 10:26 ` Heiko Schocher
  2013-07-17 14:34   ` Lukasz Majewski
  2013-07-18  4:17   ` Marek Vasut
  2013-07-18 16:39 ` Tom Rini
  2013-10-31 17:25 ` Lukasz Majewski
  3 siblings, 2 replies; 25+ messages in thread
From: Heiko Schocher @ 2013-07-17 10:26 UTC (permalink / raw)
  To: u-boot

Hello Lukasz,

Am 16.07.2013 17:35, schrieb Lukasz Majewski:
> Dear All,
>
> Since DFU usage at u-boot is spreading to different device types (MMC,
> NAND), file systems, raw partitions, ubi, etc, I think that it is a
> good moment to unify and structure the form of dfu_alt_info environment
> variable.

Full Ack!

> Proposed new format for single dfu entity:
>
> NAME     | Type | Device | Dev_num | Dev_part | FS   | start | size  |
>
> where:
>
> Name     - name of the alt setting (as seen by dfu-util -l)
> Type     - description of the image (raw, file, img, command [*])
> Device   - physical device on which data are stored (mmc, nand, "-")
> Dev_num  - number of the device - it is possible to store data via DFU
>             on several devices of the same type.
> Dev_part - number of partitions on the device.

Should this be "number of the partition on the device"

You mean here the mtd partition for storing, right?

> FS       - information about file system on the device (fat,
> 	   ext2/ext4, ubi).
> start    - start offset from the beginning of the Device (byte or LBA
>             number addressed)
> size     - maximal number of blocks to be stored on the Device
>   	   (expressed with Bytes of LBA number) (protection from
>   	   overwriting the whole device)
>
>
> Example:

Maybe dummy questions ...

> NAME     | Type | Device | Dev_num | Dev_part | FS   | start | size  |
> ----------------------------------------------------------------------
> u-boot   | raw  | mmc    | 0       | "-" [**] | "-"  | 0x80  | 0x100 |
> uImage   | file | mmc    | 0       | 2        | ext4 | "-"   | "-"   |

Is this enough information? Where to store the uImage file on the ext4
partition?

> root.img | img  | mmc    | 0       | 5        | "-"  | "-"   | "-"   |

img means here: getting an image and storing it on the mtd partition
"Dev_part" if start and size are marked with "-", beginning
on start of the partition?

Wouldn't it be better to use here mtd partition names instead
numbers for "Dev_part"?

What if "start" and "size" are filled with values for the "Type" "img"?
Or is this forbidden for the "Type" "img"?

> root.img | raw  | mmc    | 0       | "-"      | "-"  | 0x1000| 0x4000|
>
> u-boot   | raw  | nand   | 0       | "-"      | "-"  | 0x100 | 0x100 |
> uImage   | file | nand   | 0       | 3        | ubi  | "-"   | "-"   |

s/uImage/rootfs.img ? s/file/img ?

For the FS "ubi" we need to specify, how to burn this into nand.
I think we have no "ubi format" command. With "ubi write ..."
we can only write ubi volumes ... and we want here to burn an ubi image,
which was created with ubinize and contains one or more ubi volumes.

Maybe usecase for updating ubi volumes:
ubivolumename   | img | nand   | 0       | 3        | ubivol | "-"   | "-"   |

If you want to update an ubivolume ...

results in this steps:
- get image per dfu @ img_addr
   We need to get here the complete image, as ubi write
   cannot write incremental ...
- ubi part get_mtd_partition_name("Dev_part=3") vid_header_offset
                                                 ^
                                                 From where get we this parameter ...
                                                 value in "start"?
- ubi write img_addr ubivolumename ${filesize}

> command  | cmd  | "-"    | "-"     | "-"      | "-"  | "-"   | "-"   |
>
> [*]  - support for sending command via DFU (see below)
> [**] - "-" - indicates that no value is provided for this field.
> 	Despite of that it is mandatory to facilitate parsing.
>
>
> Please share any possible use cases - for now and for the future. My
> goal is to devise dfu_alt_info structure which would work for us for a
> long time.
>
> After setting up new format, it would be possible to replace different
> dfu command variations (i.e. dfu mmc 0, dfu nand) with only one command
> "dfu".
>
>
> ------------------------------------------------------------------------
> DFU extension - Command execution.
> ------------------------------------------------------------------------
>
> As a follow up I plan to add support for sending file filled with
> command[s]. This would provide interface for automated tests and
> force board to reset itself after emulated reset command from dfu-util
> program.
>
> dfu_alt_info = "command cmd - - - - - -;"
>
> and then on host:
> dfu-util -aN -D file_with_commands
>
> The end step would be to extend dfu-util to support -C switch, which
> would allow to send u-boot command quoted as text:
>
> dfu-util -aN -C "reset"

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

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution
  2013-07-17 10:26 ` Heiko Schocher
@ 2013-07-17 14:34   ` Lukasz Majewski
  2013-07-17 17:32     ` Tormod Volden
  2013-07-18  5:36     ` Heiko Schocher
  2013-07-18  4:17   ` Marek Vasut
  1 sibling, 2 replies; 25+ messages in thread
From: Lukasz Majewski @ 2013-07-17 14:34 UTC (permalink / raw)
  To: u-boot

On Wed, 17 Jul 2013 12:26:35 +0200 Heiko Schocher hs at denx.de wrote,

Hi Heiko,

> Hello Lukasz,
> 
> Am 16.07.2013 17:35, schrieb Lukasz Majewski:
> > Dear All,
> >
> > Since DFU usage at u-boot is spreading to different device types
> > (MMC, NAND), file systems, raw partitions, ubi, etc, I think that
> > it is a good moment to unify and structure the form of dfu_alt_info
> > environment variable.
> 
> Full Ack!
> 
> > Proposed new format for single dfu entity:
> >
> > NAME     | Type | Device | Dev_num | Dev_part | FS   | start |
> > size  |
> >
> > where:
> >
> > Name     - name of the alt setting (as seen by dfu-util -l)
> > Type     - description of the image (raw, file, img, command [*])
> > Device   - physical device on which data are stored (mmc, nand, "-")
> > Dev_num  - number of the device - it is possible to store data via
> > DFU on several devices of the same type.
> > Dev_part - number of partitions on the device.
> 
> Should this be "number of the partition on the device"

No. I made a mistake. It should be "partition to which we want to write"

> 
> You mean here the mtd partition for storing, right?

Yes, number of the partition to store data. The exact address will be
extracted from mtdparts or partitions env variable.

> 
> > FS       - information about file system on the device (fat,
> > 	   ext2/ext4, ubi).
> > start    - start offset from the beginning of the Device (byte or
> > LBA number addressed)
> > size     - maximal number of blocks to be stored on the Device
> >   	   (expressed with Bytes of LBA number) (protection from
> >   	   overwriting the whole device)
> >
> >
> > Example:
> 
> Maybe dummy questions ...
> 
> > NAME     | Type | Device | Dev_num | Dev_part | FS   | start |
> > size  |
> > ----------------------------------------------------------------------
> > u-boot   | raw  | mmc    | 0       | "-" [**] | "-"  | 0x80  |
> > 0x100 | uImage   | file | mmc    | 0       | 2        | ext4 |
> > "-"   | "-"   |
> 
> Is this enough information? Where to store the uImage file on the ext4
> partition?

To store uImage file on ext4/fat/ext2 partition it is enough to only
give:

uImage mmc 0 2, 

which maps to the following command:

ext4write mmc 0:2 0x44000000 /uImage [size]

The file size is taken from number of sent bytes via DFU/USB.

With writing to file system, one need to first store the whole
transmitted data to a buffer and then store the (big) buffer on the
SD/eMMC device.

Since, we aren't supporting "seek" kind of write to current ext4
implementation at u-boot, the "big" buffer must be used.

> 
> > root.img | img  | mmc    | 0       | 5        | "-"  | "-"   |
> > "-"   |
> 
> img means here: getting an image and storing it on the mtd partition
> "Dev_part" if start and size are marked with "-", beginning
> on start of the partition?

No, here img is for example a rootfs image. When storing it on the
eMMC, it would be better to specify destination partition.

> 
> Wouldn't it be better to use here mtd partition names instead
> numbers for "Dev_part"?

I'd prefer to create a new entrance here (Part_name):

NAME | Type | Device | Dev_num | Dev_part | Part_name | FS | start |
size |

I would like to avoid situation with ambiguous fields. One field
shall only serve for one (clear) purpose. When not needed/used - field
shall be marked as "-".

> 
> What if "start" and "size" are filled with values for the "Type"
> "img"? Or is this forbidden for the "Type" "img"?

I think, that each "Type" shall have predefined set of allowed
attributes:

1. img: "Device" + "Dev num" + "Dev parts"
2. raw: "Device" + "Dev num" + "start" + "size"
3. file: "Device" + "Dev num" + "Dev parts" + "FS"

and so on.


> 
> > root.img | raw  | mmc    | 0       | "-"      | "-"  | 0x1000|
> > 0x4000|
> >
> > u-boot   | raw  | nand   | 0       | "-"      | "-"  | 0x100 |
> > 0x100 | uImage   | file | nand   | 0       | 3        | ubi  |
> > "-"   | "-"   |
> 
> s/uImage/rootfs.img ? s/file/img ?

NAME: uImage and rootfs.img maps to files sent to board.

The "NAME" is used thereafter to provide exact name for file system
write (ext4write/ fatwrite). 

With DFU the distinction between dfu entities (files, raw images, etc)
is performed via alt settings (-aX switch at dfu-util).

> 
> For the FS "ubi" we need to specify, how to burn this into nand.
> I think we have no "ubi format" command. 

Is already ubi format command available at u-boot? 

_As a side note:_

I'm now developing proof-of-concept idea of executing set of commands
sent to u-boot by dfu-util [***].

Rationale for this is the lack of ability to reset u-boot after sending
data to u-boot via DFU. dfu-util has -R option, but this seems to reset
usb interface, not the target device.


I will set an env:

setenv dfu "dfu mmc 0;${dfu_commands}"

Then at dfu itself, I will read commands to be performed. Then I will
set $dfu_commands env and exit from dfu command. 



> With "ubi write ..."
> we can only write ubi volumes ... and we want here to burn an ubi
> image, which was created with ubinize and contains one or more ubi
> volumes
> 
> Maybe usecase for updating ubi volumes:
> ubivolumename   | img | nand   | 0       | 3        | ubivol | "-"
> | "-"   |
> 
> If you want to update an ubivolume ...
> 
> results in this steps:
> - get image per dfu @ img_addr
>    We need to get here the complete image, as ubi write
>    cannot write incremental ...

So each volume shall have different dfu entity. Then those volumes are
stored at ram with different addresses [*]?

> - ubi part get_mtd_partition_name("Dev_part=3") vid_header_offset
>                                                  ^
>                                                  From where get we
> this parameter ... value in "start"?

So here you get information about the ("Dev_part=3") partition start
offset [**]?

> - ubi write img_addr ubivolumename ${filesize}

Here you combine volumes sent at [*] and store it at correct offset
[**]?

I'm not an expert about ubi, so please be patient with my
questions :-). 

For me it looks like a mixture of ordinary u-boot commands with dfu
transfer[s] needed to perform correct ubi image write. Maybe [***] will
help you?

> 
> > command  | cmd  | "-"    | "-"     | "-"      | "-"  | "-"   |
> > "-"   |
> >
> > [*]  - support for sending command via DFU (see below)
> > [**] - "-" - indicates that no value is provided for this field.
> > 	Despite of that it is mandatory to facilitate parsing.
> >
> >
> > Please share any possible use cases - for now and for the future. My
> > goal is to devise dfu_alt_info structure which would work for us
> > for a long time.
> >
> > After setting up new format, it would be possible to replace
> > different dfu command variations (i.e. dfu mmc 0, dfu nand) with
> > only one command "dfu".
> >
> >
> > ------------------------------------------------------------------------
> > DFU extension - Command execution.
> > ------------------------------------------------------------------------
> >
> > As a follow up I plan to add support for sending file filled with
> > command[s]. This would provide interface for automated tests and
> > force board to reset itself after emulated reset command from
> > dfu-util program.
> >
> > dfu_alt_info = "command cmd - - - - - -;"
> >
> > and then on host:
> > dfu-util -aN -D file_with_commands
> >
> > The end step would be to extend dfu-util to support -C switch, which
> > would allow to send u-boot command quoted as text:
> >
> > dfu-util -aN -C "reset"
> 
> bye,
> Heiko



-- 
Best regards,

Lukasz Majewski

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

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution
  2013-07-17 14:34   ` Lukasz Majewski
@ 2013-07-17 17:32     ` Tormod Volden
  2013-07-18  5:36     ` Heiko Schocher
  1 sibling, 0 replies; 25+ messages in thread
From: Tormod Volden @ 2013-07-17 17:32 UTC (permalink / raw)
  To: u-boot

On Wed, Jul 17, 2013 at 4:34 PM, Lukasz Majewski wrote:
> _As a side note:_
>
> I'm now developing proof-of-concept idea of executing set of commands
> sent to u-boot by dfu-util [***].
>
> Rationale for this is the lack of ability to reset u-boot after sending
> data to u-boot via DFU. dfu-util has -R option, but this seems to reset
> usb interface, not the target device.

Actually, dfu-util -R  sends a DFU_DETACH request before performing
the USB reset. The reason for this was long unclear to me, until I
looked at the uboot dfu code (inherited from openmoko):

http://git.denx.de/?p=u-boot.git;a=blob;f=drivers/usb/gadget/f_dfu.c;h=d7ae0c0c6a9f6a95ca3a702d92636eb25e21253c;hb=HEAD#l314

"Proprietary extension: 'detach' from idle mode and get back to
runtime mode in case of USB Reset. As much as I dislike this, we just
can't use every USB bus reset to switch back to runtime mode, since at
least the Linux USB stack likes to send a number of resets in a row :(
"

The hack/abuse of sending a DFU_DETACH when in DFU mode is not part of
the DFU standard, but dfu-util supports it since openmoko was for long
the major target for dfu-util.

If you don't need to switch back from DFU mode to runtime mode, maybe
you can use this to reset u-boot?

Regards,
Tormod

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution
  2013-07-17 10:26 ` Heiko Schocher
  2013-07-17 14:34   ` Lukasz Majewski
@ 2013-07-18  4:17   ` Marek Vasut
  2013-07-18  5:16     ` Heiko Schocher
  1 sibling, 1 reply; 25+ messages in thread
From: Marek Vasut @ 2013-07-18  4:17 UTC (permalink / raw)
  To: u-boot

Dear Heiko Schocher,

> Hello Lukasz,
> 
> Am 16.07.2013 17:35, schrieb Lukasz Majewski:
> > Dear All,
> > 
> > Since DFU usage at u-boot is spreading to different device types (MMC,
> > NAND), file systems, raw partitions, ubi, etc, I think that it is a
> > good moment to unify and structure the form of dfu_alt_info environment
> > variable.
> 
> Full Ack!
> 
> > Proposed new format for single dfu entity:
> > 
> > NAME     | Type | Device | Dev_num | Dev_part | FS   | start | size  |
> > 
> > where:
> > 
> > Name     - name of the alt setting (as seen by dfu-util -l)
> > Type     - description of the image (raw, file, img, command [*])
> > Device   - physical device on which data are stored (mmc, nand, "-")
> > Dev_num  - number of the device - it is possible to store data via DFU
> > 
> >             on several devices of the same type.
> > 
> > Dev_part - number of partitions on the device.
> 
> Should this be "number of the partition on the device"
> 
> You mean here the mtd partition for storing, right?
> 
> > FS       - information about file system on the device (fat,
> > 
> > 	   ext2/ext4, ubi).
> > 
> > start    - start offset from the beginning of the Device (byte or LBA
> > 
> >             number addressed)
> > 
> > size     - maximal number of blocks to be stored on the Device
> > 
> >   	   (expressed with Bytes of LBA number) (protection from
> >   	   overwriting the whole device)
> > 
> > Example:
> Maybe dummy questions ...
> 
> > NAME     | Type | Device | Dev_num | Dev_part | FS   | start | size  |
> > ----------------------------------------------------------------------
> > u-boot   | raw  | mmc    | 0       | "-" [**] | "-"  | 0x80  | 0x100 |
> > uImage   | file | mmc    | 0       | 2        | ext4 | "-"   | "-"   |
> 
> Is this enough information? Where to store the uImage file on the ext4
> partition?
> 
> > root.img | img  | mmc    | 0       | 5        | "-"  | "-"   | "-"   |
> 
> img means here: getting an image and storing it on the mtd partition
> "Dev_part" if start and size are marked with "-", beginning
> on start of the partition?
> 
> Wouldn't it be better to use here mtd partition names instead
> numbers for "Dev_part"?
> 
> What if "start" and "size" are filled with values for the "Type" "img"?
> Or is this forbidden for the "Type" "img"?
> 
> > root.img | raw  | mmc    | 0       | "-"      | "-"  | 0x1000| 0x4000|
> > 
> > u-boot   | raw  | nand   | 0       | "-"      | "-"  | 0x100 | 0x100 |
> > uImage   | file | nand   | 0       | 3        | ubi  | "-"   | "-"   |
> 
> s/uImage/rootfs.img ? s/file/img ?
> 
> For the FS "ubi" we need to specify, how to burn this into nand.
> I think we have no "ubi format" command.

Try "nand write.trimffs" to write UBI images produced with ubinize .

Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution
  2013-07-18  4:17   ` Marek Vasut
@ 2013-07-18  5:16     ` Heiko Schocher
  2013-07-18  8:09       ` Wolfgang Denk
  0 siblings, 1 reply; 25+ messages in thread
From: Heiko Schocher @ 2013-07-18  5:16 UTC (permalink / raw)
  To: u-boot

Hello Marek,

Am 18.07.2013 06:17, schrieb Marek Vasut:
> Dear Heiko Schocher,
>
>> Hello Lukasz,
>>
>> Am 16.07.2013 17:35, schrieb Lukasz Majewski:
>>> Dear All,
>>>
>>> Since DFU usage at u-boot is spreading to different device types (MMC,
>>> NAND), file systems, raw partitions, ubi, etc, I think that it is a
>>> good moment to unify and structure the form of dfu_alt_info environment
>>> variable.
>>
>> Full Ack!
>>
>>> Proposed new format for single dfu entity:
>>>
>>> NAME     | Type | Device | Dev_num | Dev_part | FS   | start | size  |
>>>
>>> where:
>>>
>>> Name     - name of the alt setting (as seen by dfu-util -l)
>>> Type     - description of the image (raw, file, img, command [*])
>>> Device   - physical device on which data are stored (mmc, nand, "-")
>>> Dev_num  - number of the device - it is possible to store data via DFU
>>>
>>>              on several devices of the same type.
>>>
>>> Dev_part - number of partitions on the device.
>>
>> Should this be "number of the partition on the device"
>>
>> You mean here the mtd partition for storing, right?
>>
>>> FS       - information about file system on the device (fat,
>>>
>>> 	   ext2/ext4, ubi).
>>>
>>> start    - start offset from the beginning of the Device (byte or LBA
>>>
>>>              number addressed)
>>>
>>> size     - maximal number of blocks to be stored on the Device
>>>
>>>    	   (expressed with Bytes of LBA number) (protection from
>>>    	   overwriting the whole device)
>>>
>>> Example:
>> Maybe dummy questions ...
>>
>>> NAME     | Type | Device | Dev_num | Dev_part | FS   | start | size  |
>>> ----------------------------------------------------------------------
>>> u-boot   | raw  | mmc    | 0       | "-" [**] | "-"  | 0x80  | 0x100 |
>>> uImage   | file | mmc    | 0       | 2        | ext4 | "-"   | "-"   |
>>
>> Is this enough information? Where to store the uImage file on the ext4
>> partition?
>>
>>> root.img | img  | mmc    | 0       | 5        | "-"  | "-"   | "-"   |
>>
>> img means here: getting an image and storing it on the mtd partition
>> "Dev_part" if start and size are marked with "-", beginning
>> on start of the partition?
>>
>> Wouldn't it be better to use here mtd partition names instead
>> numbers for "Dev_part"?
>>
>> What if "start" and "size" are filled with values for the "Type" "img"?
>> Or is this forbidden for the "Type" "img"?
>>
>>> root.img | raw  | mmc    | 0       | "-"      | "-"  | 0x1000| 0x4000|
>>>
>>> u-boot   | raw  | nand   | 0       | "-"      | "-"  | 0x100 | 0x100 |
>>> uImage   | file | nand   | 0       | 3        | ubi  | "-"   | "-"   |
>>
>> s/uImage/rootfs.img ? s/file/img ?
>>
>> For the FS "ubi" we need to specify, how to burn this into nand.
>> I think we have no "ubi format" command.
>
> Try "nand write.trimffs" to write UBI images produced with ubinize .

This solves not the erasecounter problem, or?

For UBI we need something like this:
http://www.linux-mtd.infradead.org/doc/ubi.html#L_flasher_algo

But I am not an UBI expert. It is possible I overlook something
obvious ...

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

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution
  2013-07-17 14:34   ` Lukasz Majewski
  2013-07-17 17:32     ` Tormod Volden
@ 2013-07-18  5:36     ` Heiko Schocher
  2013-07-18  7:13       ` Lukasz Majewski
  1 sibling, 1 reply; 25+ messages in thread
From: Heiko Schocher @ 2013-07-18  5:36 UTC (permalink / raw)
  To: u-boot

Hello Lukasz,

Am 17.07.2013 16:34, schrieb Lukasz Majewski:
> On Wed, 17 Jul 2013 12:26:35 +0200 Heiko Schocher hs at denx.de wrote,
>
> Hi Heiko,
>
>> Hello Lukasz,
>>
>> Am 16.07.2013 17:35, schrieb Lukasz Majewski:
>>> Dear All,
>>>
>>> Since DFU usage at u-boot is spreading to different device types
>>> (MMC, NAND), file systems, raw partitions, ubi, etc, I think that
>>> it is a good moment to unify and structure the form of dfu_alt_info
>>> environment variable.
>>
>> Full Ack!
>>
>>> Proposed new format for single dfu entity:
>>>
>>> NAME     | Type | Device | Dev_num | Dev_part | FS   | start |
>>> size  |
>>>
>>> where:
>>>
>>> Name     - name of the alt setting (as seen by dfu-util -l)
>>> Type     - description of the image (raw, file, img, command [*])
>>> Device   - physical device on which data are stored (mmc, nand, "-")
>>> Dev_num  - number of the device - it is possible to store data via
>>> DFU on several devices of the same type.
>>> Dev_part - number of partitions on the device.
>>
>> Should this be "number of the partition on the device"
>
> No. I made a mistake. It should be "partition to which we want to write"
>
>>
>> You mean here the mtd partition for storing, right?
>
> Yes, number of the partition to store data. The exact address will be
> extracted from mtdparts or partitions env variable.

Ok.

>>
>>> FS       - information about file system on the device (fat,
>>> 	   ext2/ext4, ubi).
>>> start    - start offset from the beginning of the Device (byte or
>>> LBA number addressed)
>>> size     - maximal number of blocks to be stored on the Device
>>>    	   (expressed with Bytes of LBA number) (protection from
>>>    	   overwriting the whole device)
>>>
>>>
>>> Example:
>>
>> Maybe dummy questions ...
>>
>>> NAME     | Type | Device | Dev_num | Dev_part | FS   | start |
>>> size  |
>>> ----------------------------------------------------------------------
>>> u-boot   | raw  | mmc    | 0       | "-" [**] | "-"  | 0x80  |
>>> 0x100 | uImage   | file | mmc    | 0       | 2        | ext4 |
>>> "-"   | "-"   |
>>
>> Is this enough information? Where to store the uImage file on the ext4
>> partition?
>
> To store uImage file on ext4/fat/ext2 partition it is enough to only
> give:
>
> uImage mmc 0 2,
>
> which maps to the following command:
>
> ext4write mmc 0:2 0x44000000 /uImage [size]

Hmm... and what if I have my uImage in /boot/ ?

> The file size is taken from number of sent bytes via DFU/USB.

Yes.

> With writing to file system, one need to first store the whole
> transmitted data to a buffer and then store the (big) buffer on the
> SD/eMMC device.

Ok, same for an ubi image.

> Since, we aren't supporting "seek" kind of write to current ext4
> implementation at u-boot, the "big" buffer must be used.

Ok, there are places to optimize ;-)

>>> root.img | img  | mmc    | 0       | 5        | "-"  | "-"   |
>>> "-"   |
>>
>> img means here: getting an image and storing it on the mtd partition
>> "Dev_part" if start and size are marked with "-", beginning
>> on start of the partition?
>
> No, here img is for example a rootfs image. When storing it on the
> eMMC, it would be better to specify destination partition.
>
>>
>> Wouldn't it be better to use here mtd partition names instead
>> numbers for "Dev_part"?
>
> I'd prefer to create a new entrance here (Part_name):
>
> NAME | Type | Device | Dev_num | Dev_part | Part_name | FS | start |
> size |
>
> I would like to avoid situation with ambiguous fields. One field
> shall only serve for one (clear) purpose. When not needed/used - field
> shall be marked as "-".

Ok. but this gives long constructs ...

>> What if "start" and "size" are filled with values for the "Type"
>> "img"? Or is this forbidden for the "Type" "img"?
>
> I think, that each "Type" shall have predefined set of allowed
> attributes:
>
> 1. img: "Device" + "Dev num" + "Dev parts"
> 2. raw: "Device" + "Dev num" + "start" + "size"
> 3. file: "Device" + "Dev num" + "Dev parts" + "FS"
>
> and so on.

If we introduce a "Part_name" this should be also possible:

4. img: "Device" + "Dev num" + "Part_name"
5. file: "Device" + "Dev num" + "Part_name" + "FS"

or?

>>> root.img | raw  | mmc    | 0       | "-"      | "-"  | 0x1000|
>>> 0x4000|
>>>
>>> u-boot   | raw  | nand   | 0       | "-"      | "-"  | 0x100 |
>>> 0x100 | uImage   | file | nand   | 0       | 3        | ubi  |
>>> "-"   | "-"   |
>>
>> s/uImage/rootfs.img ? s/file/img ?
>
> NAME: uImage and rootfs.img maps to files sent to board.
>
> The "NAME" is used thereafter to provide exact name for file system
> write (ext4write/ fatwrite).

Ah! If we have to write in a subdirectory, "NAME" is the fullpath + filename?

> With DFU the distinction between dfu entities (files, raw images, etc)
> is performed via alt settings (-aX switch at dfu-util).
>
>>
>> For the FS "ubi" we need to specify, how to burn this into nand.
>> I think we have no "ubi format" command.
>
> Is already ubi format command available at u-boot?

No.

> _As a side note:_
>
> I'm now developing proof-of-concept idea of executing set of commands
> sent to u-boot by dfu-util [***].

Ok.

> Rationale for this is the lack of ability to reset u-boot after sending
> data to u-boot via DFU. dfu-util has -R option, but this seems to reset
> usb interface, not the target device.

That answers my next question which comed in my mind ...

> I will set an env:
>
> setenv dfu "dfu mmc 0;${dfu_commands}"
>
> Then at dfu itself, I will read commands to be performed. Then I will
> set $dfu_commands env and exit from dfu command.

Hmm... is this not oversized for the "reset board" use case?

>> With "ubi write ..."
>> we can only write ubi volumes ... and we want here to burn an ubi
>> image, which was created with ubinize and contains one or more ubi
>> volumes
>>
>> Maybe usecase for updating ubi volumes:
>> ubivolumename   | img | nand   | 0       | 3        | ubivol | "-"
>> | "-"   |
>>
>> If you want to update an ubivolume ...
>>
>> results in this steps:
>> - get image per dfu @ img_addr
>>     We need to get here the complete image, as ubi write
>>     cannot write incremental ...
>
> So each volume shall have different dfu entity. Then those volumes are
> stored at ram with different addresses [*]?

Yes for every volume have different dfu entity.
You update only one volume with one dfu-util command, or? So
no different addresses needed ...

>> - ubi part get_mtd_partition_name("Dev_part=3") vid_header_offset
>>                                                   ^
>>                                                   From where get we
>> this parameter ... value in "start"?
>
> So here you get information about the ("Dev_part=3") partition start
> offset [**]?

Yes ... what is with the "vid_header_offset" parameter?

>> - ubi write img_addr ubivolumename ${filesize}
>
> Here you combine volumes sent at [*] and store it at correct offset
> [**]?

Yes! But just one volume at once ...

> I'm not an expert about ubi, so please be patient with my
> questions :-).

No problem! I also just learning ;-)

The above steps are just to get the idea, what must be done for
updating an ubi image, as this were the steps if you type in commands.

> For me it looks like a mixture of ordinary u-boot commands with dfu
> transfer[s] needed to perform correct ubi image write. Maybe [***] will
> help you?

If we have the dfu_buf address availiable ... maybe it is worth a
try ... thinking of sending per dfu a "run upd_ubi" and the
"upd_ubi" command do the complete update ... but, if we update
more than one image ... this will not work.

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

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution
  2013-07-18  5:36     ` Heiko Schocher
@ 2013-07-18  7:13       ` Lukasz Majewski
  0 siblings, 0 replies; 25+ messages in thread
From: Lukasz Majewski @ 2013-07-18  7:13 UTC (permalink / raw)
  To: u-boot

On Thu, 18 Jul 2013 07:36:40 +0200 Heiko Schocher hs at denx.de wrote,

Hi Heiko,

> Hello Lukasz,
> 
> Am 17.07.2013 16:34, schrieb Lukasz Majewski:
> > On Wed, 17 Jul 2013 12:26:35 +0200 Heiko Schocher hs at denx.de wrote,
> >
> > Hi Heiko,
> >
> >> Hello Lukasz,
> >>
> >> Am 16.07.2013 17:35, schrieb Lukasz Majewski:
> >>> Dear All,
> >>>
> >>> Since DFU usage at u-boot is spreading to different device types
> >>> (MMC, NAND), file systems, raw partitions, ubi, etc, I think that
> >>> it is a good moment to unify and structure the form of
> >>> dfu_alt_info environment variable.
> >>
> >> Full Ack!
> >>
> >>> Proposed new format for single dfu entity:
> >>>
> >>> NAME     | Type | Device | Dev_num | Dev_part | FS   | start |
> >>> size  |
> >>>
> >>> where:
> >>>
> >>> Name     - name of the alt setting (as seen by dfu-util -l)
> >>> Type     - description of the image (raw, file, img, command [*])
> >>> Device   - physical device on which data are stored (mmc, nand,
> >>> "-") Dev_num  - number of the device - it is possible to store
> >>> data via DFU on several devices of the same type.
> >>> Dev_part - number of partitions on the device.
> >>
> >> Should this be "number of the partition on the device"
> >
> > No. I made a mistake. It should be "partition to which we want to
> > write"
> >
> >>
> >> You mean here the mtd partition for storing, right?
> >
> > Yes, number of the partition to store data. The exact address will
> > be extracted from mtdparts or partitions env variable.
> 
> Ok.
> 
> >>
> >>> FS       - information about file system on the device (fat,
> >>> 	   ext2/ext4, ubi).
> >>> start    - start offset from the beginning of the Device (byte or
> >>> LBA number addressed)
> >>> size     - maximal number of blocks to be stored on the Device
> >>>    	   (expressed with Bytes of LBA number) (protection
> >>> from overwriting the whole device)
> >>>
> >>>
> >>> Example:
> >>
> >> Maybe dummy questions ...
> >>
> >>> NAME     | Type | Device | Dev_num | Dev_part | FS   | start |
> >>> size  |
> >>> ----------------------------------------------------------------------
> >>> u-boot   | raw  | mmc    | 0       | "-" [**] | "-"  | 0x80  |
> >>> 0x100 | uImage   | file | mmc    | 0       | 2        | ext4 |
> >>> "-"   | "-"   |
> >>
> >> Is this enough information? Where to store the uImage file on the
> >> ext4 partition?
> >
> > To store uImage file on ext4/fat/ext2 partition it is enough to only
> > give:
> >
> > uImage mmc 0 2,
> >
> > which maps to the following command:
> >
> > ext4write mmc 0:2 0x44000000 /uImage [size]
> 
> Hmm... and what if I have my uImage in /boot/ ?

Then you need to define NAME in a following way:
/boot/uImage.

I'm also aware, that this is NOT an elegant solution.

> 
> > The file size is taken from number of sent bytes via DFU/USB.
> 
> Yes.
> 
> > With writing to file system, one need to first store the whole
> > transmitted data to a buffer and then store the (big) buffer on the
> > SD/eMMC device.
> 
> Ok, same for an ubi image.
> 
> > Since, we aren't supporting "seek" kind of write to current ext4
> > implementation at u-boot, the "big" buffer must be used.
> 
> Ok, there are places to optimize ;-)

Frankly, handling those large buffers is cumbersome. I've observed that
our current sdhci implementation has some issues with handling such
large transfers.

> 
> >>> root.img | img  | mmc    | 0       | 5        | "-"  | "-"   |
> >>> "-"   |
> >>
> >> img means here: getting an image and storing it on the mtd
> >> partition "Dev_part" if start and size are marked with "-",
> >> beginning on start of the partition?
> >
> > No, here img is for example a rootfs image. When storing it on the
> > eMMC, it would be better to specify destination partition.
> >
> >>
> >> Wouldn't it be better to use here mtd partition names instead
> >> numbers for "Dev_part"?
> >
> > I'd prefer to create a new entrance here (Part_name):
> >
> > NAME | Type | Device | Dev_num | Dev_part | Part_name | FS | start |
> > size |
> >
> > I would like to avoid situation with ambiguous fields. One field
> > shall only serve for one (clear) purpose. When not needed/used -
> > field shall be marked as "-".
> 
> Ok. but this gives long constructs ...

I know, but we also want to clean up it once for a long time. I'm very
open for other ideas :-).

> 
> >> What if "start" and "size" are filled with values for the "Type"
> >> "img"? Or is this forbidden for the "Type" "img"?
> >
> > I think, that each "Type" shall have predefined set of allowed
> > attributes:
> >
> > 1. img: "Device" + "Dev num" + "Dev parts"
> > 2. raw: "Device" + "Dev num" + "start" + "size"
> > 3. file: "Device" + "Dev num" + "Dev parts" + "FS"
> >
> > and so on.
> 
> If we introduce a "Part_name" this should be also possible:
> 
> 4. img: "Device" + "Dev num" + "Part_name"
> 5. file: "Device" + "Dev num" + "Part_name" + "FS"
> 
> or?

Yes. This also looks valid.

> 
> >>> root.img | raw  | mmc    | 0       | "-"      | "-"  | 0x1000|
> >>> 0x4000|
> >>>
> >>> u-boot   | raw  | nand   | 0       | "-"      | "-"  | 0x100 |
> >>> 0x100 | uImage   | file | nand   | 0       | 3        | ubi  |
> >>> "-"   | "-"   |
> >>
> >> s/uImage/rootfs.img ? s/file/img ?
> >
> > NAME: uImage and rootfs.img maps to files sent to board.
> >
> > The "NAME" is used thereafter to provide exact name for file system
> > write (ext4write/ fatwrite).
> 
> Ah! If we have to write in a subdirectory, "NAME" is the fullpath +
> filename?

As stated above, NAME needs to be extended by fullpath.

> 
> > With DFU the distinction between dfu entities (files, raw images,
> > etc) is performed via alt settings (-aX switch at dfu-util).
> >
> >>
> >> For the FS "ubi" we need to specify, how to burn this into nand.
> >> I think we have no "ubi format" command.
> >
> > Is already ubi format command available at u-boot?
> 
> No.
> 
> > _As a side note:_
> >
> > I'm now developing proof-of-concept idea of executing set of
> > commands sent to u-boot by dfu-util [***].
> 
> Ok.
> 
> > Rationale for this is the lack of ability to reset u-boot after
> > sending data to u-boot via DFU. dfu-util has -R option, but this
> > seems to reset usb interface, not the target device.
> 
> That answers my next question which comed in my mind ...

However, as Tormod pointed out we could perform reset at DFU_DEATACH
internal DFU state.

> 
> > I will set an env:
> >
> > setenv dfu "dfu mmc 0;${dfu_commands}"
> >
> > Then at dfu itself, I will read commands to be performed. Then I
> > will set $dfu_commands env and exit from dfu command.
> 
> Hmm... is this not oversized for the "reset board" use case?

This is not only for reset :-). For me it seems possible to send a
bunch of commands via DFU to be executed on by one.

$dfu_commanfs=mmc read 0x44000000 0:2;crc32 0x44000000 0x80;.....
other...commands;reset

But having only reset implemented when dfu-util -R is executed is also
a good idea.

> 
> >> With "ubi write ..."
> >> we can only write ubi volumes ... and we want here to burn an ubi
> >> image, which was created with ubinize and contains one or more ubi
> >> volumes
> >>
> >> Maybe usecase for updating ubi volumes:
> >> ubivolumename   | img | nand   | 0       | 3        | ubivol | "-"
> >> | "-"   |
> >>
> >> If you want to update an ubivolume ...
> >>
> >> results in this steps:
> >> - get image per dfu @ img_addr
> >>     We need to get here the complete image, as ubi write
> >>     cannot write incremental ...
> >
> > So each volume shall have different dfu entity. Then those volumes
> > are stored at ram with different addresses [*]?
> 
> Yes for every volume have different dfu entity.
> You update only one volume with one dfu-util command, or? So
> no different addresses needed ...
> 
> >> - ubi part get_mtd_partition_name("Dev_part=3") vid_header_offset
> >>                                                   ^
> >>                                                   From where get we
> >> this parameter ... value in "start"?
> >
> > So here you get information about the ("Dev_part=3") partition start
> > offset [**]?
> 
> Yes ... what is with the "vid_header_offset" parameter?
> 
> >> - ubi write img_addr ubivolumename ${filesize}
> >
> > Here you combine volumes sent at [*] and store it at correct offset
> > [**]?
> 
> Yes! But just one volume at once ...
> 
> > I'm not an expert about ubi, so please be patient with my
> > questions :-).
> 
> No problem! I also just learning ;-)
> 
> The above steps are just to get the idea, what must be done for
> updating an ubi image, as this were the steps if you type in commands.
> 
> > For me it looks like a mixture of ordinary u-boot commands with dfu
> > transfer[s] needed to perform correct ubi image write. Maybe [***]
> > will help you?
> 
> If we have the dfu_buf address availiable ... maybe it is worth a
> try ... thinking of sending per dfu a "run upd_ubi" and the
> "upd_ubi" command do the complete update ... but, if we update
> more than one image ... this will not work.

Ok.

> 
> bye,
> Heiko



-- 
Best regards,

Lukasz Majewski

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

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution
  2013-07-18  5:16     ` Heiko Schocher
@ 2013-07-18  8:09       ` Wolfgang Denk
  2013-07-18 15:10         ` Marek Vasut
  0 siblings, 1 reply; 25+ messages in thread
From: Wolfgang Denk @ 2013-07-18  8:09 UTC (permalink / raw)
  To: u-boot

Dear Heiko Schocher,

In message <51E77A1D.90403@denx.de> you wrote:
> 
> > Try "nand write.trimffs" to write UBI images produced with ubinize .
> 
> This solves not the erasecounter problem, or?
> 
> For UBI we need something like this:
> http://www.linux-mtd.infradead.org/doc/ubi.html#L_flasher_algo
> 
> But I am not an UBI expert. It is possible I overlook something
> obvious ...

No, you don't.  Devices managed by UBI should never be erased by
other, non-UBI-aware tools.

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
I will also, for an appropriate fee, certify that  your  keyboard  is
object-oriented,  and  that  the bits on your hard disk are template-
compatible.            - Jeffrey S. Haemer in <411akr$3ga@cygnus.com>

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution
  2013-07-18  8:09       ` Wolfgang Denk
@ 2013-07-18 15:10         ` Marek Vasut
  2013-07-19  4:45           ` Heiko Schocher
  0 siblings, 1 reply; 25+ messages in thread
From: Marek Vasut @ 2013-07-18 15:10 UTC (permalink / raw)
  To: u-boot

Hi,

> Dear Heiko Schocher,
> 
> In message <51E77A1D.90403@denx.de> you wrote:
> > > Try "nand write.trimffs" to write UBI images produced with ubinize .
> > 
> > This solves not the erasecounter problem, or?
> > 
> > For UBI we need something like this:
> > http://www.linux-mtd.infradead.org/doc/ubi.html#L_flasher_algo
> > 
> > But I am not an UBI expert. It is possible I overlook something
> > obvious ...
> 
> No, you don't.  Devices managed by UBI should never be erased by
> other, non-UBI-aware tools.

I based my reply on the following commit in U-Boot and the fact that 
write.trimffs is used to flash UBI images. Maybe I was wrong?

commit c9494866df835bcee68e17339aec1090faa704da
Author: Ben Gardiner <bengardiner@nanometrics.ca>
Date:   Tue Jun 14 16:35:07 2011 -0400

    cmd_nand: add nand write.trimffs command
    
    Add another nand write. variant, trimffs. This command will request of
    nand_write_skip_bad() that all trailing all-0xff pages will be
    dropped from eraseblocks when they are written to flash as-per the
    reccommended behaviour of the UBI FAQ [1].
    
    The function that implements this timming is the drop_ffs() function
    by Artem Bityutskiy, ported from the mtd-utils tree.
    
    [1] http://www.linux-mtd.infradead.org/doc/ubi.html#L_flasher_algo

Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution
  2013-07-16 15:35 [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution Lukasz Majewski
  2013-07-16 21:27 ` Tormod Volden
  2013-07-17 10:26 ` Heiko Schocher
@ 2013-07-18 16:39 ` Tom Rini
  2013-07-18 17:30   ` Michael Cashwell
  2013-10-31 17:25 ` Lukasz Majewski
  3 siblings, 1 reply; 25+ messages in thread
From: Tom Rini @ 2013-07-18 16:39 UTC (permalink / raw)
  To: u-boot

On Tue, Jul 16, 2013 at 05:35:21PM +0200, Lukasz Majewski wrote:

> Dear All,
> 
> Since DFU usage at u-boot is spreading to different device types (MMC,
> NAND), file systems, raw partitions, ubi, etc, I think that it is a
> good moment to unify and structure the form of dfu_alt_info environment
> variable.
[snip]
> NAME     | Type | Device | Dev_num | Dev_part | FS   | start | size  | 
[snip]
> u-boot   | raw  | nand   | 0       | "-"      | "-"  | 0x100 | 0x100 |
> uImage   | file | nand   | 0       | 3        | ubi  | "-"   | "-"   | 

We also need to cover:

uImage     | raw  | nand   | 0       | "kernel" | "-"  | "-"   | "-"   |

Since partitions provide start/size.  And I'm not totally sure we're
providing enough information for 'destination resides in this part of
UBI container'.  It could be "/boot/uImage in rootfs in ubi0" or "raw to
kernel0 in ubi0".

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20130718/4f91d63a/attachment.pgp>

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution
  2013-07-18 16:39 ` Tom Rini
@ 2013-07-18 17:30   ` Michael Cashwell
  2013-07-18 20:17     ` Lukasz Majewski
  2013-08-23 10:07     ` Lukasz Majewski
  0 siblings, 2 replies; 25+ messages in thread
From: Michael Cashwell @ 2013-07-18 17:30 UTC (permalink / raw)
  To: u-boot

On Jul 18, 2013, at 12:39 PM, Tom Rini <trini@ti.com> wrote:

> uImage     | raw  | nand   | 0       | "kernel" | "-"  | "-"   | "-"   |
> 
> Since partitions provide start/size.

I've got some WIP that pulls the alt info from a GPT partition map on mmc. That alt settings in DFU can be strings or numbers was handy to allow the name to identify the partition.

-Mike

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution
  2013-07-18 17:30   ` Michael Cashwell
@ 2013-07-18 20:17     ` Lukasz Majewski
  2013-07-18 22:33       ` Tom Rini
  2013-08-23 10:07     ` Lukasz Majewski
  1 sibling, 1 reply; 25+ messages in thread
From: Lukasz Majewski @ 2013-07-18 20:17 UTC (permalink / raw)
  To: u-boot

On Thu, 18 Jul 2013 13:30:55 -0400
Michael Cashwell <mboards@prograde.net> wrote:

> On Jul 18, 2013, at 12:39 PM, Tom Rini <trini@ti.com> wrote:
> 
> > uImage     | raw  | nand   | 0       | "kernel" | "-"  | "-"   |
> > "-"   |
> > 
> > Since partitions provide start/size.
> 
> I've got some WIP that pulls the alt info from a GPT partition map on
> mmc. 

Extraction the part of dfu_alt_info from GPT or $partitions env variable
(as defined at e.g. Trats) is also a good idea.

The best solution would be to produce alt settings information as a mix
of GPT layout information (extraction of part num, start offset,
size... any more?) [*] and some predefined dfu_alt_info env variable. In
this way we can reuse already available code (since GPT layout is
already in place for most of targets).

But what about mtd parts (Nand/ UBI)? It shall be also doable to
extract information [*] from it. Am I correct?

> That alt settings in DFU can be strings or numbers was handy to
> allow the name to identify the partition.
> 
> -Mike
> 
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20130718/3b7a9e9c/attachment.pgp>

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution
  2013-07-18 20:17     ` Lukasz Majewski
@ 2013-07-18 22:33       ` Tom Rini
  0 siblings, 0 replies; 25+ messages in thread
From: Tom Rini @ 2013-07-18 22:33 UTC (permalink / raw)
  To: u-boot

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 07/18/2013 04:17 PM, Lukasz Majewski wrote:
> On Thu, 18 Jul 2013 13:30:55 -0400 Michael Cashwell
> <mboards@prograde.net> wrote:
> 
>> On Jul 18, 2013, at 12:39 PM, Tom Rini <trini@ti.com> wrote:
>> 
>>> uImage     | raw  | nand   | 0       | "kernel" | "-"  | "-"
>>> | "-"   |
>>> 
>>> Since partitions provide start/size.
>> 
>> I've got some WIP that pulls the alt info from a GPT partition
>> map on mmc.
> 
> Extraction the part of dfu_alt_info from GPT or $partitions env
> variable (as defined at e.g. Trats) is also a good idea.
> 
> The best solution would be to produce alt settings information as a
> mix of GPT layout information (extraction of part num, start
> offset, size... any more?) [*] and some predefined dfu_alt_info env
> variable. In this way we can reuse already available code (since
> GPT layout is already in place for most of targets).
> 
> But what about mtd parts (Nand/ UBI)? It shall be also doable to 
> extract information [*] from it. Am I correct?

Right, we support that today even in DFU.

- -- 
Tom
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQIcBAEBAgAGBQJR6G00AAoJENk4IS6UOR1WA9cQAKRC0fOrdoVcQyrqeAzf+ahC
y18UHlFsmS+0fVzJzc0z3m7RiUYNCFEsNMm2JFedss7xgpP7GCwMDLRcLhy4CkEW
m5hjISL/C3pJKoAbCocKcUe4TD53Vmukr+sBPwKUR2N62iRcVYCO0Ved8P/4QXUz
g+Ylc8F6C6pPXxTEi8cn8oigmZzckJqn02AjfhY474uQZvKNezM1eA6uBOAbCugM
RJYjM+AxjOeL4dNYJTQEcmLAqcQPF0KW9yxfbMYi79h09qVJTqZIyvIHVIX4XfUp
E64yh21LhuhEyKxUnMcZbvcn5RQ2CvROY2a121D+hFWCxrnLeumIA49Hz8ilVYBt
1P6qzNotUbciOr9M33pedFOziYua/0Y6Wy4f5sMqYOaCy+qhO9KnaiJe0SkOUYah
XNMZ5tVMOAhCwDhmnmLSDWfZZMl9LBzibzIsw7qPzb/ZYtwA7CEa9WSSwZVw7Zsj
jj0+/j4uis4a4UOwj1E7ui3CgiRLu7ck5vBBTJ1VJlRvdCvBknio2aJ3/ZcJaXjc
U76Aly890n4EfwlclwRpeXVGg2eObsherz6gOuWqmVmjBYuiwQAKiT7X4VnqtWmM
V6yB6VmOKO5Am9GmpaWplep8l1vJgkmWd++3kwR75NgZIgmizwIpRxG56hd+oav8
0MH2gBeO6rZo/WdnJwJS
=IYIY
-----END PGP SIGNATURE-----

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution
  2013-07-18 15:10         ` Marek Vasut
@ 2013-07-19  4:45           ` Heiko Schocher
  2013-07-19 13:55             ` Marek Vasut
  0 siblings, 1 reply; 25+ messages in thread
From: Heiko Schocher @ 2013-07-19  4:45 UTC (permalink / raw)
  To: u-boot

Hello Marek,

Am 18.07.2013 17:10, schrieb Marek Vasut:
> Hi,
>
>> Dear Heiko Schocher,
>>
>> In message<51E77A1D.90403@denx.de>  you wrote:
>>>> Try "nand write.trimffs" to write UBI images produced with ubinize .
>>>
>>> This solves not the erasecounter problem, or?
>>>
>>> For UBI we need something like this:
>>> http://www.linux-mtd.infradead.org/doc/ubi.html#L_flasher_algo
>>>
>>> But I am not an UBI expert. It is possible I overlook something
>>> obvious ...
>>
>> No, you don't.  Devices managed by UBI should never be erased by
>> other, non-UBI-aware tools.
>
> I based my reply on the following commit in U-Boot and the fact that
> write.trimffs is used to flash UBI images. Maybe I was wrong?
>
> commit c9494866df835bcee68e17339aec1090faa704da
> Author: Ben Gardiner<bengardiner@nanometrics.ca>
> Date:   Tue Jun 14 16:35:07 2011 -0400
>
>      cmd_nand: add nand write.trimffs command
>
>      Add another nand write. variant, trimffs. This command will request of
>      nand_write_skip_bad() that all trailing all-0xff pages will be
>      dropped from eraseblocks when they are written to flash as-per the
>      reccommended behaviour of the UBI FAQ [1].
>
>      The function that implements this timming is the drop_ffs() function
>      by Artem Bityutskiy, ported from the mtd-utils tree.
>
>      [1] http://www.linux-mtd.infradead.org/doc/ubi.html#L_flasher_algo

Yes, that sounds as a step in the right direction, but where are
the erasecounters handled, as described in [1] ?

And as this is a "ubi function" and not nand specific, the command
should start with "ubi ..." ... as we have a "ubi write ...", but
ubi write is only for ubi volumes ... i tend to say, we need a
"ubi format ..." similiar to ubiformat in the mtd utils [2] ...

[2] http://git.infradead.org/mtd-utils.git
     ubiformat found in /ubi-utils/ubiformat.c

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

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution
  2013-07-19  4:45           ` Heiko Schocher
@ 2013-07-19 13:55             ` Marek Vasut
  0 siblings, 0 replies; 25+ messages in thread
From: Marek Vasut @ 2013-07-19 13:55 UTC (permalink / raw)
  To: u-boot

Dear Heiko Schocher,

> Hello Marek,
> 
> Am 18.07.2013 17:10, schrieb Marek Vasut:
> > Hi,
> > 
> >> Dear Heiko Schocher,
> >> 
> >> In message<51E77A1D.90403@denx.de>  you wrote:
> >>>> Try "nand write.trimffs" to write UBI images produced with ubinize .
> >>> 
> >>> This solves not the erasecounter problem, or?
> >>> 
> >>> For UBI we need something like this:
> >>> http://www.linux-mtd.infradead.org/doc/ubi.html#L_flasher_algo
> >>> 
> >>> But I am not an UBI expert. It is possible I overlook something
> >>> obvious ...
> >> 
> >> No, you don't.  Devices managed by UBI should never be erased by
> >> other, non-UBI-aware tools.
> > 
> > I based my reply on the following commit in U-Boot and the fact that
> > write.trimffs is used to flash UBI images. Maybe I was wrong?
> > 
> > commit c9494866df835bcee68e17339aec1090faa704da
> > Author: Ben Gardiner<bengardiner@nanometrics.ca>
> > Date:   Tue Jun 14 16:35:07 2011 -0400
> > 
> >      cmd_nand: add nand write.trimffs command
> >      
> >      Add another nand write. variant, trimffs. This command will request
> >      of nand_write_skip_bad() that all trailing all-0xff pages will be
> >      dropped from eraseblocks when they are written to flash as-per the
> >      reccommended behaviour of the UBI FAQ [1].
> >      
> >      The function that implements this timming is the drop_ffs() function
> >      by Artem Bityutskiy, ported from the mtd-utils tree.
> >      
> >      [1] http://www.linux-mtd.infradead.org/doc/ubi.html#L_flasher_algo
> 
> Yes, that sounds as a step in the right direction, but where are
> the erasecounters handled, as described in [1] ?

I don't think they're handled anywhere.

> And as this is a "ubi function" and not nand specific, the command
> should start with "ubi ..." ... as we have a "ubi write ...", but
> ubi write is only for ubi volumes ... i tend to say, we need a
> "ubi format ..." similiar to ubiformat in the mtd utils [2] ...
> 
> [2] http://git.infradead.org/mtd-utils.git
>      ubiformat found in /ubi-utils/ubiformat.c

Full agreement.

Best regards,
Marek Vasut

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution
  2013-07-18 17:30   ` Michael Cashwell
  2013-07-18 20:17     ` Lukasz Majewski
@ 2013-08-23 10:07     ` Lukasz Majewski
  1 sibling, 0 replies; 25+ messages in thread
From: Lukasz Majewski @ 2013-08-23 10:07 UTC (permalink / raw)
  To: u-boot

On Thu, 18 Jul 2013 13:30:55 -0400 Michael Cashwell
mboards at prograde.net wrote,
> On Jul 18, 2013, at 12:39 PM, Tom Rini <trini@ti.com> wrote:
> 
> > uImage     | raw  | nand   | 0       | "kernel" | "-"  | "-"   |
> > "-"   |
> > 
> > Since partitions provide start/size.
> 

Hi Michael,

> I've got some WIP that pulls the alt info from a GPT partition map on
> mmc. That alt settings in DFU can be strings or numbers was handy to
> allow the name to identify the partition.

Will you be ready to show the mentioned patch in a near future?

> 
> -Mike



-- 
Best regards,

Lukasz Majewski

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

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution
  2013-07-16 15:35 [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution Lukasz Majewski
                   ` (2 preceding siblings ...)
  2013-07-18 16:39 ` Tom Rini
@ 2013-10-31 17:25 ` Lukasz Majewski
  2013-10-31 20:32   ` Wolfgang Denk
  2013-11-01  6:15   ` Heiko Schocher
  3 siblings, 2 replies; 25+ messages in thread
From: Lukasz Majewski @ 2013-10-31 17:25 UTC (permalink / raw)
  To: u-boot

Dear All,

As a follow up from u-boot's mini-summit at ELCE 2013, I would like to
once again share the new format of dfu_alt_info env variable (for those
who couldn't attend).

dfu_alt_info_cleanup:

    |---+-------------+-------------+---------+----------------------|
    |   | <dev_name>: | <alt_name>, | <type>  | extra params         |
    |---+-------------+-------------+---------+----------------------|
    | 1 | mmc0:       | rootfs,     | part;   | -                    |
    | 2 | mmc0:       | uImage,     | file,   | part, dir;           |
    | 3 | nand0:      | u-boot.bin, | raw,    | start, size;         |
    | 4 | mmc0:       | u-boot.bin, | raw,    | start_lba, size_lba; |
    | 5 | ram0:       | uImage,     | ram,    | start, size;         |
    | 6 | ubi0:       | kernel0,    | raw;    | -                    |
    |---+-------------+-------------+---------+----------------------|
    | 7 | cmd:        | cmd,        | cmd;    | -                    |


Some useful info:

+ Each <type> is responsible for providing information
  about additional parameters (in conjunction with <dev_name>)

+ Ad 1. Extra parameters are extracted from GPT/MBR/MTD

+ Part can be given as text or number (text -> number conversion will
  be performed anyway)

+ Part: Ext2/4, FAT, UBI?

I'm especially interested in feedback from AM335x owners. I would
like to know how UBI partitions are handled there.

-- 
Best regards,

Lukasz Majewski

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

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution
  2013-10-31 17:25 ` Lukasz Majewski
@ 2013-10-31 20:32   ` Wolfgang Denk
  2013-10-31 21:20     ` Lukasz Majewski
  2013-11-01  6:15   ` Heiko Schocher
  1 sibling, 1 reply; 25+ messages in thread
From: Wolfgang Denk @ 2013-10-31 20:32 UTC (permalink / raw)
  To: u-boot

Dear Lukasz,

In message <20131031182541.3a3020c6@amdc308.digital.local> you wrote:
> 
> As a follow up from u-boot's mini-summit at ELCE 2013, I would like to
> once again share the new format of dfu_alt_info env variable (for those
> who couldn't attend).
> 
> dfu_alt_info_cleanup:
> 
>     |---+-------------+-------------+---------+----------------------|
>     |   | <dev_name>: | <alt_name>, | <type>  | extra params         |
>     |---+-------------+-------------+---------+----------------------|
>     | 1 | mmc0:       | rootfs,     | part;   | -                    |
>     | 2 | mmc0:       | uImage,     | file,   | part, dir;           |
>     | 3 | nand0:      | u-boot.bin, | raw,    | start, size;         |
>     | 4 | mmc0:       | u-boot.bin, | raw,    | start_lba, size_lba; |
>     | 5 | ram0:       | uImage,     | ram,    | start, size;         |
>     | 6 | ubi0:       | kernel0,    | raw;    | -                    |
>     |---+-------------+-------------+---------+----------------------|
>     | 7 | cmd:        | cmd,        | cmd;    | -                    |

Why can we not have a common format for all media supporting the "raw"
type?  I mean, why can we not also use "start, size" for mmc?  It
should be trivial to convert into a LBA number.

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
"Life sucks, but it's better than the alternative."
- Peter da Silva

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution
  2013-10-31 20:32   ` Wolfgang Denk
@ 2013-10-31 21:20     ` Lukasz Majewski
  2013-10-31 23:11       ` Wolfgang Denk
  0 siblings, 1 reply; 25+ messages in thread
From: Lukasz Majewski @ 2013-10-31 21:20 UTC (permalink / raw)
  To: u-boot

Hi Wolfgang,

> Dear Lukasz,
> 
> In message <20131031182541.3a3020c6@amdc308.digital.local> you wrote:
> > 
> > As a follow up from u-boot's mini-summit at ELCE 2013, I would like
> > to once again share the new format of dfu_alt_info env variable
> > (for those who couldn't attend).
> > 
> > dfu_alt_info_cleanup:
> > 
> >     |---+-------------+-------------+---------+----------------------|
> >     |   | <dev_name>: | <alt_name>, | <type>  | extra
> > params         |
> > |---+-------------+-------------+---------+----------------------|
> > | 1 | mmc0:       | rootfs,     | part;   | -                    |
> > | 2 | mmc0:       | uImage,     | file,   | part, dir;           |
> > | 3 | nand0:      | u-boot.bin, | raw,    | start, size;         |
> > | 4 | mmc0:       | u-boot.bin, | raw,    | start_lba, size_lba; |
> > | 5 | ram0:       | uImage,     | ram,    | start, size;         |
> > | 6 | ubi0:       | kernel0,    | raw;    | -                    |
> > |---+-------------+-------------+---------+----------------------|
> > | 7 | cmd:        | cmd,        | cmd;    | -                    |
> 
> Why can we not have a common format for all media supporting the "raw"
> type?  I mean, why can we not also use "start, size" for mmc?  It
> should be trivial to convert into a LBA number.

I think, that I could do better with this table.

What I have meant, is that the "raw" extra parameters are the same in
both cases. The interpretation of start and size (if they are LBA or
"normal" addresses) depends on the <dev_name>.


> 
> Best regards,
> 
> Wolfgang Denk
> 

Best regards,
Lukasz Majewski
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20131031/3abb1002/attachment.pgp>

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution
  2013-10-31 21:20     ` Lukasz Majewski
@ 2013-10-31 23:11       ` Wolfgang Denk
  2013-11-04  6:52         ` Lukasz Majewski
  0 siblings, 1 reply; 25+ messages in thread
From: Wolfgang Denk @ 2013-10-31 23:11 UTC (permalink / raw)
  To: u-boot

Dear Lukasz,

In message <20131031222010.082d453f@jawa> you wrote:
>
> > Why can we not have a common format for all media supporting the "raw"
> > type?  I mean, why can we not also use "start, size" for mmc?  It
> > should be trivial to convert into a LBA number.
> 
> I think, that I could do better with this table.
> 
> What I have meant, is that the "raw" extra parameters are the same in
> both cases. The interpretation of start and size (if they are LBA or
> "normal" addresses) depends on the <dev_name>.

I think they should _not_ be interpreted differently. I would expect
that "start" is an offset in bytes from the beginning of the device,
for all of the cases.  Similar, "size" would be the number of bytes,
for all cases - bot bytes here and sectors there.

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
In the bathtub of history the truth is harder to hold than the  soap,
and much more difficult to find ...     - Terry Pratchett, _Sourcery_

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution
  2013-10-31 17:25 ` Lukasz Majewski
  2013-10-31 20:32   ` Wolfgang Denk
@ 2013-11-01  6:15   ` Heiko Schocher
  1 sibling, 0 replies; 25+ messages in thread
From: Heiko Schocher @ 2013-11-01  6:15 UTC (permalink / raw)
  To: u-boot

Hello Lukasz,

Am 31.10.2013 18:25, schrieb Lukasz Majewski:
> Dear All,
>
> As a follow up from u-boot's mini-summit at ELCE 2013, I would like to
> once again share the new format of dfu_alt_info env variable (for those
> who couldn't attend).
>
> dfu_alt_info_cleanup:
>
>      |---+-------------+-------------+---------+----------------------|
>      |   |<dev_name>: |<alt_name>, |<type>   | extra params         |
>      |---+-------------+-------------+---------+----------------------|
>      | 1 | mmc0:       | rootfs,     | part;   | -                    |
>      | 2 | mmc0:       | uImage,     | file,   | part, dir;           |
>      | 3 | nand0:      | u-boot.bin, | raw,    | start, size;         |

One more usecase for nand (just for documentation):

        | 4 | nand0:      | u-boot      | part,   | -                    |

Here is "alt_name" == "mtd partition name" -> start, size from mtd info

>      | 4 | mmc0:       | u-boot.bin, | raw,    | start_lba, size_lba; |
>      | 5 | ram0:       | uImage,     | ram,    | start, size;         |
>      | 6 | ubi0:       | kernel0,    | raw;    | -                    |

There are 2 usecases with ubi (Please correct me, if I am wrong):

a) update a complete ubi device:

        | 6 | ubi0:      | kernel,     | part    | -                    |
        | 7 | ubi0:      | kernel,     | raw     | start, size          |

with them, we can update a complete "ubi device" with n ubi volumes
in it (This is currently used on the am335x based siemens boards).

I am not sure if ubi is more a "device" or more a "type". But as ubi can
be used also on nor flash, I think in the meantime, it is more a device
than a type in the sight of dfu ... but I vary here in my opinion...

This usecase is currently implemented for nand, and same code is
used as for "raw" or "part" nand usecases, just in the ubi case a
flag is set, which does:

- erase nand sectors with WITH_DROP_FFS
- erase spare sectors at the end of the area

b) update single ubi volume.

We need this infos for updating a ubi volume

- ubi device name = mtd partition name
- vid header offset
- ubi volume name
- ubi volume size
- ubi volume type

- steps for updating a ubi volume
   - attach to an ubi device
     "ubi part device_name vid_header_offset"
   - if volume_name !exist, create it
     "ubi create volume_name size type"
   - write ubi volume
     "ubi write img_addr volume_name size"


        | 8 | ubi0:      | data,        | volume  | vid_off, vol_nam, vol_sz, vol_type |
                           ^
                           device name
   You see, the list gets long ... or maybe we can cover this usecase
   with dfu command?

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

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution
  2013-10-31 23:11       ` Wolfgang Denk
@ 2013-11-04  6:52         ` Lukasz Majewski
  0 siblings, 0 replies; 25+ messages in thread
From: Lukasz Majewski @ 2013-11-04  6:52 UTC (permalink / raw)
  To: u-boot

Hi Wolfgang,

> Dear Lukasz,
> 
> In message <20131031222010.082d453f@jawa> you wrote:
> >
> > > Why can we not have a common format for all media supporting the
> > > "raw" type?  I mean, why can we not also use "start, size" for
> > > mmc?  It should be trivial to convert into a LBA number.
> > 
> > I think, that I could do better with this table.
> > 
> > What I have meant, is that the "raw" extra parameters are the same
> > in both cases. The interpretation of start and size (if they are
> > LBA or "normal" addresses) depends on the <dev_name>.
> 
> I think they should _not_ be interpreted differently. I would expect
> that "start" is an offset in bytes from the beginning of the device,
> for all of the cases.  Similar, "size" would be the number of bytes,
> for all cases - bot bytes here and sectors there.

Ok, lets do it in this way. LBA conversion will be done just before
eMMC access.

> 
> Best regards,
> 
> Wolfgang Denk
> 



-- 
Best regards,

Lukasz Majewski

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

^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2013-11-04  6:52 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-07-16 15:35 [U-Boot] [RFC][DFU] Unification of dfu_alt_info alt settings description + command execution Lukasz Majewski
2013-07-16 21:27 ` Tormod Volden
2013-07-16 21:46   ` Lukasz Majewski
2013-07-17 10:26 ` Heiko Schocher
2013-07-17 14:34   ` Lukasz Majewski
2013-07-17 17:32     ` Tormod Volden
2013-07-18  5:36     ` Heiko Schocher
2013-07-18  7:13       ` Lukasz Majewski
2013-07-18  4:17   ` Marek Vasut
2013-07-18  5:16     ` Heiko Schocher
2013-07-18  8:09       ` Wolfgang Denk
2013-07-18 15:10         ` Marek Vasut
2013-07-19  4:45           ` Heiko Schocher
2013-07-19 13:55             ` Marek Vasut
2013-07-18 16:39 ` Tom Rini
2013-07-18 17:30   ` Michael Cashwell
2013-07-18 20:17     ` Lukasz Majewski
2013-07-18 22:33       ` Tom Rini
2013-08-23 10:07     ` Lukasz Majewski
2013-10-31 17:25 ` Lukasz Majewski
2013-10-31 20:32   ` Wolfgang Denk
2013-10-31 21:20     ` Lukasz Majewski
2013-10-31 23:11       ` Wolfgang Denk
2013-11-04  6:52         ` Lukasz Majewski
2013-11-01  6:15   ` Heiko Schocher

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.