<?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: How to use fsl_flash.c to implement flex nvm with flash EEPROM in Kinetis Software Development Kit</title>
    <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/How-to-use-fsl-flash-c-to-implement-flex-nvm-with-flash-EEPROM/m-p/760650#M7756</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;IAR has an issue with using __disable_interrupt;&amp;nbsp; __disable_interrupt(); &amp;amp; __enable_interrupt __enable_interrupt(); If you don't use the __xxxx_interrupt(); with parenthesis the code compiles without warnings or errors, but the assembly instruction (cpsid or cpsie) does not get compiled in. I've updated the above code to use the&amp;nbsp;&lt;SPAN&gt;__xxxx_interrupt();&lt;/SPAN&gt;&amp;nbsp;It works now so feel free to use it as a demo for E-flash.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 07 Dec 2017 21:10:15 GMT</pubDate>
    <dc:creator>edablan</dc:creator>
    <dc:date>2017-12-07T21:10:15Z</dc:date>
    <item>
      <title>How to use fsl_flash.c to implement flex nvm with flash EEPROM</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/How-to-use-fsl-flash-c-to-implement-flex-nvm-with-flash-EEPROM/m-p/760647#M7753</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;All,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am using the K64 FRDM board for some proof concept regarding the flex nvm setup for flash EEPROM and DFLASH. I couldn't find any demos or application notes on how to leverage this library code, but essentially started playing with it to get a working solution. I was finally able to get it to work, however have noticed some intermittent behavior for settings this up using the partition command. If i let the code run on its own, the flash EEPROM does not get properly setup, and stays at the default of no E-flash and only D-flash is used. However if I manually step through the&amp;nbsp;FLASH_ProgramPartition() function, specifically into the&amp;nbsp;flash_command_sequence(), and the&amp;nbsp;callFlashRunCommand() function it E-flash and D-flash or properly partitioned and works as expected. Not sure what is going on here. I have intentionally turned off all interrupts during this just to make sure nothing will pull the rug from underneath the fsl_flash.c functions. Any help or even and app note that specifically details how to actually use this fsl_flash.c library with E-FLASH and D-FLASH.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It should be important to note, that I am using mbed cli to create the project and export to IAR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Below is the code that shows what I've done:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt; #include "mbed.h"&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;#include "intrinsics.h" &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;#include "fsl_flash.h"&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;#include &amp;lt;stdio.h&amp;gt;&lt;BR /&gt;#include &amp;lt;errno.h&amp;gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt; #define MAX_STRING_SIZE &amp;nbsp;&amp;nbsp;&amp;nbsp;20 &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;#define TEST_VALUE &amp;nbsp;&amp;nbsp;&amp;nbsp;0xB00B3 //721075 &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;#define CALC_ADDR_END( start, var ) (start + sizeof( var )) &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;#define EEPROM_START &amp;nbsp;&amp;nbsp;&amp;nbsp;FSL_FEATURE_FLASH_FLEX_RAM_START_ADDRESS&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;typedef struct &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;{ &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint32_t test_var1; &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint16_t test_var2; &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;bool test_var3; &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint8_t test_var4; &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint16_t test_var5; &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;}&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;TestStruct1_t;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;typedef struct &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;{ &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint8_t test_var1; &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;char test_string1[MAX_STRING_SIZE]; &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint8_t test_var3; &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;} &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;TestStruct2_t; // Create global variable that is tied to flex_nvm memory space &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;__no_init&amp;nbsp;&lt;/CODE&gt;&lt;CODE&gt;uint32_t eeprom1_uint32 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@ EEPROM_START;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;#define E_UINT32_2&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;CALC_ADDR_END(EEPROM_START, eeprom1_uint32) &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;__no_init uint32_t eeprom2_uint32 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@ E_UINT32_2;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;#define E_TEST_STRUCT_1 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CALC_ADDR_END(E_UINT32_2, eeprom2_uint32) &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;__no_init TestStruct1_t e_test_struct1&amp;nbsp; &amp;nbsp; &amp;nbsp;@ E_TEST_STRUCT_1;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;#define E_TEST_STRUCT_2 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CALC_ADDR_END(E_TEST_STRUCT_1, e_test_struct1) &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;__no_init TestStruct2_t e_test_struct2&amp;nbsp; &amp;nbsp; &amp;nbsp;@ &amp;nbsp;E_TEST_STRUCT_2;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;#pragma location="__flash" &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;const uint32_t test_var = 0;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;flash_config_t flash_config;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt; template &amp;lt;class T, class U&amp;gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt; static status_t &lt;/CODE&gt;&lt;CODE&gt;Copy_Mem_To_EEPROM(T *start, U *src, uint32_t num_bytes) &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;{ &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return FLASH_EepromWrite(&amp;amp;flash_config, (uint32_t)start, (uint8_t*)src, num_bytes); &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;}&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;template &amp;lt;class T, class U&amp;gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt; static status_t Copy_Value_To_EEPROM(uint32_t *start, T src, uint32_t num_bytes) &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;{ &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return FLASH_EepromWrite(&amp;amp;flash_config, (uint32_t)start, (uint8_t*)&amp;amp;src, num_bytes); &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;}&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt; void flex_mem_demo(void) &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;{ &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;__disable_interrupt();&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TestStruct1_t p1; &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TestStruct2_t p2; &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// manually break and set the &lt;SPAN&gt;eeprom1_uint32&amp;nbsp;&lt;/SPAN&gt;= 0 using the debugger &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// this allows the one time program partition to be run. Every other restart &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// instance from this point forward will only initialize and increment the &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// &lt;SPAN&gt;eeprom1_uint32&amp;nbsp;&lt;/SPAN&gt;, but not repartition the Flex NVM. Enjoy&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(eeprom1_uint32 == 0xFFFFFFFF) &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp; { &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLASH_Init(&amp;amp;flash_config); &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLASH_ProgramPartition(&amp;amp;flash_config, &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;kFLASH_PartitionFlexramLoadOptionLoadedWithValidEepromData, 0x32, 0x0B);&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLASH_Init(&amp;amp;flash_config); &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Copy_Value_To_EEPROM(&amp;amp;eeprom1_uint32, TEST_VALUE, sizeof(eeprom1_uint32)); &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;p1.test_var1 = 1; //modify local parameter //now store in eeprom &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Copy_Mem_To_EEPROM(&amp;amp;e_test_struct1.test_var1, &amp;amp;p1.test_var1, &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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sizeof(e_test_struct1.test_var1)); &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLASH_Init(&amp;amp;flash_config); p1.test_var1 = &amp;nbsp;&amp;nbsp;&amp;nbsp;e_test_struct1.test_var1 + 1; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Copy_Mem_To_EEPROM(&amp;amp;e_test_struct1.test_var1, &amp;amp;p1.test_var1, &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sizeof(e_test_struct1.test_var1)); &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Copy_Value_To_EEPROM(&amp;amp;eeprom1_uint32, (eeprom1_uint32 + &amp;nbsp;&amp;nbsp;&amp;nbsp;1), sizeof(eeprom1_uint32)); &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;__enable_interrupt(); &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;}&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt; int main(void) &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;{ &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;device.baud(115200); &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;flex_mem_demo(); &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;dflash_mem_demo(); &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;while(1); &lt;/CODE&gt;&lt;/P&gt;&lt;P&gt;&lt;CODE&gt;} &lt;/CODE&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 04 Dec 2017 17:27:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/How-to-use-fsl-flash-c-to-implement-flex-nvm-with-flash-EEPROM/m-p/760647#M7753</guid>
      <dc:creator>edablan</dc:creator>
      <dc:date>2017-12-04T17:27:35Z</dc:date>
    </item>
    <item>
      <title>Re: How to use fsl_flash.c to implement flex nvm with flash EEPROM</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/How-to-use-fsl-flash-c-to-implement-flex-nvm-with-flash-EEPROM/m-p/760648#M7754</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Ed&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The K64 on the FRDM-K64F does not have FlexNVM. It uses the K64FN1M0. You need a K64FX512 - have you changed the chip on the board?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;On the other hand the K64FN1M0 has program flash swap, which the K65FX512 doesn't.&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;SPAN&gt;Kinetis: &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fkinetis.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis.html&lt;/A&gt;&lt;BR /&gt;Kinetis K64:&lt;BR /&gt;&lt;SPAN&gt;- &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fkinetis%2FFRDM-K64F.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis/FRDM-K64F.html&lt;/A&gt;&lt;BR /&gt;&lt;SPAN&gt;- &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fkinetis%2FTWR-K64F120M.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis/TWR-K64F120M.html&lt;/A&gt;&lt;BR /&gt;&lt;SPAN&gt;- &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fkinetis%2FTEENSY_3.5.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis/TEENSY_3.5.html&lt;/A&gt;&lt;BR /&gt;&lt;SPAN&gt;- &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fkinetis%2FHexiwear-K64F.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis/Hexiwear-K64F.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Professional Kinetis support, one-on-one training and complete fast-track project solutions: &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.utasker.com%2Fsupport.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/support.html&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 04 Dec 2017 22:41:40 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/How-to-use-fsl-flash-c-to-implement-flex-nvm-with-flash-EEPROM/m-p/760648#M7754</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2017-12-04T22:41:40Z</dc:date>
    </item>
    <item>
      <title>Re: How to use fsl_flash.c to implement flex nvm with flash EEPROM</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/How-to-use-fsl-flash-c-to-implement-flex-nvm-with-flash-EEPROM/m-p/760649#M7755</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I actually removed the K64FN processor and swapped it with a 100pin compatible K64FX processor. My bad I should have been more precise. That's how I have been able to get it to work. I think I have found the issue though, and it has to do with my compilers __disable_interrupt &amp;amp; __enable_interrupt are not correctly setting the PRIMASK to 1 and 0 respectively. I'll update here in a second just so other users are aware of any potential issues with the IAR compiler and these interrupt directives.&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 04 Dec 2017 22:45:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/How-to-use-fsl-flash-c-to-implement-flex-nvm-with-flash-EEPROM/m-p/760649#M7755</guid>
      <dc:creator>edablan</dc:creator>
      <dc:date>2017-12-04T22:45:36Z</dc:date>
    </item>
    <item>
      <title>Re: How to use fsl_flash.c to implement flex nvm with flash EEPROM</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/How-to-use-fsl-flash-c-to-implement-flex-nvm-with-flash-EEPROM/m-p/760650#M7756</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;IAR has an issue with using __disable_interrupt;&amp;nbsp; __disable_interrupt(); &amp;amp; __enable_interrupt __enable_interrupt(); If you don't use the __xxxx_interrupt(); with parenthesis the code compiles without warnings or errors, but the assembly instruction (cpsid or cpsie) does not get compiled in. I've updated the above code to use the&amp;nbsp;&lt;SPAN&gt;__xxxx_interrupt();&lt;/SPAN&gt;&amp;nbsp;It works now so feel free to use it as a demo for E-flash.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 07 Dec 2017 21:10:15 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/How-to-use-fsl-flash-c-to-implement-flex-nvm-with-flash-EEPROM/m-p/760650#M7756</guid>
      <dc:creator>edablan</dc:creator>
      <dc:date>2017-12-07T21:10:15Z</dc:date>
    </item>
  </channel>
</rss>

