mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-21 06:31:31 +00: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
1 changed files with 7 additions and 5 deletions
|
@ -162,7 +162,7 @@ int au_check_cksum_valid(int idx, long nbytes)
|
||||||
int au_check_header_valid(int idx, long nbytes)
|
int au_check_header_valid(int idx, long nbytes)
|
||||||
{
|
{
|
||||||
image_header_t *hdr;
|
image_header_t *hdr;
|
||||||
unsigned long checksum;
|
unsigned long checksum, fsize;
|
||||||
|
|
||||||
hdr = (image_header_t *)LOAD_ADDR;
|
hdr = (image_header_t *)LOAD_ADDR;
|
||||||
/* check the easy ones first */
|
/* check the easy ones first */
|
||||||
|
@ -205,7 +205,7 @@ int au_check_header_valid(int idx, long nbytes)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if ((idx == IDX_ROOTFS) &&
|
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]);
|
printf ("Image %s wrong type\n", aufile[idx]);
|
||||||
ausize[idx] = 0;
|
ausize[idx] = 0;
|
||||||
|
@ -213,8 +213,10 @@ int au_check_header_valid(int idx, long nbytes)
|
||||||
}
|
}
|
||||||
/* recycle checksum */
|
/* recycle checksum */
|
||||||
checksum = ntohl(hdr->ih_size);
|
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);
|
checksum += sizeof(*hdr);
|
||||||
|
|
||||||
/* check the size does not exceed space in flash. HUSH scripts */
|
/* 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;
|
return -1;
|
||||||
}
|
}
|
||||||
/* Update with the real filesize */
|
/* 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 */
|
return checksum; /* return size to be written to flash */
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue