<?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>CodeWarrior for MCU中的主题 Re: CW for S12(X). Function in RAM is easy!</title>
    <link>https://community.nxp.com/t5/CodeWarrior-for-MCU/CW-for-S12-X-Function-in-RAM-is-easy/m-p/146846#M3380</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Unfortunately this is not working in CW 6.3 for HC08/S08, linker complains when code is found in R/W segment. Don't know if this is the same in CW 10 for MCUs.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;&lt;P&gt;Update.&lt;/P&gt;&lt;P&gt;Indeed the same easy-code-in-RAM approach works also for S08 and CW for MCUs v6.3. You only need to go to linker options and check the "Never check section qualifier compatibility" on "Output" page. Or add -NoSectCompat to linker command line.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 29 Oct 2020 08:48:15 GMT</pubDate>
    <dc:creator>kef</dc:creator>
    <dc:date>2020-10-29T08:48:15Z</dc:date>
    <item>
      <title>CW for S12(X). Function in RAM is easy!</title>
      <link>https://community.nxp.com/t5/CodeWarrior-for-MCU/CW-for-S12-X-Function-in-RAM-is-easy/m-p/146845#M3379</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I guess not everyone knows how easy it is to move function to RAM&amp;nbsp;using CW for S12(X). I don't know where it is mentioned in the documentation and from which CW version this feature is available, but I was wondering&amp;nbsp;why it is so easy to select where to put XGATE functions, to flash or to RAM. For XGATE,&amp;nbsp;switching to RAM or to ROM&amp;nbsp;is done this way:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;#pragma push&lt;BR /&gt;#pragma CODE_SEG XGATE_CODE_RAM&lt;/P&gt;&lt;P&gt;function_in_RAM()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;}&lt;BR /&gt;#pragma pop&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;#pragma push&lt;BR /&gt;#pragma CODE_SEG XGATE_CODE_FLASH&lt;/P&gt;&lt;P&gt;function_in_FLASH()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;}&lt;BR /&gt;#pragma pop&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I used to think this is possible only for XGATE. But it seems that when linker finds any code allocated in&amp;nbsp;READ_WRITE segments, it&amp;nbsp;puts copy of code in flash and lets standard startup.c&amp;nbsp;copy the code from flash to RAM, like it is done for all initialized variables.&amp;nbsp;So in case we need some S12 flash programming routine in RAM, we can do it this way:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;#pragma push&lt;/P&gt;&lt;P&gt;#pragma CODE_SEG ramsegment // ramsegment - any segment, but&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;&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; // not predefined one like&amp;nbsp;DEFAULT_RAM, and of course not&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;&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; // a part of paged RAM.&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;&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; // Just add&amp;nbsp;to prm placement section&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;&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; ramsegment INTO RAM&lt;/P&gt;&lt;P&gt;foo_in_RAM()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;}&lt;BR /&gt;#pragma pop&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;That's really nice and easy. Far better than RELOCATE_TO and unknown size of function.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Unfortunately this is not working in CW 6.3 for HC08/S08, linker complains when code is found in R/W segment. Don't know if this is the same in&amp;nbsp;CW 10 for MCUs.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 13 Sep 2010 00:46:09 GMT</pubDate>
      <guid>https://community.nxp.com/t5/CodeWarrior-for-MCU/CW-for-S12-X-Function-in-RAM-is-easy/m-p/146845#M3379</guid>
      <dc:creator>kef</dc:creator>
      <dc:date>2010-09-13T00:46:09Z</dc:date>
    </item>
    <item>
      <title>Re: CW for S12(X). Function in RAM is easy!</title>
      <link>https://community.nxp.com/t5/CodeWarrior-for-MCU/CW-for-S12-X-Function-in-RAM-is-easy/m-p/146846#M3380</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Unfortunately this is not working in CW 6.3 for HC08/S08, linker complains when code is found in R/W segment. Don't know if this is the same in CW 10 for MCUs.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;&lt;P&gt;Update.&lt;/P&gt;&lt;P&gt;Indeed the same easy-code-in-RAM approach works also for S08 and CW for MCUs v6.3. You only need to go to linker options and check the "Never check section qualifier compatibility" on "Output" page. Or add -NoSectCompat to linker command line.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Oct 2020 08:48:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/CodeWarrior-for-MCU/CW-for-S12-X-Function-in-RAM-is-easy/m-p/146846#M3380</guid>
      <dc:creator>kef</dc:creator>
      <dc:date>2020-10-29T08:48:15Z</dc:date>
    </item>
    <item>
      <title>Re: CW for S12(X). Function in RAM is easy!</title>
      <link>https://community.nxp.com/t5/CodeWarrior-for-MCU/CW-for-S12-X-Function-in-RAM-is-easy/m-p/146847#M3381</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Is the following method correct?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;example)&lt;/P&gt;&lt;P&gt;ProcessorExpert.prm&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_1.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/26462iDD1DD4C3895F050F/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_1.png" alt="pastedImage_1.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;- file1.h&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;#pragma push&lt;BR /&gt;#pragma CODE_SEG &lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;&lt;EM&gt;ToCopyToRAM&lt;/EM&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;void &lt;SPAN style="color: #993366;"&gt;Test1&lt;/SPAN&gt;(void);&lt;/P&gt;&lt;P&gt;#pragma CODE_SEG DEFAULT&lt;BR /&gt;#pragma pop&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;- file1.c&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;#pragma push&lt;BR /&gt;#pragma CODE_SEG &lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;&lt;EM&gt;ToCopyToRAM&lt;/EM&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;void &lt;SPAN style="color: #993366;"&gt;Test1&lt;/SPAN&gt;(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; //-----------test code------------------//&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;#pragma CODE_SEG DEFAULT&lt;BR /&gt;#pragma pop&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;- file2.h&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;#pragma push&lt;BR /&gt;#pragma CODE_SEG &lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;&lt;EM&gt;ToCopyToRAM&lt;/EM&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;void &lt;SPAN style="color: #0000ff;"&gt;Test2&lt;/SPAN&gt;(void);&lt;/P&gt;&lt;P&gt;#pragma CODE_SEG DEFAULT&lt;BR /&gt;#pragma pop&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;- file2.c&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;#pragma push&lt;BR /&gt;#pragma CODE_SEG &lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;&lt;EM&gt;ToCopyToRAM&lt;/EM&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;void &lt;SPAN style="color: #0000ff;"&gt;Test2&lt;/SPAN&gt;(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; //-----------test code------------------//&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;#pragma CODE_SEG DEFAULT&lt;BR /&gt;#pragma pop&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;- main.c&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;void &lt;SPAN style="color: #0000ff;"&gt;main&lt;/SPAN&gt;(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; // initialization&lt;/P&gt;&lt;P&gt;&amp;nbsp; while(1)&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN style="color: #993366;"&gt;Test1();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;SPAN style="color: #0000ff;"&gt;Test2();&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;it it right?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Jul 2017 03:20:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/CodeWarrior-for-MCU/CW-for-S12-X-Function-in-RAM-is-easy/m-p/146847#M3381</guid>
      <dc:creator>byeongjinkim</dc:creator>
      <dc:date>2017-07-24T03:20:18Z</dc:date>
    </item>
  </channel>
</rss>

