 
					
				
		
 
					
				
		
 
					
				
		
 
					
				
		
#----------------------------------------------------------------------------------------------------------------------##                                           DEFINITION DES "MEMORY SEGMENTS"                                           ## -------------------------------------------------------------------------------------------------------------------- ##        Segment (RWX : Read,Write,eXecute) : ORIGIN = Memory address, LENGTH = Segment size (0x0 = Unlimited)         ##----------------------------------------------------------------------------------------------------------------------#MEMORY{    CPU_IPSBAR          (RWX) : ORIGIN = 0x40000000, LENGTH = 0x0    RAM_SDRAM           (RWX) : ORIGIN = 0x00000000, LENGTH = 0x01000000    RAM_SDRAM_Vecteurs  (RWX) : ORIGIN = 0x00000000, LENGTH = 0x00000400    RAM_SRAM            (RWX) : ORIGIN = 0x20000000, LENGTH = 0x00010000    RAM_SRAM_Vecteurs   (RWX) : ORIGIN = 0x20000000, LENGTH = 0x00000400    RAM_SRAM_Data       (RWX) : ORIGIN = 0x20000400, LENGTH = 0x0000FC00    RAM_ProgSector      (RWX) : ORIGIN = 0x00000000, LENGTH = 0x0    FLASH_BootSector    (RWX) : ORIGIN = 0xFFE00000, LENGTH = 0x00004000    FLASH_Param1Sector  (RWX) : ORIGIN = 0xFFE04000, LENGTH = 0x0    FLASH_Param2Sector  (RWX) : ORIGIN = 0xFFE06000, LENGTH = 0x0    FLASH_EnvSector     (RWX) : ORIGIN = 0xFFE08000, LENGTH = 0x0    FLASH_ProgSector    (RWX) : ORIGIN = 0xFFE10000, LENGTH = 0x0}#----------------------------------------------------------------------------------------------------------------------##                                          DEFINITION DES "SECTIONS SEGMENTS"                                          ## -------------------------------------------------------------------------------------------------------------------- ##          .SectionName : { Section Content } > Puts at the beginning of Memory segment (>> Appends to End)            ##----------------------------------------------------------------------------------------------------------------------#SECTIONS{    #------------------------------------------------------------------------------------------------------------------#    #-                     DECLARATION & AFFECTATION DES "SECTIONS SEGMENTS" AUX "MEMORY SEGMENTS"                    -#    #------------------------------------------------------------------------------------------------------------------#    .RAM_SDRAM        : {} > RAM_SDRAM    .RAM_Vecteurs     : {} > RAM_SRAM_Vecteurs    .CPU_IPSBAR       : {} > CPU_IPSBAR    .RAM_SRAM         : {} > RAM_SRAM    .RAM_SRAM_Data    : {} > RAM_SRAM_Data    .FLASH_BootSector : {} > FLASH_BootSector    .FLASH_ProgSector : {} > FLASH_ProgSector    #------------------------------------------------------------------------------------------------------------------#    #-                          DEFINITION DES SYMBOLES GLOBAUX Utilisés dans l'application                           -#    #------------------------------------------------------------------------------------------------------------------#    ___IPSBAR           = ADDR(.CPU_IPSBAR);    ___VECTOR_RAM       = ADDR(.RAM_Vecteurs);    ___SDRAM            = ADDR(.RAM_SDRAM);    ___SDRAM_SIZE       = 0x01000000;    ___SRAM             = ADDR(.RAM_SRAM);    ___SRAM_SIZE        = 0x00010000;    ___EXT_FLASH        = ADDR(.FLASH_BootSector);    ___EXT_FLASH_SIZE   = 0x00200000;    ___SP_SIZE          = 0x2000;    #------------------------------------------------------------------------------------------------------------------#    #-        TABLE des VECTEURS ROM (Définitions des Vecteurs d'exception et d'interruption de l'application)        -#    # ---------------------------------------------------------------------------------------------------------------- #    #-                         Section Chargée en FLASH, Recopiée en SRAM AT(___VECTOR_RAM)                           -#    #------------------------------------------------------------------------------------------------------------------#    .CODE_Vecteurs :    {        BSP_ColdfireVectors.o   (.text)        . = ALIGN (0x40);    } >> FLASH_BootSector    #------------------------------------------------------------------------------------------------------------------#    #-   BOOTSTART CODE & RUNTIME LIBRARY (Fonctions Initialisation Hardware et Recopie de l'application en SDRAM)    -#    # ---------------------------------------------------------------------------------------------------------------- #    #-                                      Section Chargée & Exécutée en FLASH                                       -#    #------------------------------------------------------------------------------------------------------------------#    .CODE_Boot :    {        BSP_Asm_BootCode.o                      (.text)        BSP_HardwareInit.o                      (.text)        OBJECT(__ExitProcess,                   C_4i_CF_Runtime.a)        OBJECT(_clear_mem,                      C_4i_CF_Runtime.a)        OBJECT(__start,                         C_4i_CF_Runtime.a)        OBJECT(___initialize_hardware,          C_4i_CF_Runtime.a)        OBJECT(___initialize_OS,                C_4i_CF_Runtime.a)        OBJECT(_simple_block_copy,              C_4i_CF_Runtime.a)        OBJECT(___copy_rom_section,             C_4i_CF_Runtime.a)        OBJECT(___copy_rom_sections_to_ram,     C_4i_CF_Runtime.a)        . = ALIGN (0x40);    } >> FLASH_BootSector    __EndOfBootSector = .;    #------------------------------------------------------------------------------------------------------------------#    #-                               EXECUTABLE CODE & READ-ONLY DATA (Code Application)                              -#    # ---------------------------------------------------------------------------------------------------------------- #    #-            Section Chargée en FLASH AT(___CODE_ROM), Recopiée & Executée en SDRAM AT(___CODE_RAM)              -#    #------------------------------------------------------------------------------------------------------------------#    ___CODE_ROM     = ADDR(FLASH_ProgSector);    ___CODE_RAM     = ADDR(RAM_ProgSector);    .text : AT(___CODE_ROM)    {        . = ALIGN (0x4);        *(.text)        . = ALIGN (0x40);        *(.rodata)        . = ALIGN (0x40);    } > RAM_ProgSector    #------------------------------------------------------------------------------------------------------------------#    #-                                                INITIALIZED DATA                                                -#    # ---------------------------------------------------------------------------------------------------------------- #    #-                  Section Chargée en FLASH AT(___DATA_ROM), Recopiée en SDRAM AT(___DATA_RAM)                   -#    #------------------------------------------------------------------------------------------------------------------#    ___DATA_ROM     = ___CODE_ROM + SIZEOF(.text);    ___DATA_RAM     = ADDR(RAM_ProgSector) + SIZEOF(.text);    .data : AT(___DATA_ROM)    {        ___sinit__    = .;        STATICINIT        __START_DATA  = .;        *(.data)        __END_DATA    = .;        __START_SDATA = .;        *(.sdata)        __END_SDATA   = .;        __SDA_BASE    = .;        . = ALIGN (0x40);    } >> RAM_ProgSector    #------------------------------------------------------------------------------------------------------------------#    #-                                       UNINITIALIZED DATA CLEARED TO ZERO                                       -#    # ---------------------------------------------------------------------------------------------------------------- #    #-                                            Section Chargée en SDRAM                                            -#    #------------------------------------------------------------------------------------------------------------------#    .bss :    {        __START_SBSS  = .;        *(.sbss)        *(SCOMMON)        __END_SBSS    = .;        __START_BSS   = .;        *(.bss)        *(COMMON)        __END_BSS     = .;        . = ALIGN(0x4);    } >> RAM_ProgSector    #------------------------------------------------------------------------------------------------------------------#    #-       DEFINITION du HEAP MEMOIRE & PILE SYSTEME PROVISOIRE (PILE modifiée par CMX RTOS dans CMX_INIT.C)        -#    # ---------------------------------------------------------------------------------------------------------------- #    #-                                            Section Chargée en SDRAM                                            -#    #------------------------------------------------------------------------------------------------------------------#    .custom :    {        . = ALIGN(0x4);        ___HEAP_START   = .;        ___HEAP_END     = ___SDRAM + ___SDRAM_SIZE - ___SP_SIZE;        ___SP_END       = ___HEAP_END;        ___SP_INIT      = ___SP_END + ___SP_SIZE;        ___SP_INIT_SRAM = ___SRAM + ___SRAM_SIZE;    # Pile Temporaire de Démmarage en SRAM        ___SP_INIT      = ___SP_INIT_SRAM;        . = ALIGN (0x4);    } >> RAM_ProgSector    ___heap_addr    = ___HEAP_START;    ___heap_size    = ___HEAP_END - ___HEAP_START ;    __SP_INIT       = ___SP_INIT;    #------------------------------------------------------------------------------------------------------------------#    #-         TABLE de RECOPIE de la ROM vers la RAM utilisée par le code de démarrage de la RUNTIME LIBRARY         -#    # ---------------------------------------------------------------------------------------------------------------- #    #-    __S_romp = Séquence de 3 Words par section à recopier, la dernière section de la table doit être à zéro     -#    #-                                                                                                                -#    #-     Section à recopier = { ROM Start Address                                                                   -#    #-                            RAM Start Address                                                                   -#    #-                            BLOCK Size                                                                          -#    #-                          }                                                                                     -#    #------------------------------------------------------------------------------------------------------------------#    _romp_at = ___DATA_ROM + SIZEOF(.data);    .romp : AT(_romp_at)    {        __S_romp = _romp_at;        WRITEW(___CODE_ROM);        # FLASH CODE Address        WRITEW(___CODE_RAM);        # SDRAM CODE Address        WRITEW(SIZEOF(.text));      # CODE  Size        WRITEW(___DATA_ROM);        # FLASH Initialized DATA Address        WRITEW(___DATA_RAM);        # SDRAM Initialized DATA Address        WRITEW(SIZEOF(.data));      # DATA  Size        WRITEW(0);                  # NULL  Last Entry        WRITEW(0);                  # NULL  Last Entry        WRITEW(0);                  # NULL  Last Entry    }} 
					
				
		
