From: Lukasz Majewski <l.majewski@majess.pl>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 3/3] dfu: Introduction of the "dfu_checksum_method" env variable for checksum method setting
Date: Mon, 31 Mar 2014 22:44:02 +0200 [thread overview]
Message-ID: <20140331224402.15e3e161@jawa> (raw)
In-Reply-To: <20140331180517.GV16360@bill-the-cat>
On Mon, 31 Mar 2014 14:05:17 -0400
Tom Rini <trini@ti.com> wrote:
> On Mon, Mar 31, 2014 at 10:48:49AM +0200, Lukasz Majewski wrote:
>
> > Up till now the CRC32 of received data was calculated
> > unconditionally. The standard crc32 implementation causes long
> > delays when large images were uploaded.
> >
> > The "dfu_checksum_method" environment variable gives the
> > opportunity to enable on demand (when e.g. debugging) the crc32
> > calculation. It can be done without need to recompile the u-boot
> > binary.
> >
> > By default the crc32 is not calculated.
> >
> > Tests results:
> > 400 MiB ums.img file
> > With crc32 calculation: 65 sec [avg 6.29 MB/s]
> > Without crc32 calculation: 25 sec [avg 16.17 MB/s]
> >
> > Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
>
> OK, so, protocol question.
The DFU 1.1 standard in its appendinx B specifies the DFU suffix. It has
the crc32 for the whole file, vendorID, device ID and other handy
fields.
Unfortunately, this part of the standard is not supported neither at
dfu implementation in u-boot nor dfu-util (v.0.5 - debian).
It would be handy for small files (like bootloaders, kernels) where we
download all the data at once. For critical files it should be
definitely implemented. From my glimpse observation the dfu-util would
require some extension to support the DFU suffix (Tormod, please
correct me if I'm wrong).
For large files (400 MiB in this case) it is useless since we store
data as it goes (with 32 MiB chunks). Also, as we send the large files
we experience the biggest performance penalty from CRC32 calculation.
It takes considerable time and in my opinion now serves only for debug
purposes, to provide the final CRC for comparison with original one,
even though the file is already on flash.
When we use CRC in such a way, we should be able to decide which tool
(algorithm) use for debug. SHA1, MD5, etc are widely available on each
linux box. To have the same crc32 algorithm, which is in u-boot,
implemented as linux command line tool you need to search a bit
(libarchive-zip-perl package for debian).
I think that we can improve the crc32 performance with calculating it
for smaller chunks, which already fits L1 cache. Now they are calculated
for 32 MiB.
> What's going on in the background here
> such that it's a good and safe idea to not do this checksum and we
> won't end up in the case where data was corrupted and we just bricked
> a board in update mode?
Now we rely solely on testing. Downloading file, checking CRC and
compare with original.
I also have some automated tests, which utilize MD5.
TO SUM UP:
1. Handling of the DFU suffix shall be implemented and utilized in both
u-boot and dfu-util with critical files (bootloaders, kernel).
2. There should be freedom to use different checksum algorithms for
providing debugging information.
3. The current CRC32 calculation at DFU should be optimized.
>
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/20140331/672a2a95/attachment.pgp>
next prev parent reply other threads:[~2014-03-31 20:44 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-31 8:48 [U-Boot] [PATCH 0/3] dfu: Several enhancements for dfu subsystem Lukasz Majewski
2014-03-31 8:48 ` [U-Boot] [PATCH 1/3] dfu: mmc: Provide support for eMMC boot partition access Lukasz Majewski
2014-03-31 8:59 ` Marek Vasut
2014-03-31 9:14 ` Lukasz Majewski
2014-05-09 14:58 ` [U-Boot] [PATCH v2] " Lukasz Majewski
2014-05-14 22:24 ` Marek Vasut
2014-03-31 8:48 ` [U-Boot] [PATCH 2/3] dfu: add static alt num count in dfu_config_entities() Lukasz Majewski
2014-03-31 9:01 ` Marek Vasut
2014-03-31 9:15 ` Lukasz Majewski
2014-04-01 6:47 ` Przemyslaw Marczak
2014-04-01 6:49 ` Marek Vasut
2014-04-01 7:45 ` Lukasz Majewski
2014-03-31 8:48 ` [U-Boot] [PATCH 3/3] dfu: Introduction of the "dfu_checksum_method" env variable for checksum method setting Lukasz Majewski
2014-03-31 9:04 ` Marek Vasut
2014-03-31 9:24 ` Lukasz Majewski
2014-03-31 9:29 ` Marek Vasut
2014-03-31 9:49 ` Lukasz Majewski
2014-03-31 11:19 ` Pantelis Antoniou
2014-03-31 12:04 ` Lukasz Majewski
2014-03-31 12:10 ` Pantelis Antoniou
2014-03-31 12:16 ` Pantelis Antoniou
2014-03-31 18:05 ` Tom Rini
2014-03-31 18:15 ` Marek Vasut
2014-03-31 18:26 ` Tom Rini
2014-03-31 20:44 ` Lukasz Majewski [this message]
2014-03-31 21:04 ` Tom Rini
2014-04-01 9:05 ` Lukasz Majewski
2014-03-31 21:44 ` Tormod Volden
2014-04-01 9:00 ` Lukasz Majewski
2014-04-01 9:15 ` Stefan Schmidt
2014-04-01 11:31 ` Lukasz Majewski
2014-05-05 13:16 ` [U-Boot] [PATCH v2] " Lukasz Majewski
2014-05-05 17:47 ` Marek Vasut
2014-05-08 12:27 ` [U-Boot] [PATCH v3] dfu: Introduction of the "dfu_hash_algo" " Lukasz Majewski
2014-05-08 13:07 ` Marek Vasut
2014-05-09 4:27 ` Wolfgang Denk
2014-05-09 6:52 ` Lukasz Majewski
2014-05-09 8:31 ` Wolfgang Denk
2014-05-09 9:54 ` Lukasz Majewski
2014-05-12 14:45 ` Tom Rini
2014-05-15 7:09 ` Lukasz Majewski
2014-05-15 9:27 ` Heiko Schocher
2014-05-15 11:19 ` Wolfgang Denk
2014-05-15 13:43 ` Lukasz Majewski
2014-05-15 14:07 ` Wolfgang Denk
2014-05-16 6:08 ` Lukasz Majewski
2014-05-16 8:58 ` Lukasz Majewski
2014-05-19 14:02 ` Heiko Schocher
2014-05-20 17:22 ` Lukasz Majewski
2014-05-22 9:46 ` Lukasz Majewski
2014-05-12 8:43 ` [U-Boot] [PATCH v4] " Lukasz Majewski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140331224402.15e3e161@jawa \
--to=l.majewski@majess.pl \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox