[U-Boot] [PATCH v3] AT91SAM9*: Change kernel address in dataflash to match u-boot's size

Ulf Samuelsson u-boot at emagii.com
Mon Feb 27 16:25:02 CET 2012


On 2012-02-20 17:40, Alexandre Belloni wrote:
> On at91sam platforms, u-boot grew larger than the allocated size in
> dataflash, the layout was:
> bootstrap  0x00000000
> ubootenv   0x00004200
> uboot      0x00008400
> kernel     0x00042000
>
> u-boot with the defconfig doesn't seem to fit in 0x42000 - 0x8400 =
> 0x39C00 bytes anymore.
>
> Now, the layout is:
> bootstrap  0x00000000
> uboot      0x00004000
> ubootenv   0x00084000
> ubootenv2  0x00088000
> kernel     0x0008C000
>


NAK!

1. You need to be aware of the page size of dataflashes.
     Each page is 1056 bytes, not 1024 bytes.
     Your patch will make the U-Boot image start in the middle of a page.
2. Std AT91bootstrap loads U-Boot from 0x8400
     so your patch breaks 99% of all SAM9  boards.

If you want to grow U-Boot, then

bootstrap  0x00000000		; 16 kB
ubootenv   0x00004200		; 16 kB	- Should be plenty
uboot      0x00008400		;
kernel     0x00063000		; Why waste space...




