<?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: K-70: Write to flash.</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K-70-Write-to-flash/m-p/658833#M40407</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Evgeny Erenburg,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;From your code I guess you are using the C90TFS Standard Software Driver.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The K70 uses phrase programming (8 bytes), so yes, the size of your data should be a multiple of 8 bytes, otherwise the driver will return a &lt;STRONG&gt;FTFx_ERR_SIZE&lt;/STRONG&gt; error. In your case if your data is 11-bytes long, then you can send as parameter a 16-bytes buffer with 5 padding bytes (e.g. FFs).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I hope this helps.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Best Regards!,&lt;BR /&gt;Jorge Gonzalez&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 15 Nov 2016 03:41:40 GMT</pubDate>
    <dc:creator>Jorge_Gonzalez</dc:creator>
    <dc:date>2016-11-15T03:41:40Z</dc:date>
    <item>
      <title>K-70: Write to flash.</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K-70-Write-to-flash/m-p/658832#M40406</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN&gt;The write operation is:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FlashProgram(&amp;amp;flashSSDConfig, dest, size, buffer, FlashCommandSequence);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I assume the "size" argument is the size of the "buffer".&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;But if we look into the function we see:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;/* update size for next iteration */&lt;BR /&gt; &amp;nbsp;&amp;nbsp; size -= PGM_SIZE_BYTE;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;&lt;SPAN style="font-size: 12pt;"&gt;So should I write only &lt;/SPAN&gt;&lt;SPAN style="color: #222222; font-size: 12pt;"&gt;multiple&lt;/SPAN&gt; &lt;SPAN style="font-size: 12pt;"&gt;8 chunks?&lt;/SPAN&gt; What should&amp;nbsp;I do if my data 11 bytes?&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt; text-align: left; unicode-bidi: embed; direction: ltr;"&gt;&lt;SPAN style="color: #000000; font-size: medium; font-family: Times New Roman;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; font-size: medium; font-family: Times New Roman;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 14 Nov 2016 15:40:09 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K-70-Write-to-flash/m-p/658832#M40406</guid>
      <dc:creator>john71</dc:creator>
      <dc:date>2016-11-14T15:40:09Z</dc:date>
    </item>
    <item>
      <title>Re: K-70: Write to flash.</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K-70-Write-to-flash/m-p/658833#M40407</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Evgeny Erenburg,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;From your code I guess you are using the C90TFS Standard Software Driver.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The K70 uses phrase programming (8 bytes), so yes, the size of your data should be a multiple of 8 bytes, otherwise the driver will return a &lt;STRONG&gt;FTFx_ERR_SIZE&lt;/STRONG&gt; error. In your case if your data is 11-bytes long, then you can send as parameter a 16-bytes buffer with 5 padding bytes (e.g. FFs).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I hope this helps.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Best Regards!,&lt;BR /&gt;Jorge Gonzalez&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 15 Nov 2016 03:41:40 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K-70-Write-to-flash/m-p/658833#M40407</guid>
      <dc:creator>Jorge_Gonzalez</dc:creator>
      <dc:date>2016-11-15T03:41:40Z</dc:date>
    </item>
    <item>
      <title>Re: K-70: Write to flash.</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K-70-Write-to-flash/m-p/658834#M40408</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I see. Thank you.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 15 Nov 2016 06:30:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K-70-Write-to-flash/m-p/658834#M40408</guid>
      <dc:creator>john71</dc:creator>
      <dc:date>2016-11-15T06:30:21Z</dc:date>
    </item>
    <item>
      <title>Re: K-70: Write to flash.</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K-70-Write-to-flash/m-p/658835#M40409</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="margin: 0cm 0cm 0pt; text-align: left; unicode-bidi: embed; direction: ltr;"&gt;&lt;SPAN style="color: #000000; font-family: Calibri; font-size: medium;"&gt;I'm trying to write a structure to FLASH.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;The structure:&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;typedef struct TEST_S&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;{&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int start;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int length;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int text_addr;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int padding;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;}TEST;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;TEST test;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;Initialization:&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;uint32_t&amp;nbsp;struct_size = sizeof(TEST);&amp;nbsp; //16 bytes&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;test.start = 0xDADA;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;&amp;nbsp;test.length = total_len;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;&amp;nbsp;test.text_addr = 0;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;&amp;nbsp;tests[test_idx].padding = 0;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;Write operation:&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;uint32_t FLASH_PageProgram(uint32_t page_num, uint32_t addr, uint8_t *buffer, uint32_t size)&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;{&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t dest;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DisableInterrupts;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dest = flashSSDConfig.PFlashBlockBase + BYTE2WORD(page_num*FTFx_PSECTOR_SIZE) + addr;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ret = FlashProgram(&amp;amp;flashSSDConfig, dest, size, buffer, FlashCommandSequence);&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EnableInterrupts;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ret;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;}&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;Usage:&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;flash_addr = 0; //from the start of the page -&amp;gt; 0x000FA000, USER_PAGE = 250&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;ret = FLASH_PageProgram(USER_PAGE, flash_addr, (uint8_t*) &amp;amp;test, struct_size );&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;if (ret)&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ret;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt;"&gt;&lt;/P&gt;&lt;P style="margin: 0cm 0cm 0pt; text-align: left; unicode-bidi: embed; direction: ltr;"&gt;&lt;STRONG style="color: #000000; font-size: medium; font-family: Calibri;"&gt;I get an error (ret = 1) - Protection violation is set in FSTAT register. In the debugger I see first 8 bytes it writes ok. On second 8 bytes the error is generated.&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 17 Nov 2016 07:30:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K-70-Write-to-flash/m-p/658835#M40409</guid>
      <dc:creator>john71</dc:creator>
      <dc:date>2016-11-17T07:30:24Z</dc:date>
    </item>
    <item>
      <title>Re: K-70: Write to flash.</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K-70-Write-to-flash/m-p/658836#M40410</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I found the problem. I should erase the page. Or&amp;nbsp;track the current available address.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 17 Nov 2016 10:30:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K-70-Write-to-flash/m-p/658836#M40410</guid>
      <dc:creator>john71</dc:creator>
      <dc:date>2016-11-17T10:30:51Z</dc:date>
    </item>
  </channel>
</rss>

