<?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: MK64 Program FLASH in MCX Microcontrollers</title>
    <link>https://community.nxp.com/t5/MCX-Microcontrollers/MK64-Program-FLASH/m-p/1896626#M518</link>
    <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/234346"&gt;@DINGii&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I recommend you refer to the jump code in&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-Bootloader-to-Update-Multiple-Devices-in-a-Network-for/ta-p/1119638" target="_blank"&gt;https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-Bootloader-to-Update-Multiple-Devices-in-a-Network-for/ta-p/1119638&lt;/A&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;void JumpToUserApplication(LWord userSP, LWord userStartup)&lt;BR /&gt;{&lt;BR /&gt;volatile LWord avoid_optimization;&lt;BR /&gt;avoid_optimization = userSP; //In order to avoid optimization issue when -Os&lt;BR /&gt;avoid_optimization = userStartup; //In order to avoid optimization issue when -Os&lt;/P&gt;
&lt;P&gt;// set up stack pointer&lt;BR /&gt;__asm("msr msp, r0");&lt;BR /&gt;__asm("msr psp, r0");&lt;/P&gt;
&lt;P&gt;// Jump to PC (r1)&lt;BR /&gt;__asm("mov pc, r1"); &lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;BR&lt;/P&gt;
&lt;P&gt;Alice&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 01 Jul 2024 10:43:55 GMT</pubDate>
    <dc:creator>Alice_Yang</dc:creator>
    <dc:date>2024-07-01T10:43:55Z</dc:date>
    <item>
      <title>MK64 Program FLASH</title>
      <link>https://community.nxp.com/t5/MCX-Microcontrollers/MK64-Program-FLASH/m-p/1894796#M510</link>
      <description>&lt;DIV&gt;Question 1:&lt;/DIV&gt;&lt;DIV&gt;Hi, I use MK64FX512, now I want to divide the program space into two blocks, the first block is located in 0x00-0x2ffff, the second block is located in 0x3000-0x80000, jump from the first block to the second block with the following program:&lt;/DIV&gt;&lt;DIV&gt;typedef void (*iapfun) (void);&lt;/DIV&gt;&lt;DIV&gt;iapfun jump2app;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void msrmsp (unsigned int addr)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;__asm volatile (&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;"MSR MSP, r0 n"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;"BX r14 n"&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void iap_load_app (unsigned int appxaddr)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; unsigned long tmp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;tmp = (*(volatile unsigned int *)appxaddr) &amp;amp; 0x2ff00000;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; tmp = tmp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if (tmp == 0x20000000) {&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;jump2app = (iapfun)*(volatile unsigned int *)(appxaddr + 4);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;msrmsp (*(volatile unsigned int *)appxaddr);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;jump2app(); &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Call iap_load_app (0x3000), 0x3000 already have a program, the above program is no problem to use in M4 of ST and TI, but the program of the 0x3000 cannot be run in MK64.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Question 2:&lt;/DIV&gt;&lt;DIV&gt;CAN THE PROGRAM RUN 0x10000000 SECOND FLASH?&lt;/DIV&gt;</description>
      <pubDate>Thu, 27 Jun 2024 03:04:08 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCX-Microcontrollers/MK64-Program-FLASH/m-p/1894796#M510</guid>
      <dc:creator>DINGii</dc:creator>
      <dc:date>2024-06-27T03:04:08Z</dc:date>
    </item>
    <item>
      <title>Re: MK64 Program FLASH</title>
      <link>https://community.nxp.com/t5/MCX-Microcontrollers/MK64-Program-FLASH/m-p/1896626#M518</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/234346"&gt;@DINGii&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I recommend you refer to the jump code in&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-Bootloader-to-Update-Multiple-Devices-in-a-Network-for/ta-p/1119638" target="_blank"&gt;https://community.nxp.com/t5/Kinetis-Microcontrollers/Kinetis-Bootloader-to-Update-Multiple-Devices-in-a-Network-for/ta-p/1119638&lt;/A&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;void JumpToUserApplication(LWord userSP, LWord userStartup)&lt;BR /&gt;{&lt;BR /&gt;volatile LWord avoid_optimization;&lt;BR /&gt;avoid_optimization = userSP; //In order to avoid optimization issue when -Os&lt;BR /&gt;avoid_optimization = userStartup; //In order to avoid optimization issue when -Os&lt;/P&gt;
&lt;P&gt;// set up stack pointer&lt;BR /&gt;__asm("msr msp, r0");&lt;BR /&gt;__asm("msr psp, r0");&lt;/P&gt;
&lt;P&gt;// Jump to PC (r1)&lt;BR /&gt;__asm("mov pc, r1"); &lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;BR&lt;/P&gt;
&lt;P&gt;Alice&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 01 Jul 2024 10:43:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MCX-Microcontrollers/MK64-Program-FLASH/m-p/1896626#M518</guid>
      <dc:creator>Alice_Yang</dc:creator>
      <dc:date>2024-07-01T10:43:55Z</dc:date>
    </item>
  </channel>
</rss>

