
Wolfgang Denk wrote:
In message 200604261502.02751.ngustavson@emacinc.com you wrote:
So what is your problem - you have the image, and want to write it to flash. Why would you need any additional tools for that?
Because I want to write it through the uClinux MTD layer, which has nothing to do with u-boot, other than the fact that the flashing utility needs to calculate a checksum and verify it against the package, which is the "ubootian" format created by mkimage.
Maybe you explain in more detail what you intend to do. I don't see why "the flashing utility needs to calculate a checksum" - the uImage file already has two checksums, so no new calculation should be needed.
We had the similar need to do this. In our software update program (which gets executed via a custom CLI/Web layer etc.) we validate the kernel+initrd in uimage format before storing in the flash. If validation fails (not a uimage file or corrupt uimage) flash is not updated and user is notified.
We do this by calculating the crc of the header comparing with stored header crc and if that checks calculating the data payload crc and comparing it with the stored payload crc in the image header. libz provides the necessary crc32() functionality in Linux.
If you use the MTD layer as a blockdevice, you will probably have a file system there; then you can just use "cp" as "flashing utility" and "mkimage -l" to verify the checksums after writing.
If you are not building images on the target mkimage is an overkill to validate the image. As a matter of fact, we do not build a cross version of this utility.
Please also consider that their is not enough space in the writable file system so image is kept in ram by the update application until update is completed. So, dependency on external utilities is not necessary or not required.
Wolfgang, now my question is "image.h" file needed by the update application and this file is GPL. Would you consider dual licensing this file only so it could be included in such a proprietary closed-source program?
Best regards, Tolunay