<?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: Re: Memory protection unit (MPU) FRDM-K22F in Kinetis Software Development Kit</title>
    <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Memory-protection-unit-MPU-FRDM-K22F/m-p/354038#M481</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Christian,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I made the MPU demo program on the KSDK V1.1 using FRDM-K64F. I'm sorry but it is not for K22F.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="_jivemacro_uid_14222214008401841 jive_text_macro jive_macro_code" jivemacro_uid="_14222214008401841" modifiedtitle="true"&gt;
&lt;P&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;/P&gt;
&lt;P&gt;#include "fsl_device_registers.h"
#include "fsl_uart_driver.h"
#include "fsl_clock_manager.h"
#include "board.h"&lt;/P&gt;
&lt;P&gt;#ifdef DEBUG
#include "fsl_debug_console.h"
#endif&lt;/P&gt;
&lt;P&gt;#define M0_r&amp;nbsp; ((3&amp;lt;&amp;lt;3)|(4))
#define M0_w&amp;nbsp; ((3&amp;lt;&amp;lt;3)|(2))
#define M0_x&amp;nbsp; ((3&amp;lt;&amp;lt;3)|(1))&lt;/P&gt;
&lt;P&gt;
void HardFault_Handler(void)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("MPU_EAR0=0x%08x\n\r",MPU_EAR0);
&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("MPU_EDR0=0x%08x\n\r",MPU_EDR0);
&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("MPU_EAR1=0x%08x\n\r",MPU_EAR1);
&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("MPU_EDR1=0x%08x\n\r",MPU_EDR1);
&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("MPU_EAR2=0x%08x\n\r",MPU_EAR2);
&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("MPU_EDR2=0x%08x\n\r",MPU_EDR2);
&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("MPU_EAR3=0x%08x\n\r",MPU_EAR3);
&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("MPU_EDR3=0x%08x\n\r",MPU_EDR3);
&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("MPU_EAR4=0x%08x\n\r",MPU_EAR4);
&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("MPU_EDR4=0x%08x\n\r",MPU_EDR4);
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(((int)MPU_EDR3 &amp;amp; 1)==0){ // If the read error causes,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MPU_RGDAAC4 |= M0_r;&amp;nbsp;&amp;nbsp;&amp;nbsp; // emable read for the region tempory.
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; MPU_CESR |=&amp;nbsp; MPU_CESR_SPERR_MASK; // clear interrupts
}&lt;/P&gt;
&lt;P&gt;void MPU_Setup(void)
{
&amp;nbsp; SIM_SCGC7 = SIM_SCGC7_MPU_MASK | SIM_SCGC7_FLEXBUS_MASK;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; MPU_CESR &amp;amp;= ~MPU_CESR_VLD_MASK;&amp;nbsp; // disable MPU&lt;/P&gt;
&lt;P&gt;&amp;nbsp; MPU_CESR |=&amp;nbsp; MPU_CESR_SPERR_MASK; // clear interrupts&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; MPU_RGD0_WORD2 = 0; // ignore default protection for RGD0&lt;/P&gt;
&lt;P&gt;&amp;nbsp; MPU_RGD1_WORD0 = 0x00000000;// until SRAM area
&amp;nbsp; MPU_RGD1_WORD1 = 0x1FFEFFFF;// Read/Write/Execute
&amp;nbsp; MPU_RGD1_WORD2 = M0_r | M0_w | M0_x;
&amp;nbsp; MPU_RGD1_WORD3 = 0x00000001;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; MPU_RGD2_WORD0 = 0x1FFF0000; // SRAM_L
&amp;nbsp; MPU_RGD2_WORD1 = 0x1FFFFFFF; // Read/Write
&amp;nbsp; MPU_RGD2_WORD2 = M0_r | M0_w;
&amp;nbsp; MPU_RGD2_WORD3 = 0x00000001;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; MPU_RGD3_WORD0 = 0x20000000; // SRAM_U(Part1)
&amp;nbsp; MPU_RGD3_WORD1 = 0x200000FF; // only Read
&amp;nbsp; MPU_RGD3_WORD2 = M0_r ;
&amp;nbsp; MPU_RGD3_WORD3 = 0x00000001;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; MPU_RGD4_WORD0 = 0x20000100; // SRAM_U(part2)
&amp;nbsp; MPU_RGD4_WORD1 = 0x200001FF; // only Write
&amp;nbsp; MPU_RGD4_WORD2 = M0_w;;
&amp;nbsp; MPU_RGD4_WORD3 = 0x00000001;
 
&amp;nbsp; MPU_RGD5_WORD0 = 0x20000200; // SRAM_U(Part3)
&amp;nbsp; MPU_RGD5_WORD1 = 0x2002FFFF; // Read/Write/Execute
&amp;nbsp; MPU_RGD5_WORD2 = M0_r | M0_w | M0_x;
&amp;nbsp; MPU_RGD5_WORD3 = 0x00000001;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; MPU_RGD6_WORD0 = 0x20030000; // The rest address spaces
&amp;nbsp; MPU_RGD6_WORD1 = 0xFFFFFFFF; // Read/Write/Execute
&amp;nbsp; MPU_RGD6_WORD2 = M0_r | M0_w | M0_x;
&amp;nbsp; MPU_RGD6_WORD3 = 0x00000001;
&amp;nbsp; 
&amp;nbsp; MPU_CESR |= MPU_CESR_VLD_MASK; // enabe MPU
&amp;nbsp; 
}&lt;/P&gt;
&lt;P&gt;volatile int a;
volatile int *p;&lt;/P&gt;
&lt;P&gt;int main (void)
{
&amp;nbsp; hardware_init();
&amp;nbsp; configure_uart_pins(BOARD_DEBUG_UART_INSTANCE);
&amp;nbsp; dbg_uart_init();
&amp;nbsp; 
&amp;nbsp; MPU_Setup(); // MPU Setting&lt;/P&gt;
&lt;P&gt;&amp;nbsp; // Tests of the protection errors
&amp;nbsp; p = (int*)0x20000080;
&amp;nbsp; a = *p;
&amp;nbsp; printf("Passed - 1\n\r");
&amp;nbsp; *p = a;
&amp;nbsp; printf("Passed - 2\n\r");
&amp;nbsp; p = (int*)0x20000100;
&amp;nbsp; a= *p;
&amp;nbsp; printf("Passed - 3\n\r");
&amp;nbsp; *p = a;
&amp;nbsp; printf("Passed - 4\n\r");
}&lt;/P&gt;


