<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Copy ROM to RAM Coldfire .lcf-File in CodeWarrior for QorIQ</title>
    <link>https://community.nxp.com/t5/CodeWarrior-for-QorIQ/Copy-ROM-to-RAM-Coldfire-lcf-File/m-p/175615#M3008</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;DIV&gt;Hello,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;_S_romp structure is defined in the link file (*.lcf) and is used for ROM to RAM copy at Startup.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;_S_romp structure contains sequence of three word values per entry, the last entry must be 3 NULL words.&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;ROM Start Address&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;RAM Start Address&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;BLOCK Size&lt;/DIV&gt;&lt;DIV&gt;}&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;For software in Flash running from Flash, At Startup the BSP uses _S_romp to copy initilized data from&amp;nbsp;Flash to their Ram location.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;For software in Flash running from Ram, At Startup the BSP&amp;nbsp; uses _S_romp to copy the Code from Flash to Ram and initilized data from&amp;nbsp;Flash to RAM.&lt;/DIV&gt;&lt;DIV&gt;Hardware Init Code,&amp;nbsp;Vectors, Library Code doing ROM&amp;nbsp; to RAM copy must stay in Flash as BootCode.&lt;BR /&gt;&lt;BR /&gt;Example of lcf file&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV class="msg_source_code"&gt;&lt;DIV class="text_smallest"&gt;Code:&lt;/DIV&gt;&lt;PRE&gt;#----------------------------------------------------------------------------------------------------------------------##                                           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 } &amp;gt; Puts at the beginning of Memory segment (&amp;gt;&amp;gt; Appends to End)            ##----------------------------------------------------------------------------------------------------------------------#SECTIONS{    #------------------------------------------------------------------------------------------------------------------#    #-                     DECLARATION &amp;amp; AFFECTATION DES "SECTIONS SEGMENTS" AUX "MEMORY SEGMENTS"                    -#    #------------------------------------------------------------------------------------------------------------------#    .RAM_SDRAM        : {} &amp;gt; RAM_SDRAM    .RAM_Vecteurs     : {} &amp;gt; RAM_SRAM_Vecteurs    .CPU_IPSBAR       : {} &amp;gt; CPU_IPSBAR    .RAM_SRAM         : {} &amp;gt; RAM_SRAM    .RAM_SRAM_Data    : {} &amp;gt; RAM_SRAM_Data    .FLASH_BootSector : {} &amp;gt; FLASH_BootSector    .FLASH_ProgSector : {} &amp;gt; 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);    } &amp;gt;&amp;gt; FLASH_BootSector    #------------------------------------------------------------------------------------------------------------------#    #-   BOOTSTART CODE &amp;amp; RUNTIME LIBRARY (Fonctions Initialisation Hardware et Recopie de l'application en SDRAM)    -#    # ---------------------------------------------------------------------------------------------------------------- #    #-                                      Section Chargée &amp;amp; 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);    } &amp;gt;&amp;gt; FLASH_BootSector    __EndOfBootSector = .;    #------------------------------------------------------------------------------------------------------------------#    #-                               EXECUTABLE CODE &amp;amp; READ-ONLY DATA (Code Application)                              -#    # ---------------------------------------------------------------------------------------------------------------- #    #-            Section Chargée en FLASH AT(___CODE_ROM), Recopiée &amp;amp; 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);    } &amp;gt; 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);    } &amp;gt;&amp;gt; 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);    } &amp;gt;&amp;gt; RAM_ProgSector    #------------------------------------------------------------------------------------------------------------------#    #-       DEFINITION du HEAP MEMOIRE &amp;amp; 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);    } &amp;gt;&amp;gt; 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    }}&lt;/PRE&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;I Hope this helps..&lt;BR /&gt;&lt;BR /&gt;Bye&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;lt;&amp;lt; Freescale MCF5234/35 with CodeWarrior 6.2 &amp;gt;&amp;gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 29 Oct 2020 09:24:17 GMT</pubDate>
    <dc:creator>Arev</dc:creator>
    <dc:date>2020-10-29T09:24:17Z</dc:date>
    <item>
      <title>Copy ROM to RAM Coldfire .lcf-File</title>
      <link>https://community.nxp.com/t5/CodeWarrior-for-QorIQ/Copy-ROM-to-RAM-Coldfire-lcf-File/m-p/175611#M3004</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hello,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I'm currently running software from Internal RAM in MCF54455.&lt;/DIV&gt;&lt;DIV&gt;Running from FLASH directly is too slow.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Can anybody help me to change my lcf-file?&lt;/DIV&gt;&lt;DIV&gt;Is there anything else I have to do, that it gets copied from FLASH to RAM and executed from RAM?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;This is my LCF-FIle:&lt;/DIV&gt;&lt;DIV&gt;&lt;BR /&gt;KEEP_SECTION { .vectortable }&lt;/DIV&gt;&lt;DIV&gt;MEMORY {&lt;BR /&gt;&amp;nbsp; interrupts&amp;nbsp; (RX) : ORIGIN = 0x80000000, LENGTH = 0x00000600&lt;BR /&gt;&amp;nbsp; code&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RX) : ORIGIN = 0x80000600, LENGTH = 0x00005154&lt;BR /&gt;&amp;nbsp; data&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RW) : ORIGIN = 0x80005754, LENGTH = 0x000028AC&lt;BR /&gt;}&lt;/DIV&gt;&lt;DIV&gt;SECTIONS {&lt;BR /&gt;&amp;nbsp; .interrupts :&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___VECTOR_RAM = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (.vectortable)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN (0x4);&lt;BR /&gt;&amp;nbsp; } &amp;gt; interrupts&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; .text :&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (.text)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (.rodata)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___ROM_AT = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___DATA_ROM = .;&lt;BR /&gt;&amp;nbsp; } &amp;gt; code&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; .data : AT(___ROM_AT)&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___PLL_CODE_START =.;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (.changePllCode)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___PLL_CODE_END =.;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___PLL_CODE_SIZE = ___PLL_CODE_END - ___PLL_CODE_START;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___DATA_RAM = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (.exception)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __exception_table_start__ = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; EXCEPTION&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __exception_table_end__&amp;nbsp;&amp;nbsp; = .;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___sinit__ = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; STATICINIT&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___DATA_START =.;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (.data)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN (0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___DATA_END&amp;nbsp;&amp;nbsp; =.;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __SDATA_START =.;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (.sdata)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN (0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __SDATA_END = .;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __SDA_BASE = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x4);&lt;BR /&gt;&amp;nbsp; } &amp;gt; data&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; .bss :&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __START_SBSS = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (.sbss)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(SCOMMON)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __END_SBSS = .;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __START_BSS = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (.bss)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (COMMON)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __END_BSS = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x4);&lt;BR /&gt;&amp;nbsp; } &amp;gt;&amp;gt; data&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; # Heap and Stack sizes definition&lt;BR /&gt;&amp;nbsp; ___heap_size = 0x400;&lt;BR /&gt;&amp;nbsp; ___stack_size = 0x400;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; # 32 Kbytes Internal SRAM&lt;BR /&gt;&amp;nbsp; ___RAMBAR = 0x80000000;&lt;BR /&gt;&amp;nbsp; ___RAMBAR_SIZE = 0x00008000;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; ___SP_AFTER_RESET = ___RAMBAR + ___RAMBAR_SIZE - 4;&lt;BR /&gt;&amp;nbsp; ___SP_SIZE = 0x0400;&lt;BR /&gt;&amp;nbsp; ___HEAP_START = .;&lt;BR /&gt;&amp;nbsp; ___HEAP_END = ___HEAP_START + ___heap_size;&lt;BR /&gt;&amp;nbsp; ___SP_END = ___HEAP_END;&lt;BR /&gt;&amp;nbsp; ___SP_INIT = ___SP_END + ___stack_size;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; ___heap_addr = ___HEAP_START;&lt;BR /&gt;&amp;nbsp; ___heap_size = ___HEAP_END -&amp;nbsp; ___HEAP_START;&lt;BR /&gt;&amp;nbsp; __SP_INIT = ___SP_INIT;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; _romp_at = ___ROM_AT + SIZEOF(.data);&lt;BR /&gt;&amp;nbsp; .romp : AT(_romp_at)&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __S_romp = _romp_at;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WRITEW(___ROM_AT);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WRITEW(ADDR(.data));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WRITEW(SIZEOF(.data));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WRITEW(0);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WRITEW(0);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WRITEW(0);&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thanks and best regards,&lt;/DIV&gt;&lt;DIV&gt;Konrad.&lt;BR /&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 Jul 2008 02:29:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/CodeWarrior-for-QorIQ/Copy-ROM-to-RAM-Coldfire-lcf-File/m-p/175611#M3004</guid>
      <dc:creator>Conair0001</dc:creator>
      <dc:date>2008-07-24T02:29:46Z</dc:date>
    </item>
    <item>
      <title>Re: Copy ROM to RAM Coldfire .lcf-File</title>
      <link>https://community.nxp.com/t5/CodeWarrior-for-QorIQ/Copy-ROM-to-RAM-Coldfire-lcf-File/m-p/175612#M3005</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;by the way I'm using CodeWarrior 5.9.0 build 2502&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I put my software into a EXTERNAL FLASH project.&lt;/DIV&gt;&lt;DIV&gt;Then I selected for the memory locations in Processor Expert INTERNAL RAM if I just start the program it runs fine.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;However if I try to upload it with the FLASHTOOL it says that the data I want to FLASH is out of FLASH area.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Now I modified the .lcf-File so that everything is placed into FLASH and placed the copy table at the end of the .lcf-file like I found in Targeting Coldfire document.&lt;/DIV&gt;&lt;DIV&gt;(Does anybody know another/additional documentation that shows how to copy from FLASH to RAM)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;With my modifications the FLASHTOOL doesn't complain anymore, but the program doesn't run.&lt;/DIV&gt;&lt;DIV&gt;If I press debug after flashing it stops at location 0x0 with 0xbababababa inside.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;This is my .lcf-file:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;## ###################################################################&lt;BR /&gt;##&lt;BR /&gt;##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; THIS BEAN MODULE IS GENERATED BY THE TOOL. DO NOT MODIFY IT.&lt;BR /&gt;##&lt;BR /&gt;##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Filename&amp;nbsp; : EXTERNAL_FLASH.lcf&lt;BR /&gt;##&lt;BR /&gt;##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Project&amp;nbsp;&amp;nbsp; : Project&lt;BR /&gt;##&lt;BR /&gt;##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Processor : MCF54455VR266&lt;BR /&gt;##&lt;BR /&gt;##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Compiler&amp;nbsp; : CodeWarrior MCF C Compiler&lt;BR /&gt;##&lt;BR /&gt;##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Date/Time : 24/07/2008, 11:50&lt;BR /&gt;##&lt;BR /&gt;##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Abstract&amp;nbsp; :&lt;BR /&gt;##&lt;BR /&gt;##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This file is used by the linker. It describes files to be linked,&lt;BR /&gt;##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; memory ranges, stack size, etc. For detailed description about linker&lt;BR /&gt;##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; command files see CodeWarrior documentation. This file is generated by default.&lt;BR /&gt;##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; You can switch off generation by setting the property "Generate linker file = no"&lt;BR /&gt;##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; in the "Build options" tab of the CPU bean and then modify this file as needed.&lt;BR /&gt;##&lt;BR /&gt;##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (c) Copyright UNIS, spol. s r.o. 1997-2007&lt;BR /&gt;##&lt;BR /&gt;##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UNIS, spol. s r.o.&lt;BR /&gt;##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Jundrovska 33&lt;BR /&gt;##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 624 00 Brno&lt;BR /&gt;##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Czech Republic&lt;BR /&gt;##&lt;BR /&gt;##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; http&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : &lt;A href="http://www.processorexpert.com" rel="nofollow" target="_blank"&gt;www.processorexpert.com&lt;/A&gt;&lt;BR /&gt;##&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mail&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : &lt;A href="mailto:info@processorexpert.com" rel="nofollow" target="_blank"&gt;info@processorexpert.com&lt;/A&gt;&lt;BR /&gt;##&lt;BR /&gt;## ###################################################################&lt;/DIV&gt;&lt;DIV&gt;KEEP_SECTION { .vectortable }&lt;/DIV&gt;&lt;DIV&gt;MEMORY {&lt;BR /&gt;&amp;nbsp; interrupts&amp;nbsp; (RX) : ORIGIN = 0x80000000, LENGTH = 0x00000300&lt;BR /&gt;&amp;nbsp; code&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RX) : ORIGIN = 0x80000300, LENGTH = 0x00005354&lt;BR /&gt;&amp;nbsp; data&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RW) : ORIGIN = 0x80005654, LENGTH = 0x000029AC&lt;BR /&gt;}&lt;/DIV&gt;&lt;DIV&gt;SECTIONS {&lt;BR /&gt;&amp;nbsp; .interrupts :AT (0x04000000)&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___VECTOR_RAM = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (.vectortable)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN (0x4);&lt;BR /&gt;&amp;nbsp; } &amp;gt; interrupts&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; .text :AT (0x04000000 + SIZEOF(.interrupts))&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (.text)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (.rodata)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___ROM_AT = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___DATA_ROM = .;&lt;BR /&gt;&amp;nbsp; } &amp;gt; code&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; .data :&amp;nbsp; AT (0x04000000 + SIZEOF(.interrupts) + SIZEOF(.text))&amp;nbsp;&amp;nbsp;&amp;nbsp; #AT(___ROM_AT)&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___PLL_CODE_START =.;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (.changePllCode)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___PLL_CODE_END =.;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___PLL_CODE_SIZE = ___PLL_CODE_END - ___PLL_CODE_START;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___DATA_RAM = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (.exception)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __exception_table_start__ = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; EXCEPTION&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __exception_table_end__&amp;nbsp;&amp;nbsp; = .;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___sinit__ = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; STATICINIT&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___DATA_START =.;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (.data)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN (0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ___DATA_END&amp;nbsp;&amp;nbsp; =.;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __SDATA_START =.;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (.sdata)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN (0x4);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __SDATA_END = .;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __SDA_BASE = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x4);&lt;BR /&gt;&amp;nbsp; } &amp;gt; data&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; .bss : AT (0x04000000 + SIZEOF(.interrupts) + SIZEOF(.text) + SIZEOF(.data))&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __START_SBSS = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (.sbss)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *(SCOMMON)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __END_SBSS = .;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __START_BSS = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (.bss)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (COMMON)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __END_BSS = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(0x4);&lt;BR /&gt;&amp;nbsp; } &amp;gt;&amp;gt; data&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; # Heap and Stack sizes definition&lt;BR /&gt;&amp;nbsp; ___heap_size = 0x400;&lt;BR /&gt;&amp;nbsp; ___stack_size = 0x400;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; # 32 Kbytes Internal SRAM&lt;BR /&gt;&amp;nbsp; ___RAMBAR = 0x80000000;&lt;BR /&gt;&amp;nbsp; ___RAMBAR_SIZE = 0x00008000;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; ___SP_AFTER_RESET = ___RAMBAR + ___RAMBAR_SIZE - 4;&lt;BR /&gt;&amp;nbsp; ___SP_SIZE = 0x0400;&lt;BR /&gt;&amp;nbsp; ___HEAP_START = .;&lt;BR /&gt;&amp;nbsp; ___HEAP_END = ___HEAP_START + ___heap_size;&lt;BR /&gt;&amp;nbsp; ___SP_END = ___HEAP_END;&lt;BR /&gt;&amp;nbsp; ___SP_INIT = ___SP_END + ___stack_size;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; ___heap_addr = ___HEAP_START;&lt;BR /&gt;&amp;nbsp; ___heap_size = ___HEAP_END -&amp;nbsp; ___HEAP_START;&lt;BR /&gt;&amp;nbsp; __SP_INIT = ___SP_INIT;&lt;/DIV&gt;&lt;DIV&gt;#&amp;nbsp; _romp_at = ___ROM_AT + SIZEOF(.data);&lt;BR /&gt;&amp;nbsp; _romp_at = 0x04000000 + 0x8000 ;&lt;BR /&gt;&amp;nbsp; .romp : AT(_romp_at)&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; __S_romp = _romp_at;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WRITEW(0x04000000);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WRITEW(0x80000000);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WRITEW(0x7fff);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WRITEW(0);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WRITEW(0);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WRITEW(0);&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;}&lt;BR /&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 Jul 2008 17:08:31 GMT</pubDate>
      <guid>https://community.nxp.com/t5/CodeWarrior-for-QorIQ/Copy-ROM-to-RAM-Coldfire-lcf-File/m-p/175612#M3005</guid>
      <dc:creator>Conair0001</dc:creator>
      <dc:date>2008-07-24T17:08:31Z</dc:date>
    </item>
    <item>
      <title>Re: Copy ROM to RAM Coldfire .lcf-File</title>
      <link>https://community.nxp.com/t5/CodeWarrior-for-QorIQ/Copy-ROM-to-RAM-Coldfire-lcf-File/m-p/175613#M3006</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;Look under the (CodeWarrior Examples) directory for some code examples. Specifically, try checking the 5213_PIC\Source directory. It has example code that copies code from ROM to RAM. HTH.&lt;BR /&gt;&lt;BR /&gt;---Tom&lt;BR /&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 25 Jul 2008 00:41:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/CodeWarrior-for-QorIQ/Copy-ROM-to-RAM-Coldfire-lcf-File/m-p/175613#M3006</guid>
      <dc:creator>J2MEJediMaster</dc:creator>
      <dc:date>2008-07-25T00:41:48Z</dc:date>
    </item>
    <item>
      <title>Re: Copy ROM to RAM Coldfire .lcf-File</title>
      <link>https://community.nxp.com/t5/CodeWarrior-for-QorIQ/Copy-ROM-to-RAM-Coldfire-lcf-File/m-p/175614#M3007</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Thanks.&lt;/DIV&gt;&lt;DIV&gt;Now I found out, that I can place functions into Internal RAM by putting:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;declspec(RAMcode)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;in front of the function definition and adding the "RAMcode" area into the data section of the lcf-file&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Now I would like to put a big array into SDRAM.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;But putting "declspec(externalram)" in front of the variable definition results in an error:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;"illegal type qualifier(s) ....__declspec(&lt;U&gt;externalram&lt;/U&gt;)...."&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Can you help me on this also?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thanks,&lt;/DIV&gt;&lt;DIV&gt;Konrad.&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 29 Jul 2008 21:35:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/CodeWarrior-for-QorIQ/Copy-ROM-to-RAM-Coldfire-lcf-File/m-p/175614#M3007</guid>
      <dc:creator>Conair0001</dc:creator>
      <dc:date>2008-07-29T21:35:18Z</dc:date>
    </item>
    <item>
      <title>Re: Copy ROM to RAM Coldfire .lcf-File</title>
      <link>https://community.nxp.com/t5/CodeWarrior-for-QorIQ/Copy-ROM-to-RAM-Coldfire-lcf-File/m-p/175615#M3008</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;DIV&gt;Hello,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;_S_romp structure is defined in the link file (*.lcf) and is used for ROM to RAM copy at Startup.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;_S_romp structure contains sequence of three word values per entry, the last entry must be 3 NULL words.&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;ROM Start Address&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;RAM Start Address&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;BLOCK Size&lt;/DIV&gt;&lt;DIV&gt;}&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;For software in Flash running from Flash, At Startup the BSP uses _S_romp to copy initilized data from&amp;nbsp;Flash to their Ram location.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;For software in Flash running from Ram, At Startup the BSP&amp;nbsp; uses _S_romp to copy the Code from Flash to Ram and initilized data from&amp;nbsp;Flash to RAM.&lt;/DIV&gt;&lt;DIV&gt;Hardware Init Code,&amp;nbsp;Vectors, Library Code doing ROM&amp;nbsp; to RAM copy must stay in Flash as BootCode.&lt;BR /&gt;&lt;BR /&gt;Example of lcf file&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV class="msg_source_code"&gt;&lt;DIV class="text_smallest"&gt;Code:&lt;/DIV&gt;&lt;PRE&gt;#----------------------------------------------------------------------------------------------------------------------##                                           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 } &amp;gt; Puts at the beginning of Memory segment (&amp;gt;&amp;gt; Appends to End)            ##----------------------------------------------------------------------------------------------------------------------#SECTIONS{    #------------------------------------------------------------------------------------------------------------------#    #-                     DECLARATION &amp;amp; AFFECTATION DES "SECTIONS SEGMENTS" AUX "MEMORY SEGMENTS"                    -#    #------------------------------------------------------------------------------------------------------------------#    .RAM_SDRAM        : {} &amp;gt; RAM_SDRAM    .RAM_Vecteurs     : {} &amp;gt; RAM_SRAM_Vecteurs    .CPU_IPSBAR       : {} &amp;gt; CPU_IPSBAR    .RAM_SRAM         : {} &amp;gt; RAM_SRAM    .RAM_SRAM_Data    : {} &amp;gt; RAM_SRAM_Data    .FLASH_BootSector : {} &amp;gt; FLASH_BootSector    .FLASH_ProgSector : {} &amp;gt; 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);    } &amp;gt;&amp;gt; FLASH_BootSector    #------------------------------------------------------------------------------------------------------------------#    #-   BOOTSTART CODE &amp;amp; RUNTIME LIBRARY (Fonctions Initialisation Hardware et Recopie de l'application en SDRAM)    -#    # ---------------------------------------------------------------------------------------------------------------- #    #-                                      Section Chargée &amp;amp; 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);    } &amp;gt;&amp;gt; FLASH_BootSector    __EndOfBootSector = .;    #------------------------------------------------------------------------------------------------------------------#    #-                               EXECUTABLE CODE &amp;amp; READ-ONLY DATA (Code Application)                              -#    # ---------------------------------------------------------------------------------------------------------------- #    #-            Section Chargée en FLASH AT(___CODE_ROM), Recopiée &amp;amp; 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);    } &amp;gt; 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);    } &amp;gt;&amp;gt; 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);    } &amp;gt;&amp;gt; RAM_ProgSector    #------------------------------------------------------------------------------------------------------------------#    #-       DEFINITION du HEAP MEMOIRE &amp;amp; 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);    } &amp;gt;&amp;gt; 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    }}&lt;/PRE&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;I Hope this helps..&lt;BR /&gt;&lt;BR /&gt;Bye&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;lt;&amp;lt; Freescale MCF5234/35 with CodeWarrior 6.2 &amp;gt;&amp;gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Oct 2020 09:24:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/CodeWarrior-for-QorIQ/Copy-ROM-to-RAM-Coldfire-lcf-File/m-p/175615#M3008</guid>
      <dc:creator>Arev</dc:creator>
      <dc:date>2020-10-29T09:24:17Z</dc:date>
    </item>
    <item>
      <title>Re: Copy ROM to RAM Coldfire .lcf-File</title>
      <link>https://community.nxp.com/t5/CodeWarrior-for-QorIQ/Copy-ROM-to-RAM-Coldfire-lcf-File/m-p/175616#M3009</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Thanks,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;that was great help.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Now I have some other Problem.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I put 1 data-array into SDRAM and I use SDRAM only for this array.&lt;/DIV&gt;&lt;DIV&gt;If I load my Program into Flash&amp;nbsp;and power-cycle my EVB, it seems like the Data in the SDRAM array is corrupted it contains only garbage, but the rest of the program works well.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;However if I start the program from Flash but with the Code-Warrior Debugger, then it works fine.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I noticed there is some initialisation code in the .cfg file.&lt;/DIV&gt;&lt;DIV&gt;Is this only executed when I'm using the debugger?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Where do I have to put this that it initializes also when I'm running without the debugger?&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Thanks and best regards,&lt;/DIV&gt;&lt;DIV&gt;Konrad.&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 01 Aug 2008 18:47:07 GMT</pubDate>
      <guid>https://community.nxp.com/t5/CodeWarrior-for-QorIQ/Copy-ROM-to-RAM-Coldfire-lcf-File/m-p/175616#M3009</guid>
      <dc:creator>Conair0001</dc:creator>
      <dc:date>2008-08-01T18:47:07Z</dc:date>
    </item>
    <item>
      <title>Re: Copy ROM to RAM Coldfire .lcf-File</title>
      <link>https://community.nxp.com/t5/CodeWarrior-for-QorIQ/Copy-ROM-to-RAM-Coldfire-lcf-File/m-p/175617#M3010</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt;Hello,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;On my target MCF523x, the Bootcode checks if SDRAM controller is already initialized before performing initialisation.&lt;/DIV&gt;&lt;DIV&gt;So in Debug Mode, SDRAM Controller Initialisation is done by the debbuger with cfg file and the bootcode skip it.&lt;/DIV&gt;&lt;DIV&gt;In Release Mode, your bootcode must initialize the SDRAM controller.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;In debug, you can analyse the boot sequence to find where SDRAM Controller initialization is done or skipped.&lt;BR /&gt;&lt;BR /&gt;Bye,&lt;BR /&gt;&lt;BR /&gt;&amp;lt;&amp;lt; Freescale MCF5234/35 with CodeWarrior 6.2 &amp;gt;&amp;gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 01 Aug 2008 20:35:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/CodeWarrior-for-QorIQ/Copy-ROM-to-RAM-Coldfire-lcf-File/m-p/175617#M3010</guid>
      <dc:creator>Arev</dc:creator>
      <dc:date>2008-08-01T20:35:00Z</dc:date>
    </item>
  </channel>
</rss>

