[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Fwd: configuring memory size



Hi,

just as an additional idea: Some years ago I used the C preprocessor to generate linker command files from a template. The benefit was, that I could have ONE header file defining address/size information for the C compiler and for the linker.

Maybe this would also be convenient for Peter?

wkr,
Thomas.


D. Peter Siddons wrote:
Hi Till,
The bsp is very similar to the uC5282. _M68k_Ramsize is copied from the linker value (_Ramsize) in bsp_start() (part of bspstart.c). I could easily check for the two possibilities here. Is that early enough?
Pete.


Till Straumann wrote:

Eric Norum wrote:


Looks like what I suggested won't work. The linker complains if the expressions in the ORIGIN/LENGTH contain symbols even if those symbols have been defined before the assignment.


I guess that you'll need to have two separate linkcmds files and use something like
-Wl,-TlinkcmdsFor4MFlash
or
-Wl,-TlinkcmdsFor16MFlash



A much better solution would be enhancing the BSP so it does
auto-detection. This has to be performed early enough,though.

If an early detection is too cumbersome, then you can limit
the initial size to a minimum, let's say 4M and increase the
size later. In order to make the additional ram available to
RTEMS (i.e., after the malloc heap/libc have been initialized)
you have to implement a trivial 'sbrk()'. The only constraint
is that the 'late ram'-portion of the heap to be added by sbrk()
must be contiguous to the initial heap.

You can look at powerpc/shared/bspstart which uses the
two-staged heap approach for different reasons.

HTH
T.




Eric Norum wrote:

You need to pass the --defsym option to the linker.

On the compile line, add something like
    -Wl,--defsym,_RamSize=0x10000000

On Dec 2, 2005, at 10:50 PM, D. Peter Siddons wrote:

I have two boards which are identical except for the amounts of flash and RAM. The linkcmds file has definitions for these parameters like:
_RamSize = DEFINED(_RamSize) ? _RamSize : 0x7f0000;


so my question is, can I invoke a definition somewhere in the application make process to override the one in linkcmds? If so, how and/or where?

Pete.






-- Eric Norum <norume@aps.anl.gov> Advanced Photon Source Argonne National Laboratory (630) 252-4793







--
--------------------------------------------
IMD Ingenieurbuero fuer Microcomputertechnik
Thomas Doerfler           Herbststrasse 8
D-82178 Puchheim          Germany
email:    Thomas.Doerfler@imd-systems.de
PGP public key available at:
     http://www.imd-systems.de/pgpkey_en.html