<?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 K20 pll_init() failed after reset in IAR EWW debugger in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K20-pll-init-failed-after-reset-in-IAR-EWW-debugger/m-p/352125#M17442</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It is really wired.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;OS:&lt;/STRONG&gt; Windows XP&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;IDE:&lt;/STRONG&gt; IAR EWW 6.70 &amp;amp; Keil MDK4.73&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Interface:&lt;/STRONG&gt; CMSIS-DAP debugger running on FRDM&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Hardware:&lt;/STRONG&gt; K20 custom board with external 8MHz&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Source:&lt;/STRONG&gt; kinetis_50MHz_sc\k20d50m_sc_baremetal\build\iar\serial_test_19200 and any other project.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;If I run code after loading in EWW, the code will run into main and start following steps.&lt;/LI&gt;&lt;LI&gt;If I preset "reset" in EWW, the code runs away and stops only at pll_init().&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;From the very beginning, I thought it is crystal related issue. But when I found it acts in same manner every time, I got very confused.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The software chart&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;crt0.s&lt;/STRONG&gt; -&amp;gt; &lt;STRONG&gt;start() in start.c&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;start()&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +--&amp;gt; sysinit()&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +--&amp;gt; main()&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;sysinit()&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-&amp;gt; mcg_clk_hz = pll_init(CLK0_FREQ_HZ,LOW_POWER,CLK0_TYPE,PLL0_PRDIV,PLL0_VDIV,MCGOUT)&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Before running pll_init()&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; font-size: 10pt; line-height: 1.5em;"&gt;MCG_C1 = &lt;/SPAN&gt;&lt;SPAN style="color: #000000; font-size: 10pt; line-height: 1.5em;"&gt;&lt;STRONG&gt;0x04&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C2 = &lt;STRONG&gt;0x80&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C3 = 0x84&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C4 = 0x0B&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C5 = &lt;STRONG&gt;0x00&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C6 =&lt;STRONG&gt; 0x00&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_S = &lt;STRONG&gt;0x10&lt;/STRONG&gt; (&lt;STRONG&gt;IREFST=1&lt;/STRONG&gt;)&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_SC = 0x02&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C7 = 0x00&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C8 = 0x80&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;OSC0 = 0x00&lt;STRONG&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;1st running pll_init() after loading&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;MCG_C1 = &lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;0x18 &lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;(red means changed after last step)&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;MCG_C2 = &lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;0xA4&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;MCG_C3 = 0x84&lt;/P&gt;&lt;P&gt;MCG_C4 = 0x0B&lt;/P&gt;&lt;P&gt;MCG_C5 = &lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;0x03&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;MCG_C6 =&lt;STRONG&gt; &lt;SPAN style="color: #ff0000;"&gt;0x61&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;MCG_S = &lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;0x6E &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;MCG_SC = 0x02&lt;/P&gt;&lt;P&gt;MCG_C7 = 0x00&lt;/P&gt;&lt;P&gt;MCG_C8 = 0x80&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;OSC0 = 0x00&lt;/P&gt;&lt;P&gt;mcg_clk_hz = 50000000&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Other running pll_init() after reset&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C1 = &lt;STRONG&gt;0x18&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C2 = &lt;STRONG&gt;0xA4&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C3 = 0x84&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C4 = 0x0B&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C5 = &lt;STRONG&gt;0x03&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C6 =&lt;STRONG&gt; 0x61&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN style="color: #000000;"&gt;MCG_S = &lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;&lt;STRONG&gt;0x6E&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt; (&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;&lt;STRONG&gt;OSCINIT0=1, CLKST=3,PLLST=1,LOCK0=1,LOLS0=0&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_SC = 0x02&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C7 = 0x00&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C8 = 0x80&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;OSC0 = 0x00&lt;/P&gt;&lt;P&gt;mcg_clk_hz = 1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Then I checked the source in pll_init()&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp; // check if in FEI mode&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if (!((((MCG_S &amp;amp; MCG_S_CLKST_MASK) &amp;gt;&amp;gt; MCG_S_CLKST_SHIFT) == 0x0) &amp;amp;&amp;amp; // check CLKS selcted FLL output&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (MCG_S &amp;amp; MCG_S_IREFST_MASK) &amp;amp;&amp;amp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // check FLL ref is internal ref clk&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (!(MCG_S &amp;amp; MCG_S_PLLST_MASK))))&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // check PLLS mux has selected FLL&lt;/P&gt;
&lt;P&gt;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0x1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // return error code&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;

