summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/genenv2
-rw-r--r--scripts/imx/imx-image.c16
2 files changed, 14 insertions, 4 deletions
diff --git a/scripts/genenv b/scripts/genenv
index 374db6d479..c14cd87a8c 100755
--- a/scripts/genenv
+++ b/scripts/genenv
@@ -24,7 +24,7 @@ for i in $*; do
done
)
-find $tempdir -name '.svn' -o -name '*~' | xargs --no-run-if-empty rm -r
+find $tempdir -name '.svn' -o -name '*~' -delete
$objtree/scripts/bareboxenv -s $tempdir $target
diff --git a/scripts/imx/imx-image.c b/scripts/imx/imx-image.c
index 09fdc5f1c0..ec571ebf3e 100644
--- a/scripts/imx/imx-image.c
+++ b/scripts/imx/imx-image.c
@@ -632,7 +632,7 @@ int main(int argc, char *argv[])
char *imagename = NULL;
char *outfile = NULL;
void *buf;
- size_t image_size = 0;
+ size_t image_size = 0, load_size;
struct stat s;
int infd, outfd;
int dcd_only = 0;
@@ -714,12 +714,22 @@ int main(int argc, char *argv[])
exit (0);
}
+ /*
+ * Add 0x1000 to the image size for the DCD.
+ * Align up to a 4k boundary, because:
+ * - at least i.MX5 NAND boot only reads full NAND pages and misses the
+ * last partial NAND page.
+ * - i.MX6 SPI NOR boot corrupts the last few bytes of an image loaded
+ * in ver funy ways when the image size is not 4 byte aligned
+ */
+ load_size = ((image_size + 0x1000) + 0xfff) & ~0xfff;
+
switch (header_version) {
case 1:
- add_header_v1(buf, image_dcd_offset, image_load_addr, image_size + 0x1000);
+ add_header_v1(buf, image_dcd_offset, image_load_addr, load_size);
break;
case 2:
- add_header_v2(buf, image_dcd_offset, image_load_addr, image_size + 0x1000);
+ add_header_v2(buf, image_dcd_offset, image_load_addr, load_size);
break;
default:
fprintf(stderr, "Congratulations! You're welcome to implement header version %d\n",