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

login
register
mail settings
Submitter Alexandre Belloni
Date July 2, 2012, 11:37 a.m.
Message ID <1341229079-5281-1-git-send-email-alexandre.belloni@piout.net>
Download mbox | patch
Permalink /patch/168578/
State Changes Requested
Delegated to: Andreas Bießmann
Headers show

Comments

Alexandre Belloni - July 2, 2012, 11:37 a.m.
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
ubootenv   0x00004200
uboot      0x00008400
kernel     0x00084000

Signed-off-by: Alexandre Belloni <alexandre.belloni@piout.net>
---
Changes for v2:
- changed the layout as per Marek's recommendation
Changes for v3:
- prefixed the patch title with AT91SAM9*:
Changes for v4:
- changed the layout again as per Ulf Samuelsson's request:
http://lists.denx.de/pipermail/u-boot/2012-February/118988.html
Changes for v5:
- also update partition list
Changes for v6:
- rebase on latest u-boot-atmel

 board/atmel/at91sam9260ek/partition.c |    2 +-
 board/atmel/at91sam9261ek/partition.c |    2 +-
 board/atmel/at91sam9263ek/partition.c |    2 +-
 board/atmel/at91sam9rlek/partition.c  |    2 +-
 include/configs/at91sam9260ek.h       |    5 +++--
 include/configs/at91sam9261ek.h       |    5 +++--
 include/configs/at91sam9263ek.h       |    2 +-
 include/configs/at91sam9rlek.h        |    3 ++-
 8 files changed, 13 insertions(+), 10 deletions(-)
Andreas Bießmann - July 2, 2012, 12:01 p.m.
Dear Alexandre Belloni,

On 02.07.2012 13:37, 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
> ubootenv   0x00004200
> uboot      0x00008400
> kernel     0x00084000
> 
> Signed-off-by: Alexandre Belloni <alexandre.belloni@piout.net>
> ---
> Changes for v2:
> - changed the layout as per Marek's recommendation
> Changes for v3:
> - prefixed the patch title with AT91SAM9*:
> Changes for v4:
> - changed the layout again as per Ulf Samuelsson's request:
> http://lists.denx.de/pipermail/u-boot/2012-February/118988.html
> Changes for v5:
> - also update partition list
> Changes for v6:
> - rebase on latest u-boot-atmel
> 
>  board/atmel/at91sam9260ek/partition.c |    2 +-
>  board/atmel/at91sam9261ek/partition.c |    2 +-
>  board/atmel/at91sam9263ek/partition.c |    2 +-
>  board/atmel/at91sam9rlek/partition.c  |    2 +-
>  include/configs/at91sam9260ek.h       |    5 +++--
>  include/configs/at91sam9261ek.h       |    5 +++--
>  include/configs/at91sam9263ek.h       |    2 +-
>  include/configs/at91sam9rlek.h        |    3 ++-
>  8 files changed, 13 insertions(+), 10 deletions(-)
> 
> diff --git a/board/atmel/at91sam9260ek/partition.c b/board/atmel/at91sam9260ek/partition.c
> index 2629c67..842bb89 100644
> --- a/board/atmel/at91sam9260ek/partition.c
> +++ b/board/atmel/at91sam9260ek/partition.c
> @@ -35,6 +35,6 @@ dataflash_protect_t area_list[NB_DATAFLASH_AREA] = {
>  	{0x00000000, 0x000041FF, FLAG_PROTECT_SET,   0, "Bootstrap"},
>  	{0x00004200, 0x000083FF, FLAG_PROTECT_CLEAR, 0, "Environment"},
>  	{0x00008400, 0x00041FFF, FLAG_PROTECT_SET,   0, "U-Boot"},
> -	{0x00042000, 0x00251FFF, FLAG_PROTECT_CLEAR, 0,	"Kernel"},
> +	{0x00084000, 0x00251FFF, FLAG_PROTECT_CLEAR, 0,	"Kernel"},

really sorry for that, I should have seen it before. Shouldn't we also
make the U-Boot partition greater when we move the start of kernel
partition?
Can you please send another version, rest is fine (checkpatch, apply
cleanly, no build errors).

>  	{0x00252000, 0xFFFFFFFF, FLAG_PROTECT_CLEAR, 0,	"FS"},
>  };

<snip>

