gen83xx ethernet transmit problem
Thomas.Doerfler at embedded-brains.de
Tue Jun 9 08:47:09 UTC 2009
David Brooke wrote:
> I've spent some time investigating a problem with ethernet
> transmitting corrupt data. From the viewpoint of the CPU (debug
> prints and RTEMS shell memory dumps) all the data structures appear
> to be correct and I'm now fairly sure that the problem is that the
> data buffer is not being pushed out from cache to main memory before
> the TSEC DMA transfer reads the data. A quick hack to create 2
> buffer descriptors pointing to the same data buffer results in a
> corrupt packet followed immediately by a correct packet. The corrupt
> packet contains mostly the specific data with which I initialised
> the heap but with a few bytes set to the correct data.
This really sounds like a cache problem.
> The TSEC driver sets both of the snoop enable bits (TBDSEN and
> TDSEN) in the TSEC DMACTRL register and it seems that the BD are
> being read correctly, but the actual data buffer is not correct. My
> understanding is that setting these bits should ensure that the
> buffer is pushed out of cache before the DMA transfer is allowed to
Right, this wokrs fine on MPC8349 and MPC8313.
> The ethernet works fine in U-Boot and I'm network loading the RTEMS
Does U-Boot have the data cache enabled?
> I suspect that something is being misconfigured in the RTEMS BSP
> initialisation (although mostly that just uses what U-Boot already
> set up) but have not been able to find anything obviously wrong.
Just a guess: did you check the chip errata from freescale? Is the TSEC
in this chip placed somewhere away from the main processor bus, so
snooping will not work properly?
I do not expect these hints to solve your problem, but have no other
idea right now :-(
> I would be grateful for any suggestions and can provide more
> information if required.
> rtems-users mailing list
> rtems-users at rtems.org
Embedded Brains GmbH
Thomas Doerfler Obere Lagerstrasse 30
D-82178 Puchheim Germany
email: Thomas.Doerfler at embedded-brains.de
More information about the users