<?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のトピックCrash on global variable assignment in banked and direct RAM.</title>
    <link>https://community.nxp.com/t5/CodeWarrior-for-MCU/Crash-on-global-variable-assignment-in-banked-and-direct-RAM/m-p/176980#M5767</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;Hi,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I'm currently using CodeWarrior 4.7 on a HC12XDP512 microcontroller. I've been debugging a series of unexpected crashes in our user interface and located the cause of the problem. However, I'm a bit confused why this is happening.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Here it goes :&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;unsigned16 gRefreshDelay :&lt;/DIV&gt;&lt;DIV&gt;global variable in direct RAM to control the refresh rate of the UI. Unsigned word.&lt;/DIV&gt;&lt;P&gt;&lt;SPAN style="font-size: 2;"&gt;S_INFO_MENU_CURRENT&amp;nbsp;gInfoMenuCurrent :&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 2;"&gt;global structure containing the current menu and associated functions. This structure contains a pointer to a&amp;nbsp;banked&amp;nbsp;structure (&lt;SPAN style="font-size: 2;"&gt;structPtr). See the following :&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style=": ; font-size: 2;"&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;&lt;P&gt;typedef &lt;STRONG&gt;&lt;SPAN style="color: #000080; font-size: 2;"&gt;struct&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="font-size: 2;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #008080; font-size: 2;"&gt;{&lt;/SPAN&gt;&lt;SPAN style="font-size: 2;"&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt;s16 choix_u08;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;I&gt;&lt;SPAN style="color: #008000; font-size: 2;"&gt;/*!&amp;lt; Menu current choice. Shall be signed for cds getString() */&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN style="font-size: 2;"&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt;u08 refresh_u08;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;I&gt;&lt;SPAN style="color: #008000; font-size: 2;"&gt;/*!&amp;lt; Do we need a refresh? TRUE/FALSE */&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN style="font-size: 2;"&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt;u08 curseurPos_u08;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;I&gt;&lt;SPAN style="color: #008000; font-size: 2;"&gt;/*!&amp;lt; Menu current possition. */&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN style="font-size: 2;"&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt;HID_LANGUE_TYPEDEF langue_enum;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;I&gt;&lt;SPAN style="color: #008000; font-size: 2;"&gt;/*!&amp;lt; Current language. */&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN style="font-size: 2;"&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt;s08 menuFct_s08;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;I&gt;&lt;SPAN style="color: #008000; font-size: 2;"&gt;/*!&amp;lt; Menu type. */&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN style="font-size: 2;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style="color: #000080; font-size: 2;"&gt;void&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;SPAN style="color: #000000; font-size: 2;"&gt;BANK_PTR structPtr;&lt;/SPAN&gt; &lt;I&gt;&lt;SPAN style="color: #008000; font-size: 2;"&gt;/*!&amp;lt; Menu Structure. */&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN style="font-size: 2;"&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt;u08 DontWantLangueChoice;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;I&gt;&lt;SPAN style="color: #008000; font-size: 2;"&gt;/*!&amp;lt; On specific menu, we don't want FN1 as langue button. */&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN style="font-size: 2;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #008080; font-size: 2;"&gt;}&lt;/SPAN&gt;&lt;SPAN style=": ; color: #000000; font-size: 2;"&gt;S_INFO_MENU_CURRENT;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;SPAN style="font-size: 2;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 2;"&gt;The following code will generate a crash :&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 2;"&gt;&lt;SPAN style="font-size: 1;"&gt;HID_CONFIG_MENU_INFO BANK_PTR menuPtr &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;(HID_CONFIG_MENU_INFO BANK_PTR)gInfoMenuCurrent&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;structPtr;&lt;BR /&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 1;"&gt;// Banked variables first&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 2;"&gt;&lt;SPAN style="font-size: 1;"&gt;gInfoMenuCurrent&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;curseurPos_u08 &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;menuPtr&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;-&amp;gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;cursorPosPrec_u08;&lt;BR /&gt;gInfoMenuCurrent&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;choix_u08 &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;menuPtr&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;-&amp;gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;choixPrec_u08;&lt;BR /&gt;gInfoMenuCurrent&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;structPtr &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;menuPtr&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;-&amp;gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;menuPrecStruct;&lt;BR /&gt;gInfoMenuCurrent&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;menuFct_s08 &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;menuPtr&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;-&amp;gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;menuPrecFct_s08;&lt;BR /&gt;gInfoMenuCurrent&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;refresh_u08 &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;TRUE;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style=": ; font-size: 1;"&gt;// Direct variable after&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 1;"&gt;gRefreshDelay &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;HID_KEY_HOLD_DELAY;&lt;/SPAN&gt; &lt;I&gt;&lt;SPAN style=": ; color: #008000; font-size: 1;"&gt;// WARNING : code will crash HERE! Tested with debugger&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;&lt;P&gt;return;&lt;SPAN style=": ; color: #008000; font-size: 1;"&gt;&lt;I&gt;&lt;/I&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN style="font-size: 2;"&gt;However, the code won't crash if I do the following :&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="font-size: 1;"&gt;HID_CONFIG_MENU_INFO BANK_PTR menuPtr &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;(HID_CONFIG_MENU_INFO BANK_PTR)gInfoMenuCurrent&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;structPtr;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="font-size: 1;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;// Direct variable first&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="font-size: 1;"&gt;gRefreshDelay &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;HID_KEY_HOLD_DELAY;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;I&gt;&lt;SPAN style=": ; color: #008000; font-size: 1;"&gt;//&amp;nbsp;Code won't crash. Tested with debugger.&lt;/SPAN&gt;&lt;/I&gt;&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="font-size: 1;"&gt;// Banked data afterward&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="font-size: 1;"&gt;gInfoMenuCurrent&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;curseurPos_u08 &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;menuPtr&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;-&amp;gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;cursorPosPrec_u08;&lt;BR /&gt;gInfoMenuCurrent&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;choix_u08 &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;menuPtr&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;-&amp;gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;choixPrec_u08;&lt;BR /&gt;gInfoMenuCurrent&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;structPtr &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;menuPtr&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;-&amp;gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;menuPrecStruct;&lt;BR /&gt;gInfoMenuCurrent&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;menuFct_s08 &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;menuPtr&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;-&amp;gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;menuPrecFct_s08;&lt;BR /&gt;gInfoMenuCurrent&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;refresh_u08 &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;TRUE;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="font-size: 2;"&gt;return;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="font-size: 2;"&gt;In short, if I assign stuff in a global banked structure and then assign a direct global variable, my code will crash. If I do the reverse, direct and then banked, everything is fine. This shouldn't happen. Please note that this code don't generate any error or warning when compiled.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="font-size: 2;"&gt;Thanks&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 30 Jul 2008 19:41:38 GMT</pubDate>
    <dc:creator>sbelanger</dc:creator>
    <dc:date>2008-07-30T19:41:38Z</dc:date>
    <item>
      <title>Crash on global variable assignment in banked and direct RAM.</title>
      <link>https://community.nxp.com/t5/CodeWarrior-for-MCU/Crash-on-global-variable-assignment-in-banked-and-direct-RAM/m-p/176980#M5767</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;Hi,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I'm currently using CodeWarrior 4.7 on a HC12XDP512 microcontroller. I've been debugging a series of unexpected crashes in our user interface and located the cause of the problem. However, I'm a bit confused why this is happening.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Here it goes :&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;unsigned16 gRefreshDelay :&lt;/DIV&gt;&lt;DIV&gt;global variable in direct RAM to control the refresh rate of the UI. Unsigned word.&lt;/DIV&gt;&lt;P&gt;&lt;SPAN style="font-size: 2;"&gt;S_INFO_MENU_CURRENT&amp;nbsp;gInfoMenuCurrent :&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 2;"&gt;global structure containing the current menu and associated functions. This structure contains a pointer to a&amp;nbsp;banked&amp;nbsp;structure (&lt;SPAN style="font-size: 2;"&gt;structPtr). See the following :&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style=": ; font-size: 2;"&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;&lt;P&gt;typedef &lt;STRONG&gt;&lt;SPAN style="color: #000080; font-size: 2;"&gt;struct&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="font-size: 2;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #008080; font-size: 2;"&gt;{&lt;/SPAN&gt;&lt;SPAN style="font-size: 2;"&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt;s16 choix_u08;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;I&gt;&lt;SPAN style="color: #008000; font-size: 2;"&gt;/*!&amp;lt; Menu current choice. Shall be signed for cds getString() */&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN style="font-size: 2;"&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt;u08 refresh_u08;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;I&gt;&lt;SPAN style="color: #008000; font-size: 2;"&gt;/*!&amp;lt; Do we need a refresh? TRUE/FALSE */&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN style="font-size: 2;"&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt;u08 curseurPos_u08;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;I&gt;&lt;SPAN style="color: #008000; font-size: 2;"&gt;/*!&amp;lt; Menu current possition. */&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN style="font-size: 2;"&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt;HID_LANGUE_TYPEDEF langue_enum;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;I&gt;&lt;SPAN style="color: #008000; font-size: 2;"&gt;/*!&amp;lt; Current language. */&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN style="font-size: 2;"&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt;s08 menuFct_s08;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;I&gt;&lt;SPAN style="color: #008000; font-size: 2;"&gt;/*!&amp;lt; Menu type. */&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN style="font-size: 2;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style="color: #000080; font-size: 2;"&gt;void&lt;/SPAN&gt;&lt;/STRONG&gt; &lt;SPAN style="color: #000000; font-size: 2;"&gt;BANK_PTR structPtr;&lt;/SPAN&gt; &lt;I&gt;&lt;SPAN style="color: #008000; font-size: 2;"&gt;/*!&amp;lt; Menu Structure. */&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN style="font-size: 2;"&gt;&lt;BR /&gt;&lt;SPAN style="color: #000000;"&gt;u08 DontWantLangueChoice;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;I&gt;&lt;SPAN style="color: #008000; font-size: 2;"&gt;/*!&amp;lt; On specific menu, we don't want FN1 as langue button. */&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN style="font-size: 2;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #008080; font-size: 2;"&gt;}&lt;/SPAN&gt;&lt;SPAN style=": ; color: #000000; font-size: 2;"&gt;S_INFO_MENU_CURRENT;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;SPAN style="font-size: 2;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 2;"&gt;The following code will generate a crash :&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 2;"&gt;&lt;SPAN style="font-size: 1;"&gt;HID_CONFIG_MENU_INFO BANK_PTR menuPtr &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;(HID_CONFIG_MENU_INFO BANK_PTR)gInfoMenuCurrent&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;structPtr;&lt;BR /&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 1;"&gt;// Banked variables first&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 2;"&gt;&lt;SPAN style="font-size: 1;"&gt;gInfoMenuCurrent&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;curseurPos_u08 &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;menuPtr&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;-&amp;gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;cursorPosPrec_u08;&lt;BR /&gt;gInfoMenuCurrent&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;choix_u08 &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;menuPtr&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;-&amp;gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;choixPrec_u08;&lt;BR /&gt;gInfoMenuCurrent&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;structPtr &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;menuPtr&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;-&amp;gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;menuPrecStruct;&lt;BR /&gt;gInfoMenuCurrent&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;menuFct_s08 &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;menuPtr&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;-&amp;gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;menuPrecFct_s08;&lt;BR /&gt;gInfoMenuCurrent&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;refresh_u08 &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;TRUE;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style=": ; font-size: 1;"&gt;// Direct variable after&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 1;"&gt;gRefreshDelay &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;HID_KEY_HOLD_DELAY;&lt;/SPAN&gt; &lt;I&gt;&lt;SPAN style=": ; color: #008000; font-size: 1;"&gt;// WARNING : code will crash HERE! Tested with debugger&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;&lt;P&gt;return;&lt;SPAN style=": ; color: #008000; font-size: 1;"&gt;&lt;I&gt;&lt;/I&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN style="font-size: 2;"&gt;However, the code won't crash if I do the following :&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="font-size: 1;"&gt;HID_CONFIG_MENU_INFO BANK_PTR menuPtr &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;(HID_CONFIG_MENU_INFO BANK_PTR)gInfoMenuCurrent&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;structPtr;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="font-size: 1;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;// Direct variable first&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="font-size: 1;"&gt;gRefreshDelay &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;HID_KEY_HOLD_DELAY;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;I&gt;&lt;SPAN style=": ; color: #008000; font-size: 1;"&gt;//&amp;nbsp;Code won't crash. Tested with debugger.&lt;/SPAN&gt;&lt;/I&gt;&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="font-size: 1;"&gt;// Banked data afterward&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="font-size: 1;"&gt;gInfoMenuCurrent&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;curseurPos_u08 &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;menuPtr&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;-&amp;gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;cursorPosPrec_u08;&lt;BR /&gt;gInfoMenuCurrent&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;choix_u08 &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;menuPtr&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;-&amp;gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;choixPrec_u08;&lt;BR /&gt;gInfoMenuCurrent&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;structPtr &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;menuPtr&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;-&amp;gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;menuPrecStruct;&lt;BR /&gt;gInfoMenuCurrent&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;menuFct_s08 &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;menuPtr&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;-&amp;gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;menuPrecFct_s08;&lt;BR /&gt;gInfoMenuCurrent&lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 1;"&gt;refresh_u08 &lt;STRONG&gt;&lt;SPAN style="color: #0000ff;"&gt;=&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt; &lt;SPAN style="font-size: 1;"&gt;TRUE;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="font-size: 2;"&gt;return;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="font-size: 2;"&gt;In short, if I assign stuff in a global banked structure and then assign a direct global variable, my code will crash. If I do the reverse, direct and then banked, everything is fine. This shouldn't happen. Please note that this code don't generate any error or warning when compiled.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN style="font-size: 2;"&gt;Thanks&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 30 Jul 2008 19:41:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/CodeWarrior-for-MCU/Crash-on-global-variable-assignment-in-banked-and-direct-RAM/m-p/176980#M5767</guid>
      <dc:creator>sbelanger</dc:creator>
      <dc:date>2008-07-30T19:41:38Z</dc:date>
    </item>
    <item>
      <title>Re: Crash on global variable assignment in banked and direct RAM.</title>
      <link>https://community.nxp.com/t5/CodeWarrior-for-MCU/Crash-on-global-variable-assignment-in-banked-and-direct-RAM/m-p/176981#M5768</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;This may be related to the application memory map or anything else.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I would recommend you to submit a service request for that.&lt;BR /&gt;&lt;BR /&gt;Click &lt;A href="https://www.freescale.com/webapp/servicerequest.create_SR.framework?regFlag=fromOpenSR" rel="nofollow" target="_blank"&gt;here&lt;/A&gt; to submit a service request.&lt;BR /&gt;&lt;BR /&gt;Make sure to attach a reproducible project and installed product information to the service request.&lt;BR /&gt;To generate the required information:&lt;BR /&gt;- Start CodeWarrior&lt;BR /&gt;- Open the project&lt;BR /&gt;- Select "Help" -&amp;gt; "Pack and Go" and follow instructions on the screen.&lt;BR /&gt;&lt;BR /&gt;Attach the generated .zip file to the SR.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;CrasyCat&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 30 Jul 2008 21:12:42 GMT</pubDate>
      <guid>https://community.nxp.com/t5/CodeWarrior-for-MCU/Crash-on-global-variable-assignment-in-banked-and-direct-RAM/m-p/176981#M5768</guid>
      <dc:creator>CrasyCat</dc:creator>
      <dc:date>2008-07-30T21:12:42Z</dc:date>
    </item>
  </channel>
</rss>

