<?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 Master CPU ARM/Linux via I2C connection to Kinetis ROM loader in MCU Bootloader</title>
    <link>https://community.nxp.com/t5/MCU-Bootloader/Master-CPU-ARM-Linux-via-I2C-connection-to-Kinetis-ROM-loader/m-p/652424#M297</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV class=""&gt;&lt;DIV class="" data-id="38731" data-ts="2016-10-19T02:00:57.890+0000"&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;We have a new product application&amp;nbsp; our&amp;nbsp; host is an embedded ARM master processor running Linux with the&amp;nbsp; I2C0 interface to the Kinetis MKL17Z128VFT4 for in system Kinetis&amp;nbsp; updates.&amp;nbsp; There does not seem to be any developed utilities to&amp;nbsp; accomplish this and it's confusing to determine the best path.&amp;nbsp; &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=""&gt; &lt;/DIV&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;QUESTION: Would&amp;nbsp; you agree that the most efficient (code size and dev time) would be the&amp;nbsp; take the demo code made for UART and convert it to I2C?&amp;nbsp; Or is there some other example or idea you recommend?&lt;/SPAN&gt;&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV class=""&gt; &lt;/DIV&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;Also have these questions:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The&amp;nbsp; following questions pertain to transferring a binary image across I2C&amp;nbsp; to a kboot bootloader-enabled kinetis (KL17Z, presumably kboot V1.0&amp;nbsp; onboard in ROM).&amp;nbsp; You can assume the Kinetis flash has already been&amp;nbsp; completely erased either via the bootloader or due to the part being&amp;nbsp; blank.&lt;/SPAN&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Cannot find answers to these questions in kboot reference manual&lt;/SPAN&gt; or anywhere else.&lt;/P&gt;&lt;SPAN&gt;1.) When transferring data via I2C and using&amp;nbsp; the WriteMemory tagged command packet, what is the max number of data&amp;nbsp; packets that can follow the WriteMemory command packet?&lt;/SPAN&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN&gt;2.)&amp;nbsp; What is the max number of data bytes that can be contained in a single&amp;nbsp; data packet that follows the WriteMemory command packet?&lt;/SPAN&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN&gt;3.)&amp;nbsp; Does the data from the data packet get written immediately to flash&amp;nbsp; (assume that a valid flash start address was provided in the command&amp;nbsp; packet) before the bootloader sends the ack response packet back to the&amp;nbsp; host?&lt;/SPAN&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN&gt;4.) How does the kboot bootloader respond to&amp;nbsp; any packet it receives where it computers the CRC16 and the result&amp;nbsp; doesn't match the provided CRC16 in the packet?&amp;nbsp; The reference manual&amp;nbsp; doesn't appear to detail this case.&lt;/SPAN&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN&gt;5.) Does the&amp;nbsp; bootloader have some way of knowing a valid program has been put into&amp;nbsp; flash, or does it just blindly jump to the start address that was set&amp;nbsp; within the bootloader by the host?&lt;/SPAN&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN&gt;6) How do we manage the whole image integrity, packetized CRC only? and are retries built into the ROM loader?&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;A _jive_internal="true" class="" href="https://community.nxp.com/collaborations/34441/38731"&gt;7:00 PM&lt;/A&gt;&lt;A _jive_internal="true" class="" href="https://community.nxp.com/collaboration/34441?commentID=38752&amp;amp;et=notification.mention"&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;A _jive_internal="true" data-containerid="-1" data-containertype="-1" data-objectid="213424" data-objecttype="3" href="https://community.nxp.com/people/jeremyzhou"&gt;&lt;IMG alt="jeremyzhou" class="" data-height="46" data-random="19810475519438110" data-username="jeremyzhou" height="46" src="https://community.nxp.com/people/jeremyzhou/avatar/46.png" title="jeremyzhou" width="46" /&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;DIV class="" data-author-id="213424"&gt;&lt;A _jive_internal="true" data-containerid="-1" data-containertype="-1" data-objectid="213424" data-objecttype="3" href="https://community.nxp.com/people/jeremyzhou"&gt;jeremyzhou&lt;/A&gt;&lt;/DIV&gt;&lt;DIV class="" data-id="38752" data-ts="2016-10-19T06:53:18.642+0000"&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"&gt;&lt;DIV style="background-color: inherit;"&gt;&lt;DIV style="background-color: inherit;"&gt;&lt;SPAN style="font-size: 14px; line-height: 1.5; font-style: normal; font-weight: normal; text-align: left; background-color: inherit;"&gt;Hi &lt;A _jive_internal="true" data-containerid="-1" data-containertype="-1" data-objectid="232725" data-objecttype="3" href="https://community.nxp.com/people/sohara"&gt;Shawn O'Hara&lt;/A&gt;,&lt;BR style="background-color: inherit;" /&gt;Thanks for your detail description.&lt;BR style="background-color: inherit;" /&gt;In my opinion, regard to the design, the ARM master processor's job is as same as the Blhost PC tool.&lt;BR style="background-color: inherit;" /&gt;About the above questions, you'd better to have a look through the KBOOT's protocol prior to any&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;SPAN style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"&gt;&lt;SPAN style="background-color: inherit; font-size: 14px; line-height: 1.5;"&gt;working, I think the&amp;nbsp;&lt;SPAN style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-weight: normal; text-align: left; background-color: #ffffff;"&gt;KBOOT's protocol&amp;nbsp;has already clarified these questions.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR style="font-size: 14px; line-height: 1.5; background-color: inherit;" /&gt;&lt;SPAN style="font-size: 14px; line-height: 1.5; background-color: inherit;"&gt;And I'd highly recommend you to refer to the Embedded Host User's Guide (&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%2Fcache.nxp.com%2Ffiles%2Fmicrocontrollers%2Fdoc%2Fuser_guide%2FEMBEDDEDHOSTUG.pdf%3Ffsrch%3D1%26sr%3D1%26pageNum%3D1" rel="nofollow" target="_blank"&gt;http://cache.nxp.com/files/microcontrollers/doc/user_guide/EMBEDDEDHOSTUG.pdf?fsrch=1&amp;amp;sr=1&amp;amp;pageNum=1&lt;/A&gt;&lt;SPAN style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 1.5; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"&gt;).&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 1.5; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"&gt;The Embedded host application or tool is new and different&lt;/SPAN&gt;&lt;SPAN style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 1.5; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"&gt;from PC-based tools. It provides an example implementation &lt;/SPAN&gt;&lt;SPAN style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 1.5; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"&gt;of code running on an embedded platform host and&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="-webkit-text-stroke-width: 0px; color: #000000; white-space: normal; font-weight: normal; letter-spacing: normal; font-size: 14px; line-height: 1.5; font-style: normal; background-color: inherit; text-transform: none; word-spacing: 0px; font-variant: normal; text-indent: 0px; font-family: 微软雅黑; orphans: auto; widows: 1; text-align: left;"&gt;communicating over serial connection to flash the target device. The application is similar to &lt;/SPAN&gt;&lt;SPAN style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 1.5; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"&gt;your design.&lt;/SPAN&gt;&lt;DIV style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 1.5; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"&gt;&lt;P style="margin: 5px 0px; background-color: inherit;"&gt;&lt;SPAN style="background-color: #ffffff;"&gt;Hope it helps.&lt;BR style="background-color: inherit;" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 5px 0px; background-color: inherit;"&gt;&lt;SPAN style="background-color: #ffffff;"&gt;Have a great day!&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style="background-color: #ffffff;"&gt;Jeremy&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;A _jive_internal="true" class="" href="https://community.nxp.com/collaborations/34441/38752"&gt;11:53 PM&lt;/A&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;Wednesday, October 19, 2016&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;A _jive_internal="true" data-containerid="-1" data-containertype="-1" data-objectid="289278" data-objecttype="3" href="https://community.nxp.com/people/andyhonecker"&gt;&lt;IMG alt="ANDY HONECKER" class="" data-height="46" data-random="19810475519590699" data-username="andyhonecker" height="46" src="https://community.nxp.com/people/andyhonecker/avatar/46.png" title="ANDY HONECKER" width="46" /&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;DIV class="" data-author-id="289278"&gt;&lt;A _jive_internal="true" data-containerid="-1" data-containertype="-1" data-objectid="289278" data-objecttype="3" href="https://community.nxp.com/people/andyhonecker"&gt;ANDY HONECKER&lt;/A&gt;&lt;/DIV&gt;&lt;DIV class="" data-id="38733" data-ts="2016-10-19T14:08:08.913+0000"&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;Jeremy, &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;We are asking those questions because the kboot reference manual is NOT clear on any of those items we have questions on.&amp;nbsp; We'd rather not have to reverse engineer the blhost, firmware loader applications, or embedded host application to find information that really should be in the kboot reference manual.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If the questions above are answered in the reference manual somewhere, please point us to the page or section for those answers.&amp;nbsp; I have been through the entire manual for both the embedded host and the entire reference manual for kboot and that's where my questions come from.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;A _jive_internal="true" class="" href="https://community.nxp.com/collaborations/34441/38733"&gt;7:08 AM&lt;/A&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;Thursday, October 20, 2016&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;A _jive_internal="true" data-containerid="-1" data-containertype="-1" data-objectid="213424" data-objecttype="3" href="https://community.nxp.com/people/jeremyzhou"&gt;&lt;IMG alt="jeremyzhou" class="" data-height="46" data-random="19810475519729838" data-username="jeremyzhou" height="46" src="https://community.nxp.com/people/jeremyzhou/avatar/46.png" title="jeremyzhou" width="46" /&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;DIV class="" data-author-id="213424"&gt;&lt;A _jive_internal="true" data-containerid="-1" data-containertype="-1" data-objectid="213424" data-objecttype="3" href="https://community.nxp.com/people/jeremyzhou"&gt;jeremyzhou&lt;/A&gt;&lt;/DIV&gt;&lt;DIV class="" data-id="38821" data-ts="2016-10-20T09:00:21.323+0000"&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'd highly recommend you to create thread about the steps of simulate blhost tool reside in the ARM master processor, then send me the link and I will contact with the my coworker who is from the KBOOT development team to answer it.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I think it's efficient way to support you.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm looking forward to your reply.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Have a great day!&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Ping&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 20 Oct 2016 12:12:55 GMT</pubDate>
    <dc:creator>sohara</dc:creator>
    <dc:date>2016-10-20T12:12:55Z</dc:date>
    <item>
      <title>Master CPU ARM/Linux via I2C connection to Kinetis ROM loader</title>
      <link>https://community.nxp.com/t5/MCU-Bootloader/Master-CPU-ARM-Linux-via-I2C-connection-to-Kinetis-ROM-loader/m-p/652424#M297</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;DIV class=""&gt;&lt;DIV class="" data-id="38731" data-ts="2016-10-19T02:00:57.890+0000"&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;We have a new product application&amp;nbsp; our&amp;nbsp; host is an embedded ARM master processor running Linux with the&amp;nbsp; I2C0 interface to the Kinetis MKL17Z128VFT4 for in system Kinetis&amp;nbsp; updates.&amp;nbsp; There does not seem to be any developed utilities to&amp;nbsp; accomplish this and it's confusing to determine the best path.&amp;nbsp; &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=""&gt; &lt;/DIV&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;QUESTION: Would&amp;nbsp; you agree that the most efficient (code size and dev time) would be the&amp;nbsp; take the demo code made for UART and convert it to I2C?&amp;nbsp; Or is there some other example or idea you recommend?&lt;/SPAN&gt;&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV class=""&gt; &lt;/DIV&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;Also have these questions:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The&amp;nbsp; following questions pertain to transferring a binary image across I2C&amp;nbsp; to a kboot bootloader-enabled kinetis (KL17Z, presumably kboot V1.0&amp;nbsp; onboard in ROM).&amp;nbsp; You can assume the Kinetis flash has already been&amp;nbsp; completely erased either via the bootloader or due to the part being&amp;nbsp; blank.&lt;/SPAN&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Cannot find answers to these questions in kboot reference manual&lt;/SPAN&gt; or anywhere else.&lt;/P&gt;&lt;SPAN&gt;1.) When transferring data via I2C and using&amp;nbsp; the WriteMemory tagged command packet, what is the max number of data&amp;nbsp; packets that can follow the WriteMemory command packet?&lt;/SPAN&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN&gt;2.)&amp;nbsp; What is the max number of data bytes that can be contained in a single&amp;nbsp; data packet that follows the WriteMemory command packet?&lt;/SPAN&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN&gt;3.)&amp;nbsp; Does the data from the data packet get written immediately to flash&amp;nbsp; (assume that a valid flash start address was provided in the command&amp;nbsp; packet) before the bootloader sends the ack response packet back to the&amp;nbsp; host?&lt;/SPAN&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN&gt;4.) How does the kboot bootloader respond to&amp;nbsp; any packet it receives where it computers the CRC16 and the result&amp;nbsp; doesn't match the provided CRC16 in the packet?&amp;nbsp; The reference manual&amp;nbsp; doesn't appear to detail this case.&lt;/SPAN&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN&gt;5.) Does the&amp;nbsp; bootloader have some way of knowing a valid program has been put into&amp;nbsp; flash, or does it just blindly jump to the start address that was set&amp;nbsp; within the bootloader by the host?&lt;/SPAN&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN&gt;6) How do we manage the whole image integrity, packetized CRC only? and are retries built into the ROM loader?&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;A _jive_internal="true" class="" href="https://community.nxp.com/collaborations/34441/38731"&gt;7:00 PM&lt;/A&gt;&lt;A _jive_internal="true" class="" href="https://community.nxp.com/collaboration/34441?commentID=38752&amp;amp;et=notification.mention"&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;A _jive_internal="true" data-containerid="-1" data-containertype="-1" data-objectid="213424" data-objecttype="3" href="https://community.nxp.com/people/jeremyzhou"&gt;&lt;IMG alt="jeremyzhou" class="" data-height="46" data-random="19810475519438110" data-username="jeremyzhou" height="46" src="https://community.nxp.com/people/jeremyzhou/avatar/46.png" title="jeremyzhou" width="46" /&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;DIV class="" data-author-id="213424"&gt;&lt;A _jive_internal="true" data-containerid="-1" data-containertype="-1" data-objectid="213424" data-objecttype="3" href="https://community.nxp.com/people/jeremyzhou"&gt;jeremyzhou&lt;/A&gt;&lt;/DIV&gt;&lt;DIV class="" data-id="38752" data-ts="2016-10-19T06:53:18.642+0000"&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"&gt;&lt;DIV style="background-color: inherit;"&gt;&lt;DIV style="background-color: inherit;"&gt;&lt;SPAN style="font-size: 14px; line-height: 1.5; font-style: normal; font-weight: normal; text-align: left; background-color: inherit;"&gt;Hi &lt;A _jive_internal="true" data-containerid="-1" data-containertype="-1" data-objectid="232725" data-objecttype="3" href="https://community.nxp.com/people/sohara"&gt;Shawn O'Hara&lt;/A&gt;,&lt;BR style="background-color: inherit;" /&gt;Thanks for your detail description.&lt;BR style="background-color: inherit;" /&gt;In my opinion, regard to the design, the ARM master processor's job is as same as the Blhost PC tool.&lt;BR style="background-color: inherit;" /&gt;About the above questions, you'd better to have a look through the KBOOT's protocol prior to any&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;SPAN style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"&gt;&lt;SPAN style="background-color: inherit; font-size: 14px; line-height: 1.5;"&gt;working, I think the&amp;nbsp;&lt;SPAN style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-weight: normal; text-align: left; background-color: #ffffff;"&gt;KBOOT's protocol&amp;nbsp;has already clarified these questions.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;BR style="font-size: 14px; line-height: 1.5; background-color: inherit;" /&gt;&lt;SPAN style="font-size: 14px; line-height: 1.5; background-color: inherit;"&gt;And I'd highly recommend you to refer to the Embedded Host User's Guide (&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%2Fcache.nxp.com%2Ffiles%2Fmicrocontrollers%2Fdoc%2Fuser_guide%2FEMBEDDEDHOSTUG.pdf%3Ffsrch%3D1%26sr%3D1%26pageNum%3D1" rel="nofollow" target="_blank"&gt;http://cache.nxp.com/files/microcontrollers/doc/user_guide/EMBEDDEDHOSTUG.pdf?fsrch=1&amp;amp;sr=1&amp;amp;pageNum=1&lt;/A&gt;&lt;SPAN style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 1.5; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"&gt;).&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 1.5; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"&gt;The Embedded host application or tool is new and different&lt;/SPAN&gt;&lt;SPAN style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 1.5; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"&gt;from PC-based tools. It provides an example implementation &lt;/SPAN&gt;&lt;SPAN style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 1.5; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"&gt;of code running on an embedded platform host and&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="-webkit-text-stroke-width: 0px; color: #000000; white-space: normal; font-weight: normal; letter-spacing: normal; font-size: 14px; line-height: 1.5; font-style: normal; background-color: inherit; text-transform: none; word-spacing: 0px; font-variant: normal; text-indent: 0px; font-family: 微软雅黑; orphans: auto; widows: 1; text-align: left;"&gt;communicating over serial connection to flash the target device. The application is similar to &lt;/SPAN&gt;&lt;SPAN style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 1.5; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"&gt;your design.&lt;/SPAN&gt;&lt;DIV style="color: #000000; font-family: 微软雅黑; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 1.5; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 1; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"&gt;&lt;P style="margin: 5px 0px; background-color: inherit;"&gt;&lt;SPAN style="background-color: #ffffff;"&gt;Hope it helps.&lt;BR style="background-color: inherit;" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 5px 0px; background-color: inherit;"&gt;&lt;SPAN style="background-color: #ffffff;"&gt;Have a great day!&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style="background-color: #ffffff;"&gt;Jeremy&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;A _jive_internal="true" class="" href="https://community.nxp.com/collaborations/34441/38752"&gt;11:53 PM&lt;/A&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;Wednesday, October 19, 2016&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;A _jive_internal="true" data-containerid="-1" data-containertype="-1" data-objectid="289278" data-objecttype="3" href="https://community.nxp.com/people/andyhonecker"&gt;&lt;IMG alt="ANDY HONECKER" class="" data-height="46" data-random="19810475519590699" data-username="andyhonecker" height="46" src="https://community.nxp.com/people/andyhonecker/avatar/46.png" title="ANDY HONECKER" width="46" /&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;DIV class="" data-author-id="289278"&gt;&lt;A _jive_internal="true" data-containerid="-1" data-containertype="-1" data-objectid="289278" data-objecttype="3" href="https://community.nxp.com/people/andyhonecker"&gt;ANDY HONECKER&lt;/A&gt;&lt;/DIV&gt;&lt;DIV class="" data-id="38733" data-ts="2016-10-19T14:08:08.913+0000"&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;Jeremy, &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;We are asking those questions because the kboot reference manual is NOT clear on any of those items we have questions on.&amp;nbsp; We'd rather not have to reverse engineer the blhost, firmware loader applications, or embedded host application to find information that really should be in the kboot reference manual.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If the questions above are answered in the reference manual somewhere, please point us to the page or section for those answers.&amp;nbsp; I have been through the entire manual for both the embedded host and the entire reference manual for kboot and that's where my questions come from.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;A _jive_internal="true" class="" href="https://community.nxp.com/collaborations/34441/38733"&gt;7:08 AM&lt;/A&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;Thursday, October 20, 2016&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;A _jive_internal="true" data-containerid="-1" data-containertype="-1" data-objectid="213424" data-objecttype="3" href="https://community.nxp.com/people/jeremyzhou"&gt;&lt;IMG alt="jeremyzhou" class="" data-height="46" data-random="19810475519729838" data-username="jeremyzhou" height="46" src="https://community.nxp.com/people/jeremyzhou/avatar/46.png" title="jeremyzhou" width="46" /&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;DIV class="" data-author-id="213424"&gt;&lt;A _jive_internal="true" data-containerid="-1" data-containertype="-1" data-objectid="213424" data-objecttype="3" href="https://community.nxp.com/people/jeremyzhou"&gt;jeremyzhou&lt;/A&gt;&lt;/DIV&gt;&lt;DIV class="" data-id="38821" data-ts="2016-10-20T09:00:21.323+0000"&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'd highly recommend you to create thread about the steps of simulate blhost tool reside in the ARM master processor, then send me the link and I will contact with the my coworker who is from the KBOOT development team to answer it.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I think it's efficient way to support you.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm looking forward to your reply.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Have a great day!&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Ping&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Oct 2016 12:12:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCU-Bootloader/Master-CPU-ARM-Linux-via-I2C-connection-to-Kinetis-ROM-loader/m-p/652424#M297</guid>
      <dc:creator>sohara</dc:creator>
      <dc:date>2016-10-20T12:12:55Z</dc:date>
    </item>
    <item>
      <title>Re: Master CPU ARM/Linux via I2C connection to Kinetis ROM loader</title>
      <link>https://community.nxp.com/t5/MCU-Bootloader/Master-CPU-ARM-Linux-via-I2C-connection-to-Kinetis-ROM-loader/m-p/652425#M298</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I think you can find all the answers to your questions from Figure 5-6 Protocol Sequence for WriteMemory Command in kboot RM v2.0.0.&lt;/P&gt;&lt;P&gt;Let me answer your questions one by one:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1). When you issue write-memory command,&amp;nbsp;You must first&amp;nbsp;specify startAddress and dataLength in&amp;nbsp;the WriteMemory command packet, so device should know the&amp;nbsp;total data bytes to write before receiving any data packet, then device will count the received data bytes&amp;nbsp;while&amp;nbsp;receiving data packet, when the amount of received data is matched with the total num, then device will stop receiving data. so the max num of data packet depends on the actual bytes in each data packet.&lt;/P&gt;&lt;P&gt;For example: if you want to flash&amp;nbsp;100 byte by WriteMemory command, and you put 10 byte data in every data packet, then you need to provide 10 data packets. but if you put 25 bytes data in every data packet, then you just need to provide 4 data packets.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2). The max num of data bytes in single&amp;nbsp;data packet is 32, because device bootloader only offer a 32 byte memory space to buffer received data. this&amp;nbsp;restriction is just for ROM-resident bootloader, if you are playing with flash-resident bootloader, then you can customize the max num of data bytes.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;3). When your&amp;nbsp;specified&amp;nbsp;memory is SRAM, the answer is yes. When the&amp;nbsp;&lt;SPAN&gt;specified&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;memory is FLASH, the answer is not necessarily, because t&lt;/SPAN&gt;here are two methods for bootloader to program&amp;nbsp;flash memory, Kinetis FTFx memory module provides two basic Program command (ProgramWord(4 or 8 bytes) or ProgramSection (1K bytes)), bootloader implements both methods in source code, but each time we can only use&amp;nbsp;one&amp;nbsp;method,&amp;nbsp;the default method may be different in different device, you need to check&amp;nbsp;BL_FEATURE_ENABLE_FLASH_PROGRAM_SECTION in bootloader_config.h file.&lt;/P&gt;&lt;P&gt;if this macro is set to 0, then bootloader will progam data immediately before sending the ACK to host.&lt;/P&gt;&lt;P&gt;If this macro is set to 1, then bootloader will buffer received data to 1K bytes, at this time, the ACK sending from bootloader just means that the data has been received properly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;4). When bootloader gets a packet from host, if the CRC16 verification is passed, then bootloader will just give a ACK packet to host, but if it fails, then bootloader will give a generic responce packet to host&amp;nbsp;which indicates error code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;5) / 6). See chapter&amp;nbsp;2.7 Application integrity check in&amp;nbsp;&lt;SPAN&gt;kboot RM v2.0.0.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Best Regards,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Jay&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 21 Oct 2016 03:50:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCU-Bootloader/Master-CPU-ARM-Linux-via-I2C-connection-to-Kinetis-ROM-loader/m-p/652425#M298</guid>
      <dc:creator>jay_heng</dc:creator>
      <dc:date>2016-10-21T03:50:43Z</dc:date>
    </item>
  </channel>
</rss>

