<?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: code works with breakpoint, fails without breakpoint in S12 / MagniV Microcontrollers</title>
    <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/code-works-with-breakpoint-fails-without-breakpoint/m-p/277769#M9984</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;BR /&gt;Flash memory is not readable while it is being erased or programmed (also while some flash commands are in progress).&amp;nbsp; You need to move at least part of your P-flash erase/program code to RAM or to D-flash, which is separate flash array and is readable while P-flash is being erased/programmed. Since interrtup vectors by default are located in P-flash, you also need to disable interrupts for P-flash erase/program time.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 20 Apr 2013 17:34:44 GMT</pubDate>
    <dc:creator>kef</dc:creator>
    <dc:date>2013-04-20T17:34:44Z</dc:date>
    <item>
      <title>code works with breakpoint, fails without breakpoint</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/code-works-with-breakpoint-fails-without-breakpoint/m-p/277768#M9983</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;BR /&gt;Hi,&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am working on flash driver for MC9S12XS128 microcontorller using Codewarrior...&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My requirement is , erase the expected memory area and program the same memory area base on Unified Diagnostic service request using CAN ....&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;but my issue with erase function. when keep the break points its erasing properly and returning to called function...&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;without break points it's erasing, but not returing to the called function...&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;i tried increasing the stack in prm file as well as keeping the delay before returning to called function...&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;but not working ..... anyone help me what could be the problem... below is the code&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;IO_ErrorType V_API_NEAR FlashDriver_REraseSync( IO_SizeType eraseLength,&lt;BR /&gt;&amp;nbsp;&amp;nbsp; IO_PositionType eraseAddress )&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; /* Check if length is even */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; if ( (eraseLength &amp;amp; (IO_SizeType)(fp.eraseSize-1)) != 0 )&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fp.errorCode = kFlashEraseInvalidSize;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return(fp.errorCode);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; /* Check if address is even */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; if ( (eraseAddress&amp;nbsp; &amp;amp; (IO_SizeType)(fp.eraseSize-1)) != 0 )&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fp.errorCode = kFlashEraseInvalidAddr;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return(fp.errorCode);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; fp.address = eraseAddress;&amp;nbsp; /* Flash erase address */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; fp.length = eraseLength;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Number of bytes to be erased */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Call the erase function in RAM */&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; FLASH_DRIVER_ERASE(flashCode, &amp;amp;fp); /*lint !e611 */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; return(fp.errorCode);&lt;BR /&gt;}&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;flashCode with hold the addres of ExpFlashErase function&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;void ExpFlashErase( tFlashParam *fp )&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; unsigned int i=10;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; tFlashLength&amp;nbsp;&amp;nbsp; flashLength;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; flashLength = fp-&amp;gt;length;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; fp-&amp;gt;errorCode = kFlashOk;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; fp-&amp;gt;errorAddress = fp-&amp;gt;address;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; while ( (flashLength &amp;gt; 0) &amp;amp;&amp;amp; (fp-&amp;gt;errorCode == kFlashOk) )&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Perform a sector erase */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FErase(fp);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fp-&amp;gt;errorAddress += (unsigned long)fp-&amp;gt;eraseSize;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; flashLength&amp;nbsp; -= (unsigned long)fp-&amp;gt;eraseSize;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;}&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;void FErase( tFlashParam *fp )&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; unsigned char dummyData[FLASH_SEGMENT_SIZE];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; /* Initialize FCMD */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; fp-&amp;gt;flashCmd.ccobHi[0] = ERASE_PFLASH_SECTOR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; fp-&amp;gt;flashCmd.cmdSize = 2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; /* Initialize writeData pointer */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; fp-&amp;gt;writeData = dummyData;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; /* Prepare flash and check if command register is empty */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; if ( FPrepCmd(fp) == 0 )&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fp-&amp;gt;errorCode = kFlashEraseCmdBufFull;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; else&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Start the command sequence N O W */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Write a dummy value to set the page address&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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; * Do not write a 0x00 because the CPU requires a real "write"&amp;nbsp; * &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * and not a "clear" instruction.&amp;nbsp; Some compilers will generate * &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * a CLR instruction which causes a flash ACCESS error&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Writing CCIF launches the command */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *FSTAT = CCIF;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( (*FSTAT &amp;amp; FPVIOL) != 0 )&lt;BR /&gt;&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; /* Protection violation - clear flag and set error status */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *FSTAT = FPVIOL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fp-&amp;gt;errorCode = kFlashEraseProtect;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR /&gt;&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; if ( (*FSTAT &amp;amp; ACCERR) != 0 )&lt;BR /&gt;&amp;nbsp;&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; /* Access error - clear flag and set error status */&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; *FSTAT = ACCERR;&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; fp-&amp;gt;errorCode = kFlashEraseAcc;&lt;BR /&gt;&amp;nbsp;&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; else&lt;BR /&gt;&amp;nbsp;&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; /* The only successful way out */&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; fp-&amp;gt;errorCode = kFlashOk;&lt;BR /&gt;&amp;nbsp;&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; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;}&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 20 Apr 2013 14:54:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/code-works-with-breakpoint-fails-without-breakpoint/m-p/277768#M9983</guid>
      <dc:creator>sudheerrajulapu</dc:creator>
      <dc:date>2013-04-20T14:54:38Z</dc:date>
    </item>
    <item>
      <title>Re: code works with breakpoint, fails without breakpoint</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/code-works-with-breakpoint-fails-without-breakpoint/m-p/277769#M9984</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;BR /&gt;Flash memory is not readable while it is being erased or programmed (also while some flash commands are in progress).&amp;nbsp; You need to move at least part of your P-flash erase/program code to RAM or to D-flash, which is separate flash array and is readable while P-flash is being erased/programmed. Since interrtup vectors by default are located in P-flash, you also need to disable interrupts for P-flash erase/program time.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 20 Apr 2013 17:34:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/code-works-with-breakpoint-fails-without-breakpoint/m-p/277769#M9984</guid>
      <dc:creator>kef</dc:creator>
      <dc:date>2013-04-20T17:34:44Z</dc:date>
    </item>
    <item>
      <title>Re: code works with breakpoint, fails without breakpoint</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/code-works-with-breakpoint-fails-without-breakpoint/m-p/277770#M9985</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;As Edward correctly mentioned, you cannot simultaneously erase and read the same flash block.&lt;/P&gt;&lt;P&gt;S12XS128 has just one 128 Kbyte Flash block.&lt;/P&gt;&lt;P&gt;Workaround:&lt;/P&gt;&lt;P&gt;Program should be executed from RAM during flash erasing/programming,...&lt;/P&gt;&lt;P&gt;In attachment you can find simple example code for P-Flash programming.&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 21 Apr 2013 19:52:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/code-works-with-breakpoint-fails-without-breakpoint/m-p/277770#M9985</guid>
      <dc:creator>RadekS</dc:creator>
      <dc:date>2013-04-21T19:52:17Z</dc:date>
    </item>
    <item>
      <title>Re: code works with breakpoint, fails without breakpoint</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/code-works-with-breakpoint-fails-without-breakpoint/m-p/277771#M9986</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;BR /&gt;Hi Edward...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for your reply....&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am running my flash algorithem in RAM only....&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;even added&amp;nbsp; delay before erase...... but still its working with break points.... other wise .. it's jumps to someother location...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;please let me know .. how could i solve this issue...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thanks in advance.... &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 22 Apr 2013 13:29:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/code-works-with-breakpoint-fails-without-breakpoint/m-p/277771#M9986</guid>
      <dc:creator>sudheerrajulapu</dc:creator>
      <dc:date>2013-04-22T13:29:05Z</dc:date>
    </item>
    <item>
      <title>Re: code works with breakpoint, fails without breakpoint</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/code-works-with-breakpoint-fails-without-breakpoint/m-p/277772#M9987</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I do not see in your code any wait loop for erase finishing.&lt;/P&gt;&lt;P&gt;You must wait until FSTAT_CCIF = 1, and after that you can start new erase command (new sector).&lt;/P&gt;&lt;P&gt;For example: while(FSTAT_CCIF == 0); //wait for done&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you handle this waiting by flash interrupt routine and some flags, this interrupt routine and interrupt vector table must be placed also directly in RAM.&lt;/P&gt;&lt;P&gt;However I didn’t found any sign about this approach in your code.&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 22 Apr 2013 15:30:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/code-works-with-breakpoint-fails-without-breakpoint/m-p/277772#M9987</guid>
      <dc:creator>RadekS</dc:creator>
      <dc:date>2013-04-22T15:30:51Z</dc:date>
    </item>
    <item>
      <title>Re: code works with breakpoint, fails without breakpoint</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/code-works-with-breakpoint-fails-without-breakpoint/m-p/277773#M9988</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Radek...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for your replay....&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am using below code ...... for delay...as you suggested ......&lt;/P&gt;&lt;P&gt;static void FWaitCmdCompleted( tFlashParam *fp )&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; /* Loop while cmd in progress&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * CCIF is valid 5 cycles after start of cmd */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp; do&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Trigger watchdog */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (void)(*fp-&amp;gt;wdTriggerFct)();&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; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* &amp;gt;&amp;gt;&amp;gt;&amp;gt;B R E A K&amp;lt;&amp;lt;&amp;lt;&amp;lt; the loop if an error has occurred */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( (*FSTAT &amp;amp; (FPVIOL | ACCERR)) != 0 ) break;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; } while ( (*FSTAT &amp;amp; CCIF) == 0 ); &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;void FErase( tFlashParam *fp )&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; unsigned char dummyData[FLASH_SEGMENT_SIZE];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; /* Initialize FCMD */&lt;BR /&gt;&amp;nbsp; fp-&amp;gt;flashCmd.ccobHi[0] = ERASE_PFLASH_SECTOR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; fp-&amp;gt;flashCmd.cmdSize = 2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; /* Initialize writeData pointer */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; fp-&amp;gt;writeData = dummyData;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; /* Prepare flash and check if command register is empty */&lt;BR /&gt;&amp;nbsp;&amp;nbsp; if ( FPrepCmd(fp) == 0 )&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fp-&amp;gt;errorCode = kFlashEraseCmdBufFull;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; else&lt;BR /&gt;&amp;nbsp;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Start the command sequence N O W */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Write a dummy value to set the page address&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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; * Do not write a 0x00 because the CPU requires a real "write"&amp;nbsp; * &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * and not a "clear" instruction.&amp;nbsp; Some compilers will generate * &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * a CLR instruction which causes a flash ACCESS error&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Writing CCIF launches the command */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *FSTAT = CCIF;&lt;/P&gt;&lt;P&gt; &lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FWaitCmdCompleted(fp);&amp;nbsp; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( (*FSTAT &amp;amp; FPVIOL) != 0 )&lt;BR /&gt;&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; /* Protection violation - clear flag and set error status */&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *FSTAT = FPVIOL;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fp-&amp;gt;errorCode = kFlashEraseProtect;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;BR /&gt;&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; if ( (*FSTAT &amp;amp; ACCERR) != 0 )&lt;BR /&gt;&amp;nbsp;&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; /* Access error - clear flag and set error status */&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; *FSTAT = ACCERR;&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; fp-&amp;gt;errorCode = kFlashEraseAcc;&lt;BR /&gt;&amp;nbsp;&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; else&lt;BR /&gt;&amp;nbsp;&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; /* The only successful way out */&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; fp-&amp;gt;errorCode = kFlashOk;&lt;BR /&gt;&amp;nbsp;&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; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;when i call this fucntion ...&amp;nbsp; flash erase function not returning ..... if i reset .. flash corrupting.....&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;please help ...what could be the issue...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 22 Apr 2013 15:41:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/code-works-with-breakpoint-fails-without-breakpoint/m-p/277773#M9988</guid>
      <dc:creator>sudheerrajulapu</dc:creator>
      <dc:date>2013-04-22T15:41:22Z</dc:date>
    </item>
    <item>
      <title>Re: code works with breakpoint, fails without breakpoint</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/code-works-with-breakpoint-fails-without-breakpoint/m-p/277774#M9989</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I suppose that you placed FErase function into RAM. Correct?&lt;/P&gt;&lt;P&gt;Where is placed function wdTriggerFct();?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Code placement:&lt;/P&gt;&lt;P&gt;#pragma CODE_SEG MY_RAM&lt;/P&gt;&lt;P&gt;//your code&lt;/P&gt;&lt;P&gt;#pragma CODE_SEG DEFAULT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Did you try disable interrupts?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 22 Apr 2013 15:53:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/code-works-with-breakpoint-fails-without-breakpoint/m-p/277774#M9989</guid>
      <dc:creator>RadekS</dc:creator>
      <dc:date>2013-04-22T15:53:46Z</dc:date>
    </item>
    <item>
      <title>Re: code works with breakpoint, fails without breakpoint</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/code-works-with-breakpoint-fails-without-breakpoint/m-p/277775#M9990</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Radek....&lt;/P&gt;&lt;P&gt;I correctly placed my erase function in RAM......&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;watchdog is in ROM.... moreover time being ...i disable the WD....&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i disabled the interrupts....&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 22 Apr 2013 17:17:50 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/code-works-with-breakpoint-fails-without-breakpoint/m-p/277775#M9990</guid>
      <dc:creator>sudheerrajulapu</dc:creator>
      <dc:date>2013-04-22T17:17:50Z</dc:date>
    </item>
    <item>
      <title>Re: code works with breakpoint, fails without breakpoint</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/code-works-with-breakpoint-fails-without-breakpoint/m-p/277776#M9991</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Radek and Edward,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you somuch for suggestion given to me...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;my code working fine now.....&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 25 Apr 2013 04:20:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/code-works-with-breakpoint-fails-without-breakpoint/m-p/277776#M9991</guid>
      <dc:creator>sudheerrajulapu</dc:creator>
      <dc:date>2013-04-25T04:20:47Z</dc:date>
    </item>
  </channel>
</rss>

