<?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>Kinetis MicrocontrollersのトピックRe: Bug in Flash Memory Module &amp;quot;program sector command&amp;quot;?</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Bug-in-Flash-Memory-Module-quot-program-sector-command-quot/m-p/245809#M6495</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Since you want to progam 1024 bytes, which is 256 longwords, so you have to set&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;FTFL-&amp;gt;FCCOB4 = 0x01;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;// Nummber of longwords to program (0x0100)&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;FTFL-&amp;gt;FCCOB5 = 0x00;&lt;/P&gt;&lt;P&gt;I also tested it with this change based on TWR-K20D50M, the result is as below.&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="a1.JPG"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/119362iFB1D1D04E8055060/image-size/large?v=v2&amp;amp;px=999" role="button" title="a1.JPG" alt="a1.JPG" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;Please kindly refer to the attached project for more details.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;Hope that helps,&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 20 May 2013 07:41:46 GMT</pubDate>
    <dc:creator>Kan_Li</dc:creator>
    <dc:date>2013-05-20T07:41:46Z</dc:date>
    <item>
      <title>Bug in Flash Memory Module "program sector command"?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Bug-in-Flash-Memory-Module-quot-program-sector-command-quot/m-p/245808#M6494</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I wrote a little test program to test the Flash Memory Module "program sector command".&lt;/P&gt;&lt;P&gt;To test it, I use a K20 tower board. The K20 tower board has got 256kByte of P-Flash, 32kByte FlexNVM (D-Flash) and 2kByte FlexRam.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The sector size is:&lt;/P&gt;&lt;P&gt;2kByte for P-Flash&lt;/P&gt;&lt;P&gt;1kByte for D-Flash&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The program sector command allows to use half the FlexRam to program Flash memory. One just fills the under half of the flexRam and launches the progam sector command.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thats what I'm doing in the following code. I fill the under half of the FlexRam (1kByte) with a test pattern and launch the command. The strange thing is, that the last byte keeps unprogrammed. Only 1023 byte are programmed and the last one keeps erased (0xFF). &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is not a real problem but i'm interessted if i'm doing a misstake or if it is a bug. Maybe someone can help me :smileyhappy:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;uint8* pFlexNVM = (uint8*) 0x10000000;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;// Pointer to the start address of the D-Flash&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;uint32* pFlexRam =(uint32*) 0x14000000;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;// Pointer to the start address of the FlexRam&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Fill the under half (2kByte/2 = 1kByte) of the FlexRam with a test pattern */&lt;/P&gt;&lt;P&gt;for(i=0;i&amp;lt;256;i++){&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp; pFlexRam[i] = 0x01020304;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Erase Flash Sector Command */&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;FTFL-&amp;gt;FCCOB0 = 0x09;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;// Erase sector command&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;FTFL-&amp;gt;FCCOB1 = 0x80;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;// Address to erase (0x1000 0000)&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;FTFL-&amp;gt;FCCOB2 = 0x00;&lt;/P&gt;&lt;P&gt;FTFL-&amp;gt;FCCOB3 = 0x00;&lt;/P&gt;&lt;P&gt;while((FTFL-&amp;gt;FSTAT &amp;amp; FTFL_FSTAT_CCIF_MASK)==0){}&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;FTFL-&amp;gt;FSTAT &amp;amp;= 0xFF;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;// Start erasing&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;while((FTFL-&amp;gt;FSTAT &amp;amp; FTFL_FSTAT_CCIF_MASK)==0){}&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ftfl_check();&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;// Prints information if an error occured&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;/* Program Section Command */&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;FTFL-&amp;gt;FCCOB0 = 0x0B;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;// Program section command&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;FTFL-&amp;gt;FCCOB1 = 0x80;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;// Address to program (0x1000 0000)&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;FTFL-&amp;gt;FCCOB2 = 0x00;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;FTFL-&amp;gt;FCCOB3 = 0x00;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;FTFL-&amp;gt;FCCOB4 = 0x00;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;// Nummber of longwords to program (0x00FF)&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;FTFL-&amp;gt;FCCOB5 = 0xff;&lt;/P&gt;&lt;P&gt;while((FTFL-&amp;gt;FSTAT &amp;amp; FTFL_FSTAT_CCIF_MASK)==0){}&lt;/P&gt;&lt;P&gt;FTFL-&amp;gt;FSTAT &amp;amp;= 0xFF;&lt;/P&gt;&lt;P&gt;while((FTFL-&amp;gt;FSTAT &amp;amp; FTFL_FSTAT_CCIF_MASK)==0){}&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ftfl_check();&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;// Prints information if an error occured&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;printl("Vaulue at 0x1000 0000: % \r\n",*pFlexNVM);&lt;/TD&gt;&lt;TD&gt;// Result = 1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;printl("Vaulue at 0x1000 0001: % \r\n",pFlexNVM[1]);&lt;/TD&gt;&lt;TD&gt;// Result = 2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;printl("Vaulue at 0x1000 03FC: % \r\n",pFlexNVM[1020]);&lt;/TD&gt;&lt;TD&gt;// Result = 255&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;printl("Vaulue at 0x1000 03FD: % \r\n",pFlexNVM[1021]);&lt;/TD&gt;&lt;TD&gt;// Result = 255&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&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>Sat, 18 May 2013 11:30:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Bug-in-Flash-Memory-Module-quot-program-sector-command-quot/m-p/245808#M6494</guid>
      <dc:creator>lothar</dc:creator>
      <dc:date>2013-05-18T11:30:26Z</dc:date>
    </item>
    <item>
      <title>Re: Bug in Flash Memory Module "program sector command"?</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Bug-in-Flash-Memory-Module-quot-program-sector-command-quot/m-p/245809#M6495</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Since you want to progam 1024 bytes, which is 256 longwords, so you have to set&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;FTFL-&amp;gt;FCCOB4 = 0x01;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;// Nummber of longwords to program (0x0100)&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;FTFL-&amp;gt;FCCOB5 = 0x00;&lt;/P&gt;&lt;P&gt;I also tested it with this change based on TWR-K20D50M, the result is as below.&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="a1.JPG"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/119362iFB1D1D04E8055060/image-size/large?v=v2&amp;amp;px=999" role="button" title="a1.JPG" alt="a1.JPG" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;Please kindly refer to the attached project for more details.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;Hope that helps,&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 20 May 2013 07:41:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Bug-in-Flash-Memory-Module-quot-program-sector-command-quot/m-p/245809#M6495</guid>
      <dc:creator>Kan_Li</dc:creator>
      <dc:date>2013-05-20T07:41:46Z</dc:date>
    </item>
  </channel>
</rss>

