mirror of
https://github.com/u-boot/u-boot.git
synced 2024-11-30 08:03:32 +08:00
MCC200: Fixes for update procedure
- fix logic error in image type handling - make sure file system images (cramfs etc.) get stored in flash with image header stripped so they can be mounted through MTD
This commit is contained in:
parent
743571145b
commit
e344568b1b
@ -162,7 +162,7 @@ int au_check_cksum_valid(int idx, long nbytes)
|
||||
int au_check_header_valid(int idx, long nbytes)
|
||||
{
|
||||
image_header_t *hdr;
|
||||
unsigned long checksum;
|
||||
unsigned long checksum, fsize;
|
||||
|
||||
hdr = (image_header_t *)LOAD_ADDR;
|
||||
/* check the easy ones first */
|
||||
@ -205,7 +205,7 @@ int au_check_header_valid(int idx, long nbytes)
|
||||
return -1;
|
||||
}
|
||||
if ((idx == IDX_ROOTFS) &&
|
||||
( (hdr->ih_type != IH_TYPE_RAMDISK) || (hdr->ih_type != IH_TYPE_FILESYSTEM) )
|
||||
( (hdr->ih_type != IH_TYPE_RAMDISK) && (hdr->ih_type != IH_TYPE_FILESYSTEM) )
|
||||
) {
|
||||
printf ("Image %s wrong type\n", aufile[idx]);
|
||||
ausize[idx] = 0;
|
||||
@ -213,8 +213,10 @@ int au_check_header_valid(int idx, long nbytes)
|
||||
}
|
||||
/* recycle checksum */
|
||||
checksum = ntohl(hdr->ih_size);
|
||||
/* for kernel and app the image header must also fit into flash */
|
||||
if (idx != IDX_FIRMWARE)
|
||||
|
||||
fsize = checksum + sizeof(*hdr);
|
||||
/* for kernel and ramdisk the image header must also fit into flash */
|
||||
if (idx == IDX_KERNEL || hdr->ih_type == IH_TYPE_RAMDISK)
|
||||
checksum += sizeof(*hdr);
|
||||
|
||||
/* check the size does not exceed space in flash. HUSH scripts */
|
||||
@ -224,7 +226,7 @@ int au_check_header_valid(int idx, long nbytes)
|
||||
return -1;
|
||||
}
|
||||
/* Update with the real filesize */
|
||||
ausize[idx] = (idx == IDX_FIRMWARE ? checksum + sizeof(*hdr) : checksum);
|
||||
ausize[idx] = fsize;
|
||||
|
||||
return checksum; /* return size to be written to flash */
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user