<?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: Linker Command File (LCF) P:RAM Clarification in Digital Signal Controllers</title>
    <link>https://community.nxp.com/t5/Digital-Signal-Controllers/Linker-Command-File-LCF-P-RAM-Clarification/m-p/802545#M1333</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Jim,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Anyway,I think the Run_and_wait_in_RAM() function is only a architecture, which gives the start/end address so that the application can copy to the location.&lt;/P&gt;&lt;P&gt;This is the CodeWarrior development tools forum, you can post your question here about the compiler and LCF.&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.nxp.com/space/2020"&gt;CodeWarrior Development Tools&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;Xiangjun Rong&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 04 Jul 2018 02:49:44 GMT</pubDate>
    <dc:creator>xiangjun_rong</dc:creator>
    <dc:date>2018-07-04T02:49:44Z</dc:date>
    <item>
      <title>Linker Command File (LCF) P:RAM Clarification</title>
      <link>https://community.nxp.com/t5/Digital-Signal-Controllers/Linker-Command-File-LCF-P-RAM-Clarification/m-p/802538#M1326</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I have been helping a customer get a better understanding of how to configure their LCF for our MC56F8037 using CodeWarrior 10.7.&amp;nbsp; The reference material that we have been using include:&lt;/P&gt;&lt;P&gt;&amp;nbsp; - 56800/E Digital Signal Controllers: MC56F8xxx/DSP5685x Targeting Manual&lt;/P&gt;&lt;P&gt;&amp;nbsp; - AN5143 "Relocate Subroutines to PRAM for MC56F827xx DSC"&lt;/P&gt;&lt;P&gt;The examples provided in this documentation do not seem to clearly explain how to describe the P:RAM in the LCF.&amp;nbsp; The customer needs to execute subroutines in P:RAM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;According to the 56F8037/56F8027 Data Sheet,&lt;/P&gt;&lt;P&gt;&amp;nbsp; - P:$00_0000 to P:$00_7FFF&amp;nbsp; = Program Flash&lt;/P&gt;&lt;P&gt;&amp;nbsp; - P:$00_8000 to P:$00_8FFF&amp;nbsp; = Program RAM&lt;/P&gt;&lt;P&gt;&amp;nbsp; - X:$00_0000 to X:$00_0FFF&amp;nbsp; = Data RAM&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But the automatically generated linker command file produces the following:&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 13px;"&gt;&amp;nbsp;.p_interrupts_ROM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RX)&amp;nbsp; : ORIGIN = 0x0000,&amp;nbsp;&amp;nbsp; LENGTH = 0x0080&amp;nbsp;&amp;nbsp; # reserved for interrupts&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 13px;"&gt;&amp;nbsp;.p_flash_ROM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RX)&amp;nbsp; : ORIGIN = 0x0080,&amp;nbsp;&amp;nbsp; LENGTH = 0x7F80 &amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 13px;"&gt;&amp;nbsp;.p_flash_ROM_data&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RX)&amp;nbsp; : ORIGIN = 0x0000,&amp;nbsp;&amp;nbsp; LENGTH = 0x0FFF&amp;nbsp;&amp;nbsp; # internal xRAM mirror&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 13px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # for pROM-to-xRAM copy&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 13px;"&gt;&amp;nbsp;.x_internal_RAM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (RW)&amp;nbsp; : ORIGIN = 0x0000,&amp;nbsp;&amp;nbsp; LENGTH = 0x0FFF &amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Why is "&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 13px;"&gt;.p_flash_ROM_data&lt;/SPAN&gt;" not set to "&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 13px;"&gt;ORIGIN = 0x8000&lt;/SPAN&gt;"?&lt;/P&gt;&lt;P&gt;Why is there no ".p_RAM" space defined?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What would be the correct way to configure the linker command file so that the customer's subroutines can be relocated into Program RAM for the MCF8037 - as described in AN5143 for the MC56F827xx?&amp;nbsp; How does the "pROM-to-pRAM copy utility" work (which is briefly mentioned in AN5143)?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;Derrick&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 20 Jun 2018 13:34:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Digital-Signal-Controllers/Linker-Command-File-LCF-P-RAM-Clarification/m-p/802538#M1326</guid>
      <dc:creator>Derrick</dc:creator>
      <dc:date>2018-06-20T13:34:06Z</dc:date>
    </item>
    <item>
      <title>Re: Linker Command File (LCF) P:RAM Clarification</title>
      <link>https://community.nxp.com/t5/Digital-Signal-Controllers/Linker-Command-File-LCF-P-RAM-Clarification/m-p/802539#M1327</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Derrick,&lt;/P&gt;&lt;P&gt;As you know that MC56F8037 has on-chip flash and RAM, the MC56F8037 has two space, one is Program space with P: 0xxxxx address, another is data space with X:0xxxxx address. The MC56F8037 has 32KW(32Kx16 bits) flash and 4KW RAM, but the same 4KW RAM can be mapped to both program space and data space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;P: $00 8FFF to P: $00 8000&amp;nbsp;&amp;nbsp; //4KW program RAM&lt;/P&gt;&lt;P&gt;X:$00 0FFF to&amp;nbsp; X:$00 0000&amp;nbsp;&amp;nbsp;&amp;nbsp; //4KW data RAM,&lt;/P&gt;&lt;P&gt;They are the same physical RAM.&lt;/P&gt;&lt;P&gt;Because there is only one block program flash, so the program flash has to be used to save both code and constant data. Furthermore, in application code, if you want to save data to program flash, you have to copy the flash programing code into program RAM and execute the flash programming code in Program RAM.&lt;/P&gt;&lt;P&gt;All the global variable and stack are located in data RAM, and if you want to save programming code to data program RAM, even copy the constant to data RAM, you have to allocate the data RAM carefully.&lt;/P&gt;&lt;P&gt;Regarding your question of p_flash_ROM_data, this is X space address instead of program space address. As the following lines in *.cmd file, the section is saved in program flash with the start address AT(__pROM_data_start), some constant data need to mirror to data RAM space, so it pre-allocate some memory size in the data RAM with the address p_flash_ROM_data. Application code has to copy from program flash to data RAM.&lt;/P&gt;&lt;P&gt;Hope it can help you&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;Xiangjun rong&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;.data_in_p_flash_ROM : AT(__pROM_data_start)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # the data sections flashed to pROM&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # save data start so we can copy data later to xRAM&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __xRAM_data_start = .;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # .data sections&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (.const.data.char)&amp;nbsp; # used if "Emit Separate Char Data Section" enabled&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (.const.data)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (fp_state.data)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (rtlib.data)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (.data.char)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # used if "Emit Separate Char Data Section" enabled&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * (.data)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # save data end and calculate data block size&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; . = ALIGN(2);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __xRAM_data_end = .;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __data_size = __xRAM_data_end - __xRAM_data_start;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;gt; .p_flash_ROM_data&amp;nbsp;&amp;nbsp;&amp;nbsp; # this section is designated as p-memory&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # with X flag in the memory map&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # the start address and length map to&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # actual internal xRAM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Jun 2018 05:31:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Digital-Signal-Controllers/Linker-Command-File-LCF-P-RAM-Clarification/m-p/802539#M1327</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2018-06-21T05:31:47Z</dc:date>
    </item>
    <item>
      <title>Re: Linker Command File (LCF) P:RAM Clarification</title>
      <link>https://community.nxp.com/t5/Digital-Signal-Controllers/Linker-Command-File-LCF-P-RAM-Clarification/m-p/802540#M1328</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Xiangjun rong,&lt;/P&gt;&lt;P&gt;While this would appear to work for data, it is not apparent how this will operate for subroutines.&amp;nbsp; How are the function calling addresses tracked?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can you please provide a more detailed description for how this applies for subroutines that are copied into RAM?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;Derrick&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Jun 2018 13:24:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Digital-Signal-Controllers/Linker-Command-File-LCF-P-RAM-Clarification/m-p/802540#M1328</guid>
      <dc:creator>Derrick</dc:creator>
      <dc:date>2018-06-21T13:24:41Z</dc:date>
    </item>
    <item>
      <title>Re: Linker Command File (LCF) P:RAM Clarification</title>
      <link>https://community.nxp.com/t5/Digital-Signal-Controllers/Linker-Command-File-LCF-P-RAM-Clarification/m-p/802541#M1329</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Derrick,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As you know that the you have to copy the eraseing/programming code to PRAM and execute the code in RAM if you want to erase/program flash.&lt;/P&gt;&lt;P&gt;I attach the project to erase/prpograme flash based on MC56F8037 based on PE, pls refer to it, especially IFsh1.c.&lt;/P&gt;&lt;P&gt;Hope it can help you&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;Xiangjun rong&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Jun 2018 06:53:14 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Digital-Signal-Controllers/Linker-Command-File-LCF-P-RAM-Clarification/m-p/802541#M1329</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2018-06-22T06:53:14Z</dc:date>
    </item>
    <item>
      <title>Re: Linker Command File (LCF) P:RAM Clarification</title>
      <link>https://community.nxp.com/t5/Digital-Signal-Controllers/Linker-Command-File-LCF-P-RAM-Clarification/m-p/802542#M1330</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi XR,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for the info. I have some questions about the demo that you sent.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Files attached:&lt;/P&gt;&lt;P&gt;&amp;nbsp; ---&amp;nbsp; A text file with the memory map for the 56F8013.&lt;/P&gt;&lt;P&gt;&amp;nbsp; ---&amp;nbsp; S-record generated by the demo project you provided&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1) Why does .p_flash_ROM_data start at address 0x0001 (ORIGIN) instead of 0x0000 and end at address 0x7FF instead of 0x0800? This memory is "Unified RAM" so I would expect the ORIGIN address and length of the "&lt;SPAN style="font-size: 11px;"&gt;&lt;STRONG&gt;p_flash_ROM_data&lt;/STRONG&gt;&lt;/SPAN&gt;" segment to be formatted the same as the "&lt;SPAN style="font-size: 11px;"&gt;&lt;STRONG&gt;p_internal_RAM&lt;/STRONG&gt;&lt;/SPAN&gt;" segment. Unless, there is a specific reason to deduct "one" from each end. I thought that maybe it was due to Word access rather than Byte access. However, that would make sense for 0x7FF but NOT for 0x0001.&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 11px;"&gt;&lt;STRONG&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; .p_flash_ROM_data&amp;nbsp; (RX) : ORIGIN = 0x00000001, LENGTH = 0x000007FF&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 11px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; #Other memory segments&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 11px;"&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; .p_internal_RAM&amp;nbsp; (RWX) : ORIGIN = 0x00008000, LENGTH = 0x0800&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2) Why is "&lt;SPAN style="font-size: 11px;"&gt;&lt;STRONG&gt;p_flash_ROM_data&lt;/STRONG&gt;&lt;/SPAN&gt;" designated as (RX) but yet it starts at 0x0001? The memory map states that executable RAM space starts at 0x8000. Yes!, they are the same memory, "Unified and overlapping". BUT, the memory map states that it should be 0x8000 for (X)=executable. In fact the LCF has an entry for (RWX) at 0x8000.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="text-decoration: underline;"&gt;&lt;EM&gt;&lt;STRONG&gt;This is a really confusing sticking point. Can you consult with the DSC compiler group for a definitive answer to this?&lt;/STRONG&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;3) I enabled S-record generation in the demo project that you provided and compiled it in CW8.3. The demo generates entries in the S-record starting at 0x00008000. How can I suppress these RAM-based entries? I am downloading this to flash using a "custom" boot-loader. The app must then be responsible for copying out the data to RAM. So, I want the "Ram Functions Image" in flash. I want the linker to "know" that the final destination is RAM. But, I do not want any RAM entries put into the S-record.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;4) Looking at the demo project you provided, the flash programming function is literally written twice, once for flash once for RAM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-size: 11px; font-family: terminal, monaco, monospace;"&gt;static asm void Run_and_wait_in_prog_flash(dword address, word data, word command)&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="font-size: 11px; font-family: terminal, monaco, monospace;"&gt;static asm void Run_and_wait_in_RAM(dword address, word data, word command)&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This seems very odd?!?!?!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The linker should be able to manage this without duplicating the code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Why maintain code in two places?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Perhaps the explanation of this will be part of eliminating the unwanted S-record entries in question 3 ?!?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;J&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 29 Jun 2018 19:45:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Digital-Signal-Controllers/Linker-Command-File-LCF-P-RAM-Clarification/m-p/802542#M1330</guid>
      <dc:creator>j___</dc:creator>
      <dc:date>2018-06-29T19:45:24Z</dc:date>
    </item>
    <item>
      <title>Re: Linker Command File (LCF) P:RAM Clarification</title>
      <link>https://community.nxp.com/t5/Digital-Signal-Controllers/Linker-Command-File-LCF-P-RAM-Clarification/m-p/802543#M1331</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Jim,&lt;/P&gt;&lt;P&gt;For you first question that ".p_flash_ROM_data start at address 0x0001 (ORIGIN) instead of 0x0000 and end at address 0x7FF instead of 0x0800", I do not know the reason why one words 0x0000 is left. But I think the issue is not related to flash operation, I have created a new project with PE based on MC56F8323, the .p_flash_ROM_data always starts at address 0x0001 (ORIGIN) no matter whether you use flash bean or not, in other words, 0x0001 is a default setting.&lt;/P&gt;&lt;P&gt;For your second question, it is the same as first one.&lt;/P&gt;&lt;P&gt;For your third question, As you know that S recorder can only write flash, it is your application which is responsoible for copying your application code from flash to RAM. If you do want to creat an image which have to be copied from flash to RAM, I think you can define a binary array, have the compiler generate binary code(machine code) based on the function you want to copy from flash to RAM, and copy the binary code to the array. You can save the binary array in the flash, and get the start/end address of the array and save in the flash.&lt;/P&gt;&lt;P&gt;For your last question, I think it is okay. Of course, you have the other solution to access the api function in RAM which is copied from flash, for example, you can define a function point and have it point the RAM address.&lt;/P&gt;&lt;P&gt;Hope it can help you&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;Xiangjun rong&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 03 Jul 2018 05:22:04 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Digital-Signal-Controllers/Linker-Command-File-LCF-P-RAM-Clarification/m-p/802543#M1331</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2018-07-03T05:22:04Z</dc:date>
    </item>
    <item>
      <title>Re: Linker Command File (LCF) P:RAM Clarification</title>
      <link>https://community.nxp.com/t5/Digital-Signal-Controllers/Linker-Command-File-LCF-P-RAM-Clarification/m-p/802544#M1332</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;1) Not sufficiently answered.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Can you please put me in contact with someone from the DSC compiler group that can answer this?&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2) Not sufficiently answered. I put in bold font that this was an important issue for me to understand the LCF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Can you please put me in contact with someone from the DSC compiler group that can answer this?&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;3) Not sufficiently answered. I should be able to generate an S-record without RAM-based entries. RAM-based entries are only good during debug because the are lost on power-down. I am sure there is a way for the code generation tools to do this.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Can you please put me in contact with someone from the DSC compiler group that can answer this?&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;4) I am not sure if this duplicate entry of the code is a required procedure for creating copy-to-RAM functions. Or, if this is done just to create a RAM-copy to be available during debug. I am trying to get a copy-to-RAM function working in my LCF on-and-off for several weeks now. Understanding why and if the code needs to be duplicated would be helpful.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Can you please put me in contact with someone from the DSC compiler group that can answer this?&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;------------------------------------------------&lt;/P&gt;&lt;P&gt;I have worked with the FAE, the forum, and opened a ticket with NXP. What will it take for me to get to an expert from the DSC compiler\LCF group?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 03 Jul 2018 14:02:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Digital-Signal-Controllers/Linker-Command-File-LCF-P-RAM-Clarification/m-p/802544#M1332</guid>
      <dc:creator>j___</dc:creator>
      <dc:date>2018-07-03T14:02:52Z</dc:date>
    </item>
    <item>
      <title>Re: Linker Command File (LCF) P:RAM Clarification</title>
      <link>https://community.nxp.com/t5/Digital-Signal-Controllers/Linker-Command-File-LCF-P-RAM-Clarification/m-p/802545#M1333</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Jim,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Anyway,I think the Run_and_wait_in_RAM() function is only a architecture, which gives the start/end address so that the application can copy to the location.&lt;/P&gt;&lt;P&gt;This is the CodeWarrior development tools forum, you can post your question here about the compiler and LCF.&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.nxp.com/space/2020"&gt;CodeWarrior Development Tools&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;Xiangjun Rong&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Jul 2018 02:49:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Digital-Signal-Controllers/Linker-Command-File-LCF-P-RAM-Clarification/m-p/802545#M1333</guid>
      <dc:creator>xiangjun_rong</dc:creator>
      <dc:date>2018-07-04T02:49:44Z</dc:date>
    </item>
  </channel>
</rss>