&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Does this help you?&lt;/P&gt;&lt;P&gt;Basically returning from the protection fault (i.e. Hard Fault) has no meaning and OS should abort the task. In the sample program the store error can recover form the exception because the error PC pointed after the store instruction due to the store buffer. However, the read error causes repeatedly because the error PC pointed to the load instruction.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best ergards,&lt;/P&gt;&lt;P&gt;Yasuhiko Koumoto.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sun, 25 Jan 2015 21:28:48 GMT</pubDate>
    <dc:creator>yasuhikokoumoto</dc:creator>
    <dc:date>2015-01-25T21:28:48Z</dc:date>
    <item>
      <title>Memory protection unit (MPU) FRDM-K22F</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Memory-protection-unit-MPU-FRDM-K22F/m-p/354035#M478</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello everyone,&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would like to test the limitations/functionality of the mpu on my device. Is there some examples/documentations I can refer to to get me started and so some basic experiments? I looked at the API that comes with the KSDK, but I am finding it hard to create an experiment with it.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 18 Jan 2015 17:10:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Memory-protection-unit-MPU-FRDM-K22F/m-p/354035#M478</guid>
      <dc:creator>coopertrooper</dc:creator>
      <dc:date>2015-01-18T17:10:43Z</dc:date>
    </item>
    <item>
      <title>Re: Memory protection unit (MPU) FRDM-K22F</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Memory-protection-unit-MPU-FRDM-K22F/m-p/354036#M479</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Christian,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;first of all, you should better refer to the "Kinetis Peripheral Module Quick Reference" (&lt;A href="http://cache.freescale.com/files/32bit/doc/quick_ref_guide/KQRUG.pdf?fpsp=1"&gt;http://cache.freescale.com/files/32bit/doc/quick_ref_guide/KQRUG.pdf?fpsp=1&lt;/A&gt;).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;Yasuhiko Koumoto.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 18 Jan 2015 19:25:42 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Memory-protection-unit-MPU-FRDM-K22F/m-p/354036#M479</guid>
      <dc:creator>yasuhikokoumoto</dc:creator>
      <dc:date>2015-01-18T19:25:42Z</dc:date>
    </item>
    <item>
      <title>Re: Memory protection unit (MPU) FRDM-K22F</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Memory-protection-unit-MPU-FRDM-K22F/m-p/354037#M480</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you very much for your response.&lt;/P&gt;&lt;P&gt;I was reading the documentation the examples look useful, but they are fragmented. It does mention that these example source codes are available online, but it only lists KINETIS512_SC.zip available at &lt;A href="https://community.nxp.com/www.freescale.com" target="test_blank"&gt;www.freescale.com&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 18 Jan 2015 23:44:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Memory-protection-unit-MPU-FRDM-K22F/m-p/354037#M480</guid>
      <dc:creator>coopertrooper</dc:creator>
      <dc:date>2015-01-18T23:44:02Z</dc:date>
    </item>
    <item>
      <title>Re: Re: Memory protection unit (MPU) FRDM-K22F</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Memory-protection-unit-MPU-FRDM-K22F/m-p/354038#M481</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Christian,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I made the MPU demo program on the KSDK V1.1 using FRDM-K64F. I'm sorry but it is not for K22F.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="_jivemacro_uid_14222214008401841 jive_text_macro jive_macro_code" jivemacro_uid="_14222214008401841" modifiedtitle="true"&gt;
