
Hi Marek,
On Monday, March 31, 2014 at 10:48:49 AM, 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.
You might want to check common/cmd_hash.c and include/hash.h for the hash_command() call. It does the resolution of the hash algorithm from it's name and you can operate also SHA1 and SHA256 with it. It would be nice if you could just extend it a bit and use that instead of adding another ad-hoc mechanism.
Do you think it'd be possible to reuse it please ?
I think, that crc32 shall be calculated when needed. That is why I've added a dfu_ckecksum_method variable.
With its help it is now possible to use different algorithms for checking - not only crc32 (which in u-boot is the default and painfully slow implementation).
In the future the code: if (dfu_checksum_method == DFU_CRC32) crc32 calculation;
will be changed to:
switch (dfu_checksum_method) { case CRC32: crc32 calculation; break; case SHA1: sha1 calculation; break; case MD5: md5 calculation; break; }
Moreover it is possible to dynamically change the checksum method (between invoking dfu command) via adjusting "dfu_checksum_method" variable.
The default approach is to not calculate anything.
Best regards, Marek Vasut