<?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 KSDK 2.0 + Kinetis Bootloader v1.2.0 + FreeRTOS V8.2.3 in Kinetis Software Development Kit</title>
    <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/KSDK-2-0-Kinetis-Bootloader-v1-2-0-FreeRTOS-V8-2-3/m-p/505406#M4989</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;STRONG&gt;A warning to all:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;If you are using the Stock Kinetis Bootloader v1.2.0 and a Project using the FreeRTOS included with KSDK 2.0 there is a problem with the Systick initialization.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The Kinetis Bootloader uses Systick for its timers. When in the bootloader deinits the Systick it does not clear the SYSTICK_CURRENT_VALUE_REG. When the freertos scheduler starts under certain situations the Systick will not fire untill the SYSTICK_CURRENT_VALUE_REG completely rolls over causing an assert to happen when using tickless idle mode.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If you do not want to change the stock bootloader code you must make a&amp;nbsp; slight change to the vPortSetupTimerInterrupt() initialization in port.c (or define your own because it is weakly defined).&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Below is what will always work (&lt;SPAN style="color: #2873ee;"&gt;Additions in blue&lt;/SPAN&gt;):&lt;/P&gt;&lt;P&gt;/* Configure SysTick to interrupt at the requested rate. */&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #2873ee;"&gt;// Clear out the CTRL Register (Just in case it happened to be running)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #2873ee;"&gt;portNVIC_SYSTICK_CTRL_REG = portNVIC_SYSTICK_CTRL_REG &amp;amp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #2873ee;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ~( portNVIC_SYSTICK_CLK_BIT | portNVIC_SYSTICK_INT_BIT | &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #2873ee;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; portNVIC_SYSTICK_ENABLE_BIT );&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;// Load the reload value&lt;/P&gt;&lt;P&gt;portNVIC_SYSTICK_LOAD_REG = ( configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #2873ee;"&gt;// Clear out any current values from the bootloader&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #2873ee;"&gt;portNVIC_SYSTICK_CURRENT_VALUE_REG = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;// Enable the systick timer&lt;/P&gt;&lt;P&gt;portNVIC_SYSTICK_CTRL_REG = ( portNVIC_SYSTICK_CLK_BIT | &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; portNVIC_SYSTICK_INT_BIT | portNVIC_SYSTICK_ENABLE_BIT );&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Terry Cooke&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 25 Mar 2016 10:09:05 GMT</pubDate>
    <dc:creator>thcooke77</dc:creator>
    <dc:date>2016-03-25T10:09:05Z</dc:date>
    <item>
      <title>KSDK 2.0 + Kinetis Bootloader v1.2.0 + FreeRTOS V8.2.3</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/KSDK-2-0-Kinetis-Bootloader-v1-2-0-FreeRTOS-V8-2-3/m-p/505406#M4989</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;STRONG&gt;A warning to all:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;If you are using the Stock Kinetis Bootloader v1.2.0 and a Project using the FreeRTOS included with KSDK 2.0 there is a problem with the Systick initialization.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The Kinetis Bootloader uses Systick for its timers. When in the bootloader deinits the Systick it does not clear the SYSTICK_CURRENT_VALUE_REG. When the freertos scheduler starts under certain situations the Systick will not fire untill the SYSTICK_CURRENT_VALUE_REG completely rolls over causing an assert to happen when using tickless idle mode.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If you do not want to change the stock bootloader code you must make a&amp;nbsp; slight change to the vPortSetupTimerInterrupt() initialization in port.c (or define your own because it is weakly defined).&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Below is what will always work (&lt;SPAN style="color: #2873ee;"&gt;Additions in blue&lt;/SPAN&gt;):&lt;/P&gt;&lt;P&gt;/* Configure SysTick to interrupt at the requested rate. */&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #2873ee;"&gt;// Clear out the CTRL Register (Just in case it happened to be running)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #2873ee;"&gt;portNVIC_SYSTICK_CTRL_REG = portNVIC_SYSTICK_CTRL_REG &amp;amp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #2873ee;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ~( portNVIC_SYSTICK_CLK_BIT | portNVIC_SYSTICK_INT_BIT | &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #2873ee;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; portNVIC_SYSTICK_ENABLE_BIT );&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;// Load the reload value&lt;/P&gt;&lt;P&gt;portNVIC_SYSTICK_LOAD_REG = ( configSYSTICK_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #2873ee;"&gt;// Clear out any current values from the bootloader&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #2873ee;"&gt;portNVIC_SYSTICK_CURRENT_VALUE_REG = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;// Enable the systick timer&lt;/P&gt;&lt;P&gt;portNVIC_SYSTICK_CTRL_REG = ( portNVIC_SYSTICK_CLK_BIT | &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; portNVIC_SYSTICK_INT_BIT | portNVIC_SYSTICK_ENABLE_BIT );&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Terry Cooke&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 25 Mar 2016 10:09:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/KSDK-2-0-Kinetis-Bootloader-v1-2-0-FreeRTOS-V8-2-3/m-p/505406#M4989</guid>
      <dc:creator>thcooke77</dc:creator>
      <dc:date>2016-03-25T10:09:05Z</dc:date>
    </item>
  </channel>
</rss>

