@@ -169,11 +169,30 @@
"nand info ; " \
"setexpr fcb_sz ${update_nand_stride} * ${update_nand_count};" \
"setexpr update_nand_fcb ${fcb_sz} * ${nand_writesize}\0" \
+ "update_nand_write_fcb=" \
+ "setenv i ${update_nand_count} ; " \
+ "setenv update_nand_offset 0x0 ; " \
+ "setexpr update_nand_step " \
+ "${update_nand_stride} * ${nand_writesize} ; " \
+ "while test ${i} -gt 0 ; do " \
+ "echo ${update_nand_offset} ; " \
+ "nand scrub -y ${update_nand_offset} " \
+ "${nand_erasesize} ; " \
+ "nand write.raw ${loadaddr} " \
+ "${update_nand_offset} " \
+ "${update_nand_stride} ; " \
+ "setexpr i ${i} - 1 ; " \
+ "setexpr update_nand_offset " \
+ "${update_nand_offset} + " \
+ "${update_nand_step} ; " \
+ "done ; " \
+ "setenv i ; " \
+ "setenv update_nand_offset ; " \
+ "setenv update_nand_step\0" \
"update_nand_full=" /* Update FCB, DBBT and FW */ \
"if tftp ${update_nand_full_filename} ; then " \
"run update_nand_get_fcb_size ; " \
- "nand scrub -y 0x0 ${filesize} ; " \
- "nand write.raw ${loadaddr} 0x0 ${fcb_sz} ; " \
+ "run update_nand_write_fcb ; " \
"setexpr update_off ${loadaddr} + ${update_nand_fcb} ; " \
"setexpr update_sz ${filesize} - ${update_nand_fcb} ; " \
"nand write ${update_off} ${update_nand_fcb} ${update_sz} ; " \
@@ -171,11 +171,30 @@
"nand info ; " \
"setexpr fcb_sz ${update_nand_stride} * ${update_nand_count};" \
"setexpr update_nand_fcb ${fcb_sz} * ${nand_writesize}\0" \
+ "update_nand_write_fcb=" \
+ "setenv i ${update_nand_count} ; " \
+ "setenv update_nand_offset 0x0 ; " \
+ "setexpr update_nand_step " \
+ "${update_nand_stride} * ${nand_writesize} ; " \
+ "while test ${i} -gt 0 ; do " \
+ "echo ${update_nand_offset} ; " \
+ "nand scrub -y ${update_nand_offset} " \
+ "${nand_erasesize} ; " \
+ "nand write.raw ${loadaddr} " \
+ "${update_nand_offset} " \
+ "${update_nand_stride} ; " \
+ "setexpr i ${i} - 1 ; " \
+ "setexpr update_nand_offset " \
+ "${update_nand_offset} + " \
+ "${update_nand_step} ; " \
+ "done ; " \
+ "setenv i ; " \
+ "setenv update_nand_offset ; " \
+ "setenv update_nand_step\0" \
"update_nand_firmware_full=" /* Update FCB, DBBT and FW */ \
"if tftp ${update_nand_full_filename} ; then " \
"run update_nand_get_fcb_size ; " \
- "nand scrub -y 0x0 ${filesize} ; " \
- "nand write.raw ${loadaddr} 0x0 ${fcb_sz} ; " \
+ "run update_nand_write_fcb ; " \
"setexpr update_off ${loadaddr} + ${update_nand_fcb} ; " \
"setexpr update_sz ${filesize} - ${update_nand_fcb} ; " \
"nand write ${update_off} ${update_nand_fcb} ${update_sz} ; " \
--
1.9.3
From 24df742ccc21eb1e3f2453f54d9632b8c670f659 Mon Sep 17 00:00:00 2001
From: Joerg Krause <jkrause@posteo.de>
Date: Fri, 30 May 2014 00:01:22 +0200
Subject: [PATCH 2/2] ARM mxs Fix NAND FCB flashing
This is a fix for the previous patch.
It is enough to write only a single page for the FCB block instead of the whole stride.
Before writing the DBBT area and the Boot Firmware the flash area is erased.
This patch is nothing more than a workaround. There is a problem of how mxsboot generates the boot image and using the nand write.raw command. The whole story is explained in this thread:
http://lists.denx.de/pipermail/u-boot/2013-April/150950.html
I am not sure if mxsboot or nand write.raw should be fixed instead?
---
include/configs/m28evk.h | 3 ++-
include/configs/mx28evk.h | 3 ++-
2 files changed, 4 insertions(+), 2 deletions(-)
@@ -180,7 +180,7 @@
"${nand_erasesize} ; " \
"nand write.raw ${loadaddr} " \
"${update_nand_offset} " \
- "${update_nand_stride} ; " \
+ "0x1 ; " \
"setexpr i ${i} - 1 ; " \
"setexpr update_nand_offset " \
"${update_nand_offset} + " \
@@ -195,6 +195,7 @@
"run update_nand_write_fcb ; " \
"setexpr update_off ${loadaddr} + ${update_nand_fcb} ; " \
"setexpr update_sz ${filesize} - ${update_nand_fcb} ; " \
+ "nand erase ${update_nand_fcb} ${update_sz} ; " \
"nand write ${update_off} ${update_nand_fcb} ${update_sz} ; " \
"fi\0" \
"update_nand_firmware=" /* Update only firmware */ \
@@ -182,7 +182,7 @@
"${nand_erasesize} ; " \
"nand write.raw ${loadaddr} " \
"${update_nand_offset} " \
- "${update_nand_stride} ; " \
+ "0x1 ; " \
"setexpr i ${i} - 1 ; " \
"setexpr update_nand_offset " \
"${update_nand_offset} + " \
@@ -197,6 +197,7 @@
"run update_nand_write_fcb ; " \
"setexpr update_off ${loadaddr} + ${update_nand_fcb} ; " \
"setexpr update_sz ${filesize} - ${update_nand_fcb} ; " \
+ "nand erase ${update_nand_fcb} ${update_sz} ; " \
"nand write ${update_off} ${update_nand_fcb} ${update_sz} ; " \
"fi\0" \
"update_nand_firmware=" /* Update only firmware */ \