<?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 MCF5485 FEC DMA doesn't update rx BD sometimes in ColdFire/68K Microcontrollers and Processors</title>
    <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF5485-FEC-DMA-doesn-t-update-rx-BD-sometimes/m-p/373319#M12375</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;We've discovered that MCF5485 DMA, which we use to receive frames from FEC, under heavy ethernet rx load doesn't update next rx BD in the table sometimes. I.e. the frame is received, but BD status &amp;amp; len fields may remain unchanged. We use the latest MCD DMA API (v0.3 (2004-04-26)) from Freescale to work with DMA.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;To demonstrate the issue - here is the example of the appropriate rx BDT area snapshots, which we see on entering into 3 consecutive rx interrupt handler calls:&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;- last rx (OK):&lt;/P&gt;&lt;DIV class="j-rte-table"&gt;&lt;TABLE border="1" class="jiveBorder" height="120" style="border: 1px solid rgb(0, 0, 0); width: 731px; height: 119px;"&gt;&lt;THEAD&gt;&lt;TR&gt;&lt;TH style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;color: #ffffff;background-color: #6690bc;text-align: center;" valign="middle"&gt;&lt;P&gt;BD&lt;/P&gt;&lt;P&gt;#&lt;/P&gt;&lt;/TH&gt;&lt;TH style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;color: #ffffff;background-color: #6690bc;text-align: center;" valign="middle"&gt;&lt;P&gt;BD&lt;/P&gt;&lt;P&gt;[ST &amp;amp; LEN]&lt;/P&gt;&lt;/TH&gt;&lt;TH style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;color: #ffffff;background-color: #6690bc;text-align: center;" valign="middle"&gt;&lt;P&gt;BD&lt;/P&gt;&lt;P&gt;[ADR]&lt;/P&gt;&lt;/TH&gt;&lt;TH style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;color: #ffffff;background-color: #6690bc;text-align: center;" valign="middle"&gt;Comments&lt;/TH&gt;&lt;/TR&gt;&lt;/THEAD&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;"&gt;143&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;"&gt;&lt;SPAN style="color: #339966;"&gt;0x18800252&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;"&gt;0x19EF650&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;"&gt;Just received frame&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;"&gt;144&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;"&gt;&lt;STRONG style=": ; color: #339966;"&gt;0x90000600&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;"&gt;0x19EFE50&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;"&gt;&lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;Wait&lt;/STRONG&gt;&lt;/SPAN&gt; for the next frame &lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;here&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;"&gt;145&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;"&gt;&lt;SPAN style="color: #339966;"&gt;0x90000600&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;"&gt;0x19F0650&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;- next rx ('missed' frame):&lt;/P&gt;&lt;DIV class="j-rte-table"&gt;&lt;TABLE border="1" class="jiveBorder" height="120" style="border: 1px solid #000000; width: 1176px; height: 119px;" width="1175"&gt;&lt;THEAD&gt;&lt;TR&gt;&lt;TH style="border:1px solid black;border: 1px solid #000000;padding: 2px;color: #ffffff;background-color: #6690bc;text-align: center;" valign="middle"&gt;&lt;P&gt;BD&lt;/P&gt;&lt;P&gt; #&lt;/P&gt;&lt;/TH&gt;&lt;TH style="border:1px solid black;border: 1px solid #000000;padding: 2px;color: #ffffff;background-color: #6690bc;text-align: center;" valign="middle"&gt;&lt;P&gt;BD&lt;/P&gt;&lt;P&gt;[ST &amp;amp; LEN]&lt;/P&gt;&lt;/TH&gt;&lt;TH style="border:1px solid black;border: 1px solid #000000;padding: 2px;color: #ffffff;background-color: #6690bc;text-align: center;" valign="middle"&gt;&lt;P&gt;BD&lt;/P&gt;&lt;P&gt;[ADR]&lt;/P&gt;&lt;/TH&gt;&lt;TH style="border:1px solid black;border: 1px solid #000000;padding: 2px;color: #ffffff;background-color: #6690bc;text-align: center;" valign="middle"&gt;Comments&lt;/TH&gt;&lt;/TR&gt;&lt;/THEAD&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;143&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;&lt;SPAN style="color: #339966;"&gt;0x08800252&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;0x19EF650&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;Previously received and processed frame&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;144&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;&lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;0x90000600&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;0x19EFE50&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;&lt;P&gt;Frame is actually rxed to [ADR], but [ST &amp;amp; LEN] wasn't updated !!!&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;145&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;&lt;SPAN style="color: #339966;"&gt;0x90000600&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;0x19F0650&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;- next rx (after miss):&lt;/P&gt;&lt;DIV class="j-rte-table"&gt;&lt;TABLE border="1" class="jiveBorder" height="120" style="border: 1px solid #000000; width: 896px; height: 119px;" width="895"&gt;&lt;THEAD&gt;&lt;TR&gt;&lt;TH style="border:1px solid black;border: 1px solid #000000;padding: 2px;color: #ffffff;background-color: #6690bc;text-align: center;" valign="middle"&gt;&lt;P&gt;BD&lt;/P&gt;&lt;P&gt; #&lt;/P&gt;&lt;/TH&gt;&lt;TH style="border:1px solid black;border: 1px solid #000000;padding: 2px;color: #ffffff;background-color: #6690bc;text-align: center;" valign="middle"&gt;&lt;P&gt;BD&lt;/P&gt;&lt;P&gt;[ST &amp;amp; LEN]&lt;/P&gt;&lt;/TH&gt;&lt;TH style="border:1px solid black;border: 1px solid #000000;padding: 2px;color: #ffffff;background-color: #6690bc;text-align: center;" valign="middle"&gt;&lt;P&gt;BD&lt;/P&gt;&lt;P&gt;[ADR]&lt;/P&gt;&lt;/TH&gt;&lt;TH style="border:1px solid black;border: 1px solid #000000;padding: 2px;color: #ffffff;background-color: #6690bc;text-align: center;" valign="middle"&gt;Comments&lt;/TH&gt;&lt;/TR&gt;&lt;/THEAD&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;143&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;&lt;SPAN style="color: #339966;"&gt;0x08800252&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;0x19EF650&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;Previously received and processed frame&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;144&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;&lt;STRONG style="color: #ff0000;"&gt;0x90000600&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;0x19EFE50&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;'Missed' frame&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;145&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;&lt;SPAN style="color: #339966;"&gt;0x18800223&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;0x19F0650&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;Just received frame (after the missed one)&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Observations are as follows:&lt;/P&gt;&lt;P&gt;- the DMA RX interrupt is happening on receiving this 'missed' frame,&lt;/P&gt;&lt;P&gt;- the 'missed' rx frame itself is actually written into the memory (into the buffer pointed by BD),&lt;/P&gt;&lt;P&gt;- no errors in FEC MIB counters detected in 'missed'-situations,&lt;/P&gt;&lt;P&gt;- 'missing' may happen at any location of BDT (we have 192 rx BD in the table),&lt;/P&gt;&lt;P&gt;- switching D-Cache OFF doesn't help (though we locate BDT &amp;amp; buffers in the noncacheable area),&lt;/P&gt;&lt;P&gt;- moving BDT to local SRAM (from external SDRAM) doesn't help,&lt;/P&gt;&lt;P&gt;- the fec driver, and the appropriate rx bd processing code was reviewed &amp;amp; rechecked for ~1000 times..&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any thoughts? Did anyone face with such FEC MCD behaviour?&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance,&lt;/P&gt;&lt;P&gt;Yuri&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 10 Mar 2015 14:32:18 GMT</pubDate>
    <dc:creator>YuriT</dc:creator>
    <dc:date>2015-03-10T14:32:18Z</dc:date>
    <item>
      <title>MCF5485 FEC DMA doesn't update rx BD sometimes</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF5485-FEC-DMA-doesn-t-update-rx-BD-sometimes/m-p/373319#M12375</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;We've discovered that MCF5485 DMA, which we use to receive frames from FEC, under heavy ethernet rx load doesn't update next rx BD in the table sometimes. I.e. the frame is received, but BD status &amp;amp; len fields may remain unchanged. We use the latest MCD DMA API (v0.3 (2004-04-26)) from Freescale to work with DMA.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;To demonstrate the issue - here is the example of the appropriate rx BDT area snapshots, which we see on entering into 3 consecutive rx interrupt handler calls:&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;- last rx (OK):&lt;/P&gt;&lt;DIV class="j-rte-table"&gt;&lt;TABLE border="1" class="jiveBorder" height="120" style="border: 1px solid rgb(0, 0, 0); width: 731px; height: 119px;"&gt;&lt;THEAD&gt;&lt;TR&gt;&lt;TH style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;color: #ffffff;background-color: #6690bc;text-align: center;" valign="middle"&gt;&lt;P&gt;BD&lt;/P&gt;&lt;P&gt;#&lt;/P&gt;&lt;/TH&gt;&lt;TH style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;color: #ffffff;background-color: #6690bc;text-align: center;" valign="middle"&gt;&lt;P&gt;BD&lt;/P&gt;&lt;P&gt;[ST &amp;amp; LEN]&lt;/P&gt;&lt;/TH&gt;&lt;TH style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;color: #ffffff;background-color: #6690bc;text-align: center;" valign="middle"&gt;&lt;P&gt;BD&lt;/P&gt;&lt;P&gt;[ADR]&lt;/P&gt;&lt;/TH&gt;&lt;TH style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;color: #ffffff;background-color: #6690bc;text-align: center;" valign="middle"&gt;Comments&lt;/TH&gt;&lt;/TR&gt;&lt;/THEAD&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;"&gt;143&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;"&gt;&lt;SPAN style="color: #339966;"&gt;0x18800252&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;"&gt;0x19EF650&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;"&gt;Just received frame&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;"&gt;144&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;"&gt;&lt;STRONG style=": ; color: #339966;"&gt;0x90000600&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;"&gt;0x19EFE50&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;"&gt;&lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;Wait&lt;/STRONG&gt;&lt;/SPAN&gt; for the next frame &lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;here&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;"&gt;145&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;"&gt;&lt;SPAN style="color: #339966;"&gt;0x90000600&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;"&gt;0x19F0650&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid rgb(0, 0, 0);padding: 2px;"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;- next rx ('missed' frame):&lt;/P&gt;&lt;DIV class="j-rte-table"&gt;&lt;TABLE border="1" class="jiveBorder" height="120" style="border: 1px solid #000000; width: 1176px; height: 119px;" width="1175"&gt;&lt;THEAD&gt;&lt;TR&gt;&lt;TH style="border:1px solid black;border: 1px solid #000000;padding: 2px;color: #ffffff;background-color: #6690bc;text-align: center;" valign="middle"&gt;&lt;P&gt;BD&lt;/P&gt;&lt;P&gt; #&lt;/P&gt;&lt;/TH&gt;&lt;TH style="border:1px solid black;border: 1px solid #000000;padding: 2px;color: #ffffff;background-color: #6690bc;text-align: center;" valign="middle"&gt;&lt;P&gt;BD&lt;/P&gt;&lt;P&gt;[ST &amp;amp; LEN]&lt;/P&gt;&lt;/TH&gt;&lt;TH style="border:1px solid black;border: 1px solid #000000;padding: 2px;color: #ffffff;background-color: #6690bc;text-align: center;" valign="middle"&gt;&lt;P&gt;BD&lt;/P&gt;&lt;P&gt;[ADR]&lt;/P&gt;&lt;/TH&gt;&lt;TH style="border:1px solid black;border: 1px solid #000000;padding: 2px;color: #ffffff;background-color: #6690bc;text-align: center;" valign="middle"&gt;Comments&lt;/TH&gt;&lt;/TR&gt;&lt;/THEAD&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;143&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;&lt;SPAN style="color: #339966;"&gt;0x08800252&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;0x19EF650&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;Previously received and processed frame&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;144&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;&lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;0x90000600&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;0x19EFE50&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;&lt;P&gt;Frame is actually rxed to [ADR], but [ST &amp;amp; LEN] wasn't updated !!!&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;145&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;&lt;SPAN style="color: #339966;"&gt;0x90000600&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;0x19F0650&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;- next rx (after miss):&lt;/P&gt;&lt;DIV class="j-rte-table"&gt;&lt;TABLE border="1" class="jiveBorder" height="120" style="border: 1px solid #000000; width: 896px; height: 119px;" width="895"&gt;&lt;THEAD&gt;&lt;TR&gt;&lt;TH style="border:1px solid black;border: 1px solid #000000;padding: 2px;color: #ffffff;background-color: #6690bc;text-align: center;" valign="middle"&gt;&lt;P&gt;BD&lt;/P&gt;&lt;P&gt; #&lt;/P&gt;&lt;/TH&gt;&lt;TH style="border:1px solid black;border: 1px solid #000000;padding: 2px;color: #ffffff;background-color: #6690bc;text-align: center;" valign="middle"&gt;&lt;P&gt;BD&lt;/P&gt;&lt;P&gt;[ST &amp;amp; LEN]&lt;/P&gt;&lt;/TH&gt;&lt;TH style="border:1px solid black;border: 1px solid #000000;padding: 2px;color: #ffffff;background-color: #6690bc;text-align: center;" valign="middle"&gt;&lt;P&gt;BD&lt;/P&gt;&lt;P&gt;[ADR]&lt;/P&gt;&lt;/TH&gt;&lt;TH style="border:1px solid black;border: 1px solid #000000;padding: 2px;color: #ffffff;background-color: #6690bc;text-align: center;" valign="middle"&gt;Comments&lt;/TH&gt;&lt;/TR&gt;&lt;/THEAD&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;143&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;&lt;SPAN style="color: #339966;"&gt;0x08800252&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;0x19EF650&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;Previously received and processed frame&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;144&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;&lt;STRONG style="color: #ff0000;"&gt;0x90000600&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;0x19EFE50&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;'Missed' frame&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;145&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;&lt;SPAN style="color: #339966;"&gt;0x18800223&lt;/SPAN&gt;&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;0x19F0650&lt;/TD&gt;&lt;TD style="border:1px solid black;border: 1px solid #000000;padding: 2px;"&gt;Just received frame (after the missed one)&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Observations are as follows:&lt;/P&gt;&lt;P&gt;- the DMA RX interrupt is happening on receiving this 'missed' frame,&lt;/P&gt;&lt;P&gt;- the 'missed' rx frame itself is actually written into the memory (into the buffer pointed by BD),&lt;/P&gt;&lt;P&gt;- no errors in FEC MIB counters detected in 'missed'-situations,&lt;/P&gt;&lt;P&gt;- 'missing' may happen at any location of BDT (we have 192 rx BD in the table),&lt;/P&gt;&lt;P&gt;- switching D-Cache OFF doesn't help (though we locate BDT &amp;amp; buffers in the noncacheable area),&lt;/P&gt;&lt;P&gt;- moving BDT to local SRAM (from external SDRAM) doesn't help,&lt;/P&gt;&lt;P&gt;- the fec driver, and the appropriate rx bd processing code was reviewed &amp;amp; rechecked for ~1000 times..&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any thoughts? Did anyone face with such FEC MCD behaviour?&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance,&lt;/P&gt;&lt;P&gt;Yuri&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Mar 2015 14:32:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF5485-FEC-DMA-doesn-t-update-rx-BD-sometimes/m-p/373319#M12375</guid>
      <dc:creator>YuriT</dc:creator>
      <dc:date>2015-03-10T14:32:18Z</dc:date>
    </item>
    <item>
      <title>Re: MCF5485 FEC DMA doesn't update rx BD sometimes</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF5485-FEC-DMA-doesn-t-update-rx-BD-sometimes/m-p/373320#M12376</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Have you checked the Chip Errata? The FEC suffers from SECF064 (early silicon), SECF067, SECF010, SECF175.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You might be suffering from:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SECF175: Simultaneous FIFO Read/Write Results in Data Corruption&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- Fix Plan: Will not be fixed&lt;/P&gt;&lt;P&gt;- Workaround: Use TCP/IP to recover from the data corruption (doesn't apply for your problem though)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Try and make sure your FIFO pointers are aligned if you can.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Where is the "BD" documented in the Manual? Is it in the FEC, DMA or FIFO section? From the Reference Manual I can't work out in my head how the FEC works at all. The FEC chapter says that the "31.4.2.1 Receive Frame Status Word (RFSW)" is in the FIFO after the data. But that isn't the BD (although some bits from there might end up in the BD).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've seen various "simultaneous access" bugs in hardware before. I suspect that some other asynchronous operation like handling a Transmit interrupt (or some other DMA operation) is reading or writing a controller register at the same time that the hardware is about to try and update the BD and it all goes wrong. I'd suggest keeping an in-memory circular event log, timestamped to the microsecond (or better). I suspect you'll find the "DMA Rx Interrupt" that happens on the "missed frame" happening just after some other operation where your code read or wrote a FEC, FIFO or DMA register. Look for a "time correlation" and then try to make it worse (like reading a register 20 times instead of once).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you can characterise the problem reliably enough to recognise it, you probably have enough information to confidently work around it. If you want to report it to Freescale you may need to provide software demonstrating the problem running on their evaluation board.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Search for "MCF5485 FEC" and go through some of the other reports. Note that the MCF5485 FEC looks to be derived from the MCP5200 chip, so it would be worth reading that chip's Manual, Errata and any posts on problems with that chip too.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/message/20009#20009" title="https://community.freescale.com/message/20009#20009"&gt;https://community.freescale.com/message/20009&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.nxp.com/message/84964"&gt;Re: MCF5475 FEC transmit hang&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.nxp.com/message/49581"&gt;MCF5485 FEC DMA problem&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/message/12666#12666" title="https://community.freescale.com/message/12666#12666"&gt;https://community.freescale.com/message/12666#12666&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/message/441783#441783" title="https://community.freescale.com/message/441783#441783"&gt;https://community.freescale.com/message/441783#441783&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.nxp.com/message/437464"&gt;Re: MCF5485 FEC inverted CRC&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Tom&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 12 Mar 2015 00:00:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF5485-FEC-DMA-doesn-t-update-rx-BD-sometimes/m-p/373320#M12376</guid>
      <dc:creator>TomE</dc:creator>
      <dc:date>2015-03-12T00:00:52Z</dc:date>
    </item>
  </channel>
</rss>

