<?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 ARM errata 838869 in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/ARM-errata-838869/m-p/1029107#M56451</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Sometimes I came across this type of note in the examples.&lt;/P&gt;&lt;P&gt;What is it due this error?&lt;/P&gt;&lt;P&gt;What does the __DSB () statement do to prevent it and when is it needed?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you very much&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 27 Mar 2020 14:06:14 GMT</pubDate>
    <dc:creator>LArmstrong1985</dc:creator>
    <dc:date>2020-03-27T14:06:14Z</dc:date>
    <item>
      <title>ARM errata 838869</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/ARM-errata-838869/m-p/1029107#M56451</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Sometimes I came across this type of note in the examples.&lt;/P&gt;&lt;P&gt;What is it due this error?&lt;/P&gt;&lt;P&gt;What does the __DSB () statement do to prevent it and when is it needed?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you very much&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 27 Mar 2020 14:06:14 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/ARM-errata-838869/m-p/1029107#M56451</guid>
      <dc:creator>LArmstrong1985</dc:creator>
      <dc:date>2020-03-27T14:06:14Z</dc:date>
    </item>
    <item>
      <title>Re: ARM errata 838869</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/ARM-errata-838869/m-p/1029108#M56452</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;There is a good explanation in &lt;A class="link-titled" href="http://www.ti.com/lit/er/swrz078b/swrz078b.pdf" title="http://www.ti.com/lit/er/swrz078b/swrz078b.pdf"&gt;http://www.ti.com/lit/er/swrz078b/swrz078b.pdf&lt;/A&gt;&amp;nbsp; of the underlying ARM errata. To my knowledge it affects all Cortex-M4 devices (but not sure as I have not found the original information on ARM.com). Basically if there is a store immediate with offset at the end of the ISR this could lead to incorrect interrupt handling. That DSB instruction is a data synchronization barrier instruction which makes sure that any pending memory accesses in the write buffer gets executed (kind of 'flush' for the data pending to be written). &lt;/P&gt;&lt;P&gt;ARM rates this situation as 'rare', but such store immediate could be generated by the compiler if accessing for example peripheral registers. In my own exprience I had applications which crashed once every few days for unknown reasons. After I have added such a DSB at the end of every ISR the crashes disappeared and I have applications running for &amp;gt;6 months now without a single problem or crash. So while the problem depends on how interrupts are executed and what code is inside the ISR, I highly recommend to have this DSB added to the exit of every ISR. FreeRTOS has this added in the Cortex-M ports for years already, even if it was not marked as 'not necessary', but indeed its preventing a possible problem in the kernel too.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I hope this helps,&lt;/P&gt;&lt;P&gt;Erich&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 27 Mar 2020 14:53:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/ARM-errata-838869/m-p/1029108#M56452</guid>
      <dc:creator>ErichStyger</dc:creator>
      <dc:date>2020-03-27T14:53:36Z</dc:date>
    </item>
    <item>
      <title>Re: ARM errata 838869</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/ARM-errata-838869/m-p/1029109#M56453</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you very much Erich.&lt;/P&gt;&lt;P&gt;I will follow your advice to put this instruction at the end of each &lt;/P&gt;&lt;P&gt;interrupt callback.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Fabio&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Il 27/03/2020 15:54, ErichS ha scritto:&lt;/P&gt;&lt;BLOCKQUOTE level="1"&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&amp;gt;&lt;/P&gt;&lt;BLOCKQUOTE level="1"&gt;&lt;P&gt;  NXP Community&lt;/P&gt;&lt;P&gt;  &amp;lt;https://community.freescale.com/resources/statics/1000/35400-NXP-Community-Email-banner-600x75.jpg&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&amp;gt;&lt;/P&gt;&lt;BLOCKQUOTE level="1"&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    Re: ARM errata 838869&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;reply from Erich Styger &lt;/P&gt;&lt;P&gt;&amp;lt;https://community.nxp.com/people/ErichS?et=watches.email.thread&amp;gt; in &lt;/P&gt;&lt;P&gt;/Kinetis Microcontrollers/ - View the full discussion &lt;/P&gt;&lt;P&gt;&amp;lt;https://community.nxp.com/message/1290127?commentID=1290127&amp;amp;et=watches.email.thread#comment-1290127&amp;gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&amp;gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 27 Mar 2020 15:12:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/ARM-errata-838869/m-p/1029109#M56453</guid>
      <dc:creator>LArmstrong1985</dc:creator>
      <dc:date>2020-03-27T15:12:25Z</dc:date>
    </item>
    <item>
      <title>Re: ARM errata 838869</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/ARM-errata-838869/m-p/1029110#M56454</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;See also the following for a practical problem when the data barrier is not used and how it solves it. The data barrier use is not always needed - it depends on what the routine actually does and how long it takes to do it... It is not actually &lt;SPAN style="left: 315.333px; top: 139.533px; font-size: 16.6667px; font-family: sans-serif; transform: scaleX(1.06096);"&gt;Errata&lt;/SPAN&gt;&lt;SPAN style="left: 368.483px; top: 139.533px; font-size: 16.6667px; font-family: sans-serif; transform: scaleX(1.01319);"&gt;#838869&lt;/SPAN&gt; but it shows how data synchronisation may be important.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.nxp.com/thread/525667"&gt;Why does the eDMA ISR get called twice after one major count completion interrupt?&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;P&gt;&lt;EM&gt;[uTasker project developer for Kinetis and i.MX RT]&lt;/EM&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 27 Mar 2020 15:19:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/ARM-errata-838869/m-p/1029110#M56454</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2020-03-27T15:19:26Z</dc:date>
    </item>
  </channel>
</rss>