&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would rather is split the logic than the invert logic combination.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if &lt;SPAN style="font-family: 'Lucida Grande', Arial, Helvetica, sans-serif;"&gt;(!((((MCG_S &amp;amp; 0x0C) &amp;gt;&amp;gt; 2) == 0x0) &amp;amp;&amp;amp; &lt;SPAN style="font-family: 'Lucida Grande', Arial, Helvetica, sans-serif;"&gt;(MCG_S &amp;amp; 0x10) &amp;amp;&amp;amp; &lt;SPAN style="font-family: 'Lucida Grande', Arial, Helvetica, sans-serif;"&gt;(!(MCG_S &amp;amp; 0x20)))) return 1;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if MCG_S_CLKST is FLL &lt;STRONG&gt;AND&lt;/STRONG&gt; MCG_S_IREFST is internal &lt;STRONG&gt;AND&lt;/STRONG&gt; MCG_S_PLLST is FLL are &lt;STRONG&gt;NOT TURE&lt;/STRONG&gt;, return error. :smileysilly:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Basically &lt;STRONG&gt;only MCG_S = 0x10 as default after reset is allowed&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have not idea why reset behaviors are different for loading code (reset and run to main by CMSIS-DAP) and manually reset in EWW IDE (MCG has not been reset into FEI mode, it still runs in PEE mode).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Conclusion&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;The code designs and runs in expected way. It should check current MCG mode and switch to desired mode. However &lt;STRONG&gt;why reset in debugger can not perform reset for MCG via DAP?&lt;/STRONG&gt; It will bring extra difficulty in our development.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have double checked reset in Keil MDK4.7x, the result is same. MCG keeps current status (PEE) rather than its reset default mode (FEI).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;BTW&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;During my debug, my IAR broke down, it can not connect to my CMSIS-DAP and its license file is missing. I tried to download a new version of IAR. Its KS version reduces the code limitation from &lt;STRONG&gt;32KB to 16KB for Cortex-M&lt;/STRONG&gt;. However, re-installation of previous version can solve above issues and still offer 32KB code limation. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So keep your copy of previous IAR KS version is important ! Otherwise, part of the FSL code can not run anymore with IAR KS version.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 29 Sep 2014 01:28:47 GMT</pubDate>
    <dc:creator>kai_liu</dc:creator>
    <dc:date>2014-09-29T01:28:47Z</dc:date>
    <item>
      <title>K20 pll_init() failed after reset in IAR EWW debugger</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K20-pll-init-failed-after-reset-in-IAR-EWW-debugger/m-p/352125#M17442</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;It is really wired.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;OS:&lt;/STRONG&gt; Windows XP&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;IDE:&lt;/STRONG&gt; IAR EWW 6.70 &amp;amp; Keil MDK4.73&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Interface:&lt;/STRONG&gt; CMSIS-DAP debugger running on FRDM&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Hardware:&lt;/STRONG&gt; K20 custom board with external 8MHz&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Source:&lt;/STRONG&gt; kinetis_50MHz_sc\k20d50m_sc_baremetal\build\iar\serial_test_19200 and any other project.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;If I run code after loading in EWW, the code will run into main and start following steps.&lt;/LI&gt;&lt;LI&gt;If I preset "reset" in EWW, the code runs away and stops only at pll_init().&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;From the very beginning, I thought it is crystal related issue. But when I found it acts in same manner every time, I got very confused.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The software chart&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;crt0.s&lt;/STRONG&gt; -&amp;gt; &lt;STRONG&gt;start() in start.c&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;start()&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +--&amp;gt; sysinit()&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +--&amp;gt; main()&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;sysinit()&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +-&amp;gt; mcg_clk_hz = pll_init(CLK0_FREQ_HZ,LOW_POWER,CLK0_TYPE,PLL0_PRDIV,PLL0_VDIV,MCGOUT)&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Before running pll_init()&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000; font-size: 10pt; line-height: 1.5em;"&gt;MCG_C1 = &lt;/SPAN&gt;&lt;SPAN style="color: #000000; font-size: 10pt; line-height: 1.5em;"&gt;&lt;STRONG&gt;0x04&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C2 = &lt;STRONG&gt;0x80&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C3 = 0x84&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C4 = 0x0B&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C5 = &lt;STRONG&gt;0x00&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C6 =&lt;STRONG&gt; 0x00&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_S = &lt;STRONG&gt;0x10&lt;/STRONG&gt; (&lt;STRONG&gt;IREFST=1&lt;/STRONG&gt;)&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_SC = 0x02&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C7 = 0x00&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C8 = 0x80&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;OSC0 = 0x00&lt;STRONG&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;1st running pll_init() after loading&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;MCG_C1 = &lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;0x18 &lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;(red means changed after last step)&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;MCG_C2 = &lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;0xA4&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;MCG_C3 = 0x84&lt;/P&gt;&lt;P&gt;MCG_C4 = 0x0B&lt;/P&gt;&lt;P&gt;MCG_C5 = &lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;0x03&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;MCG_C6 =&lt;STRONG&gt; &lt;SPAN style="color: #ff0000;"&gt;0x61&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;MCG_S = &lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;0x6E &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;MCG_SC = 0x02&lt;/P&gt;&lt;P&gt;MCG_C7 = 0x00&lt;/P&gt;&lt;P&gt;MCG_C8 = 0x80&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;OSC0 = 0x00&lt;/P&gt;&lt;P&gt;mcg_clk_hz = 50000000&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Other running pll_init() after reset&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C1 = &lt;STRONG&gt;0x18&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C2 = &lt;STRONG&gt;0xA4&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C3 = 0x84&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C4 = 0x0B&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C5 = &lt;STRONG&gt;0x03&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C6 =&lt;STRONG&gt; 0x61&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN style="color: #000000;"&gt;MCG_S = &lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;&lt;STRONG&gt;0x6E&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt; (&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;&lt;STRONG&gt;OSCINIT0=1, CLKST=3,PLLST=1,LOCK0=1,LOLS0=0&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_SC = 0x02&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C7 = 0x00&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #000000;"&gt;MCG_C8 = 0x80&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;OSC0 = 0x00&lt;/P&gt;&lt;P&gt;mcg_clk_hz = 1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Then I checked the source in pll_init()&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp; // check if in FEI mode&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if (!((((MCG_S &amp;amp; MCG_S_CLKST_MASK) &amp;gt;&amp;gt; MCG_S_CLKST_SHIFT) == 0x0) &amp;amp;&amp;amp; // check CLKS selcted FLL output&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (MCG_S &amp;amp; MCG_S_IREFST_MASK) &amp;amp;&amp;amp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // check FLL ref is internal ref clk&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (!(MCG_S &amp;amp; MCG_S_PLLST_MASK))))&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // check PLLS mux has selected FLL&lt;/P&gt;
