<?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 Re: KL27 ROM BootLoader configuration in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL27-ROM-BootLoader-configuration/m-p/617454#M36832</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;You can use default VID/PID and usbStringsPointer values. This usbStringsPointer points to the structure where manufacturer, product and serial number string for this USB device are found. Section 13.4.4.2 from KL27's reference manual talks about these parameters and how they are defined.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For example, if you want to use a customized usbStringsPointer you will need to define a structure (for example) as follows:&lt;/P&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;g_languages = { 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USB_STR_0,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sizeof(USB_STR_0),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (uint_16)0x0409,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (const uint_8 **)g_string_descriptors,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_string_desc_size
};&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;USB_STR_0 is a fixed 4-bytes array:&lt;/P&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;USB_STR_0[4] = {0x02,
0x03,
0x09,
0x04
};&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;g_string_descriptors contains next data:&lt;/P&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;g_string_descriptors[4] =
{ USB_STR_0,
USB_STR_1,
USB_STR_2,
USB_STR_3};&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;and g_string_desc_size contains:&lt;/P&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;g_string_desc_size[4] =
{ sizeof(USB_STR_0),
sizeof(USB_STR_1),
sizeof(USB_STR_2),
sizeof(USB_STR_3)};&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;You can make your own structure of USB_STR_1, USB_STR_2 and USB_STR_3, taking in mind that USB_STR_1 is used for the manufacturer string, USB_STR_2 is used for the produc t string and USB_STR_3 is used for the serial number.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;After you define these structures, usbStringsPointer (BCA + 0X18) will have the address where g_languages structure is stored.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You can give a look to this useful document that might be helpful: &lt;A href="https://community.nxp.com/docs/DOC-256669" rel="nofollow noopener noreferrer" target="_blank"&gt;https://community.nxp.com/docs/DOC-256669&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I hope this helps!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Isaac&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 19 Sep 2016 19:43:46 GMT</pubDate>
    <dc:creator>isaacavila</dc:creator>
    <dc:date>2016-09-19T19:43:46Z</dc:date>
    <item>
      <title>KL27 ROM BootLoader configuration</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL27-ROM-BootLoader-configuration/m-p/617453#M36831</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;We do use KL27 ROM Bootloader to update the firmware on our device via USB port. We use code from datasheet to initiate the bootloader. It works fine; however, we have UART0 connected to remote IC, and when MCU in the bootloader mode, and that IC start to talk on UART line, MCU disconnects from USB. In the bootloader section of the datasheet it talks about using the BCA to disable or enable peripherals. As I see it, we need to set only USB is to be active for the bootlader. Unfortunately, if BCA used, it requires to manually set usbVid, usbPid and usbStringPointer.&lt;/P&gt;&lt;P&gt;VID and PID are no problem, but a String Pointer is a little bit tough. My question is, could we use default String Pointer from ROM, and if yes, what its address. Or, maybe someone has an example of setting Bootloader BCA for Keil or IAR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 13 Sep 2016 23:33:39 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL27-ROM-BootLoader-configuration/m-p/617453#M36831</guid>
      <dc:creator>alekseystarovoy</dc:creator>
      <dc:date>2016-09-13T23:33:39Z</dc:date>
    </item>
    <item>
      <title>Re: KL27 ROM BootLoader configuration</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL27-ROM-BootLoader-configuration/m-p/617454#M36832</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;You can use default VID/PID and usbStringsPointer values. This usbStringsPointer points to the structure where manufacturer, product and serial number string for this USB device are found. Section 13.4.4.2 from KL27's reference manual talks about these parameters and how they are defined.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For example, if you want to use a customized usbStringsPointer you will need to define a structure (for example) as follows:&lt;/P&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;g_languages = { 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USB_STR_0,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sizeof(USB_STR_0),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (uint_16)0x0409,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (const uint_8 **)g_string_descriptors,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_string_desc_size
};&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;USB_STR_0 is a fixed 4-bytes array:&lt;/P&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;USB_STR_0[4] = {0x02,
0x03,
0x09,
0x04
};&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;g_string_descriptors contains next data:&lt;/P&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;g_string_descriptors[4] =
{ USB_STR_0,
USB_STR_1,
USB_STR_2,
USB_STR_3};&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;and g_string_desc_size contains:&lt;/P&gt;&lt;PRE class="language-none line-numbers"&gt;&lt;CODE&gt;g_string_desc_size[4] =
{ sizeof(USB_STR_0),
sizeof(USB_STR_1),
sizeof(USB_STR_2),
sizeof(USB_STR_3)};&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;You can make your own structure of USB_STR_1, USB_STR_2 and USB_STR_3, taking in mind that USB_STR_1 is used for the manufacturer string, USB_STR_2 is used for the produc t string and USB_STR_3 is used for the serial number.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;After you define these structures, usbStringsPointer (BCA + 0X18) will have the address where g_languages structure is stored.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You can give a look to this useful document that might be helpful: &lt;A href="https://community.nxp.com/docs/DOC-256669" rel="nofollow noopener noreferrer" target="_blank"&gt;https://community.nxp.com/docs/DOC-256669&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I hope this helps!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Isaac&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 19 Sep 2016 19:43:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL27-ROM-BootLoader-configuration/m-p/617454#M36832</guid>
      <dc:creator>isaacavila</dc:creator>
      <dc:date>2016-09-19T19:43:46Z</dc:date>
    </item>
    <item>
      <title>Re: KL27 ROM BootLoader configuration</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL27-ROM-BootLoader-configuration/m-p/617455#M36833</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Isaac for the reply.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;I was not able to find section 13.4.4.2 in KL27's reference manual. &amp;nbsp;Also there is not much info about default String Pointer.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;To make it work I had to make my custom typedef struct like this:&lt;/SPAN&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;typedef struct{&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp; uint32_t *arr;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp; uint8_t size;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp; uint16_t num;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp; const uint8_t **desc;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp; uint32_t *dsize;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;}descr;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;And then &lt;/SPAN&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;descr g_languages&amp;nbsp; = { &lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp; (uint32_t *) USB_STR_0,&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp; sizeof(USB_STR_0),&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp; (uint16_t)0x0409,&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp; (const uint8_t **)g_string_descriptors,&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;&amp;nbsp; (uint32_t *) g_string_desc_size&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN style="color: #51626f; background-color: #ffffff;"&gt;};&lt;BR /&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks again&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Aleksey&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 22 Sep 2016 16:01:42 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL27-ROM-BootLoader-configuration/m-p/617455#M36833</guid>
      <dc:creator>alekseystarovoy</dc:creator>
      <dc:date>2016-09-22T16:01:42Z</dc:date>
    </item>
    <item>
      <title>Re: KL27 ROM BootLoader configuration</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL27-ROM-BootLoader-configuration/m-p/617456#M36834</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Well, I thought it is working, but it is actually not...&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 22 Sep 2016 16:29:39 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL27-ROM-BootLoader-configuration/m-p/617456#M36834</guid>
      <dc:creator>alekseystarovoy</dc:creator>
      <dc:date>2016-09-22T16:29:39Z</dc:date>
    </item>
    <item>
      <title>Re: KL27 ROM BootLoader configuration</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL27-ROM-BootLoader-configuration/m-p/617457#M36835</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Everyone&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We made it work.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks Isaac for the reply again.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 22 Sep 2016 18:16:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL27-ROM-BootLoader-configuration/m-p/617457#M36835</guid>
      <dc:creator>alekseystarovoy</dc:creator>
      <dc:date>2016-09-22T18:16:08Z</dc:date>
    </item>
    <item>
      <title>Re: KL27 ROM BootLoader configuration</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL27-ROM-BootLoader-configuration/m-p/617458#M36836</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Can you show the code that works for you? I'v done as in my attachment but strings are default.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 03 Jan 2018 15:54:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/KL27-ROM-BootLoader-configuration/m-p/617458#M36836</guid>
      <dc:creator>mykhayloshcherb</dc:creator>
      <dc:date>2018-01-03T15:54:18Z</dc:date>
    </item>
  </channel>
</rss>

