summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGraeme Russ <graeme.russ@gmail.com>2011-04-13 19:43:24 +1000
committerGraeme Russ <graeme.russ@gmail.com>2011-04-13 19:43:24 +1000
commitec8016c856af29de2f2ca6c3692929423673bf66 (patch)
tree64034cbce6dc8d15006757534d4bf9f265353376
parentb16aadf411280fc426d7488ddd8a5b2038b7194d (diff)
downloadu-boot-imx-ec8016c856af29de2f2ca6c3692929423673bf66.zip
u-boot-imx-ec8016c856af29de2f2ca6c3692929423673bf66.tar.gz
u-boot-imx-ec8016c856af29de2f2ca6c3692929423673bf66.tar.bz2
eNET: Fix saveenv crash
CONFIG_ENV_SIZE = CONFIG_ENV_SECT_SIZE = 128kB but CONFIG_SYS_STACK_SIZE is only 32kB resulting in saveenv causing a stack overflow and crashing U-Boot. Resolve by reducing CONFIG_ENV_SIZE to 4kB Also fix up CONFIG_SYS_MALLOC_LEN to correctly use environment sector size and add some comments to the memory organisation configuration Signed-off-by: Graeme Russ <graeme.russ@gmail.com>
-rw-r--r--include/configs/eNET.h23
1 files changed, 17 insertions, 6 deletions
diff --git a/include/configs/eNET.h b/include/configs/eNET.h
index 34a9d68..f3ef7d2 100644
--- a/include/configs/eNET.h
+++ b/include/configs/eNET.h
@@ -158,16 +158,19 @@
/*-----------------------------------------------------------------------
* Memory organization:
* 32kB Stack
+ * 16kB Cache-As-RAM @ 0x19200000
* 256kB Monitor
+ * (128kB + Environment Sector Size) malloc pool
*/
-#define CONFIG_SYS_STACK_SIZE 0x8000
+#define CONFIG_SYS_STACK_SIZE (32 * 1024)
#define CONFIG_SYS_CAR_ADDR 0x19200000
-#define CONFIG_SYS_CAR_SIZE 0x00004000
+#define CONFIG_SYS_CAR_SIZE (16 * 1024)
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_CAR_ADDR + \
CONFIG_SYS_CAR_SIZE)
#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_TEXT_BASE
#define CONFIG_SYS_MONITOR_LEN (256 * 1024)
-#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + 128*1024)
+#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SECT_SIZE + \
+ 128*1024)
/* Address of temporary Global Data */
#define CONFIG_SYS_INIT_GD_ADDR CONFIG_SYS_CAR_ADDR
@@ -198,17 +201,25 @@
#define CONFIG_SYS_FLASH_LEGACY_512Kx8
#define CONFIG_SYS_FLASH_ERASE_TOUT 2000 /* ms */
#define CONFIG_SYS_FLASH_WRITE_TOUT 2000 /* ms */
+
/*-----------------------------------------------------------------------
* Environment configuration
+ * - Boot flash is 512kB with 64kB sectors
+ * - StrataFlash is 32MB with 128kB sectors
+ * - Redundant embedded environment is 25% of the Boot flash
+ * - Redundant StrataFlash environment is <1% of the StrataFlash
+ * - Environment is therefore located in StrataFlash
+ * - Primary copy is located in first sector of first flash
+ * - Redundant copy is located in second sector of first flash
+ * - Stack is only 32kB, so environment size is limited to 4kB
*/
#define CONFIG_ENV_IS_IN_FLASH
#define CONFIG_ENV_SECT_SIZE 0x20000
-#define CONFIG_ENV_SIZE CONFIG_ENV_SECT_SIZE
+#define CONFIG_ENV_SIZE 0x01000
#define CONFIG_ENV_ADDR CONFIG_SYS_FLASH_BASE_1
-/* Redundant Copy */
#define CONFIG_ENV_ADDR_REDUND (CONFIG_SYS_FLASH_BASE_1 + \
CONFIG_ENV_SECT_SIZE)
-#define CONFIG_ENV_SIZE_REDUND CONFIG_ENV_SECT_SIZE
+#define CONFIG_ENV_SIZE_REDUND CONFIG_ENV_SIZE
/*-----------------------------------------------------------------------
* PCI configuration