embedded system ld script issues

Bryce Schober bryce.schober@dynonavionics.com
Tue Apr 27 17:49:00 GMT 2004


I'm trying to write my own ld script for use in an embedded system, but 
I'm having a hard time with a couple of things.  (I'm pretty much a 
newbie with ld)

First, what does the memory help (malloc, etc) need from the ld script?

Second, how can I define a memory map (where sections of code / data 
should go) in one place, to be used by source and in linkage?  I have 
been using a .h header file which #defines several constants, but it 
seems that those aren't visible symbols in the ld script.

What I want to do is define a memory map of my flash part in one file 
and have the address and size of each section depend on the used flash 
part and be accessible both to source C code and for the linking process.

An example memory map:

#if FLASHTYPE_NEW
    #define FLASH_SIZE 0x00100000
    #define FLASH_SECTOR_SIZE 0x00001000
#endif
#if FLASHTYPE_OLD
    #define FLASH_SIZE 0x00040000
    #define FLASH_SECTOR_SIZE 0x00000800
#endif

/**************************************/
#define BOOT_ADDR   0x00000000
#define BOOT_SIZE   (BOOT_END-BOOT_ADDR)
#define BOOT_END    0x00004000
/**************************************/
#define EEPROM_ADDR BOOT_END
#define EEPROM_SIZE (2*FLASH_SECTOR_SIZE)
#define EEPROM_END  (EEPROM_ADDR+EEPROM_SIZE)
/**************************************/
#define CODE_ADDR   EEPROM_END
#define CODE_SIZE   (FLASH_SIZE-CODE_ADDR)
#define CODE_END    (CODE_ADDR+CODE_SIZE)
/**************************************/

-- 
Bryce Schober
Design Engineer
Dynon Avionics, Inc.
www.dynonavionics.com



More information about the Binutils mailing list