<?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: K60fx512 flex memory</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K60fx512-flex-memory/m-p/195096#M2563</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I had to add the code&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; asm("cpsid.n i");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //disable interrupts&lt;/P&gt;&lt;P&gt;before the first FCCOB&amp;nbsp; write &lt;/P&gt;&lt;P&gt;and the enable interrupts&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; asm("cpsie.n i&amp;nbsp; ");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // enable interrupts&lt;/P&gt;&lt;P&gt;after the wait&amp;nbsp; for the commands to complete.&lt;/P&gt;&lt;P&gt;This fixed the&amp;nbsp; lock-up problems with MQX.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I use optimization level 1, and do not try block erase from code.&amp;nbsp; I have no seen any problems in the flexRAM, and use addresses&amp;nbsp; past 0x14000200.&amp;nbsp; But depending on how its partitioned, you may get the hard_fault if you used flexRAM address outside the partitioned area.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 12 Dec 2012 21:42:58 GMT</pubDate>
    <dc:creator>kristies1</dc:creator>
    <dc:date>2012-12-12T21:42:58Z</dc:date>
    <item>
      <title>K60fx512 flex memory</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K60fx512-flex-memory/m-p/195094#M2561</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;on K60fx512 when I try to partition flex memory, the code hangs (in debugger) or mcu resets where shown below.&amp;nbsp; Code is based on flexmem_demo.&lt;/P&gt;&lt;P&gt;If I put breakpoint at the hang location and then reset, the flexmem has actually partitioned and works as expected as an eeprom.&lt;/P&gt;&lt;P&gt;Also using MQX 3.8/Codewarrior 10.2 , if this is relevant.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define DFLASH_SIZE_448&amp;nbsp;&amp;nbsp; 0x04&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define EEPROM_512_512 0x34&amp;nbsp;&amp;nbsp; // subsystem A = 512 bytes, subsystem B = 512 bytes&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void&amp;nbsp; flexinit (void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SCB_SHCSR|=SCB_SHCSR_BUSFAULTENA_MASK|SCB_SHCSR_MEMFAULTENA_MASK|SCB_SHCSR_USGFAULTENA_MASK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Partition the memory to enable FlexMem mode */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( partition_flash( EEPROM_512_512, DFLASH_SIZE_448) )&lt;/P&gt;&lt;P&gt;&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; /* Wait for the command to complete */&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; while(!(FTFE_FCNFG &amp;amp; FTFE_FCNFG_EEERDY_MASK))&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; {&lt;/P&gt;&lt;P&gt;&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; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;int partition_flash(int eeprom_size, int dflash_size)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; /* Test to make sure the device is not already partitioned. If it&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * is already partitioned, then return with no action performed.&lt;/P&gt;&lt;P&gt;&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; if ((SIM_FCFG1 &amp;amp; SIM_FCFG1_DEPART(0xF)) != 0x00000F00)&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;&amp;nbsp; printf("\nDevice is already partitioned.\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&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; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Write the FCCOB registers */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTFE_FCCOB0 = FTFE_FCCOB0_CCOBn(0x80); // Selects the PGMPART command&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTFE_FCCOB1 = 0x00;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTFE_FCCOB2 = 0x00;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTFE_FCCOB3 = 0x00;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* FCCOB4 is written with the code for the subsystem sizes (eeprom_size define) */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTFE_FCCOB4 = eeprom_size;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* FFCOB5 is written with the code for the Dflash size (dflash_size define) */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTFE_FCCOB5 = dflash_size;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* All required FCCOBx registers are written, so launch the command */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FTFE_FSTAT = FTFE_FSTAT_CCIF_MASK;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Wait for the command to complete */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(!(FTFE_FSTAT &amp;amp; FTFE_FSTAT_CCIF_MASK))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;// hangs or resets here&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 1;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&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>Fri, 30 Nov 2012 18:41:42 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K60fx512-flex-memory/m-p/195094#M2561</guid>
      <dc:creator>kristies1</dc:creator>
      <dc:date>2012-11-30T18:41:42Z</dc:date>
    </item>
    <item>
      <title>Re: K60fx512 flex memory</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K60fx512-flex-memory/m-p/195095#M2562</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 am also struggling with the flexNVM.&lt;/P&gt;&lt;P&gt;Do you have any core optimization enabled? I.e. -O compile flag?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have managed to "destroy" a K10DX device when trying to block erase the flash from code, to be able to repartition the memory. I am not sure why it happen, but I think it is because an errata issue, or I did something very wrong....&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I ran into an other problem when trying to write to an already partitioned EEEPROM, but I got a hard_fault problem when writing to other flexRAM address than 0x1400 0000. Do not know why. Something you have experienced?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;Daniel&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 12 Dec 2012 13:51:29 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K60fx512-flex-memory/m-p/195095#M2562</guid>
      <dc:creator>deekay</dc:creator>
      <dc:date>2012-12-12T13:51:29Z</dc:date>
    </item>
    <item>
      <title>Re: K60fx512 flex memory</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K60fx512-flex-memory/m-p/195096#M2563</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I had to add the code&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; asm("cpsid.n i");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //disable interrupts&lt;/P&gt;&lt;P&gt;before the first FCCOB&amp;nbsp; write &lt;/P&gt;&lt;P&gt;and the enable interrupts&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; asm("cpsie.n i&amp;nbsp; ");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // enable interrupts&lt;/P&gt;&lt;P&gt;after the wait&amp;nbsp; for the commands to complete.&lt;/P&gt;&lt;P&gt;This fixed the&amp;nbsp; lock-up problems with MQX.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I use optimization level 1, and do not try block erase from code.&amp;nbsp; I have no seen any problems in the flexRAM, and use addresses&amp;nbsp; past 0x14000200.&amp;nbsp; But depending on how its partitioned, you may get the hard_fault if you used flexRAM address outside the partitioned area.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 12 Dec 2012 21:42:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K60fx512-flex-memory/m-p/195096#M2563</guid>
      <dc:creator>kristies1</dc:creator>
      <dc:date>2012-12-12T21:42:58Z</dc:date>
    </item>
    <item>
      <title>Re: K60fx512 flex memory</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K60fx512-flex-memory/m-p/195097#M2564</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Ok. Perhaps the partitioning went bad due to lack of interrupt disabling. That might explain why I couldn't access addresses &amp;gt; 0x1400 0000 without hard_fault.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Yes I did use the block erase command from inside code... That seems to have corrupted the flash so I cannot program in via JTAG anymore. As according to errata e&lt;SPAN style="font-family: Arial,Helvetica,sans-serif; font-size: 10pt;"&gt;3854 described in KINETIS_0M33Z.pdf.I guess I shall use Erase Flash Sector command instead to prepare flexNVM for re-partitioning, have you tried it? &lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: Arial,Helvetica,sans-serif; font-size: 10pt;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: Arial,Helvetica,sans-serif; font-size: 10pt;"&gt;Do you know any workarounds to make it "come back from the dead"? Or shall I consider it scrap.... &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: Arial,Helvetica,sans-serif; font-size: 10pt;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: Arial,Helvetica,sans-serif; font-size: 10pt;"&gt;BR&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: Arial,Helvetica,sans-serif; font-size: 10pt;"&gt;Daniel&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 13 Dec 2012 06:14:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K60fx512-flex-memory/m-p/195097#M2564</guid>
      <dc:creator>deekay</dc:creator>
      <dc:date>2012-12-13T06:14:43Z</dc:date>
    </item>
    <item>
      <title>Re: K60fx512 flex memory</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K60fx512-flex-memory/m-p/195098#M2565</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The dflash always gets erased by codewarrior, so I don't have to worry about erasing prior to partitioning.&amp;nbsp; According to the datasheets, the app should only partition once for the lifetime of the device.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 13 Dec 2012 16:06:11 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K60fx512-flex-memory/m-p/195098#M2565</guid>
      <dc:creator>kristies1</dc:creator>
      <dc:date>2012-12-13T16:06:11Z</dc:date>
    </item>
  </channel>
</rss>

