<?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>i.MX RT Crossover MCUsのトピックRe: Relocate vector table to ITCM</title>
    <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Relocate-vector-table-to-ITCM/m-p/1021876#M6861</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;A _jive_internal="true" data-content-finding="Community" data-userid="301792" data-username="leonidshigris" href="https://community.nxp.com/people/leonidshigris"&gt;Leonid Shigris&lt;/A&gt;,&lt;/P&gt;&lt;P&gt;&amp;nbsp; If you want to run the code in the ITCM, you can refer to the NXP SDK for RT1060, which can be downloaded from this link:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_2.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/96466iB8D4981AC712DB06/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_2.png" alt="pastedImage_2.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Debug – Compiler optimization is set to low, and debug information is generated for the executable. The linker&lt;BR /&gt;file is RAM linker, where text and data section is put in internal TCM.&lt;/P&gt;&lt;P&gt;You just need to select the debug, then build the project, you will find the related linker file.&lt;/P&gt;&lt;P&gt;The SDK download link:&lt;/P&gt;&lt;P&gt;&lt;A class="link-titled" href="https://mcuxpresso.nxp.com/en/welcome" title="https://mcuxpresso.nxp.com/en/welcome"&gt;Welcome | MCUXpresso SDK Builder&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Wish it helps you!&lt;/P&gt;&lt;P&gt;Have a great day,&lt;BR /&gt;Kerry&lt;/P&gt;&lt;P style="min- padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-------------------------------------------------------------------------------&lt;BR /&gt;Note:&lt;BR /&gt;- If this post answers your question, please click the "Mark Correct" button. Thank you!&lt;/P&gt;&lt;P style="min- padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;- We are following threads for 7 weeks after the last post, later replies are ignored&lt;BR /&gt; Please open a new thread and refer to the closed one, if you have a related question at a later point in time.&lt;BR /&gt;-------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 11 Dec 2019 08:20:48 GMT</pubDate>
    <dc:creator>kerryzhou</dc:creator>
    <dc:date>2019-12-11T08:20:48Z</dc:date>
    <item>
      <title>Relocate vector table to ITCM</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Relocate-vector-table-to-ITCM/m-p/1021875#M6860</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;In our project I want to examine the case, when vector table relocated to RAM (ITCM region 0x00000000)&lt;/P&gt;&lt;P&gt;My evaluation board: MIMXRT1060-EVK.&lt;/P&gt;&lt;P&gt;The application is allocated on QSPI.&lt;/P&gt;&lt;P&gt;My workbench: IAR 8.32.2&lt;/P&gt;&lt;P&gt;Attached original icf file.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What changes is required to&amp;nbsp;move the vector table to RAM place?&lt;/P&gt;&lt;P&gt;Any example?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;int main(void)&lt;BR /&gt;{&lt;BR /&gt;/* Init board hardware. */&lt;BR /&gt; BOARD_ConfigMPU();&lt;BR /&gt; BOARD_InitPins();&lt;BR /&gt; BOARD_BootClockRUN();&lt;BR /&gt; BOARD_InitDebugConsole();&lt;/P&gt;&lt;P&gt;BOARD_InitBootPeripherals();&lt;/P&gt;&lt;P&gt;.....&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Kind Regards,&lt;/P&gt;&lt;P&gt;Leon.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 08 Dec 2019 15:25:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Relocate-vector-table-to-ITCM/m-p/1021875#M6860</guid>
      <dc:creator>leonidshigris</dc:creator>
      <dc:date>2019-12-08T15:25:22Z</dc:date>
    </item>
    <item>
      <title>Re: Relocate vector table to ITCM</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Relocate-vector-table-to-ITCM/m-p/1021876#M6861</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;A _jive_internal="true" data-content-finding="Community" data-userid="301792" data-username="leonidshigris" href="https://community.nxp.com/people/leonidshigris"&gt;Leonid Shigris&lt;/A&gt;,&lt;/P&gt;&lt;P&gt;&amp;nbsp; If you want to run the code in the ITCM, you can refer to the NXP SDK for RT1060, which can be downloaded from this link:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_2.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/96466iB8D4981AC712DB06/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_2.png" alt="pastedImage_2.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Debug – Compiler optimization is set to low, and debug information is generated for the executable. The linker&lt;BR /&gt;file is RAM linker, where text and data section is put in internal TCM.&lt;/P&gt;&lt;P&gt;You just need to select the debug, then build the project, you will find the related linker file.&lt;/P&gt;&lt;P&gt;The SDK download link:&lt;/P&gt;&lt;P&gt;&lt;A class="link-titled" href="https://mcuxpresso.nxp.com/en/welcome" title="https://mcuxpresso.nxp.com/en/welcome"&gt;Welcome | MCUXpresso SDK Builder&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Wish it helps you!&lt;/P&gt;&lt;P&gt;Have a great day,&lt;BR /&gt;Kerry&lt;/P&gt;&lt;P style="min- padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-------------------------------------------------------------------------------&lt;BR /&gt;Note:&lt;BR /&gt;- If this post answers your question, please click the "Mark Correct" button. Thank you!&lt;/P&gt;&lt;P style="min- padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;- We are following threads for 7 weeks after the last post, later replies are ignored&lt;BR /&gt; Please open a new thread and refer to the closed one, if you have a related question at a later point in time.&lt;BR /&gt;-------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 11 Dec 2019 08:20:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Relocate-vector-table-to-ITCM/m-p/1021876#M6861</guid>
      <dc:creator>kerryzhou</dc:creator>
      <dc:date>2019-12-11T08:20:48Z</dc:date>
    </item>
    <item>
      <title>Re: Relocate vector table to ITCM</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Relocate-vector-table-to-ITCM/m-p/1021877#M6862</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Kerry,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I mean that my code run from QSPI. In main (), before all bsp initializatons, I want to replace only the vector table from QSPI to ITCM.&amp;nbsp; Is it possible? if yes, how?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Kind Regards,&lt;/P&gt;&lt;P&gt;Leon.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 11 Dec 2019 08:48:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Relocate-vector-table-to-ITCM/m-p/1021877#M6862</guid>
      <dc:creator>leonidshigris</dc:creator>
      <dc:date>2019-12-11T08:48:43Z</dc:date>
    </item>
    <item>
      <title>Re: Relocate vector table to ITCM</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Relocate-vector-table-to-ITCM/m-p/1021878#M6863</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;SPAN class=""&gt;&lt;A _jive_internal="true" data-content-finding="Community" data-userid="301792" data-username="leonidshigris" href="https://community.nxp.com/people/leonidshigris"&gt;Leonid Shigris, &lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; You want to download the code to the QSPI, after boot, the code copy to the ITCM and run from the ITCM, right?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; If yes, I suggest you to use the free IDE, MCUXPresso IDE, it will be more easy to realize it.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&amp;nbsp; You can configure the linker file like this:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_1.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/96564i124A8DB3CAD8454B/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_1.png" alt="pastedImage_1.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_2.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/96565iF5691B826213021E/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_2.png" alt="pastedImage_2.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;Then the project will be download to the external QSPI and run from the ITCM.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&amp;nbsp;I also attach my MCUXPresso IDE project for your reference.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;The MCUXpresso IDE can be downloaded from the official website:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;A href="http://www.nxp.com/mcuxpresso"&gt;www.nxp.com/mcuxpresso&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;IAR will be not easy to realize this function, that's why I suggest you to use the MCUXPresso IDE.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;You can try it.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;If you still have questions about it, please kindly let me know.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Wish it helps you!&lt;/P&gt;&lt;P&gt;Have a great day,&lt;BR /&gt;Kerry&lt;/P&gt;&lt;P style="min- padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-------------------------------------------------------------------------------&lt;BR /&gt;Note:&lt;BR /&gt;- If this post answers your question, please click the "Mark Correct" button. Thank you!&lt;/P&gt;&lt;P style="min- padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;- We are following threads for 7 weeks after the last post, later replies are ignored&lt;BR /&gt; Please open a new thread and refer to the closed one, if you have a related question at a later point in time.&lt;BR /&gt;-------------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 12 Dec 2019 03:03:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Relocate-vector-table-to-ITCM/m-p/1021878#M6863</guid>
      <dc:creator>kerryzhou</dc:creator>
      <dc:date>2019-12-12T03:03:44Z</dc:date>
    </item>
    <item>
      <title>Re: Relocate vector table to ITCM</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Relocate-vector-table-to-ITCM/m-p/1021879#M6864</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Kerry,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you for the info.&lt;/P&gt;&lt;P&gt;I'll try this.&lt;/P&gt;&lt;P&gt;I want only to emphasize, I'm not relocate my code from external flash (QSPI) to ITCM, only vector table. I want to do that only examine if I have performance improvement.&amp;nbsp;&lt;/P&gt;&lt;P&gt;From your experience,&amp;nbsp;is there any significance to this action?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;Leon.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 12 Dec 2019 07:47:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Relocate-vector-table-to-ITCM/m-p/1021879#M6864</guid>
      <dc:creator>leonidshigris</dc:creator>
      <dc:date>2019-12-12T07:47:21Z</dc:date>
    </item>
    <item>
      <title>Re: Relocate vector table to ITCM</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Relocate-vector-table-to-ITCM/m-p/1021880#M6865</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;SPAN class=""&gt;&lt;A _jive_internal="true" class="" data-content-finding="Community" data-userid="301792" data-username="leonidshigris" href="https://community.nxp.com/people/leonidshigris"&gt;Leonid Shigris&lt;/A&gt;&lt;/SPAN&gt;,&lt;/P&gt;&lt;P&gt;&amp;nbsp; My code will copy all your app code which located in the external QSPI to the internal ITCM, not just vector table.&lt;/P&gt;&lt;P&gt;&amp;nbsp; You can check it, whether this method is useful to you.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;Kerry&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 13 Dec 2019 02:53:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Relocate-vector-table-to-ITCM/m-p/1021880#M6865</guid>
      <dc:creator>kerryzhou</dc:creator>
      <dc:date>2019-12-13T02:53:02Z</dc:date>
    </item>
    <item>
      <title>Re: Relocate vector table to ITCM</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Relocate-vector-table-to-ITCM/m-p/1021881#M6866</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I would also like to know how to swap out the interrupt vector table, but at run time. I have a factory image, running from QSPI, that will download an application and save in to a different part of the same QSPI flash. I then want to run the downloaded image, which uses a different vector table. If the application causes a reboot, the factory image will again run and decide how to handle the reboot.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 24 Feb 2020 17:42:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Relocate-vector-table-to-ITCM/m-p/1021881#M6866</guid>
      <dc:creator>jeffthompson</dc:creator>
      <dc:date>2020-02-24T17:42:16Z</dc:date>
    </item>
    <item>
      <title>Re: Relocate vector table to ITCM</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Relocate-vector-table-to-ITCM/m-p/1021882#M6867</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;To relocate the vector table the following can be done&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new, courier, monospace;"&gt;memcpy(new_location, original_location, sizeof(vector table));&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new, courier, monospace;"&gt;VTOR = new_location;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;New location can be anywhere in RAM (best in ITC) and should be aligned to a 512 byte boundary). The area should not be used by other storage - the easiest way to control this is to locate it at the start of ITC and change the start of the RAM in the linker script file from 0x00000000 to 0x00000300. 0x300 ensures that there is enough space for the largest vector table in any of the i.MX RT parts..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;P&gt;&lt;EM&gt;[uTasker project developer for Kinetis and i.MX RT]&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://www.utasker.com/iMX/RT1060.html" target="test_blank"&gt;https://www.utasker.com/iMX/RT1060.html&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 25 Feb 2020 11:53:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Relocate-vector-table-to-ITCM/m-p/1021882#M6867</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2020-02-25T11:53:45Z</dc:date>
    </item>
    <item>
      <title>Re: Relocate vector table to ITCM</title>
      <link>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Relocate-vector-table-to-ITCM/m-p/1446598#M19251</link>
      <description>&lt;P&gt;I know this question already is answered, but maybe for "the next guy" who tries to achieve the same. I did the following:&lt;/P&gt;&lt;P&gt;1 - disable managed linker script and move the generated linker script&lt;/P&gt;&lt;P&gt;2 - adjust the linker script to your needs&lt;/P&gt;&lt;P&gt;3 - Adjust the startup code so that stuff gets copied over and VTOR pointer points to new location&lt;/P&gt;&lt;H2&gt;1 - disable managed linker script and add some extra variables in the linker script&lt;/H2&gt;&lt;P&gt;Before you do anything, make sure you compiled your program so that you can steal the generated working linker scripts sitting in the Debug folder of your project.&lt;/P&gt;&lt;P&gt;Then afterwards, right click on project and open properties.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bp1979_0-1650477609546.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/177513i8627AF5D0252FC3C/image-size/medium?v=v2&amp;amp;px=400" role="button" title="bp1979_0-1650477609546.png" alt="bp1979_0-1650477609546.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;In the same window, adjust the location of the linker script one folder up so that it no longer sits in Debug folder (which gets nuked when you clean the app, and you would loose your changes).&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bp1979_1-1650477678775.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/177514i729D2AE3B057BB14/image-size/medium?v=v2&amp;amp;px=400" role="button" title="bp1979_1-1650477678775.png" alt="bp1979_1-1650477678775.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Optionally, you can also merge the three generated linker scripts into one, for me it doesn't add anything to have the linker script scattered over three files. If you choose to leave them separated, you also need to fix the include paths of the 2 included linker scripts.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Then simply drag the linker script (or if you didn't merge, linker scripts) from Debug folder one folder up (in the root of the project).&lt;/P&gt;&lt;H2&gt;2 - adjust the linker script to your needs&lt;/H2&gt;&lt;P&gt;If you open the linker script in its new location, you'll see the part where stuff gets added to .text.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="bp1979_2-1650478193977.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/177515i62095E5582E13044/image-size/medium?v=v2&amp;amp;px=400" role="button" title="bp1979_2-1650478193977.png" alt="bp1979_2-1650478193977.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;I preferred to have the vector table in its own section. That's not mandatory of course, so edit as your please. I changed it to the following:&lt;/P&gt;&lt;LI-CODE lang="cpp"&gt;    .vector : ALIGN(4)
    {
        __vector_table_flash_start__ = ADDR(.vector) ;
        
        KEEP(*(.isr_vector))
 
        __vector_table_flash_end__ = ABSOLUTE(.) ;
        . = ALIGN(4) ;
         
    } &amp;gt;SRAM_ITC AT&amp;gt;PROGRAM_FLASH&lt;/LI-CODE&gt;&lt;P&gt;I added this, right after the boot_hdr part.&amp;nbsp;&lt;/P&gt;&lt;P&gt;So what we do here, is we defined some linker variables which will get the address location at the start of the vector tables, and one at the end. Nice would be to also add LOADADDR(.vector) to get the address of the part in ITC memory, but since it's 0x0 anyway I didn't bother.&lt;/P&gt;&lt;P&gt;PS: make sure you properly clean up the KEEP(*(.isr_vector)) from the .text section, since it has no purpose anymore there. The linker won't duplicate the vector, but it's confusing to leave in "dead code".&lt;/P&gt;&lt;P&gt;That's it, off to the start up code&lt;/P&gt;&lt;H2&gt;3 - Adjust the startup code so that stuff gets copied over and VTOR pointer points to new location&lt;/H2&gt;&lt;P&gt;This looks a bit bloated, but since the ResetHandler (aka ResetISR) is a naked attributed function, I am a bit scared to define variables on the stack. I'm a bit scared to write any code, since i don't exactly know where the limitations lie, but at least the following will do the trick &lt;LI-EMOJI id="lia_winking-face" title=":winking_face:"&gt;&lt;/LI-EMOJI&gt;&lt;/P&gt;&lt;P&gt;Define the extern variables, and whatever we need as stack variable, we'll just declare them globally instead.&lt;/P&gt;&lt;LI-CODE lang="cpp"&gt;volatile extern unsigned int __vector_table_flash_start__;