> diff --git a/include/configs/at91sam9260ek.h b/include/configs/at91sam9260ek.h
> index 07b1968..ef25fa5 100644
> --- a/include/configs/at91sam9260ek.h
> +++ b/include/configs/at91sam9260ek.h
> @@ -187,7 +187,7 @@
>  #define CONFIG_ENV_OFFSET		0x4200
>  #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_BOOTCOMMAND	"cp.b 0xC0084000 0x22000000 0x210000; bootm"

also sorry, but size is wrong here! We reduced the partition to
0x1CE000, it is about 1.8 MiB now and not 2 MiB as before.

Best regards

Andreas Bießmann
Alexandre Belloni - July 2, 2012, 12:55 p.m.
On Mon, Jul 02, 2012 at 02:01:00PM +0200, Andreas Bießmann wrote :
> really sorry for that, I should have seen it before. Shouldn't we also
> make the U-Boot partition greater when we move the start of kernel
> partition?
> Can you please send another version, rest is fine (checkpatch, apply
> cleanly, no build errors).
> 
> >  	{0x00252000, 0xFFFFFFFF, FLAG_PROTECT_CLEAR, 0,	"FS"},
> >  };

Ah, sure, I'll fix that.

> 
> <snip>
> 
> > diff --git a/include/configs/at91sam9260ek.h b/include/configs/at91sam9260ek.h
> > index 07b1968..ef25fa5 100644
> > --- a/include/configs/at91sam9260ek.h
> > +++ b/include/configs/at91sam9260ek.h
> > @@ -187,7 +187,7 @@
> >  #define CONFIG_ENV_OFFSET		0x4200
> >  #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_BOOTCOMMAND	"cp.b 0xC0084000 0x22000000 0x210000; bootm"
> 
> also sorry, but size is wrong here! We reduced the partition to
> 0x1CE000, it is about 1.8 MiB now and not 2 MiB as before.
> 

Right, I didn't really care about the end of the kernel partition as the
9261ek has an 8MiB dataflash and my rootfs is in NAND. The kernel is
around 1.7MiB using the default configuration. Maybe, we should also
extend its partition ?

> Best regards
> 
> Andreas Bießmann
>
Andreas Bießmann - July 2, 2012, 1:07 p.m.
Dear Alexandre Belloni,

On 02.07.2012 14:55, Alexandre Belloni wrote:
> On Mon, Jul 02, 2012 at 02:01:00PM +0200, Andreas Bießmann wrote :

>>> diff --git a/include/configs/at91sam9260ek.h b/include/configs/at91sam9260ek.h
>>> index 07b1968..ef25fa5 100644
>>> --- a/include/configs/at91sam9260ek.h
>>> +++ b/include/configs/at91sam9260ek.h
>>> @@ -187,7 +187,7 @@
>>>  #define CONFIG_ENV_OFFSET		0x4200
>>>  #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_BOOTCOMMAND	"cp.b 0xC0084000 0x22000000 0x210000; bootm"
>>
>> also sorry, but size is wrong here! We reduced the partition to
>> 0x1CE000, it is about 1.8 MiB now and not 2 MiB as before.
>>
> 
> Right, I didn't really care about the end of the kernel partition as the
> 9261ek has an 8MiB dataflash and my rootfs is in NAND. The kernel is
> around 1.7MiB using the default configuration. Maybe, we should also
> extend its partition ?

well, I don't care about that too cause we usually don't have a
dataflash in our devices.

I think for the eval kits it would be nice to have a board support
package which can be loaded from different media. Unfortunately I used
to work with bare UBoot, vanilla kernel a.s.o. Therefore I have not such
deep insight into the atmel provided bsp's. In short words: I tend to
say we should increase the space for kernel partition but I fear to
break some special bsp's.
As I can see the kernel do not provide a special mapping here. If you
are not aware of some other source (e.g. linux4sam), let us increase the
space for kernel a bit.

Best regards

Andreas Bießmann
Alexandre Belloni - July 2, 2012, 2:02 p.m.
On Mon, Jul 02, 2012 at 03:07:55PM +0200, Andreas Bießmann wrote :
> > Right, I didn't really care about the end of the kernel partition as the
> > 9261ek has an 8MiB dataflash and my rootfs is in NAND. The kernel is
> > around 1.7MiB using the default configuration. Maybe, we should also
> > extend its partition ?
> 
> well, I don't care about that too cause we usually don't have a
> dataflash in our devices.
> 
> I think for the eval kits it would be nice to have a board support
> package which can be loaded from different media. Unfortunately I used
> to work with bare UBoot, vanilla kernel a.s.o. Therefore I have not such
> deep insight into the atmel provided bsp's. In short words: I tend to
> say we should increase the space for kernel partition but I fear to
> break some special bsp's.
> As I can see the kernel do not provide a special mapping here. If you
> are not aware of some other source (e.g. linux4sam), let us increase the
> space for kernel a bit.
> 

