<?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中的主题 Kinetis Bootloader to Update Multiple Devices in a Network for Cortex-M4</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-Bootloader-to-Update-Multiple-Devices-in-a-Network-for/m-p/464495#M27939</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 12pt; font-family: inherit;"&gt;@@This article describes how to do in-system reprogramming of Kinetis for Cortex-M4 core devices using standard communication media such as SCI. Most of the codes are written in C so that make it easy to migrate to other MCUs. The solution has been adopted by customers.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 12pt; font-family: inherit;"&gt;This bootloader is based on FRDM-K22 demo board and KDS3.0. &lt;SPAN style="font-weight: bold; font-style: inherit; font-family: inherit;"&gt;The bootloader and user application source codes are provided. &lt;/SPAN&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 12pt; font-family: inherit;"&gt;&lt;SPAN style="font-weight: bold; font-style: inherit; font-family: inherit;"&gt;GUI is also provided.&lt;/SPAN&gt; &lt;/SPAN&gt;Customer can make their own bootloader applications based on them. The application can be used to upgrade single target board and multi boards connected through networks such as RS485. The bootloader application checks the availability of the nodes between the input address range, and upgrades firmware nodes one by one automatically.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: bold; font-size: 12pt; font-family: inherit; font-style: inherit;"&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="85693_85693.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/121420i78788ECD81A5F61B/image-size/large?v=v2&amp;amp;px=999" role="button" title="85693_85693.png" alt="85693_85693.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_0.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/34356i7AB0D077A380A7CF/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_0.png" alt="pastedImage_0.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: bold; font-size: 12pt; font-family: inherit; font-style: inherit;"&gt;Key features of the bootloader:&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;SPAN style="font-weight: bold; font-size: 12pt; font-family: inherit; font-style: inherit;"&gt;Able to update (or just verify) multiple devices in a network.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="font-weight: bold; font-size: 12pt; font-family: inherit; font-style: inherit;"&gt;Application code and bootloader code are in separated projects, convenient for mass production and firmware upgrading.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="font-weight: bold; font-size: 12pt; font-family: inherit; font-style: inherit;"&gt;Bootloader code size is small, only around 3k, which reduces on chip memory resources.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="font-weight: bold; font-size: 12pt; font-family: inherit; font-style: inherit;"&gt;Source code available, easy for reading and migrating.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 12pt; font-family: 'Times New Roman', serif;"&gt;&lt;SPAN style="font-weight: bold; font-style: inherit; font-family: inherit;"&gt;For Cortex-M0+ products, please refer to here :&lt;A _jive_internal="true" data-containerid="2019" data-containertype="14" data-objectid="328168" data-objecttype="102" href="https://community.nxp.com/docs/DOC-328168" style="font-weight: inherit; font-style: inherit; font-family: inherit; color: #017bba;"&gt;Kinetis Bootloader to Update Multiple Devices in a Network - for Cortex-M0+&lt;/A&gt; , it based on FRDM-KL26.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: bold; font-style: inherit; font-family: inherit;"&gt;The main difference between Cortex-M4 and Cortex-M0+ is the FLASH program routine.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 12pt; font-family: 'Times New Roman', serif;"&gt;- In Cotex-M4 core kinetis, we need copy the Flash operating routines to RAM. In the bootloader code, the copy to ram code is realized in the function of “FLASH_Initialization()”:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-family: Consolas; color: #005032;"&gt;Byte&lt;/SPAN&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-family: Consolas; color: black;"&gt; buffer[200]={0};&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 12pt; font-family: 'Times New Roman', serif;"&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="81023_81023.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/121421iD965CCEABA15B351/image-size/large?v=v2&amp;amp;px=999" role="button" title="81023_81023.png" alt="81023_81023.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_3.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/34357i439BF39245419165/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_3.png" alt="pastedImage_3.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 12pt; font-family: 'Times New Roman', serif;"&gt;- In Cotex M0+ core kinetis, &lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 12pt;"&gt;we do not need to copy the Flash operating routines to RAM. &lt;/SPAN&gt;Platform Control Register (MCM_PLACR) is added. The MCM_PLACR register selects the arbitration policy for the crossbar masters and configures the flash memory controller. Enabling ESFC bit can stall flash controller when flash is busy.&amp;nbsp; Setting ESFC bit can well-balance time sequence of Flash reading and writing – when writing Flash, reading Flash instruction can wait, and vice versa. Using ESFC bit can make our flash programming easier. Thus one Flash can write itself, which is not possible for other one Flash MCU without ESFC bit control.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 12pt; font-family: 'Times New Roman', serif;"&gt;ESFC bit is easy to be set in C code:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 12pt; font-family: 'Times New Roman', serif;"&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="81024_81024.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/121422i61F71F2D5AB68798/image-size/large?v=v2&amp;amp;px=999" role="button" title="81024_81024.png" alt="81024_81024.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_4.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/34358iD06952CF0EEE7365/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_4.png" alt="pastedImage_4.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 12pt; font-family: inherit;"&gt;For more information, please see attached document and code.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 12pt; font-family: inherit;"&gt;User can also download the document and source code from Github:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 12pt; font-family: inherit; color: #1f3864;"&gt;&lt;A class="jive-link-external-small" data-content-finding="Community" href="https://github.com/jenniezhjun/Kinetis-Bootloader.git" rel="nofollow" style="font-weight: inherit; font-style: inherit; font-family: inherit; color: #017bba;"&gt;https://github.com/jenniezhjun/Kinetis-Bootloader.git&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 21 Apr 2016 06:51:55 GMT</pubDate>
    <dc:creator>sywksmstkadlfgk</dc:creator>
    <dc:date>2016-04-21T06:51:55Z</dc:date>
    <item>
      <title>Kinetis Bootloader to Update Multiple Devices in a Network for Cortex-M4</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-Bootloader-to-Update-Multiple-Devices-in-a-Network-for/m-p/464495#M27939</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 12pt; font-family: inherit;"&gt;@@This article describes how to do in-system reprogramming of Kinetis for Cortex-M4 core devices using standard communication media such as SCI. Most of the codes are written in C so that make it easy to migrate to other MCUs. The solution has been adopted by customers.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 12pt; font-family: inherit;"&gt;This bootloader is based on FRDM-K22 demo board and KDS3.0. &lt;SPAN style="font-weight: bold; font-style: inherit; font-family: inherit;"&gt;The bootloader and user application source codes are provided. &lt;/SPAN&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 12pt; font-family: inherit;"&gt;&lt;SPAN style="font-weight: bold; font-style: inherit; font-family: inherit;"&gt;GUI is also provided.&lt;/SPAN&gt; &lt;/SPAN&gt;Customer can make their own bootloader applications based on them. The application can be used to upgrade single target board and multi boards connected through networks such as RS485. The bootloader application checks the availability of the nodes between the input address range, and upgrades firmware nodes one by one automatically.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: bold; font-size: 12pt; font-family: inherit; font-style: inherit;"&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="85693_85693.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/121420i78788ECD81A5F61B/image-size/large?v=v2&amp;amp;px=999" role="button" title="85693_85693.png" alt="85693_85693.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_0.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/34356i7AB0D077A380A7CF/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_0.png" alt="pastedImage_0.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: bold; font-size: 12pt; font-family: inherit; font-style: inherit;"&gt;Key features of the bootloader:&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;SPAN style="font-weight: bold; font-size: 12pt; font-family: inherit; font-style: inherit;"&gt;Able to update (or just verify) multiple devices in a network.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="font-weight: bold; font-size: 12pt; font-family: inherit; font-style: inherit;"&gt;Application code and bootloader code are in separated projects, convenient for mass production and firmware upgrading.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="font-weight: bold; font-size: 12pt; font-family: inherit; font-style: inherit;"&gt;Bootloader code size is small, only around 3k, which reduces on chip memory resources.&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="font-weight: bold; font-size: 12pt; font-family: inherit; font-style: inherit;"&gt;Source code available, easy for reading and migrating.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 12pt; font-family: 'Times New Roman', serif;"&gt;&lt;SPAN style="font-weight: bold; font-style: inherit; font-family: inherit;"&gt;For Cortex-M0+ products, please refer to here :&lt;A _jive_internal="true" data-containerid="2019" data-containertype="14" data-objectid="328168" data-objecttype="102" href="https://community.nxp.com/docs/DOC-328168" style="font-weight: inherit; font-style: inherit; font-family: inherit; color: #017bba;"&gt;Kinetis Bootloader to Update Multiple Devices in a Network - for Cortex-M0+&lt;/A&gt; , it based on FRDM-KL26.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: bold; font-style: inherit; font-family: inherit;"&gt;The main difference between Cortex-M4 and Cortex-M0+ is the FLASH program routine.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 12pt; font-family: 'Times New Roman', serif;"&gt;- In Cotex-M4 core kinetis, we need copy the Flash operating routines to RAM. In the bootloader code, the copy to ram code is realized in the function of “FLASH_Initialization()”:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-family: Consolas; color: #005032;"&gt;Byte&lt;/SPAN&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-family: Consolas; color: black;"&gt; buffer[200]={0};&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 12pt; font-family: 'Times New Roman', serif;"&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="81023_81023.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/121421iD965CCEABA15B351/image-size/large?v=v2&amp;amp;px=999" role="button" title="81023_81023.png" alt="81023_81023.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_3.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/34357i439BF39245419165/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_3.png" alt="pastedImage_3.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 12pt; font-family: 'Times New Roman', serif;"&gt;- In Cotex M0+ core kinetis, &lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 12pt;"&gt;we do not need to copy the Flash operating routines to RAM. &lt;/SPAN&gt;Platform Control Register (MCM_PLACR) is added. The MCM_PLACR register selects the arbitration policy for the crossbar masters and configures the flash memory controller. Enabling ESFC bit can stall flash controller when flash is busy.&amp;nbsp; Setting ESFC bit can well-balance time sequence of Flash reading and writing – when writing Flash, reading Flash instruction can wait, and vice versa. Using ESFC bit can make our flash programming easier. Thus one Flash can write itself, which is not possible for other one Flash MCU without ESFC bit control.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 12pt; font-family: 'Times New Roman', serif;"&gt;ESFC bit is easy to be set in C code:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 12pt; font-family: 'Times New Roman', serif;"&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="81024_81024.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/121422i61F71F2D5AB68798/image-size/large?v=v2&amp;amp;px=999" role="button" title="81024_81024.png" alt="81024_81024.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_4.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/34358iD06952CF0EEE7365/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_4.png" alt="pastedImage_4.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 12pt; font-family: inherit;"&gt;For more information, please see attached document and code.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 12pt; font-family: inherit;"&gt;User can also download the document and source code from Github:&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 12pt; font-family: inherit; color: #1f3864;"&gt;&lt;A class="jive-link-external-small" data-content-finding="Community" href="https://github.com/jenniezhjun/Kinetis-Bootloader.git" rel="nofollow" style="font-weight: inherit; font-style: inherit; font-family: inherit; color: #017bba;"&gt;https://github.com/jenniezhjun/Kinetis-Bootloader.git&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Apr 2016 06:51:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-Bootloader-to-Update-Multiple-Devices-in-a-Network-for/m-p/464495#M27939</guid>
      <dc:creator>sywksmstkadlfgk</dc:creator>
      <dc:date>2016-04-21T06:51:55Z</dc:date>
    </item>
  </channel>
</rss>