volatile extern unsigned int __vector_table_flash_end__;

unsigned int *vector_table_flash;
unsigned int *vector_table_itc;
unsigned int index;
unsigned int vector_table_size;&lt;/LI-CODE&gt;&lt;P&gt;And then, inside the ResetISR we set some variables and copy the data from flash to ITC.&lt;/P&gt;&lt;LI-CODE lang="cpp"&gt;    //
    // Copy vector table to ram
    //
    vector_table_flash = const_cast&amp;lt;unsigned int*&amp;gt;(&amp;amp;__vector_table_flash_start__);
    vector_table_itc = reinterpret_cast&amp;lt;unsigned int*&amp;gt;(0x0);
    vector_table_size = static_cast&amp;lt;unsigned int&amp;gt;(&amp;amp;__vector_table_flash_end__ - &amp;amp;__vector_table_flash_start__);

    for (index = 0u; index &amp;lt; vector_table_size; ++index)
    {
        vector_table_itc[index] = vector_table_flash[index];
    }&lt;/LI-CODE&gt;&lt;P&gt;The same code with some existing code to give a better idea where you should make your changes&lt;/P&gt;&lt;LI-CODE lang="cpp"&gt;// Volatile for ease of debugging, stuff tends to get optimized out which is annoying :). We'll nuke the volatile-ness with a const_cast (iewww).
