[U-Boot-Users] precious boot sectors @ lowboot

Hi all,
a lot of embedded systems have no other non-volatile memory than the boot flash. This is mostly Nor technology, which is quite expensive.
In case you are not using a uniform sector flash you'll have smaller "boot sectors" on top or bottom of memory. They are ideally suited for storing small amounts of data (counting operation time, stats or some application specific configuration data). Using a large sector, e.g. 64k would be a waste ...
I've the following scenario :
MPC5200 processor using low boot, i.e. reset vector @ 0x00000100. 8MB bottom boot sector flash with 8*8k sectors + 127*64k.
u-boot startup code uses the first 2 sectors, followed by the 8k embedded environment @ 0x8000. After that follows the rest of u-boot code.
It would be very fine if there would be a possibility to place the rest of u-boot code @ offset 0x10000, i.e. sector 8+.
I have modified "common/environment.c" with the attached patch, so there is a possibility to define "CFG_ENV_ADD_SPACE" which results in the above mentioned code offset. Of course "CFG_ENV_ADD_SPACE" must end on a sector boundary .... I'm using 0x4000 and therefore having 2 small sectors availabe under linux through /dev/mtd. Nested partitions are no problem at all.
Any other ideas ? Should I use u-boot.lds instead ?
diff --git a/common/environment.c b/common/environment.c index c7f54c6..dc8c89c 100644 --- a/common/environment.c +++ b/common/environment.c @@ -99,6 +99,10 @@ #if !defined(ENV_CRC) # define ENV_CRC ~0 #endif
+#ifdef CFG_ENV_ADD_SPACE +unsigned char env_add_space[CFG_ENV_ADD_SPACE] __PPCENV__; +#endif + env_t environment __PPCENV__ = { ENV_CRC, /* CRC Sum */ #ifdef CFG_REDUNDAND_ENVIRONMENT
regards, Andre

In message 200604211401.00461.andre.schwarz@matrix-vision.de you wrote:
MPC5200 processor using low boot, i.e. reset vector @ 0x00000100. 8MB bottom boot sector flash with 8*8k sectors + 127*64k.
u-boot startup code uses the first 2 sectors, followed by the 8k embedded environment @ 0x8000. After that follows the rest of u-boot code.
It would be very fine if there would be a possibility to place the rest of u-boot code @ offset 0x10000, i.e. sector 8+.
Just do it, then. All you need to change is your linker script.
I have modified "common/environment.c" with the attached patch, so there is a possibility to define "CFG_ENV_ADD_SPACE" which results in the above mentioned code offset. Of course "CFG_ENV_ADD_SPACE" must end on a sector boundary ....
Sorry, but I reject your patch. It makes IMHO no sense to modify a global source file when all you need to do is adjusting your linker script.
Should I use u-boot.lds instead ?
Yes, of course.
Best regards,
Wolfgang Denk
participants (2)
-
Andre Schwarz
-
Wolfgang Denk