<?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>S12 / MagniV MicrocontrollersのトピックRe: 9s12 paged FLASH program/erase related</title>
    <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/9s12-paged-FLASH-program-erase-related/m-p/227879#M9321</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Edward is correct in his answer and I would like to add for you support files which can help you in your design.&lt;/P&gt;&lt;P&gt;1) The example code for flash E/W using array in the RAM for execution of critical phase of the flas EW process is attached.&lt;/P&gt;&lt;P&gt;2) link to the all access bootloader which can help you in your design.&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.freescale.com/files/microcontrollers/doc/app_note/AN3275.pdf" title="http://www.freescale.com/files/microcontrollers/doc/app_note/AN3275.pdf"&gt;http://www.freescale.com/files/microcontrollers/doc/app_note/AN3275.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;The source SW files can be downloaded from &lt;STRONG&gt;&lt;A class="jive-link-external-small" href="http://tinyurl.com/qct4uxf"&gt;http://tinyurl.com/qct4uxf&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Best regards,&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Ladislav&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 11 Jan 2014 17:22:22 GMT</pubDate>
    <dc:creator>lama</dc:creator>
    <dc:date>2014-01-11T17:22:22Z</dc:date>
    <item>
      <title>9s12 paged FLASH program/erase related</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/9s12-paged-FLASH-program-erase-related/m-p/227877#M9319</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I am writing boot loader code for MC9S12DP256 micro-controller. So for this I have written FLASH erase sector/mass, program routines. Now I am facing some problem with the sector erase/program on non-PAGED (i.e PAGE =0x3e and 0x3f). But I am succeeding on PAGED windows erase/program from PAGE= 0x30 to 0x3d&amp;nbsp; and also the mass erase on all the block of the pages(including PAGE=0x3e and 0x3f). I have OSC frequency of 48MHz on board and bus clock of 24MHz. I have initialized the FCLKDIV = 0x5e before going to call the FLASH related routines. The FLASH related routines are copied into RAM and executing.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I will put my code here:&lt;/P&gt;&lt;DIV class="j-rte-table"&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD style=""&gt;#define FLASH_MASS_ERASE&amp;nbsp; &lt;/TD&gt;&lt;TD style=""&gt;0x41&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style=""&gt;#define FLASH_SECTOR_ERASE&lt;/TD&gt;&lt;TD style=""&gt;0x40&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style=""&gt;#define FLASH_WRITE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD style=""&gt;0x20&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style=""&gt;#define FLASH_VERIFY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/TD&gt;&lt;TD style=""&gt;0x05&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;P&gt;void ClearFlashErr()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; volatile char i=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; for(i=0;i&amp;lt;4;i++)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FCNFG = i;/* Bank select from 0 - 3*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FSTAT |=(ACCERR | PVIOL | BLANK);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; _asm("nop");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; return;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;char FlashCommands(const volatile char cmd, const volatile char page, const volatile int addr, const volatile int data)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; char error_flash=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; char i=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; ClearFlashErr();&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;FCNFG = /*(FCNFG &amp;amp; 0xcc) | */(~(page &amp;gt;&amp;gt; 2 )) &amp;amp; 0x03;//BKSEL select block&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if(FSTAT &amp;amp; CBEIF)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PPAGE&amp;nbsp; = page;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DISABLE_INTERRUPTS();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FDATA = data;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FADDR = addr;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FCMD = cmd;// 41-mass erase, 40-512b sector erase, 20-progam 1 word, 05-erase verify&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FSTAT = CBEIF;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENABLE_INTERRUPTS();&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(((FSTAT &amp;amp; (CCIF | ACCERR | PVIOL)) == 0x0) || ((FSTAT &amp;amp; CBEIF) == 0x00))&lt;/P&gt;&lt;P&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; _asm("nop");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i++;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(i&amp;gt;200)&lt;/P&gt;&lt;P&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; error_flash =1;&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; break;&lt;/P&gt;&lt;P&gt;&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; }&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if((FSTAT &amp;amp; ACCERR)||(FSTAT &amp;amp; PVIOL))&lt;/P&gt;&lt;P&gt;&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;&amp;nbsp;&amp;nbsp; error_flash = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _asm("nop");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; return(error_flash);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Parameters passed for erasing,&amp;nbsp; &lt;/P&gt;&lt;P&gt;* When I call to sector erase(command 0x40) on PAGE 0x3e, passed the address of 0x4000&lt;/P&gt;&lt;P&gt;* When I call to sector erase on PAGE 0x3f, passed the address of 0xC000&lt;/P&gt;&lt;P&gt;* Even I have tried to pass the page window address(0x8000) along with the PAGE &lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Some observation from my side: &lt;/P&gt;&lt;P&gt;* After mass erase on all the blocks of FLASH, I am able to program/write on the PAGE=0x3e from 0x4000. but not even single location on the PAGE=0x3f&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Please can anybody let me know and guide me what may be the wrong?&lt;/P&gt;&lt;P&gt;Waiting....&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Ganesh&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Jan 2014 06:41:04 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/9s12-paged-FLASH-program-erase-related/m-p/227877#M9319</guid>
      <dc:creator>ganesh_s</dc:creator>
      <dc:date>2014-01-10T06:41:04Z</dc:date>
    </item>
    <item>
      <title>Re: 9s12 paged FLASH program/erase related</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/9s12-paged-FLASH-program-erase-related/m-p/227878#M9320</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;FSTAT |=(ACCERR | PVIOL | BLANK);&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;^^ serious bug here. FSTAT bits are cleared writing ones to flag. I you think a bit, you will see that this code tries to clear all FSTAT flags that are set, including CBEIF! Either do&lt;/P&gt;&lt;P&gt;FSTAT = ACCERR|PVIOL|BLANK;&lt;/P&gt;&lt;P&gt;or &lt;/P&gt;&lt;P&gt;FSTAT &amp;amp;= ACCERR|PVIOL|BLANK;&amp;nbsp; // NO '~' to the right from &amp;amp;= &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FDATA = data;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FADDR = addr;&lt;/P&gt;&lt;P&gt;^^ second serious bug. FDATA and FADDR registers are of interest only for BDM programmers. In normal operation modes these registers are not accessible. You need to write directly to flash array to latch address and data to be programmed. Instead of these ^^ two lines you need to *(short*)addr =&amp;nbsp; data;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 10 Jan 2014 07:10:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/9s12-paged-FLASH-program-erase-related/m-p/227878#M9320</guid>
      <dc:creator>kef2</dc:creator>
      <dc:date>2014-01-10T07:10:54Z</dc:date>
    </item>
    <item>
      <title>Re: 9s12 paged FLASH program/erase related</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/9s12-paged-FLASH-program-erase-related/m-p/227879#M9321</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Edward is correct in his answer and I would like to add for you support files which can help you in your design.&lt;/P&gt;&lt;P&gt;1) The example code for flash E/W using array in the RAM for execution of critical phase of the flas EW process is attached.&lt;/P&gt;&lt;P&gt;2) link to the all access bootloader which can help you in your design.&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.freescale.com/files/microcontrollers/doc/app_note/AN3275.pdf" title="http://www.freescale.com/files/microcontrollers/doc/app_note/AN3275.pdf"&gt;http://www.freescale.com/files/microcontrollers/doc/app_note/AN3275.pdf&lt;/A&gt;&lt;/P&gt;&lt;P&gt;The source SW files can be downloaded from &lt;STRONG&gt;&lt;A class="jive-link-external-small" href="http://tinyurl.com/qct4uxf"&gt;http://tinyurl.com/qct4uxf&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Best regards,&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Ladislav&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Jan 2014 17:22:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/9s12-paged-FLASH-program-erase-related/m-p/227879#M9321</guid>
      <dc:creator>lama</dc:creator>
      <dc:date>2014-01-11T17:22:22Z</dc:date>
    </item>
    <item>
      <title>Re: 9s12 paged FLASH program/erase related</title>
      <link>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/9s12-paged-FLASH-program-erase-related/m-p/227880#M9322</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Edward &amp;amp; Lama,&lt;/P&gt;&lt;P&gt;Sorry for late response. Now its working.:smileyhappy:&lt;/P&gt;&lt;P&gt;Regards,&lt;BR /&gt;Ganesh&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jan 2014 06:45:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S12-MagniV-Microcontrollers/9s12-paged-FLASH-program-erase-related/m-p/227880#M9322</guid>
      <dc:creator>ganesh_s</dc:creator>
      <dc:date>2014-01-16T06:45:48Z</dc:date>
    </item>
  </channel>
</rss>

