<?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: Merging custom bootloader and non-xip application in i.MX RT Crossover MCUs</title>
    <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Merging-custom-bootloader-and-non-xip-application/m-p/2030918#M33247</link>
    <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/194213"&gt;@Muhammet&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you for your response. Do you need to copy M7 code to SRAM on runtime? If yes, the alternative is to create your secondary bootloader code. I say this because the bootROM is capable to copy whole M7 application from FLASH to SRAM or SDRAM, but this is only&amp;nbsp; prior to aplication boot.&amp;nbsp; This process is used to load and execute an application that will boot on a volatile memory (like SDRAM, SRAM) and will have its code stored in non-volatile memory.&amp;nbsp; We can call this a NON-XIP image.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We&amp;nbsp; provide two bootloader sample codes in the SDK ( flashloader, MCUboot_opensource),&amp;nbsp; and&amp;nbsp; the&amp;nbsp;&amp;nbsp;&lt;A href="https://github.com/nxp-mcuxpresso/sbl" target="_self"&gt;NXP SBL&lt;/A&gt;. But they migth be more complex than what you may need.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I hope this helps, if you are still having questions, please let me know.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Diego&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 20 Jan 2025 23:42:09 GMT</pubDate>
    <dc:creator>diego_charles</dc:creator>
    <dc:date>2025-01-20T23:42:09Z</dc:date>
    <item>
      <title>Merging custom bootloader and non-xip application</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Merging-custom-bootloader-and-non-xip-application/m-p/2029741#M33222</link>
      <description>&lt;P&gt;&lt;SPAN&gt;We are utilizing the i.MXRT 1176 MCU, and we require the M4 core to have read and write access to the flash memory. When the application operates in XIP mode from the flash and the M4 core attempts to write to the flash, the application crashes. (expected, since the M7 runs in XIP mode from the flash). To solve this problem, I followed the steps outlined in NXP's application note &lt;A href="https://www.nxp.com/docs/en/application-note/AN14069.pdf" target="_blank"&gt;How to Enable Non-XIP Boot on i.MX RT Series EVK&lt;/A&gt;&amp;nbsp;and successfully relocated the application code to RAM(non-xip mode&lt;/SPAN&gt;&lt;SPAN&gt;). This approach prevented any issues when the M4 core wrote to the flash.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;The current issue is: How can I merge the non-XIP application code with the custom bootloader we've developed?&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 17 Jan 2025 12:04:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Merging-custom-bootloader-and-non-xip-application/m-p/2029741#M33222</guid>
      <dc:creator>Muhammet</dc:creator>
      <dc:date>2025-01-17T12:04:48Z</dc:date>
    </item>
    <item>
      <title>Re: Merging custom bootloader and non-xip application</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Merging-custom-bootloader-and-non-xip-application/m-p/2029986#M33226</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/194213"&gt;@Muhammet&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you for contacting us ! Is the custom bootloader running from XIP and from M4?&lt;/P&gt;
&lt;P&gt;I use to rellocate functions to RAM or any code area using macros and creating specific sections,&amp;nbsp; lets say that you want to place a function like write_flash()&amp;nbsp; into a internal OCRAM. So, as option 1 we can use compiler macros to place a function into OCRAM or any other RAM area you would like.&lt;/P&gt;
&lt;P&gt;As option 2, there are also linkscripts, that let you place objects and code into certain areas of the memory. For example move text and data of&amp;nbsp; fsl_flexspi.c, clocks_.c text to&amp;nbsp; located into OCRAM.&amp;nbsp; Could you detail the kind of advice you need?&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="diego_charles_0-1737151551912.png" style="width: 645px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/320134iCC1D0BD855CD0BFB/image-dimensions/645x338?v=v2" width="645" height="338" role="button" title="diego_charles_0-1737151551912.png" alt="diego_charles_0-1737151551912.png" /&gt;&lt;span class="lia-inline-image-caption" onclick="event.preventDefault();"&gt;diego_charles_0-1737151551912.png&lt;/span&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;I hope to be helpful&lt;/P&gt;
&lt;P&gt;Diego&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 17 Jan 2025 22:06:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Merging-custom-bootloader-and-non-xip-application/m-p/2029986#M33226</guid>
      <dc:creator>diego_charles</dc:creator>
      <dc:date>2025-01-17T22:06:32Z</dc:date>
    </item>
    <item>
      <title>Re: Merging custom bootloader and non-xip application</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Merging-custom-bootloader-and-non-xip-application/m-p/2030286#M33227</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/89833"&gt;@diego_charles&lt;/a&gt;&amp;nbsp;,&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;The bootloader can run from RAM or flash. M7 and M4 should run from RAM. Do I need a secondary bootloader that relocates the M7 code to RAM to do this? If so, is there an example and documentation for this? Or is there an alternative solution?&lt;/P&gt;</description>
      <pubDate>Mon, 20 Jan 2025 05:39:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Merging-custom-bootloader-and-non-xip-application/m-p/2030286#M33227</guid>
      <dc:creator>Muhammet</dc:creator>
      <dc:date>2025-01-20T05:39:57Z</dc:date>
    </item>
    <item>
      <title>Re: Merging custom bootloader and non-xip application</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Merging-custom-bootloader-and-non-xip-application/m-p/2030918#M33247</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/194213"&gt;@Muhammet&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you for your response. Do you need to copy M7 code to SRAM on runtime? If yes, the alternative is to create your secondary bootloader code. I say this because the bootROM is capable to copy whole M7 application from FLASH to SRAM or SDRAM, but this is only&amp;nbsp; prior to aplication boot.&amp;nbsp; This process is used to load and execute an application that will boot on a volatile memory (like SDRAM, SRAM) and will have its code stored in non-volatile memory.&amp;nbsp; We can call this a NON-XIP image.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We&amp;nbsp; provide two bootloader sample codes in the SDK ( flashloader, MCUboot_opensource),&amp;nbsp; and&amp;nbsp; the&amp;nbsp;&amp;nbsp;&lt;A href="https://github.com/nxp-mcuxpresso/sbl" target="_self"&gt;NXP SBL&lt;/A&gt;. But they migth be more complex than what you may need.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I hope this helps, if you are still having questions, please let me know.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Diego&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 20 Jan 2025 23:42:09 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Merging-custom-bootloader-and-non-xip-application/m-p/2030918#M33247</guid>
      <dc:creator>diego_charles</dc:creator>
      <dc:date>2025-01-20T23:42:09Z</dc:date>
    </item>
  </channel>
</rss>