> Signed-off-by: Alexandre Belloni<alexandre.belloni at piout.net>
> ---
> Changes for v2:
> 	- changed the layout as per Marek's recommendation
> Changes for v3:
> 	- prefixed the patch title with AT91SAM9*:
>
>   include/configs/at91sam9260ek.h |   18 ++++++++++++------
>   include/configs/at91sam9261ek.h |   18 ++++++++++++------
>   include/configs/at91sam9263ek.h |   10 +++++++---
>   include/configs/at91sam9rlek.h  |   10 +++++++---
>   4 files changed, 38 insertions(+), 18 deletions(-)
>
> diff --git a/include/configs/at91sam9260ek.h b/include/configs/at91sam9260ek.h
> index db52ee6..b537760 100644
> --- a/include/configs/at91sam9260ek.h
> +++ b/include/configs/at91sam9260ek.h
> @@ -185,10 +185,12 @@
>   /* bootstrap + u-boot + env + linux in dataflash on CS0 */
>   #define CONFIG_ENV_IS_IN_DATAFLASH	1
>   #define CONFIG_SYS_MONITOR_BASE	(CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + 0x8400)
> -#define CONFIG_ENV_OFFSET		0x4200
> +#define CONFIG_ENV_OFFSET		0x84000
>   #define CONFIG_ENV_ADDR		(CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + CONFIG_ENV_OFFSET)
> -#define CONFIG_ENV_SIZE		0x4200
> -#define CONFIG_BOOTCOMMAND	"cp.b 0xC0042000 0x22000000 0x210000; bootm"
> +#define CONFIG_ENV_SIZE		0x4000
> +#define CONFIG_ENV_ADDR_REDUND (CONFIG_ENV_ADDR+CONFIG_ENV_SIZE)
> +#define CONFIG_ENV_SIZE_REDUND CONFIG_ENV_SIZE
> +#define CONFIG_BOOTCOMMAND	"cp.b 0xC008C000 0x22000000 0x210000; bootm"
>   #define CONFIG_BOOTARGS		"console=ttyS0,115200 "			\
>   				"root=/dev/mtdblock0 "			\
>   				"mtdparts=atmel_nand:-(root) "		\
> @@ -199,10 +201,12 @@
>   /* bootstrap + u-boot + env + linux in dataflash on CS1 */
>   #define CONFIG_ENV_IS_IN_DATAFLASH	1
>   #define CONFIG_SYS_MONITOR_BASE	(CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS1 + 0x8400)
> -#define CONFIG_ENV_OFFSET		0x4200
> +#define CONFIG_ENV_OFFSET		0x84000
>   #define CONFIG_ENV_ADDR		(CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS1 + CONFIG_ENV_OFFSET)
> -#define CONFIG_ENV_SIZE		0x4200
> -#define CONFIG_BOOTCOMMAND	"cp.b 0xD0042000 0x22000000 0x210000; bootm"
> +#define CONFIG_ENV_SIZE		0x4000
> +#define CONFIG_ENV_ADDR_REDUND (CONFIG_ENV_ADDR+CONFIG_ENV_SIZE)
> +#define CONFIG_ENV_SIZE_REDUND CONFIG_ENV_SIZE
> +#define CONFIG_BOOTCOMMAND	"cp.b 0xD008C000 0x22000000 0x210000; bootm"
>   #define CONFIG_BOOTARGS		"console=ttyS0,115200 "			\
>   				"root=/dev/mtdblock0 "			\
>   				"mtdparts=atmel_nand:-(root) "		\
> @@ -231,6 +235,8 @@
>   #define CONFIG_SYS_PBSIZE		(CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
>   #define CONFIG_SYS_LONGHELP		1
>   #define CONFIG_CMDLINE_EDITING	1
> +#define CONFIG_AUTO_COMPLETE
> +#define CONFIG_SYS_REDUNDAND_ENVIRONMENT
>
>   /*
>    * Size of malloc() pool
> diff --git a/include/configs/at91sam9261ek.h b/include/configs/at91sam9261ek.h
> index 5140b26..fa461da 100644
> --- a/include/configs/at91sam9261ek.h
> +++ b/include/configs/at91sam9261ek.h
> @@ -187,10 +187,12 @@
>   /* bootstrap + u-boot + env + linux in dataflash on CS0 */
>   #define CONFIG_ENV_IS_IN_DATAFLASH
>   #define CONFIG_SYS_MONITOR_BASE	(CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + 0x8400)
> -#define CONFIG_ENV_OFFSET	0x4200
> +#define CONFIG_ENV_OFFSET	0x84000
>   #define CONFIG_ENV_ADDR		(CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + CONFIG_ENV_OFFSET)
> -#define CONFIG_ENV_SIZE		0x4200
> -#define CONFIG_BOOTCOMMAND	"cp.b 0xC0042000 0x22000000 0x210000; bootm"
> +#define CONFIG_ENV_SIZE		0x4000
> +#define CONFIG_ENV_ADDR_REDUND (CONFIG_ENV_ADDR+CONFIG_ENV_SIZE)
> +#define CONFIG_ENV_SIZE_REDUND CONFIG_ENV_SIZE
> +#define CONFIG_BOOTCOMMAND	"cp.b 0xC008C000 0x22000000 0x210000; bootm"
>   #define CONFIG_BOOTARGS		"console=ttyS0,115200 "			\
>   				"root=/dev/mtdblock0 "			\
>   				"mtdparts=atmel_nand:-(root) "		\
> @@ -201,10 +203,12 @@
>   /* bootstrap + u-boot + env + linux in dataflash on CS3 */
>   #define CONFIG_ENV_IS_IN_DATAFLASH
>   #define CONFIG_SYS_MONITOR_BASE	(CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS3 + 0x8400)
> -#define CONFIG_ENV_OFFSET	0x4200
> +#define CONFIG_ENV_OFFSET	0x84000
>   #define CONFIG_ENV_ADDR		(CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS3 + CONFIG_ENV_OFFSET)
> -#define CONFIG_ENV_SIZE		0x4200
> -#define CONFIG_BOOTCOMMAND	"cp.b 0xD0042000 0x22000000 0x210000; bootm"
> +#define CONFIG_ENV_SIZE		0x4000
> +#define CONFIG_ENV_ADDR_REDUND (CONFIG_ENV_ADDR+CONFIG_ENV_SIZE)
> +#define CONFIG_ENV_SIZE_REDUND CONFIG_ENV_SIZE
> +#define CONFIG_BOOTCOMMAND	"cp.b 0xD008C000 0x22000000 0x210000; bootm"
>   #define CONFIG_BOOTARGS		"console=ttyS0,115200 "			\
>   				"root=/dev/mtdblock0 "			\
>   				"mtdparts=atmel_nand:-(root) "		\
> @@ -233,6 +237,8 @@
>   #define CONFIG_SYS_PBSIZE		(CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
>   #define CONFIG_SYS_LONGHELP
>   #define CONFIG_CMDLINE_EDITING
> +#define CONFIG_AUTO_COMPLETE
> +#define CONFIG_SYS_REDUNDAND_ENVIRONMENT
>
>   /*
>    * Size of malloc() pool
> diff --git a/include/configs/at91sam9263ek.h b/include/configs/at91sam9263ek.h
> index 8399246..253bee4 100644
> --- a/include/configs/at91sam9263ek.h
> +++ b/include/configs/at91sam9263ek.h
> @@ -314,10 +314,12 @@
>   /* bootstrap + u-boot + env + linux in dataflash on CS0 */
>   #define CONFIG_ENV_IS_IN_DATAFLASH	1
>   #define CONFIG_SYS_MONITOR_BASE	(CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + 0x8400)
> -#define CONFIG_ENV_OFFSET		0x4200
> +#define CONFIG_ENV_OFFSET		0x84000
>   #define CONFIG_ENV_ADDR		(CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + CONFIG_ENV_OFFSET)
> -#define CONFIG_ENV_SIZE		0x4200
> -#define CONFIG_BOOTCOMMAND	"cp.b 0xC0042000 0x22000000 0x210000; bootm"
> +#define CONFIG_ENV_SIZE		0x4000
> +#define CONFIG_ENV_ADDR_REDUND (CONFIG_ENV_ADDR+CONFIG_ENV_SIZE)
> +#define CONFIG_ENV_SIZE_REDUND CONFIG_ENV_SIZE
> +#define CONFIG_BOOTCOMMAND	"cp.b 0xC008C000 0x22000000 0x210000; bootm"
>   #define CONFIG_BOOTARGS		"console=ttyS0,115200 " \
>   				"root=/dev/mtdblock0 " \
>   				"mtdparts=atmel_nand:-(root) "\
> @@ -347,6 +349,8 @@
>   #define CONFIG_AUTO_COMPLETE
>   #define CONFIG_SYS_HUSH_PARSER
>   #define CONFIG_SYS_PROMPT_HUSH_PS2	">  "
> +#define CONFIG_AUTO_COMPLETE
> +#define CONFIG_SYS_REDUNDAND_ENVIRONMENT
>
>   /*
>    * Size of malloc() pool
> diff --git a/include/configs/at91sam9rlek.h b/include/configs/at91sam9rlek.h
> index 79ea1f2..423f523 100644
> --- a/include/configs/at91sam9rlek.h
> +++ b/include/configs/at91sam9rlek.h
> @@ -153,10 +153,12 @@
>   /* bootstrap + u-boot + env + linux in dataflash on CS0 */
>   #define CONFIG_ENV_IS_IN_DATAFLASH	1
>   #define CONFIG_SYS_MONITOR_BASE	(CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + 0x8400)
> -#define CONFIG_ENV_OFFSET		0x4200
> +#define CONFIG_ENV_OFFSET		0x84000
>   #define CONFIG_ENV_ADDR		(CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + CONFIG_ENV_OFFSET)
> -#define CONFIG_ENV_SIZE		0x4200
> -#define CONFIG_BOOTCOMMAND	"cp.b 0xC0042000 0x22000000 0x210000; bootm"
> +#define CONFIG_ENV_SIZE		0x4000
> +#define CONFIG_ENV_ADDR_REDUND (CONFIG_ENV_ADDR+CONFIG_ENV_SIZE)
> +#define CONFIG_ENV_SIZE_REDUND CONFIG_ENV_SIZE
> +#define CONFIG_BOOTCOMMAND	"cp.b 0xC008C000 0x22000000 0x210000; bootm"
>   #define CONFIG_BOOTARGS		"console=ttyS0,115200 " \
>   				"root=/dev/mtdblock0 " \
>   				"mtdparts=atmel_nand:-(root) "\
> @@ -183,6 +185,8 @@
>   #define CONFIG_SYS_PBSIZE		(CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
>   #define CONFIG_SYS_LONGHELP		1
>   #define CONFIG_CMDLINE_EDITING		1
> +#define CONFIG_AUTO_COMPLETE
> +#define CONFIG_SYS_REDUNDAND_ENVIRONMENT
>
>   /*
>    * Size of malloc() pool

-- 
Best Regards
Ulf Samuelsson
ulf at emagii.com
+46 722 427437



More information about the U-Boot mailing list