<?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>MCU Bootloader中的主题 Guide to Porting MCUBOOT v2 to MCUXpresso</title>
    <link>https://community.nxp.com/t5/MCU-Bootloader/Guide-to-Porting-MCUBOOT-v2-to-MCUXpresso/m-p/794361#M797</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;H2 id="toc-hId-1796160828"&gt;&lt;SPAN style="color: #ff0000;"&gt;README: MCUboot is now available from the SDK builder. This guide is no longer relevant.&lt;/SPAN&gt;&lt;/H2&gt;&lt;H2 id="toc-hId--755996133"&gt;&lt;BR /&gt;&lt;/H2&gt;&lt;H2 id="toc-hId-986814202"&gt;Introduction&lt;/H2&gt;&lt;P&gt;This post will describe the process for building and using the NXP Kinetis Bootloader version 2.0.0 with the MCUXpresso IDE and SDK.&amp;nbsp; This guide assumes you are familiar with creating and running projects using MCUXpresso and have installed the SDK for your target processor.&amp;nbsp; This procedure is tested and working with the MKV56F24.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H2 id="toc-hId--1565342759"&gt;Project Setup&lt;/H2&gt;&lt;OL&gt;&lt;LI&gt;&amp;nbsp;Download the source package from &lt;A class="" href="https://www.nxp.com/pip/MCUBOOT" rel="nofollow noopener noreferrer" title="https://www.nxp.com/pip/MCUBOOT" target="_blank"&gt;MCU Bootloader|NXP&lt;/A&gt;&amp;nbsp;&lt;/LI&gt;&lt;LI&gt;Create a new C project in MCUXpresso for your processor with the following drivers:&lt;UL&gt;&lt;LI&gt;Required for core function:&lt;UL&gt;&lt;LI&gt;clock&lt;/LI&gt;&lt;LI&gt;port&lt;/LI&gt;&lt;LI&gt;gpio&lt;/LI&gt;&lt;LI&gt;crc&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;Optional depending on configuration:&lt;UL&gt;&lt;LI&gt;flexcan&lt;/LI&gt;&lt;LI&gt;uart&lt;/LI&gt;&lt;LI&gt;dspi&lt;/LI&gt;&lt;LI&gt;i2c&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;Delete the template 'main' file that MCUXpresso creates for you.&lt;/LI&gt;&lt;LI&gt;Delete the semihost_hardfault.c file that MCUXpresso creates for you.&lt;/LI&gt;&lt;LI&gt;Create driver sub-folders and move the driver source into them&lt;UL&gt;&lt;LI&gt;move fsl_port.c/h into drivers/port&lt;/LI&gt;&lt;LI&gt;move fsl_gpio.c/h into drivers/gpio&lt;/LI&gt;&lt;LI&gt;move fsl_crc.c/h into drivers/crc&lt;/LI&gt;&lt;LI&gt;move fsl_dspi.c/h into drivers/dspi&lt;/LI&gt;&lt;LI&gt;move fsl_flexcan.c/h into drivers/flexcan&lt;/LI&gt;&lt;LI&gt;move fsl_i2c.c/h into drivers/i2c&lt;/LI&gt;&lt;LI&gt;move fsl_uart.c/h into drivers/uart&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;Unzip the bootloader source&lt;/LI&gt;&lt;LI&gt;Copy the contents of the NXP_Kinetis_Bootloader_2_0_0/src directory to your new project's source directory.&lt;/LI&gt;&lt;LI&gt;Copy the contents of the NXP_Kinetis_Bootloader_2_0_0/targets/common/src directory to your new project's source directory&lt;/LI&gt;&lt;LI&gt;Refresh the project so MCUXpresso becomes aware of the new source&lt;/LI&gt;&lt;LI&gt;Delete or filter out the following directories from the bootloader source:&lt;UL&gt;&lt;LI&gt;source/blfwk&lt;/LI&gt;&lt;LI&gt;source/blsh&lt;/LI&gt;&lt;LI&gt;source/bm_usb&lt;/LI&gt;&lt;LI&gt;source/platform&lt;/LI&gt;&lt;LI&gt;source/usb&lt;/LI&gt;&lt;LI&gt;source/security&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;Delete or filter out the following sources&lt;UL&gt;&lt;LI&gt;source/startup/boot.s&lt;/LI&gt;&lt;LI&gt;source/startup/crt0.s&lt;/LI&gt;&lt;LI&gt;source/startup/ar_handlers_cm0p.S&lt;/LI&gt;&lt;LI&gt;source/memory/src/pattern_fill.s&lt;/LI&gt;&lt;LI&gt;source/memory/src/qspi_memory.c&lt;/LI&gt;&lt;LI&gt;source/memory/src/qspi_memory.h&lt;/LI&gt;&lt;LI&gt;source/utilities/src/bootloader_tree_stub.c&lt;/LI&gt;&lt;LI&gt;source/bootloader/src/bl_flashloader.c&lt;/LI&gt;&lt;LI&gt;source/bootloader/src/bl_misc_rom.c&lt;/LI&gt;&lt;LI&gt;source/bl_lpi2c_irq_config_common.c&lt;/LI&gt;&lt;LI&gt;source/bl_lpspi_irq_config_common.c&lt;/LI&gt;&lt;LI&gt;source/bl_spuart_irq_config_common.c&lt;/LI&gt;&lt;LI&gt;source/bl_intmux_irq.c&lt;/LI&gt;&lt;LI&gt;source/clock_common_scg.c&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;Delete or filter out the following interfaces&lt;UL&gt;&lt;LI&gt;source/bootloader/src/lpspi_peripheral_interface.c&lt;/LI&gt;&lt;LI&gt;source/bootloader/src/lpi2c_peripheral_interface.c&lt;/LI&gt;&lt;LI&gt;source/bootloader/src/lpuart_peripheral_interface.c&lt;/LI&gt;&lt;LI&gt;source/bootloader/src/spi_peripheral_interface.c&lt;/LI&gt;&lt;LI&gt;source/bootloader/src/usb_hid_msc_peripheral_interface.c&lt;/LI&gt;&lt;LI&gt;source/bootloader/src/usb_hid_peripheral_interface.c&lt;/LI&gt;&lt;LI&gt;source/bootloader/src/usb_hs_hid_peripheral_interface.c&lt;/LI&gt;&lt;LI&gt;source/bootloader/src/uart0_peripheral_interface.c&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;Choose an sram initialization based on your processor and filter/delete the other two:&lt;UL&gt;&lt;LI&gt;source/memory/src/sram_init_cm0plus.c&lt;/LI&gt;&lt;LI&gt;source/memory/src/sram_init_cm4.c&lt;/LI&gt;&lt;LI&gt;source/memory/src/sram_init_cm7.c&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;Delete or filter out the following drivers in favor of the SDK versions&lt;UL&gt;&lt;LI&gt;source/drivers/common&lt;/LI&gt;&lt;LI&gt;source/drivers/crc&lt;/LI&gt;&lt;LI&gt;source/drivers/dspi&lt;/LI&gt;&lt;LI&gt;source/drivers/flexcan&lt;/LI&gt;&lt;LI&gt;source/drivers/gpio&lt;/LI&gt;&lt;LI&gt;source/drivers/i2c&lt;/LI&gt;&lt;LI&gt;source/drivers/intmux&lt;/LI&gt;&lt;LI&gt;source/drivers/lpi2c&lt;/LI&gt;&lt;LI&gt;source/drivers/lpsci&lt;/LI&gt;&lt;LI&gt;source/drivers/lpspi&lt;/LI&gt;&lt;LI&gt;source/drivers/lpuart&lt;/LI&gt;&lt;LI&gt;source/drivers/ltc&lt;/LI&gt;&lt;LI&gt;source/drivers/mmcau&lt;/LI&gt;&lt;LI&gt;source/drivers/otfad&lt;/LI&gt;&lt;LI&gt;source/drivers/port&lt;/LI&gt;&lt;LI&gt;source/drivers/qspi&lt;/LI&gt;&lt;LI&gt;source/drivers/spi&lt;/LI&gt;&lt;LI&gt;source/drivers/uart&lt;/LI&gt;&lt;LI&gt;source/drivers/watchdog&lt;/LI&gt;&lt;LI&gt;source/drivers/wdog32&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;Choose the microseconds back-end appropriate for your processor and delete the other:&lt;UL&gt;&lt;LI&gt;source/drivers/microseconds/src/microseconds_pit.c&lt;/LI&gt;&lt;LI&gt;source/drivers/microseconds/src/microseconds_sysclk.c&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;Add the following paths to the project "GNU C" includes:&lt;UL&gt;&lt;LI&gt;source/include&lt;/LI&gt;&lt;LI&gt;source/drivers&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;Define the following symbols&lt;/LI&gt;&lt;/OL&gt;&lt;TABLE class="j-table jiveBorder" style="border: 1px solid #c6c6c6;" width="100%"&gt;&lt;THEAD&gt;&lt;TR style="background-color: #efefef;"&gt;&lt;TH&gt;Symbol&lt;/TH&gt;&lt;TH&gt;Value&lt;/TH&gt;&lt;/TR&gt;&lt;/THEAD&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;__DATA_RAM&lt;/TD&gt;&lt;TD&gt;_data&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;__DATA_ROM&lt;/TD&gt;&lt;TD&gt;_etext&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;__START_BSS&lt;/TD&gt;&lt;TD&gt;_bss&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;__END_BSS&lt;/TD&gt;&lt;TD&gt;_ebss&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;__STACK_TOP&lt;/TD&gt;&lt;TD&gt;_vStackTop&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;__VECTOR_RAM&lt;/TD&gt;&lt;TD&gt;__vectors_start__&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;__VECTOR_TABLE&lt;/TD&gt;&lt;TD&gt;__vectors_start__&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If the processor is a Cortex M7 you should additionally define&lt;/P&gt;&lt;TABLE class="j-table jiveBorder" style="border: 1px solid #c6c6c6;" width="100%"&gt;&lt;THEAD&gt;&lt;TR style="background-color: #efefef;"&gt;&lt;TH style="width: 51.0025%;"&gt;Symbol&lt;/TH&gt;&lt;TH style="width: 45.99%;"&gt;Value&lt;/TH&gt;&lt;/TR&gt;&lt;/THEAD&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD style="width: 51.0025%;"&gt;CPU_IS_ARM_CORTEX_M7&lt;/TD&gt;&lt;TD style="width: 45.99%;"&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;H2 id="toc-hId-177467576"&gt;Source Modification&lt;/H2&gt;&lt;P&gt;Now that the source has been pruned we need to apply a few modifications to account for the new memory layout and linker files in MCUXpresso.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;source/startup/crt0_gcc.S&lt;/P&gt;&lt;PRE style="padding-left: 30px;"&gt;@@ -43,10 +43,10 @@
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .extern SystemInit
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .extern init_data_bss
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .extern main
&lt;SPAN style="color: #ff0000;"&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .extern __StackTop&lt;/SPAN&gt;
&lt;SPAN style="color: #339966;"&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .extern _vStackTop&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .extern init_interrupts
&amp;nbsp;
&lt;SPAN style="color: #ff0000;"&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .extern __isr_vector&lt;/SPAN&gt;
&lt;SPAN style="color: #339966;"&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .extern g_pfnVectors&lt;/SPAN&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;#define SCS_BASE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0xE000E000)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*!&amp;lt; System Control Space Base Address */
@@ -59,7 +59,7 @@ Reset_Handler:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cpsid&amp;nbsp;&amp;nbsp; i
&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set VTOR register in SCB first thing we do.
&lt;SPAN style="color: #ff0000;"&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r0,=__isr_vector&lt;/SPAN&gt;
&lt;SPAN style="color: #339966;"&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r0,=g_pfnVectors&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r1,=SCB_BASE
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r0,[r1, #SCB_VTOR_OFFSET]
&amp;nbsp;
@@ -77,7 +77,7 @@ Reset_Handler:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r12,r7
&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Initialize the stack pointer
&lt;SPAN style="color: #ff0000;"&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r0,=__StackTop&lt;/SPAN&gt;
&lt;SPAN style="color: #339966;"&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r0,=_vStackTop&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r13,r0&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;source/startup/startup.c&lt;/P&gt;&lt;PRE style="padding-left: 30px;"&gt;@@ -97,10 +97,10 @@ void init_data_bss(void)
&amp;nbsp;#if defined(__GNUC__)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; extern uint32_t __DATA_ROM[];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; extern uint32_t __DATA_RAM[];
&lt;SPAN style="color: #ff0000;"&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp; extern char __DATA_END[];&lt;/SPAN&gt;
&lt;SPAN style="color: #339966;"&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; extern uint32_t _edata[];&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data_ram = (uint8_t *)__DATA_RAM;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data_rom = (uint8_t *)__DATA_ROM;
&lt;SPAN style="color: #ff0000;"&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp; data_rom_end = (uint8_t *)__DATA_END; // This is actually a RAM address in CodeWarrior&lt;/SPAN&gt;
&lt;SPAN style="color: #339966;"&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; data_rom_end = (uint8_t *)(__DATA_ROM + (_edata - __DATA_RAM));&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n = data_rom_end - data_rom;
&amp;nbsp;#elif(defined(__ICCARM__))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data_ram = __section_begin(".data");&lt;/PRE&gt;&lt;P&gt;source/property/src/property.c&lt;/P&gt;&lt;PRE style="padding-left: 30px;"&gt;@@ -75,14 +75,16 @@ extern uint32_t Image$$ARM_LIB_STACK$$ZI$$Limit[];
 #define __ROM_START ((uint32_t)Image$$VECTOR_ROM$$Base)
 #define __ROM_END ((uint32_t)Image$$ER_m_text$$Limit)
 #elif(defined(__GNUC__)) // GCC
&lt;SPAN style="color: #ff0000;"&gt;-extern uint32_t __VECTOR_RAM[];&lt;/SPAN&gt;
 extern uint32_t __VECTOR_TABLE[];
&lt;SPAN style="color: #ff0000;"&gt;-extern char __DATA_END[];&lt;/SPAN&gt;
&lt;SPAN style="color: #339966;"&gt;+extern uint32_t __DATA_ROM[];&lt;/SPAN&gt;
&lt;SPAN style="color: #339966;"&gt;+extern uint32_t __DATA_RAM[];&lt;/SPAN&gt;
&lt;SPAN style="color: #339966;"&gt;+extern uint32_t _edata[];&lt;/SPAN&gt;
 extern uint32_t __STACK_TOP[];
&lt;SPAN style="color: #ff0000;"&gt;-#define __RAM_START ((uint32_t)__VECTOR_RAM)&lt;/SPAN&gt;
&lt;SPAN style="color: #ff0000;"&gt;-#define __RAM_END ((uint32_t)__STACK_TOP - 1)&lt;/SPAN&gt;
&lt;SPAN style="color: #339966;"&gt;+extern uint32_t __top_RAM[];&lt;/SPAN&gt;
&lt;SPAN style="color: #339966;"&gt;+#define __RAM_START ((uint32_t)__STACK_TOP - 1)&lt;/SPAN&gt;
&lt;SPAN style="color: #339966;"&gt;+#define __RAM_END ((uint32_t)__top_RAM)&lt;/SPAN&gt;
 #define __ROM_START ((uint32_t)__VECTOR_TABLE)
&lt;SPAN style="color: #ff0000;"&gt;-#define __ROM_END ((uint32_t)__DATA_END)&lt;/SPAN&gt;
&lt;SPAN style="color: #339966;"&gt;+#define __ROM_END ((uint32_t)(__DATA_ROM + (_edata - __DATA_RAM)))&lt;/SPAN&gt;
 #else
 #error Unknown toolchain!
 #endif // __ICCARM__&lt;/PRE&gt;&lt;H2 id="toc-hId-1920277911"&gt;Configuration&lt;/H2&gt;&lt;P&gt;Now we need to add the processor specific configuration. Create/import the following files for your device according to section 10 of the MCU Bootloader Reference Manual:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;bootloader_config.h&lt;/LI&gt;&lt;LI&gt;target_config.h&lt;/LI&gt;&lt;LI&gt;peripherals_pinmux.h&lt;/LI&gt;&lt;LI&gt;memory_map_&amp;lt;device&amp;gt;.c&lt;/LI&gt;&lt;LI&gt;hardware_init_&amp;lt;device&amp;gt;.c&lt;/LI&gt;&lt;LI&gt;peripherals_&amp;lt;device&amp;gt;.c&lt;/LI&gt;&lt;LI&gt;clock_config_&amp;lt;device&amp;gt;.c&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Additionally, if you are using FlexCAN, you may need to define a "const flexcan_timing_config_t bit_rate_table[]" in source/bootloader/src/flexcan_peripheral_interface.c&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 09 Jul 2018 18:58:26 GMT</pubDate>
    <dc:creator>wilkinsw</dc:creator>
    <dc:date>2018-07-09T18:58:26Z</dc:date>
    <item>
      <title>Guide to Porting MCUBOOT v2 to MCUXpresso</title>
      <link>https://community.nxp.com/t5/MCU-Bootloader/Guide-to-Porting-MCUBOOT-v2-to-MCUXpresso/m-p/794361#M797</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;H2 id="toc-hId-1796160828"&gt;&lt;SPAN style="color: #ff0000;"&gt;README: MCUboot is now available from the SDK builder. This guide is no longer relevant.&lt;/SPAN&gt;&lt;/H2&gt;&lt;H2 id="toc-hId--755996133"&gt;&lt;BR /&gt;&lt;/H2&gt;&lt;H2 id="toc-hId-986814202"&gt;Introduction&lt;/H2&gt;&lt;P&gt;This post will describe the process for building and using the NXP Kinetis Bootloader version 2.0.0 with the MCUXpresso IDE and SDK.&amp;nbsp; This guide assumes you are familiar with creating and running projects using MCUXpresso and have installed the SDK for your target processor.&amp;nbsp; This procedure is tested and working with the MKV56F24.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;H2 id="toc-hId--1565342759"&gt;Project Setup&lt;/H2&gt;&lt;OL&gt;&lt;LI&gt;&amp;nbsp;Download the source package from &lt;A class="" href="https://www.nxp.com/pip/MCUBOOT" rel="nofollow noopener noreferrer" title="https://www.nxp.com/pip/MCUBOOT" target="_blank"&gt;MCU Bootloader|NXP&lt;/A&gt;&amp;nbsp;&lt;/LI&gt;&lt;LI&gt;Create a new C project in MCUXpresso for your processor with the following drivers:&lt;UL&gt;&lt;LI&gt;Required for core function:&lt;UL&gt;&lt;LI&gt;clock&lt;/LI&gt;&lt;LI&gt;port&lt;/LI&gt;&lt;LI&gt;gpio&lt;/LI&gt;&lt;LI&gt;crc&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;Optional depending on configuration:&lt;UL&gt;&lt;LI&gt;flexcan&lt;/LI&gt;&lt;LI&gt;uart&lt;/LI&gt;&lt;LI&gt;dspi&lt;/LI&gt;&lt;LI&gt;i2c&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;Delete the template 'main' file that MCUXpresso creates for you.&lt;/LI&gt;&lt;LI&gt;Delete the semihost_hardfault.c file that MCUXpresso creates for you.&lt;/LI&gt;&lt;LI&gt;Create driver sub-folders and move the driver source into them&lt;UL&gt;&lt;LI&gt;move fsl_port.c/h into drivers/port&lt;/LI&gt;&lt;LI&gt;move fsl_gpio.c/h into drivers/gpio&lt;/LI&gt;&lt;LI&gt;move fsl_crc.c/h into drivers/crc&lt;/LI&gt;&lt;LI&gt;move fsl_dspi.c/h into drivers/dspi&lt;/LI&gt;&lt;LI&gt;move fsl_flexcan.c/h into drivers/flexcan&lt;/LI&gt;&lt;LI&gt;move fsl_i2c.c/h into drivers/i2c&lt;/LI&gt;&lt;LI&gt;move fsl_uart.c/h into drivers/uart&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;Unzip the bootloader source&lt;/LI&gt;&lt;LI&gt;Copy the contents of the NXP_Kinetis_Bootloader_2_0_0/src directory to your new project's source directory.&lt;/LI&gt;&lt;LI&gt;Copy the contents of the NXP_Kinetis_Bootloader_2_0_0/targets/common/src directory to your new project's source directory&lt;/LI&gt;&lt;LI&gt;Refresh the project so MCUXpresso becomes aware of the new source&lt;/LI&gt;&lt;LI&gt;Delete or filter out the following directories from the bootloader source:&lt;UL&gt;&lt;LI&gt;source/blfwk&lt;/LI&gt;&lt;LI&gt;source/blsh&lt;/LI&gt;&lt;LI&gt;source/bm_usb&lt;/LI&gt;&lt;LI&gt;source/platform&lt;/LI&gt;&lt;LI&gt;source/usb&lt;/LI&gt;&lt;LI&gt;source/security&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;Delete or filter out the following sources&lt;UL&gt;&lt;LI&gt;source/startup/boot.s&lt;/LI&gt;&lt;LI&gt;source/startup/crt0.s&lt;/LI&gt;&lt;LI&gt;source/startup/ar_handlers_cm0p.S&lt;/LI&gt;&lt;LI&gt;source/memory/src/pattern_fill.s&lt;/LI&gt;&lt;LI&gt;source/memory/src/qspi_memory.c&lt;/LI&gt;&lt;LI&gt;source/memory/src/qspi_memory.h&lt;/LI&gt;&lt;LI&gt;source/utilities/src/bootloader_tree_stub.c&lt;/LI&gt;&lt;LI&gt;source/bootloader/src/bl_flashloader.c&lt;/LI&gt;&lt;LI&gt;source/bootloader/src/bl_misc_rom.c&lt;/LI&gt;&lt;LI&gt;source/bl_lpi2c_irq_config_common.c&lt;/LI&gt;&lt;LI&gt;source/bl_lpspi_irq_config_common.c&lt;/LI&gt;&lt;LI&gt;source/bl_spuart_irq_config_common.c&lt;/LI&gt;&lt;LI&gt;source/bl_intmux_irq.c&lt;/LI&gt;&lt;LI&gt;source/clock_common_scg.c&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;Delete or filter out the following interfaces&lt;UL&gt;&lt;LI&gt;source/bootloader/src/lpspi_peripheral_interface.c&lt;/LI&gt;&lt;LI&gt;source/bootloader/src/lpi2c_peripheral_interface.c&lt;/LI&gt;&lt;LI&gt;source/bootloader/src/lpuart_peripheral_interface.c&lt;/LI&gt;&lt;LI&gt;source/bootloader/src/spi_peripheral_interface.c&lt;/LI&gt;&lt;LI&gt;source/bootloader/src/usb_hid_msc_peripheral_interface.c&lt;/LI&gt;&lt;LI&gt;source/bootloader/src/usb_hid_peripheral_interface.c&lt;/LI&gt;&lt;LI&gt;source/bootloader/src/usb_hs_hid_peripheral_interface.c&lt;/LI&gt;&lt;LI&gt;source/bootloader/src/uart0_peripheral_interface.c&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;Choose an sram initialization based on your processor and filter/delete the other two:&lt;UL&gt;&lt;LI&gt;source/memory/src/sram_init_cm0plus.c&lt;/LI&gt;&lt;LI&gt;source/memory/src/sram_init_cm4.c&lt;/LI&gt;&lt;LI&gt;source/memory/src/sram_init_cm7.c&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;Delete or filter out the following drivers in favor of the SDK versions&lt;UL&gt;&lt;LI&gt;source/drivers/common&lt;/LI&gt;&lt;LI&gt;source/drivers/crc&lt;/LI&gt;&lt;LI&gt;source/drivers/dspi&lt;/LI&gt;&lt;LI&gt;source/drivers/flexcan&lt;/LI&gt;&lt;LI&gt;source/drivers/gpio&lt;/LI&gt;&lt;LI&gt;source/drivers/i2c&lt;/LI&gt;&lt;LI&gt;source/drivers/intmux&lt;/LI&gt;&lt;LI&gt;source/drivers/lpi2c&lt;/LI&gt;&lt;LI&gt;source/drivers/lpsci&lt;/LI&gt;&lt;LI&gt;source/drivers/lpspi&lt;/LI&gt;&lt;LI&gt;source/drivers/lpuart&lt;/LI&gt;&lt;LI&gt;source/drivers/ltc&lt;/LI&gt;&lt;LI&gt;source/drivers/mmcau&lt;/LI&gt;&lt;LI&gt;source/drivers/otfad&lt;/LI&gt;&lt;LI&gt;source/drivers/port&lt;/LI&gt;&lt;LI&gt;source/drivers/qspi&lt;/LI&gt;&lt;LI&gt;source/drivers/spi&lt;/LI&gt;&lt;LI&gt;source/drivers/uart&lt;/LI&gt;&lt;LI&gt;source/drivers/watchdog&lt;/LI&gt;&lt;LI&gt;source/drivers/wdog32&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;Choose the microseconds back-end appropriate for your processor and delete the other:&lt;UL&gt;&lt;LI&gt;source/drivers/microseconds/src/microseconds_pit.c&lt;/LI&gt;&lt;LI&gt;source/drivers/microseconds/src/microseconds_sysclk.c&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;Add the following paths to the project "GNU C" includes:&lt;UL&gt;&lt;LI&gt;source/include&lt;/LI&gt;&lt;LI&gt;source/drivers&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;LI&gt;Define the following symbols&lt;/LI&gt;&lt;/OL&gt;&lt;TABLE class="j-table jiveBorder" style="border: 1px solid #c6c6c6;" width="100%"&gt;&lt;THEAD&gt;&lt;TR style="background-color: #efefef;"&gt;&lt;TH&gt;Symbol&lt;/TH&gt;&lt;TH&gt;Value&lt;/TH&gt;&lt;/TR&gt;&lt;/THEAD&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;__DATA_RAM&lt;/TD&gt;&lt;TD&gt;_data&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;__DATA_ROM&lt;/TD&gt;&lt;TD&gt;_etext&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;__START_BSS&lt;/TD&gt;&lt;TD&gt;_bss&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;__END_BSS&lt;/TD&gt;&lt;TD&gt;_ebss&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;__STACK_TOP&lt;/TD&gt;&lt;TD&gt;_vStackTop&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;__VECTOR_RAM&lt;/TD&gt;&lt;TD&gt;__vectors_start__&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;__VECTOR_TABLE&lt;/TD&gt;&lt;TD&gt;__vectors_start__&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If the processor is a Cortex M7 you should additionally define&lt;/P&gt;&lt;TABLE class="j-table jiveBorder" style="border: 1px solid #c6c6c6;" width="100%"&gt;&lt;THEAD&gt;&lt;TR style="background-color: #efefef;"&gt;&lt;TH style="width: 51.0025%;"&gt;Symbol&lt;/TH&gt;&lt;TH style="width: 45.99%;"&gt;Value&lt;/TH&gt;&lt;/TR&gt;&lt;/THEAD&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD style="width: 51.0025%;"&gt;CPU_IS_ARM_CORTEX_M7&lt;/TD&gt;&lt;TD style="width: 45.99%;"&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;H2 id="toc-hId-177467576"&gt;Source Modification&lt;/H2&gt;&lt;P&gt;Now that the source has been pruned we need to apply a few modifications to account for the new memory layout and linker files in MCUXpresso.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;source/startup/crt0_gcc.S&lt;/P&gt;&lt;PRE style="padding-left: 30px;"&gt;@@ -43,10 +43,10 @@
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .extern SystemInit
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .extern init_data_bss
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .extern main
&lt;SPAN style="color: #ff0000;"&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .extern __StackTop&lt;/SPAN&gt;
&lt;SPAN style="color: #339966;"&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .extern _vStackTop&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .extern init_interrupts
&amp;nbsp;
&lt;SPAN style="color: #ff0000;"&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .extern __isr_vector&lt;/SPAN&gt;
&lt;SPAN style="color: #339966;"&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .extern g_pfnVectors&lt;/SPAN&gt;
&amp;nbsp;
&amp;nbsp;
&amp;nbsp;#define SCS_BASE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (0xE000E000)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*!&amp;lt; System Control Space Base Address */
@@ -59,7 +59,7 @@ Reset_Handler:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cpsid&amp;nbsp;&amp;nbsp; i
&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set VTOR register in SCB first thing we do.
&lt;SPAN style="color: #ff0000;"&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r0,=__isr_vector&lt;/SPAN&gt;
&lt;SPAN style="color: #339966;"&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r0,=g_pfnVectors&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r1,=SCB_BASE
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r0,[r1, #SCB_VTOR_OFFSET]
&amp;nbsp;
@@ -77,7 +77,7 @@ Reset_Handler:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r12,r7
&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Initialize the stack pointer
&lt;SPAN style="color: #ff0000;"&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r0,=__StackTop&lt;/SPAN&gt;
&lt;SPAN style="color: #339966;"&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ldr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r0,=_vStackTop&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; r13,r0&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;source/startup/startup.c&lt;/P&gt;&lt;PRE style="padding-left: 30px;"&gt;@@ -97,10 +97,10 @@ void init_data_bss(void)
&amp;nbsp;#if defined(__GNUC__)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; extern uint32_t __DATA_ROM[];
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; extern uint32_t __DATA_RAM[];
&lt;SPAN style="color: #ff0000;"&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp; extern char __DATA_END[];&lt;/SPAN&gt;
&lt;SPAN style="color: #339966;"&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; extern uint32_t _edata[];&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data_ram = (uint8_t *)__DATA_RAM;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data_rom = (uint8_t *)__DATA_ROM;
&lt;SPAN style="color: #ff0000;"&gt;-&amp;nbsp;&amp;nbsp;&amp;nbsp; data_rom_end = (uint8_t *)__DATA_END; // This is actually a RAM address in CodeWarrior&lt;/SPAN&gt;
&lt;SPAN style="color: #339966;"&gt;+&amp;nbsp;&amp;nbsp;&amp;nbsp; data_rom_end = (uint8_t *)(__DATA_ROM + (_edata - __DATA_RAM));&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n = data_rom_end - data_rom;
&amp;nbsp;#elif(defined(__ICCARM__))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data_ram = __section_begin(".data");&lt;/PRE&gt;&lt;P&gt;source/property/src/property.c&lt;/P&gt;&lt;PRE style="padding-left: 30px;"&gt;@@ -75,14 +75,16 @@ extern uint32_t Image$$ARM_LIB_STACK$$ZI$$Limit[];
 #define __ROM_START ((uint32_t)Image$$VECTOR_ROM$$Base)
 #define __ROM_END ((uint32_t)Image$$ER_m_text$$Limit)
 #elif(defined(__GNUC__)) // GCC
&lt;SPAN style="color: #ff0000;"&gt;-extern uint32_t __VECTOR_RAM[];&lt;/SPAN&gt;
 extern uint32_t __VECTOR_TABLE[];
&lt;SPAN style="color: #ff0000;"&gt;-extern char __DATA_END[];&lt;/SPAN&gt;
&lt;SPAN style="color: #339966;"&gt;+extern uint32_t __DATA_ROM[];&lt;/SPAN&gt;
&lt;SPAN style="color: #339966;"&gt;+extern uint32_t __DATA_RAM[];&lt;/SPAN&gt;
&lt;SPAN style="color: #339966;"&gt;+extern uint32_t _edata[];&lt;/SPAN&gt;
 extern uint32_t __STACK_TOP[];
&lt;SPAN style="color: #ff0000;"&gt;-#define __RAM_START ((uint32_t)__VECTOR_RAM)&lt;/SPAN&gt;
&lt;SPAN style="color: #ff0000;"&gt;-#define __RAM_END ((uint32_t)__STACK_TOP - 1)&lt;/SPAN&gt;
&lt;SPAN style="color: #339966;"&gt;+extern uint32_t __top_RAM[];&lt;/SPAN&gt;
&lt;SPAN style="color: #339966;"&gt;+#define __RAM_START ((uint32_t)__STACK_TOP - 1)&lt;/SPAN&gt;
&lt;SPAN style="color: #339966;"&gt;+#define __RAM_END ((uint32_t)__top_RAM)&lt;/SPAN&gt;
 #define __ROM_START ((uint32_t)__VECTOR_TABLE)
&lt;SPAN style="color: #ff0000;"&gt;-#define __ROM_END ((uint32_t)__DATA_END)&lt;/SPAN&gt;
&lt;SPAN style="color: #339966;"&gt;+#define __ROM_END ((uint32_t)(__DATA_ROM + (_edata - __DATA_RAM)))&lt;/SPAN&gt;
 #else
 #error Unknown toolchain!
 #endif // __ICCARM__&lt;/PRE&gt;&lt;H2 id="toc-hId-1920277911"&gt;Configuration&lt;/H2&gt;&lt;P&gt;Now we need to add the processor specific configuration. Create/import the following files for your device according to section 10 of the MCU Bootloader Reference Manual:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;bootloader_config.h&lt;/LI&gt;&lt;LI&gt;target_config.h&lt;/LI&gt;&lt;LI&gt;peripherals_pinmux.h&lt;/LI&gt;&lt;LI&gt;memory_map_&amp;lt;device&amp;gt;.c&lt;/LI&gt;&lt;LI&gt;hardware_init_&amp;lt;device&amp;gt;.c&lt;/LI&gt;&lt;LI&gt;peripherals_&amp;lt;device&amp;gt;.c&lt;/LI&gt;&lt;LI&gt;clock_config_&amp;lt;device&amp;gt;.c&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Additionally, if you are using FlexCAN, you may need to define a "const flexcan_timing_config_t bit_rate_table[]" in source/bootloader/src/flexcan_peripheral_interface.c&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 09 Jul 2018 18:58:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCU-Bootloader/Guide-to-Porting-MCUBOOT-v2-to-MCUXpresso/m-p/794361#M797</guid>
      <dc:creator>wilkinsw</dc:creator>
      <dc:date>2018-07-09T18:58:26Z</dc:date>
    </item>
    <item>
      <title>Re: Guide to Porting MCUBOOT v2 to MCUXpresso</title>
      <link>https://community.nxp.com/t5/MCU-Bootloader/Guide-to-Porting-MCUBOOT-v2-to-MCUXpresso/m-p/794362#M798</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello &lt;A _jive_internal="true" class="" data-content-finding="Community" data-userid="312731" data-username="atrer" href="https://community.nxp.com/people/atrer"&gt;Wilkins White&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for your sharing.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;BR&lt;/P&gt;&lt;P&gt;Alice&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 11 Jul 2018 03:14:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCU-Bootloader/Guide-to-Porting-MCUBOOT-v2-to-MCUXpresso/m-p/794362#M798</guid>
      <dc:creator>Alice_Yang</dc:creator>
      <dc:date>2018-07-11T03:14:02Z</dc:date>
    </item>
    <item>
      <title>Re: Guide to Porting MCUBOOT v2 to MCUXpresso</title>
      <link>https://community.nxp.com/t5/MCU-Bootloader/Guide-to-Porting-MCUBOOT-v2-to-MCUXpresso/m-p/794363#M799</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for the procedure.&lt;/P&gt;&lt;P&gt;On my side, I use USB to communicate with bootloader.There are extra steps to get compiling sources.&lt;/P&gt;&lt;P&gt;I am working on it.&lt;/P&gt;&lt;P&gt;I currently get an elf but it is too big in size.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If someone has managed to get bootloader compiling with USB support, I'm interrested in the procedure.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Nicolas&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Jul 2018 14:07:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCU-Bootloader/Guide-to-Porting-MCUBOOT-v2-to-MCUXpresso/m-p/794363#M799</guid>
      <dc:creator>NicolasP</dc:creator>
      <dc:date>2018-07-31T14:07:33Z</dc:date>
    </item>
    <item>
      <title>Re: Guide to Porting MCUBOOT v2 to MCUXpresso</title>
      <link>https://community.nxp.com/t5/MCU-Bootloader/Guide-to-Porting-MCUBOOT-v2-to-MCUXpresso/m-p/794364#M800</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;As I said in my previous message, the executable is too big.&lt;/P&gt;&lt;P&gt;I tried to compile the bootloader (V2.0) for MK22F51212 with KDS 3.0. I also get a too big executable.&lt;/P&gt;&lt;P&gt;By too big, I mean it is more than 0xA000 bytes in size.&lt;/P&gt;&lt;P&gt;Bootloader seeks for application information at address 0xA000 so bootloader size has to be lower than 0xA000 bytes.&lt;/P&gt;&lt;P&gt;This is the case with bootloader version 1.2 I has using till now with KDS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any pointers on how to get a correct bootloader size ?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 01 Aug 2018 08:30:42 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCU-Bootloader/Guide-to-Porting-MCUBOOT-v2-to-MCUXpresso/m-p/794364#M800</guid>
      <dc:creator>NicolasP</dc:creator>
      <dc:date>2018-08-01T08:30:42Z</dc:date>
    </item>
    <item>
      <title>Re: Guide to Porting MCUBOOT v2 to MCUXpresso</title>
      <link>https://community.nxp.com/t5/MCU-Bootloader/Guide-to-Porting-MCUBOOT-v2-to-MCUXpresso/m-p/794365#M801</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I finaly succeeded in reducing the executable size. I had to set "Optimise for size (-Os)" option in Properties/C/C++ Build/Settings/MCU C Compiler/Optimization/Optimization Level.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 01 Aug 2018 13:56:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCU-Bootloader/Guide-to-Porting-MCUBOOT-v2-to-MCUXpresso/m-p/794365#M801</guid>
      <dc:creator>NicolasP</dc:creator>
      <dc:date>2018-08-01T13:56:28Z</dc:date>
    </item>
    <item>
      <title>Re: Guide to Porting MCUBOOT v2 to MCUXpresso</title>
      <link>https://community.nxp.com/t5/MCU-Bootloader/Guide-to-Porting-MCUBOOT-v2-to-MCUXpresso/m-p/794366#M802</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am using MCUXpresso 11.1.1 In step 2, I cannot&amp;nbsp; see an option to include crc under drivers tab(where the others are).&lt;/P&gt;&lt;P&gt;Am I misunderstanding something?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;Baldur&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 25 Apr 2020 18:07:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCU-Bootloader/Guide-to-Porting-MCUBOOT-v2-to-MCUXpresso/m-p/794366#M802</guid>
      <dc:creator>baldurthorgilss</dc:creator>
      <dc:date>2020-04-25T18:07:19Z</dc:date>
    </item>
    <item>
      <title>Re: Guide to Porting MCUBOOT v2 to MCUXpresso</title>
      <link>https://community.nxp.com/t5/MCU-Bootloader/Guide-to-Porting-MCUBOOT-v2-to-MCUXpresso/m-p/1818733#M1440</link>
      <description>Is blhost working with this configuration?</description>
      <pubDate>Thu, 29 Feb 2024 11:51:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCU-Bootloader/Guide-to-Porting-MCUBOOT-v2-to-MCUXpresso/m-p/1818733#M1440</guid>
      <dc:creator>arunkannan</dc:creator>
      <dc:date>2024-02-29T11:51:59Z</dc:date>
    </item>
  </channel>
</rss>

