<?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: Reading Flash stored variables..  in LPCXpresso IDE</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/Reading-Flash-stored-variables/m-p/535173#M4494</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by usb10185 on Tue Sep 17 07:09:14 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You need to setup a pointer to the memory location of interest.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Have a look at some of the IAP Application notes and associated code for the various LPC parts, in there there is code that programs Flash via IAP and then does a compare. Exactly what you are looking for! Snip below....&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;/** The area will be erase and program */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define FLASH_PROG_AREA_START&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x8000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/** The origin buffer on RAM */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define BUFF_SIZE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1024&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;// Compare&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; for ( i = 0; i &amp;lt; FLASH_PROG_AREA_SIZE/BUFF_SIZE; i++ )&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ptr = (uint8_t*)(FLASH_PROG_AREA_START + i*BUFF_SIZE);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;status =&amp;nbsp; Compare(ptr, buffer,BUFF_SIZE);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if(status != CMD_SUCCESS)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; _DBG("Compare memory failed with code is ");_DBD(status);_DBG_("");&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(1);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; }&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 23:09:39 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T23:09:39Z</dc:date>
    <item>
      <title>Reading Flash stored variables..</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Reading-Flash-stored-variables/m-p/535172#M4493</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by ub3r on Mon Sep 16 21:13:14 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi Guys,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Ive been experimenting with storing data in flash, and ive been useing the IAP commands to prepare and store data to flash memory as below:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;However.. How do i read the stored data?? &lt;SPAN class="lia-unicode-emoji" title=":confused_face:"&gt;&lt;LI-EMOJI id="lia_confused-face" title=":confused_face:"&gt;&lt;/LI-EMOJI&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;#ifdef __USE_CMSIS
#include "LPC13Uxx.h"
#endif

#include &amp;lt;cr_section_macros.h&amp;gt;
#include &amp;lt;NXP/crp.h&amp;gt;
#include "IAP.h"
#include &amp;lt;stdio.h&amp;gt;
// Variable to store CRP value in. Will be placed automatically
// by the linker when "Enable Code Read Protect" selected.
// See crp.h header for more information
__CRP const unsigned int CRP_WORD = CRP_NO_CRP ;



/* Flash offset where the configuration is stored */
#define CONFIG_FLASH_OFFSET&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x1000
#define CONFIG_FLASH_SECTOR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (CONFIG_FLASH_OFFSET &amp;gt;&amp;gt; 12)
#define CONFIG_FLASH_SECTOR_SIZE&amp;nbsp;&amp;nbsp;&amp;nbsp; 1

// TODO: insert other definitions and declarations here

static uint8_t demo_messg[] = "IAP flash data";
static uint8_t demo_messg2[64];

void writeDATA(void);
void readDATA(void);



int main(void)
{
writeDATA();
readDATA();

volatile int i = 0;

while(1)
{
i++;
}
}

void readDATA(void)
{

}

void writeDATA(void)
{
__e_iap_status iap_status;


&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Prepare the sector for erase */
&amp;nbsp;&amp;nbsp;&amp;nbsp; iap_status = (__e_iap_status) u32IAP_PrepareSectors(CONFIG_FLASH_SECTOR,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (CONFIG_FLASH_SECTOR + CONFIG_FLASH_SECTOR_SIZE));
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (iap_status != CMD_SUCCESS) while(1);

&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Erase the sector */
&amp;nbsp;&amp;nbsp;&amp;nbsp; iap_status = (__e_iap_status) u32IAP_EraseSectors(CONFIG_FLASH_SECTOR,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (CONFIG_FLASH_SECTOR + CONFIG_FLASH_SECTOR_SIZE));
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (iap_status != CMD_SUCCESS) while(1);

&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Prepare the sector for writing */
&amp;nbsp;&amp;nbsp;&amp;nbsp; iap_status = (__e_iap_status) u32IAP_PrepareSectors(CONFIG_FLASH_SECTOR,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (CONFIG_FLASH_SECTOR + CONFIG_FLASH_SECTOR_SIZE));
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (iap_status != CMD_SUCCESS) while(1);

&amp;nbsp;&amp;nbsp;&amp;nbsp; /* write data to flash */
&amp;nbsp;&amp;nbsp;&amp;nbsp; iap_status = (__e_iap_status) u32IAP_CopyRAMToFlash(&amp;amp;demo_messg,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (void *)CONFIG_FLASH_OFFSET, 256);
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (iap_status != CMD_SUCCESS) while(1);
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:09:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Reading-Flash-stored-variables/m-p/535172#M4493</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:09:38Z</dc:date>
    </item>
    <item>
      <title>Re: Reading Flash stored variables..</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/Reading-Flash-stored-variables/m-p/535173#M4494</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by usb10185 on Tue Sep 17 07:09:14 MST 2013&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You need to setup a pointer to the memory location of interest.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Have a look at some of the IAP Application notes and associated code for the various LPC parts, in there there is code that programs Flash via IAP and then does a compare. Exactly what you are looking for! Snip below....&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;/** The area will be erase and program */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define FLASH_PROG_AREA_START&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x8000&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/** The origin buffer on RAM */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#define BUFF_SIZE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1024&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;// Compare&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; for ( i = 0; i &amp;lt; FLASH_PROG_AREA_SIZE/BUFF_SIZE; i++ )&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ptr = (uint8_t*)(FLASH_PROG_AREA_START + i*BUFF_SIZE);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;status =&amp;nbsp; Compare(ptr, buffer,BUFF_SIZE);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if(status != CMD_SUCCESS)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; _DBG("Compare memory failed with code is ");_DBD(status);_DBG_("");&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(1);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; }&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 23:09:39 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/Reading-Flash-stored-variables/m-p/535173#M4494</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T23:09:39Z</dc:date>
    </item>
  </channel>
</rss>