&lt;P&gt;#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;/P&gt;
&lt;P&gt;#include "fsl_device_registers.h"
#include "fsl_uart_driver.h"
#include "fsl_clock_manager.h"
#include "board.h"&lt;/P&gt;
&lt;P&gt;#ifdef DEBUG
#include "fsl_debug_console.h"
#endif&lt;/P&gt;
&lt;P&gt;#define M0_r&amp;nbsp; ((3&amp;lt;&amp;lt;3)|(4))
#define M0_w&amp;nbsp; ((3&amp;lt;&amp;lt;3)|(2))
#define M0_x&amp;nbsp; ((3&amp;lt;&amp;lt;3)|(1))&lt;/P&gt;
&lt;P&gt;
void HardFault_Handler(void)
{
&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("MPU_EAR0=0x%08x\n\r",MPU_EAR0);
&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("MPU_EDR0=0x%08x\n\r",MPU_EDR0);
&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("MPU_EAR1=0x%08x\n\r",MPU_EAR1);
&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("MPU_EDR1=0x%08x\n\r",MPU_EDR1);
&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("MPU_EAR2=0x%08x\n\r",MPU_EAR2);
&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("MPU_EDR2=0x%08x\n\r",MPU_EDR2);
&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("MPU_EAR3=0x%08x\n\r",MPU_EAR3);
&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("MPU_EDR3=0x%08x\n\r",MPU_EDR3);
&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("MPU_EAR4=0x%08x\n\r",MPU_EAR4);
&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("MPU_EDR4=0x%08x\n\r",MPU_EDR4);
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(((int)MPU_EDR3 &amp;amp; 1)==0){ // If the read error causes,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MPU_RGDAAC4 |= M0_r;&amp;nbsp;&amp;nbsp;&amp;nbsp; // emable read for the region tempory.
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; MPU_CESR |=&amp;nbsp; MPU_CESR_SPERR_MASK; // clear interrupts
}&lt;/P&gt;
&lt;P&gt;void MPU_Setup(void)
{
&amp;nbsp; SIM_SCGC7 = SIM_SCGC7_MPU_MASK | SIM_SCGC7_FLEXBUS_MASK;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; MPU_CESR &amp;amp;= ~MPU_CESR_VLD_MASK;&amp;nbsp; // disable MPU&lt;/P&gt;
&lt;P&gt;&amp;nbsp; MPU_CESR |=&amp;nbsp; MPU_CESR_SPERR_MASK; // clear interrupts&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; MPU_RGD0_WORD2 = 0; // ignore default protection for RGD0&lt;/P&gt;
&lt;P&gt;&amp;nbsp; MPU_RGD1_WORD0 = 0x00000000;// until SRAM area
&amp;nbsp; MPU_RGD1_WORD1 = 0x1FFEFFFF;// Read/Write/Execute
&amp;nbsp; MPU_RGD1_WORD2 = M0_r | M0_w | M0_x;
&amp;nbsp; MPU_RGD1_WORD3 = 0x00000001;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; MPU_RGD2_WORD0 = 0x1FFF0000; // SRAM_L
&amp;nbsp; MPU_RGD2_WORD1 = 0x1FFFFFFF; // Read/Write
&amp;nbsp; MPU_RGD2_WORD2 = M0_r | M0_w;
&amp;nbsp; MPU_RGD2_WORD3 = 0x00000001;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; MPU_RGD3_WORD0 = 0x20000000; // SRAM_U(Part1)
&amp;nbsp; MPU_RGD3_WORD1 = 0x200000FF; // only Read
&amp;nbsp; MPU_RGD3_WORD2 = M0_r ;
&amp;nbsp; MPU_RGD3_WORD3 = 0x00000001;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; MPU_RGD4_WORD0 = 0x20000100; // SRAM_U(part2)
&amp;nbsp; MPU_RGD4_WORD1 = 0x200001FF; // only Write
&amp;nbsp; MPU_RGD4_WORD2 = M0_w;;
&amp;nbsp; MPU_RGD4_WORD3 = 0x00000001;
 
&amp;nbsp; MPU_RGD5_WORD0 = 0x20000200; // SRAM_U(Part3)
&amp;nbsp; MPU_RGD5_WORD1 = 0x2002FFFF; // Read/Write/Execute
&amp;nbsp; MPU_RGD5_WORD2 = M0_r | M0_w | M0_x;
&amp;nbsp; MPU_RGD5_WORD3 = 0x00000001;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; MPU_RGD6_WORD0 = 0x20030000; // The rest address spaces
&amp;nbsp; MPU_RGD6_WORD1 = 0xFFFFFFFF; // Read/Write/Execute
&amp;nbsp; MPU_RGD6_WORD2 = M0_r | M0_w | M0_x;
&amp;nbsp; MPU_RGD6_WORD3 = 0x00000001;
&amp;nbsp; 
&amp;nbsp; MPU_CESR |= MPU_CESR_VLD_MASK; // enabe MPU
&amp;nbsp; 
}&lt;/P&gt;
&lt;P&gt;volatile int a;
volatile int *p;&lt;/P&gt;
&lt;P&gt;int main (void)
{
&amp;nbsp; hardware_init();
&amp;nbsp; configure_uart_pins(BOARD_DEBUG_UART_INSTANCE);
&amp;nbsp; dbg_uart_init();
&amp;nbsp; 
&amp;nbsp; MPU_Setup(); // MPU Setting&lt;/P&gt;
&lt;P&gt;&amp;nbsp; // Tests of the protection errors
&amp;nbsp; p = (int*)0x20000080;
&amp;nbsp; a = *p;
&amp;nbsp; printf("Passed - 1\n\r");
&amp;nbsp; *p = a;
&amp;nbsp; printf("Passed - 2\n\r");
&amp;nbsp; p = (int*)0x20000100;
&amp;nbsp; a= *p;
&amp;nbsp; printf("Passed - 3\n\r");
&amp;nbsp; *p = a;
&amp;nbsp; printf("Passed - 4\n\r");
}&lt;/P&gt;


&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Does this help you?&lt;/P&gt;&lt;P&gt;Basically returning from the protection fault (i.e. Hard Fault) has no meaning and OS should abort the task. In the sample program the store error can recover form the exception because the error PC pointed after the store instruction due to the store buffer. However, the read error causes repeatedly because the error PC pointed to the load instruction.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best ergards,&lt;/P&gt;&lt;P&gt;Yasuhiko Koumoto.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 25 Jan 2015 21:28:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Memory-protection-unit-MPU-FRDM-K22F/m-p/354038#M481</guid>
      <dc:creator>yasuhikokoumoto</dc:creator>
      <dc:date>2015-01-25T21:28:48Z</dc:date>
    </item>
    <item>
      <title>Re: Re: Memory protection unit (MPU) FRDM-K22F</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Memory-protection-unit-MPU-FRDM-K22F/m-p/354039#M482</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Yasuhiko,&lt;/P&gt;&lt;P&gt;Thank you very much for the example code you have provided. I know it is not for the K22F, but I think I can modify it to suit my needs. Really appreciate the help. I will give it a try soon and will let you know if I get it to work or not.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 26 Jan 2015 15:40:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Memory-protection-unit-MPU-FRDM-K22F/m-p/354039#M482</guid>
      <dc:creator>coopertrooper</dc:creator>
      <dc:date>2015-01-26T15:40:57Z</dc:date>
    </item>
    <item>
      <title>Re: Memory protection unit (MPU) FRDM-K22F</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Memory-protection-unit-MPU-FRDM-K22F/m-p/354040#M483</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Christian,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;just note that the device in FRDM-K22F120M does not provide MPU. Please refer to the following document. &lt;A href="https://community.nxp.com/docs/DOC-102548"&gt;Kinetis K22_120 MHz devices&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Carlos&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 05 Mar 2015 17:24:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/Memory-protection-unit-MPU-FRDM-K22F/m-p/354040#M483</guid>
      <dc:creator>Carlos_Musich</dc:creator>
      <dc:date>2015-03-05T17:24:16Z</dc:date>
    </item>
  </channel>
</rss>

