[U-Boot-Users] Dynamic location of the environment sector

Angelos Manousarides amanous at inaccessnetworks.com
Wed Jun 14 13:55:01 CEST 2006


I have a board that comes in three flash confirurations:
- 32MB
- 64MB
- 128MB

The cfi code can safely detect the flash sizes, banks and widths at boot 
time. I have however the problem that the flash chips are "top" type and 
the small sectors are at the end of the address space. So I want to make 
the last sector (a small sector) to contain the environment. The last 
sector though is in a different address (and has a different size) 
depending on the flash configuration.

Currently the defines for the environment expect raw numerical values. 
Is there an infrastructure somewhere to define the flash size at 
runtime? I tried to print the flash sizes in the board specific codes, 
for instance:

extern flash_info_t flash_info[];

printf("flash 0 : %d %x\n", flash_info[0].size, 
flash_info[0].start[flash_info[0].sector_count-1]);
...

prints:

Flash: 64 MB
In:    serial
Out:   serial
Err:   serial
flash 0 : 67108864 3ff0000

(the second number is the address of the last sector)

And all sizes are detected correctly. I want to use these values to 
calculate the location of the environment dynamically at runtime. This 
way I can have a single u-boot image for all flash configurations!

--
Angelos Manousaridis




More information about the U-Boot mailing list