
On 3/23/23 20:57, Pali Rohár wrote:
Ensure that UART aligned header size is always stored into kwbimage v1 header. It is needed for proper UART booting. Calculation of headersz field was broken in commit d656f5a0ee22 ("tools: kwboot: Calculate real used space in kwbimage header when calling kwboot_img_grow_hdr()") which introduced optimization of kwboot_img_grow_hdr() function.
Fixes: d656f5a0ee22 ("tools: kwboot: Calculate real used space in kwbimage header when calling kwboot_img_grow_hdr()") Signed-off-by: Pali Rohár pali@kernel.org
Reviewed-by: Stefan Roese sr@denx.de
Thanks, Stefan
tools/kwboot.c | 11 +++++++++++ 1 file changed, 11 insertions(+)
diff --git a/tools/kwboot.c b/tools/kwboot.c index c131711444ec..dd894e80db1c 100644 --- a/tools/kwboot.c +++ b/tools/kwboot.c @@ -2171,6 +2171,17 @@ kwboot_img_patch(void *img, size_t *size, int baudrate)
kwboot_printv("Aligning image header to Xmodem block size\n"); kwboot_img_grow_hdr(img, size, grow);
hdrsz += grow;
/*
* kwbimage v1 contains header size field and for UART type it
* must be set to the aligned xmodem header size because BootROM
* rounds header size down to xmodem block size.
*/
if (kwbimage_version(img) == 1) {
hdr->headersz_msb = hdrsz >> 16;
hdr->headersz_lsb = cpu_to_le16(hdrsz & 0xffff);
}
}
hdr->checksum = kwboot_hdr_csum8(hdr) - csum;
Viele Grüße, Stefan Roese