<?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のトピックJump to ROM bootloader from application in MKL03</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Jump-to-ROM-bootloader-from-application-in-MKL03/m-p/1068325#M57223</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have a system which has several MKL03 MCUs connected by a master MPU via I2C interface. I also need to reprogram the MKL03s via I2C using the ROM bootloader. I can do this just fine when the ML03 is blank, but I'm having issues re-entering the ROM bootloader from the application. At this moment the master sends an I2C message to the MKL03 to request going into bootloader mode. The MKL03 does it by running the following:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;// jump to &lt;SPAN class=""&gt;bootloader&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;// Variables&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;uint32_t&lt;/SPAN&gt; runBootloaderAddress;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;STRONG&gt;void&lt;/STRONG&gt;&lt;/SPAN&gt; (*runBootloader)(&lt;SPAN class=""&gt;&lt;STRONG&gt;void&lt;/STRONG&gt;&lt;/SPAN&gt; * arg);&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;// Read the function address from the ROM API tree.&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;runBootloaderAddress = **(&lt;SPAN class=""&gt;uint32_t&lt;/SPAN&gt; **)(0x1c00001c);&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;runBootloader = (&lt;SPAN class=""&gt;&lt;STRONG&gt;void&lt;/STRONG&gt;&lt;/SPAN&gt; (*)(&lt;SPAN class=""&gt;&lt;STRONG&gt;void&lt;/STRONG&gt;&lt;/SPAN&gt; * arg))runBootloaderAddress;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;// Start the &lt;SPAN class=""&gt;bootloader&lt;/SPAN&gt;.&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;runBootloader(NULL);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However it doesn't work. The application stops running, but I cannot communicate with the ROM bootloader. I'm not doing anything with the BCA but my understanding is that if the BCA is invalid, it should enable all interfaces, in the same way as it did when the flash was blank. Is this correct? What am I missing?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any help is greatly appreciated.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers,&lt;/P&gt;&lt;P&gt;Daniel&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 06 Jul 2020 10:16:20 GMT</pubDate>
    <dc:creator>danicampora</dc:creator>
    <dc:date>2020-07-06T10:16:20Z</dc:date>
    <item>
      <title>Jump to ROM bootloader from application in MKL03</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Jump-to-ROM-bootloader-from-application-in-MKL03/m-p/1068325#M57223</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have a system which has several MKL03 MCUs connected by a master MPU via I2C interface. I also need to reprogram the MKL03s via I2C using the ROM bootloader. I can do this just fine when the ML03 is blank, but I'm having issues re-entering the ROM bootloader from the application. At this moment the master sends an I2C message to the MKL03 to request going into bootloader mode. The MKL03 does it by running the following:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;// jump to &lt;SPAN class=""&gt;bootloader&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;// Variables&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;uint32_t&lt;/SPAN&gt; runBootloaderAddress;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;&lt;STRONG&gt;void&lt;/STRONG&gt;&lt;/SPAN&gt; (*runBootloader)(&lt;SPAN class=""&gt;&lt;STRONG&gt;void&lt;/STRONG&gt;&lt;/SPAN&gt; * arg);&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;// Read the function address from the ROM API tree.&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;runBootloaderAddress = **(&lt;SPAN class=""&gt;uint32_t&lt;/SPAN&gt; **)(0x1c00001c);&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;runBootloader = (&lt;SPAN class=""&gt;&lt;STRONG&gt;void&lt;/STRONG&gt;&lt;/SPAN&gt; (*)(&lt;SPAN class=""&gt;&lt;STRONG&gt;void&lt;/STRONG&gt;&lt;/SPAN&gt; * arg))runBootloaderAddress;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;// Start the &lt;SPAN class=""&gt;bootloader&lt;/SPAN&gt;.&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;runBootloader(NULL);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However it doesn't work. The application stops running, but I cannot communicate with the ROM bootloader. I'm not doing anything with the BCA but my understanding is that if the BCA is invalid, it should enable all interfaces, in the same way as it did when the flash was blank. Is this correct? What am I missing?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any help is greatly appreciated.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers,&lt;/P&gt;&lt;P&gt;Daniel&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 06 Jul 2020 10:16:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Jump-to-ROM-bootloader-from-application-in-MKL03/m-p/1068325#M57223</guid>
      <dc:creator>danicampora</dc:creator>
      <dc:date>2020-07-06T10:16:20Z</dc:date>
    </item>
    <item>
      <title>Re: Jump to ROM bootloader from application in MKL03</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Jump-to-ROM-bootloader-from-application-in-MKL03/m-p/1068326#M57224</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,Daniel&lt;/P&gt;&lt;P&gt;I used the same code with KL43, and it works ok.&lt;/P&gt;&lt;P&gt;I think you can follow these steps:&lt;/P&gt;&lt;P&gt;1, confirm the pins, bootloader uses the default pins.&lt;BR /&gt;2, confirm the bootloader is running in some way. I check it with UART and the bootloader responses to ping.&lt;BR /&gt;3, confirm you used the correct IIC address&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;B.R.&lt;/P&gt;&lt;P&gt;Yilong&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 08 Jul 2020 09:50:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Jump-to-ROM-bootloader-from-application-in-MKL03/m-p/1068326#M57224</guid>
      <dc:creator>wangyilong</dc:creator>
      <dc:date>2020-07-08T09:50:53Z</dc:date>
    </item>
    <item>
      <title>Re: Jump to ROM bootloader from application in MKL03</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Jump-to-ROM-bootloader-from-application-in-MKL03/m-p/1068327#M57225</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Yilong, thanks! I got a similar advice from NXP support and I already got my problem solved by using a minimal hello world project. Apparently something else was wrong with the rest of my code, but the snippet to jump from application to bootloader works fine.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 08 Jul 2020 13:40:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Jump-to-ROM-bootloader-from-application-in-MKL03/m-p/1068327#M57225</guid>
      <dc:creator>danicampora</dc:creator>
      <dc:date>2020-07-08T13:40:00Z</dc:date>
    </item>
  </channel>
</rss>

