<?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 Update K82 MPU regions during runtime in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Update-K82-MPU-regions-during-runtime/m-p/780372#M47522</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;I try to study usage of K82 MPU for FreeRTOS like OS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I can see in original FreeRTOS MPU few places where all 4 regions of generic ARM MPU is updated on fly.&lt;/P&gt;&lt;P&gt;Prepared valued are copied directly to MPU registers.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* ARM generic */&lt;BR /&gt; " ldr r2, =0xe000ed9c \n" /* Region Base Address register. */&lt;BR /&gt; " ldmia r1!, {r4-r11} \n"&amp;nbsp; &amp;nbsp; &amp;nbsp;/* Read 4 sets of MPU registers. */&lt;BR /&gt; " stmia r2!, {r4-r11} \n"&amp;nbsp; &amp;nbsp; &amp;nbsp;/* Write 4 sets of MPU registers. */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In K82 case, one region is represented by 4 dwords and prepared MPU region values from TCB ( for 4 regions ) can&lt;/P&gt;&lt;P&gt;be copied by operations like this :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* K82 */&lt;BR /&gt; " ldr r2, =0x4000D410 \n" /* Region Base Address register. */ // 1,2&lt;BR /&gt; " ldmia r1!, {r4-r11} \n"&amp;nbsp; &amp;nbsp; &amp;nbsp; /* Read 2 sets of MPU registers. */&lt;BR /&gt; " stmia r2!, {r4-r11} \n"&amp;nbsp; &amp;nbsp; &amp;nbsp; /* Write 2 sets of MPU registers. */&lt;BR /&gt; " ldr r2, =0x4000D430 \n"&amp;nbsp; /* Region Base Address register. */ // 3,4&lt;BR /&gt; " ldmia r1!, {r4-r11} \n"&amp;nbsp; &amp;nbsp; &amp;nbsp; /* Read 2 sets of MPU registers. */&lt;BR /&gt; " stmia r2!, {r4-r11} \n"&amp;nbsp; &amp;nbsp; &amp;nbsp; /* Write 2 sets of MPU registers. */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In case of ARM, priviliged/nonprivileged mode is switched in control register.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But what in case of K82 ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;How I can update MPU region entries during runtime ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Should I also disable MPU or current way of FreeRTOS is&amp;nbsp;sufficient for K82 as well ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I can see the next MPU region scheme :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Region 0 is reserved for debug purposes and should be invalidated when it is no need.&lt;/P&gt;&lt;P&gt;Regions 1-4 are preconfigured one time for protect static flash/data regions&lt;/P&gt;&lt;P&gt;Regions 5-8 are updated during runtime when task switch happens.&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Regions 9-12 are&amp;nbsp;invalidated at start up and set to 0.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;So MPU is always enabled.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;How-to properly and in what mode update regions&amp;nbsp; 5-8 ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you !&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Eugene&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 13 Jun 2018 18:37:02 GMT</pubDate>
    <dc:creator>EugeneHiihtaja</dc:creator>
    <dc:date>2018-06-13T18:37:02Z</dc:date>
    <item>
      <title>Update K82 MPU regions during runtime</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Update-K82-MPU-regions-during-runtime/m-p/780372#M47522</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;I try to study usage of K82 MPU for FreeRTOS like OS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I can see in original FreeRTOS MPU few places where all 4 regions of generic ARM MPU is updated on fly.&lt;/P&gt;&lt;P&gt;Prepared valued are copied directly to MPU registers.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* ARM generic */&lt;BR /&gt; " ldr r2, =0xe000ed9c \n" /* Region Base Address register. */&lt;BR /&gt; " ldmia r1!, {r4-r11} \n"&amp;nbsp; &amp;nbsp; &amp;nbsp;/* Read 4 sets of MPU registers. */&lt;BR /&gt; " stmia r2!, {r4-r11} \n"&amp;nbsp; &amp;nbsp; &amp;nbsp;/* Write 4 sets of MPU registers. */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In K82 case, one region is represented by 4 dwords and prepared MPU region values from TCB ( for 4 regions ) can&lt;/P&gt;&lt;P&gt;be copied by operations like this :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* K82 */&lt;BR /&gt; " ldr r2, =0x4000D410 \n" /* Region Base Address register. */ // 1,2&lt;BR /&gt; " ldmia r1!, {r4-r11} \n"&amp;nbsp; &amp;nbsp; &amp;nbsp; /* Read 2 sets of MPU registers. */&lt;BR /&gt; " stmia r2!, {r4-r11} \n"&amp;nbsp; &amp;nbsp; &amp;nbsp; /* Write 2 sets of MPU registers. */&lt;BR /&gt; " ldr r2, =0x4000D430 \n"&amp;nbsp; /* Region Base Address register. */ // 3,4&lt;BR /&gt; " ldmia r1!, {r4-r11} \n"&amp;nbsp; &amp;nbsp; &amp;nbsp; /* Read 2 sets of MPU registers. */&lt;BR /&gt; " stmia r2!, {r4-r11} \n"&amp;nbsp; &amp;nbsp; &amp;nbsp; /* Write 2 sets of MPU registers. */&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In case of ARM, priviliged/nonprivileged mode is switched in control register.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But what in case of K82 ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;How I can update MPU region entries during runtime ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Should I also disable MPU or current way of FreeRTOS is&amp;nbsp;sufficient for K82 as well ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I can see the next MPU region scheme :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Region 0 is reserved for debug purposes and should be invalidated when it is no need.&lt;/P&gt;&lt;P&gt;Regions 1-4 are preconfigured one time for protect static flash/data regions&lt;/P&gt;&lt;P&gt;Regions 5-8 are updated during runtime when task switch happens.&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Regions 9-12 are&amp;nbsp;invalidated at start up and set to 0.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;So MPU is always enabled.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;How-to properly and in what mode update regions&amp;nbsp; 5-8 ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you !&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Eugene&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 13 Jun 2018 18:37:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Update-K82-MPU-regions-during-runtime/m-p/780372#M47522</guid>
      <dc:creator>EugeneHiihtaja</dc:creator>
      <dc:date>2018-06-13T18:37:02Z</dc:date>
    </item>
    <item>
      <title>Re: Update K82 MPU regions during runtime</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Update-K82-MPU-regions-during-runtime/m-p/780373#M47523</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;Please look 23.7 at page 501 and 502 in reference manual.&lt;/P&gt;&lt;P&gt;If the MPU register address is not protected, you can modify it either in supervisor mode or user mode. Otherwise you have to obey the setting in MPU register.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Jing&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Jun 2018 09:15:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Update-K82-MPU-regions-during-runtime/m-p/780373#M47523</guid>
      <dc:creator>jingpan</dc:creator>
      <dc:date>2018-06-21T09:15:47Z</dc:date>
    </item>
    <item>
      <title>Re: Update K82 MPU regions during runtime</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Update-K82-MPU-regions-during-runtime/m-p/780374#M47524</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Jing Pan !&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So MPU registers area should be enabled for USER in region and also via AIPS.&lt;/P&gt;&lt;P&gt;Looks like MPU is not enought. Is this so ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Eugene&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Jun 2018 10:26:19 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Update-K82-MPU-regions-during-runtime/m-p/780374#M47524</guid>
      <dc:creator>EugeneHiihtaja</dc:creator>
      <dc:date>2018-06-21T10:26:19Z</dc:date>
    </item>
    <item>
      <title>Re: Update K82 MPU regions during runtime</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Update-K82-MPU-regions-during-runtime/m-p/780375#M47525</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Eugene,&lt;/P&gt;&lt;P&gt;I think it's depend on your application. After reset, all address range is opened to USER mode.&amp;nbsp; You are free to manage it by yourself.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Jing&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Jun 2018 05:46:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Update-K82-MPU-regions-during-runtime/m-p/780375#M47525</guid>
      <dc:creator>jingpan</dc:creator>
      <dc:date>2018-06-22T05:46:56Z</dc:date>
    </item>
  </channel>
</rss>