Actually, the two use cases listed on linux4sam are:

 - at91bootstrap, u-boot, kernel in dataflash and rootfs in nand
 - at91bootstrap, u-boot, kernel and rootfs in nand

See: www.at91.com/linux4sam/bin/view/Linux4SAM/GettingStarted

Actually, the 9rlek, 9260ek and 9261ek have a 4MiB dataflash and the
9263ek doesn't have an embedded dataflash. I guess I'll change the
mapping to still get 2MiB for the kernel.

regards,

Patch

diff --git a/board/atmel/at91sam9260ek/partition.c b/board/atmel/at91sam9260ek/partition.c
index 2629c67..842bb89 100644
--- a/board/atmel/at91sam9260ek/partition.c
+++ b/board/atmel/at91sam9260ek/partition.c
@@ -35,6 +35,6 @@  dataflash_protect_t area_list[NB_DATAFLASH_AREA] = {
 	{0x00000000, 0x000041FF, FLAG_PROTECT_SET,   0, "Bootstrap"},
 	{0x00004200, 0x000083FF, FLAG_PROTECT_CLEAR, 0, "Environment"},
 	{0x00008400, 0x00041FFF, FLAG_PROTECT_SET,   0, "U-Boot"},
-	{0x00042000, 0x00251FFF, FLAG_PROTECT_CLEAR, 0,	"Kernel"},
+	{0x00084000, 0x00251FFF, FLAG_PROTECT_CLEAR, 0,	"Kernel"},
 	{0x00252000, 0xFFFFFFFF, FLAG_PROTECT_CLEAR, 0,	"FS"},
 };
diff --git a/board/atmel/at91sam9261ek/partition.c b/board/atmel/at91sam9261ek/partition.c
index c739b11..96c4fcb 100644
--- a/board/atmel/at91sam9261ek/partition.c
+++ b/board/atmel/at91sam9261ek/partition.c
@@ -35,6 +35,6 @@  dataflash_protect_t area_list[NB_DATAFLASH_AREA] = {
 	{0x00000000, 0x000041FF, FLAG_PROTECT_SET,   0, "Bootstrap"},
 	{0x00004200, 0x000083FF, FLAG_PROTECT_CLEAR, 0, "Environment"},
 	{0x00008400, 0x00041FFF, FLAG_PROTECT_SET,   0, "U-Boot"},
-	{0x00042000, 0x00251FFF, FLAG_PROTECT_CLEAR, 0,	"Kernel"},
+	{0x00084000, 0x00251FFF, FLAG_PROTECT_CLEAR, 0,	"Kernel"},
 	{0x00252000, 0xFFFFFFFF, FLAG_PROTECT_CLEAR, 0,	"FS"},
 };
diff --git a/board/atmel/at91sam9263ek/partition.c b/board/atmel/at91sam9263ek/partition.c
index 7e1d46f..7f11fd0 100644
--- a/board/atmel/at91sam9263ek/partition.c
+++ b/board/atmel/at91sam9263ek/partition.c
@@ -34,6 +34,6 @@  dataflash_protect_t area_list[NB_DATAFLASH_AREA] = {
 	{0x00000000, 0x000041FF, FLAG_PROTECT_SET,   0, "Bootstrap"},
 	{0x00004200, 0x000083FF, FLAG_PROTECT_CLEAR, 0, "Environment"},
 	{0x00008400, 0x00041FFF, FLAG_PROTECT_SET,   0, "U-Boot"},
-	{0x00042000, 0x00251FFF, FLAG_PROTECT_CLEAR, 0,	"Kernel"},
+	{0x00084000, 0x00251FFF, FLAG_PROTECT_CLEAR, 0,	"Kernel"},
 	{0x00252000, 0xFFFFFFFF, FLAG_PROTECT_CLEAR, 0,	"FS"},
 };