&lt;P&gt;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0x1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // return error code&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;

&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would rather is split the logic than the invert logic combination.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if &lt;SPAN style="font-family: 'Lucida Grande', Arial, Helvetica, sans-serif;"&gt;(!((((MCG_S &amp;amp; 0x0C) &amp;gt;&amp;gt; 2) == 0x0) &amp;amp;&amp;amp; &lt;SPAN style="font-family: 'Lucida Grande', Arial, Helvetica, sans-serif;"&gt;(MCG_S &amp;amp; 0x10) &amp;amp;&amp;amp; &lt;SPAN style="font-family: 'Lucida Grande', Arial, Helvetica, sans-serif;"&gt;(!(MCG_S &amp;amp; 0x20)))) return 1;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if MCG_S_CLKST is FLL &lt;STRONG&gt;AND&lt;/STRONG&gt; MCG_S_IREFST is internal &lt;STRONG&gt;AND&lt;/STRONG&gt; MCG_S_PLLST is FLL are &lt;STRONG&gt;NOT TURE&lt;/STRONG&gt;, return error. :smileysilly:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Basically &lt;STRONG&gt;only MCG_S = 0x10 as default after reset is allowed&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have not idea why reset behaviors are different for loading code (reset and run to main by CMSIS-DAP) and manually reset in EWW IDE (MCG has not been reset into FEI mode, it still runs in PEE mode).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Conclusion&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;The code designs and runs in expected way. It should check current MCG mode and switch to desired mode. However &lt;STRONG&gt;why reset in debugger can not perform reset for MCG via DAP?&lt;/STRONG&gt; It will bring extra difficulty in our development.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have double checked reset in Keil MDK4.7x, the result is same. MCG keeps current status (PEE) rather than its reset default mode (FEI).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;BTW&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;During my debug, my IAR broke down, it can not connect to my CMSIS-DAP and its license file is missing. I tried to download a new version of IAR. Its KS version reduces the code limitation from &lt;STRONG&gt;32KB to 16KB for Cortex-M&lt;/STRONG&gt;. However, re-installation of previous version can solve above issues and still offer 32KB code limation. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So keep your copy of previous IAR KS version is important ! Otherwise, part of the FSL code can not run anymore with IAR KS version.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 29 Sep 2014 01:28:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K20-pll-init-failed-after-reset-in-IAR-EWW-debugger/m-p/352125#M17442</guid>
      <dc:creator>kai_liu</dc:creator>
      <dc:date>2014-09-29T01:28:47Z</dc:date>
    </item>
    <item>
      <title>Re: K20 pll_init() failed after reset in IAR EWW debugger</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K20-pll-init-failed-after-reset-in-IAR-EWW-debugger/m-p/352126#M17443</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;I tested the issue you are reporting and this is what I found. When you are using CMIS-DAP or some other debugger tools you have the option to configure the way of the reset when you perform it in the IDE; in IAR is when you press the reset button.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="reset.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/46372i09908F1D936AB340/image-size/large?v=v2&amp;amp;px=999" role="button" title="reset.png" alt="reset.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;In the debugger options of the project you can change the way this reset is performed. If you select a software reset just the program counter is in reset state but the registers do not change. To ensure that all the registers change to their reset values you need to change the reset option for hardware reset.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="cmsis_dap_reset.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/46373iA20C005E55FA97F5/image-size/large?v=v2&amp;amp;px=999" role="button" title="cmsis_dap_reset.png" alt="cmsis_dap_reset.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P style="margin-bottom: 0.0001pt; font-weight: inherit; font-style: inherit; font-size: 12.7272720336914px; font-family: inherit; color: #3d3d3d;"&gt;&lt;SPAN style="font-weight: inherit; font-style: inherit; font-size: 10pt; font-family: Arial, sans-serif;"&gt;I hope this information can help you.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-weight: inherit; font-style: inherit; font-size: 12.7272720336914px; font-family: inherit; color: #3d3d3d;"&gt;Regards,&lt;/P&gt;&lt;P style="font-weight: inherit; font-style: inherit; font-size: 12.7272720336914px; font-family: inherit; color: #3d3d3d;"&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;P style="font-weight: inherit; font-style: inherit; font-size: 12.7272720336914px; font-family: inherit; color: #3d3d3d;"&gt;Note: If this post answers your question, please click the Correct Answer button. It would be nice!&lt;/P&gt;&lt;P style="font-weight: inherit; font-style: inherit; font-size: 12.7272720336914px; font-family: inherit; color: #3d3d3d;"&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Oct 2014 02:29:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K20-pll-init-failed-after-reset-in-IAR-EWW-debugger/m-p/352126#M17443</guid>
      <dc:creator>adriancano</dc:creator>
      <dc:date>2014-10-02T02:29:26Z</dc:date>
    </item>
    <item>
      <title>Re: K20 pll_init() failed after reset in IAR EWW debugger</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/K20-pll-init-failed-after-reset-in-IAR-EWW-debugger/m-p/352127#M17444</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, Adrian,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for your information. That is an important configuration I never aware of.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 08 Oct 2014 07:53:50 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/K20-pll-init-failed-after-reset-in-IAR-EWW-debugger/m-p/352127#M17444</guid>
      <dc:creator>kai_liu</dc:creator>
      <dc:date>2014-10-08T07:53:50Z</dc:date>
    </item>
  </channel>
</rss>

