<?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>LPC Microcontrollers中的主题 Re: IAP and variable memory mapping</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-and-variable-memory-mapping/m-p/570574#M18199</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by salamlora1 on Fri Mar 14 21:58:28 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I have the same problem and solve it in the lpc2138 you can check it in the address below&amp;nbsp; :-D&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.lpcware.com%2Fcontent%2Fforum%2Fiap-problem-lpc2138" rel="nofollow" target="_blank"&gt;http://www.lpcware.com/content/forum/iap-problem-lpc2138&lt;/A&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Also I have a project with lpc812 and I’m working on IAP wen its finish I will post it&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 20:09:54 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T20:09:54Z</dc:date>
    <item>
      <title>IAP and variable memory mapping</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-and-variable-memory-mapping/m-p/570572#M18197</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by sweetalk on Thu Mar 13 15:00:31 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi!, I'm trying to use the IAP (In Application Programming) functions to update some variables from my code for the next power up cicle (mostly some configuration data that the user can change). I've read the application note AN11388 and got the functions for writing the flash, and erasing it.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;My question is how can I identify an specific variable memory address for uptdating it with the IAP functions or how can I read from an specific memory address to write it on a variable on my code.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:09:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-and-variable-memory-mapping/m-p/570572#M18197</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:09:53Z</dc:date>
    </item>
    <item>
      <title>Re: IAP and variable memory mapping</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-and-variable-memory-mapping/m-p/570573#M18198</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by MarcVonWindscooting on Fri Mar 14 08:31:13 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Difficult question.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;First of all, FLASH write access must be done with the size and alignment of a page.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;If&lt;/STRONG&gt;&lt;SPAN&gt; by 'variable' you mean an &lt;/SPAN&gt;&lt;STRONG&gt;initialized&lt;/STRONG&gt;&lt;SPAN&gt; (by the startup code) variable - a variable deposited in the section .data - then there's no need to read the FLASH, as the startup code has already done for you before handing over control to your main() .&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The initialization values of the .data section are stored in FLASH. You have to look into your linker script and find the start of the initialization data of the .data section. Let's assume, you find it named '__data_image'. You'll recognize it by a statement&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;__data_image = . ;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;in the linker script.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Then you can pretend in C code...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;extern char __data_image;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;...that a char is located at __data_image. &amp;amp;__data_image is then the address of the .data section's initialization image.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You can do the same with the start of .data, something like __data_start will be defined somewhere in the linker script.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;extern char __data_start;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If your variable is named 'var', then offset = (char*)&amp;amp;var - &amp;amp;__data_start is the (byte) offset of var inside .data what is the same as the offset of the initialization value for var in the initialization image. Hence, var's FLASH address is &amp;amp;__data_image + offset . This is the address you're interested in.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Depending on your compilation environment, the values for &amp;amp;__data_start and &amp;amp;__data_image (or similar names) are handed to you on a silver platter&amp;nbsp; ;-) &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;But to be honest, I would not do it that way. It's much easier to put all your state + a magic number in a structure called state and read that structure from FLASH at program startup (inside main()) and write that state structure to FLASH on demand. As address, choose a FLASH sector/page your program doesn't use so far. That way, you don't need to know such details as described above.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;EDIT: added missing '&amp;amp;'&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:09:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-and-variable-memory-mapping/m-p/570573#M18198</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:09:54Z</dc:date>
    </item>
    <item>
      <title>Re: IAP and variable memory mapping</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-and-variable-memory-mapping/m-p/570574#M18199</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by salamlora1 on Fri Mar 14 21:58:28 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I have the same problem and solve it in the lpc2138 you can check it in the address below&amp;nbsp; :-D&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.lpcware.com%2Fcontent%2Fforum%2Fiap-problem-lpc2138" rel="nofollow" target="_blank"&gt;http://www.lpcware.com/content/forum/iap-problem-lpc2138&lt;/A&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Also I have a project with lpc812 and I’m working on IAP wen its finish I will post it&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:09:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-and-variable-memory-mapping/m-p/570574#M18199</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:09:54Z</dc:date>
    </item>
    <item>
      <title>Re: IAP and variable memory mapping</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-and-variable-memory-mapping/m-p/570575#M18200</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by salamlora1 on Sun Mar 16 01:32:07 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi I write this program and have some trouble with&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &amp;amp;res = (unsigned long)0x00001800;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The lpc exprresso say: lvalue required as left operand of assignment make&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#define IAP_LOCATION 0x1fff1ff1;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; char iap[256]; // the data moust be write in flash&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; char res[256]; // the data read frome flash and store in res &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int cunterst=0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (cunterst=0;cunterst&amp;lt;256;cunterst++)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iap[cunterst]=cunterst;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int command[5];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int result[2];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; typedef void (*IAP)(unsigned int[],unsigned int[]);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IAP iap_entry;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iap_entry = (IAP)IAP_LOCATION;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; command[0]=50;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; command[1]=6;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; command[2]=6;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iap_entry (command, result);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; command[0]=52;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; command[1]=6;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; command[2]=6;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; command[3]=12000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iap_entry (command, result);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; command[0]=50;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; command[1]=6;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; command[2]=6;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iap_entry (command, result);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iap_entry=(IAP) IAP_LOCATION;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; command[0]=51;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; command[1]=(unsigned long)0x00001800;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; command[2]=(unsigned long)&amp;amp;iap;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; command[3]=256;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; command[4]=8000;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iap_entry (command, result);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; command[0]=53;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; command[1]=5;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; command[2]=5;//0x00027fff;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; command[3]=0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; command[4]=0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iap_entry (command, result);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;STRONG&gt;&amp;amp;res = (unsigned long)0x00001800;&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;How can I read data from my flash memory?!&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:09:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-and-variable-memory-mapping/m-p/570575#M18200</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:09:55Z</dc:date>
    </item>
    <item>
      <title>Re: IAP and variable memory mapping</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-and-variable-memory-mapping/m-p/570576#M18201</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by salamlora1 on Sun Mar 16 23:19:34 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Anyone hear me PLZZZZ help???&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; :(( &lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:09:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-and-variable-memory-mapping/m-p/570576#M18201</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:09:55Z</dc:date>
    </item>
    <item>
      <title>Re: IAP and variable memory mapping</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-and-variable-memory-mapping/m-p/570577#M18202</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by TheFallGuy on Mon Mar 17 03:44:40 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;"&amp;amp;" is the address-of operator and it can only appear on the right-hand side of an assignment. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I suggest that you learn C - read about pointers.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:09:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-and-variable-memory-mapping/m-p/570577#M18202</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:09:56Z</dc:date>
    </item>
    <item>
      <title>Re: IAP and variable memory mapping</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-and-variable-memory-mapping/m-p/570578#M18203</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by salamlora1 on Tue Mar 18 00:24:49 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;thx for your answer I most study more&amp;nbsp;&amp;nbsp; :) &lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:09:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/IAP-and-variable-memory-mapping/m-p/570578#M18203</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:09:57Z</dc:date>
    </item>
  </channel>
</rss>