diff --git a/board/atmel/at91sam9rlek/partition.c b/board/atmel/at91sam9rlek/partition.c
index 7e1d46f..7f11fd0 100644
--- a/board/atmel/at91sam9rlek/partition.c
+++ b/board/atmel/at91sam9rlek/partition.c
@@ -34,6 +34,6 @@  dataflash_protect_t area_list[NB_DATAFLASH_AREA] = {
 	{0x00000000, 0x000041FF, FLAG_PROTECT_SET,   0, "Bootstrap"},
 	{0x00004200, 0x000083FF, FLAG_PROTECT_CLEAR, 0, "Environment"},
 	{0x00008400, 0x00041FFF, FLAG_PROTECT_SET,   0, "U-Boot"},
-	{0x00042000, 0x00251FFF, FLAG_PROTECT_CLEAR, 0,	"Kernel"},
+	{0x00084000, 0x00251FFF, FLAG_PROTECT_CLEAR, 0,	"Kernel"},
 	{0x00252000, 0xFFFFFFFF, FLAG_PROTECT_CLEAR, 0,	"FS"},
 };
diff --git a/include/configs/at91sam9260ek.h b/include/configs/at91sam9260ek.h
index 07b1968..ef25fa5 100644
--- a/include/configs/at91sam9260ek.h
+++ b/include/configs/at91sam9260ek.h
@@ -187,7 +187,7 @@ 
 #define CONFIG_ENV_OFFSET		0x4200
 #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_BOOTCOMMAND	"cp.b 0xC0084000 0x22000000 0x210000; bootm"
 #define CONFIG_BOOTARGS		"console=ttyS0,115200 "			\
 				"root=/dev/mtdblock0 "			\
 				"mtdparts=atmel_nand:-(root) "		\
@@ -201,7 +201,7 @@ 
 #define CONFIG_ENV_OFFSET		0x4200
 #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_BOOTCOMMAND	"cp.b 0xD0084000 0x22000000 0x210000; bootm"
 #define CONFIG_BOOTARGS		"console=ttyS0,115200 "			\
 				"root=/dev/mtdblock0 "			\
 				"mtdparts=atmel_nand:-(root) "		\
@@ -230,6 +230,7 @@ 
 #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
 
 /*
  * Size of malloc() pool
diff --git a/include/configs/at91sam9261ek.h b/include/configs/at91sam9261ek.h
index 6fd0b83..014437b 100644
--- a/include/configs/at91sam9261ek.h
+++ b/include/configs/at91sam9261ek.h
@@ -189,7 +189,7 @@ 
 #define CONFIG_ENV_OFFSET	0x4200
 #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_BOOTCOMMAND	"cp.b 0xC0084000 0x22000000 0x210000; bootm"
 #define CONFIG_BOOTARGS		"console=ttyS0,115200 "			\
 				"root=/dev/mtdblock0 "			\
 				"mtdparts=atmel_nand:-(root) "		\
@@ -203,7 +203,7 @@ 
 #define CONFIG_ENV_OFFSET	0x4200
 #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_BOOTCOMMAND	"cp.b 0xD0084000 0x22000000 0x210000; bootm"
 #define CONFIG_BOOTARGS		"console=ttyS0,115200 "			\
 				"root=/dev/mtdblock0 "			\
 				"mtdparts=atmel_nand:-(root) "		\
@@ -232,6 +232,7 @@ 
 #define CONFIG_SYS_PBSIZE		(CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
 #define CONFIG_SYS_LONGHELP
 #define CONFIG_CMDLINE_EDITING
+#define CONFIG_AUTO_COMPLETE
 
 /*
  * Size of malloc() pool
diff --git a/include/configs/at91sam9263ek.h b/include/configs/at91sam9263ek.h
index f2163f1..4309f71 100644
--- a/include/configs/at91sam9263ek.h
+++ b/include/configs/at91sam9263ek.h
@@ -318,7 +318,7 @@ 
 #define CONFIG_ENV_OFFSET		0x4200
 #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_BOOTCOMMAND	"cp.b 0xC0084000 0x22000000 0x210000; bootm"
 #define CONFIG_BOOTARGS		"console=ttyS0,115200 " \
 				"root=/dev/mtdblock0 " \
 				"mtdparts=atmel_nand:-(root) "\
diff --git a/include/configs/at91sam9rlek.h b/include/configs/at91sam9rlek.h
index 45f8baf..c5952e9 100644
--- a/include/configs/at91sam9rlek.h
+++ b/include/configs/at91sam9rlek.h
@@ -155,7 +155,7 @@ 
 #define CONFIG_ENV_OFFSET		0x4200
 #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_BOOTCOMMAND	"cp.b 0xC0084000 0x22000000 0x210000; bootm"
 #define CONFIG_BOOTARGS		"console=ttyS0,115200 " \
 				"root=/dev/mtdblock0 " \
 				"mtdparts=atmel_nand:-(root) "\
@@ -182,6 +182,7 @@ 
 #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
 
 /*
  * Size of malloc() pool