volatile extern unsigned int __vector_table_flash_start__;
volatile extern unsigned int __vector_table_flash_end__;

// Some local variables. Not sure if this has to be global. You could make them static but meh, I didn't really care
unsigned int *vector_table_flash;
unsigned int *vector_table_itc;
unsigned int index;
unsigned int vector_table_size;

extern unsigned int __data_section_table;
extern unsigned int __data_section_table_end;
extern unsigned int __bss_section_table;
extern unsigned int __bss_section_table_end;

//*****************************************************************************
// Reset entry point for your code.
// Sets up a simple runtime environment and initializes the C/C++
// library.
//*****************************************************************************
__attribute__ ((naked, section(".after_vectors.reset")))
void ResetISR(void) {
    // Disable interrupts
    __asm volatile ("cpsid i");
    __asm volatile ("MSR MSP, %0" : : "r" (&amp;amp;_vStackTop) : );

    //
    // Copy vector table to ram
    //
    vector_table_flash = const_cast&amp;lt;unsigned int*&amp;gt;(&amp;amp;__vector_table_flash_start__);
    vector_table_itc = reinterpret_cast&amp;lt;unsigned int*&amp;gt;(0x0);
    vector_table_size = static_cast&amp;lt;unsigned int&amp;gt;(&amp;amp;__vector_table_flash_end__ - &amp;amp;__vector_table_flash_start__);

    for (index = 0u; index &amp;lt; vector_table_size; ++index)
    {
        __asm volatile ("nop");
        vector_table_itc[index] = vector_table_flash[index];
    }&lt;/LI-CODE&gt;&lt;P&gt;Almost done... one more thing to do. If you go to the implementation of the SystemInit somewhere half way through the ResetISR function, the IDE will bring you to the generated device/system_MIMXRT_1024.cpp.&amp;nbsp;&lt;/P&gt;&lt;P&gt;In the SystemInit function, the VTOR gets it's final location. Since we just copied the vector table to ITC, we need to set the VTOR to 0x0.&lt;/P&gt;&lt;LI-CODE lang="cpp"&gt;#if defined(__MCUXPRESSO)
    //extern uint32_t g_pfnVectors[];  /* Vector table defined in startup code */
    //SCB-&amp;gt;VTOR = (uint32_t)g_pfnVectors;
    SCB-&amp;gt;VTOR = (uint32_t)0x0;
#endif&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If you now compile, upload and start debugging, you be able to step through startup code, and eventually see the jump to main. Try any peripheral to see if the interrupt handlers still work. I fired up freertos since it relies on a hardware timer.&amp;nbsp;&lt;/P&gt;&lt;P&gt;"It works on my board" .&lt;/P&gt;&lt;P&gt;Hope it helps somebody, some day&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 20 Apr 2022 18:29:42 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-RT-Crossover-MCUs/Relocate-vector-table-to-ITCM/m-p/1446598#M19251</guid>
      <dc:creator>bp1979</dc:creator>
      <dc:date>2022-04-20T18:29:42Z</dc:date>
    </item>
  </channel>
</rss>

