EmbeddedRelated.com
Forums

[LPC2468]ethernet transmission problem

Started by laurent vaudoit December 8, 2010
Hi all,
i have a project with lpc2468 c and SMSC LAN8700 phy device
sometimes when my firmware send a frame on the ethernet,
this one is not sent on the bus.
everything seems to be correct, i mean i can see the eth_TX_EN signal to
high level,
i even have the TX_DONE interrupt, but my frame is not seen on the bus.

i am in MII mode, my c is running at 72MHz

when i analyse the signals TXD[0..3] and TX_CLK, it seems that when the
problem occurs,
the synchronisation is not perfect (not compliant whith IEEE MII
specication)
but i have no idea if this is really the cause of my problem or not.

Does anyone allready got same kind of problem, or any idea on how to find
where the problem come from?

thanks in advance for your help

Laurent

An Engineer's Guide to the LPC2100 Series

Hi,
what do you mean on the bus? Try to use wireshark and packeth to check
sending/receiving frames.

Regards,
Kuba

2010/12/8 laurent vaudoit

> Hi all,
> i have a project with lpc2468 c and SMSC LAN8700 phy device
> sometimes when my firmware send a frame on the ethernet,
> this one is not sent on the bus.
> everything seems to be correct, i mean i can see the eth_TX_EN signal to
> high level,
> i even have the TX_DONE interrupt, but my frame is not seen on the bus.
>
> i am in MII mode, my c is running at 72MHz
>
> when i analyse the signals TXD[0..3] and TX_CLK, it seems that when the
> problem occurs,
> the synchronisation is not perfect (not compliant whith IEEE MII
> specication)
> but i have no idea if this is really the cause of my problem or not.
>
> Does anyone allready got same kind of problem, or any idea on how to find
> where the problem come from?
>
> thanks in advance for your help
>
> Laurent
>
>
>

--
Pozdrawiam,
Kuba
http://www.jdorzak.pl
hi
i allready use wireshark to spy ethernet bus.
and when everything is ok, i'm able to sse the frame on wireshark,
and when i have the problem, no frame is seen on the spy

Regards
Laurent
On Wed, Dec 8, 2010 at 6:25 PM, Kuba Dorzak wrote:

> Hi,
> what do you mean on the bus? Try to use wireshark and packeth to check
> sending/receiving frames.
>
> Regards,
> Kuba
>
> 2010/12/8 laurent vaudoit
>>
>> Hi all,
>> i have a project with lpc2468 c and SMSC LAN8700 phy device
>> sometimes when my firmware send a frame on the ethernet,
>> this one is not sent on the bus.
>> everything seems to be correct, i mean i can see the eth_TX_EN signal to
>> high level,
>> i even have the TX_DONE interrupt, but my frame is not seen on the bus.
>>
>> i am in MII mode, my c is running at 72MHz
>>
>> when i analyse the signals TXD[0..3] and TX_CLK, it seems that when the
>> problem occurs,
>> the synchronisation is not perfect (not compliant whith IEEE MII
>> specication)
>> but i have no idea if this is really the cause of my problem or not.
>>
>> Does anyone allready got same kind of problem, or any idea on how to find
>> where the problem come from?
>>
>> thanks in advance for your help
>>
>> Laurent
> --
> Pozdrawiam,
> Kuba
> http://www.jdorzak.pl
>
>
>
Working on my LPC2478+Micrel+examplary code from NXP site I had a problem
with interrupts- I'd reccomend you at the beginning not to use interrupts,
just polling. If from time to time you lost a frame- try to debug your
function which sends the frames to see what exactly is going on. With
Packeth you can check in debugging mode how's your EMAC receives frames.

Regards,
Kuba

2010/12/8 laurent vaudoit

> hi
> i allready use wireshark to spy ethernet bus.
> and when everything is ok, i'm able to sse the frame on wireshark,
> and when i have the problem, no frame is seen on the spy
>
> Regards
> Laurent
> On Wed, Dec 8, 2010 at 6:25 PM, Kuba Dorzak wrote:
>
>> Hi,
>> what do you mean on the bus? Try to use wireshark and packeth to check
>> sending/receiving frames.
>>
>> Regards,
>> Kuba
>>
>> 2010/12/8 laurent vaudoit
>>>
>>> Hi all,
>>> i have a project with lpc2468 c and SMSC LAN8700 phy device
>>> sometimes when my firmware send a frame on the ethernet,
>>> this one is not sent on the bus.
>>> everything seems to be correct, i mean i can see the eth_TX_EN signal to
>>> high level,
>>> i even have the TX_DONE interrupt, but my frame is not seen on the bus.
>>>
>>> i am in MII mode, my c is running at 72MHz
>>>
>>> when i analyse the signals TXD[0..3] and TX_CLK, it seems that when the
>>> problem occurs,
>>> the synchronisation is not perfect (not compliant whith IEEE MII
>>> specication)
>>> but i have no idea if this is really the cause of my problem or not.
>>>
>>> Does anyone allready got same kind of problem, or any idea on how to find
>>> where the problem come from?
>>>
>>> thanks in advance for your help
>>>
>>> Laurent
>>>
>>>
>> --
>> Pozdrawiam,
>> Kuba
>> http://www.jdorzak.pl
>
>

--
Pozdrawiam,
Kuba
http://www.jdorzak.pl
i spend some time analysing the problem, and the problem is not coming from
the interruption, or even from the stack ethernet i use (nichestack)
the problem seems to come from the communication on the MII interface with
the phy driver
i have some weird synchronisation when the frame is not sent, between TX_CLK
and TXD[] signals.

Regards
Laurent

On Wed, Dec 8, 2010 at 9:49 PM, Kuba Dorzak wrote:

> Working on my LPC2478+Micrel+examplary code from NXP site I had a problem
> with interrupts- I'd reccomend you at the beginning not to use interrupts,
> just polling. If from time to time you lost a frame- try to debug your
> function which sends the frames to see what exactly is going on. With
> Packeth you can check in debugging mode how's your EMAC receives frames.
> Regards,
> Kuba
>
> 2010/12/8 laurent vaudoit > hi
>> i allready use wireshark to spy ethernet bus.
>> and when everything is ok, i'm able to sse the frame on wireshark,
>> and when i have the problem, no frame is seen on the spy
>>
>> Regards
>> Laurent
>> On Wed, Dec 8, 2010 at 6:25 PM, Kuba Dorzak wrote:
>>
>>>
>>>
>>> Hi,
>>> what do you mean on the bus? Try to use wireshark and packeth to check
>>> sending/receiving frames.
>>>
>>> Regards,
>>> Kuba
>>>
>>> 2010/12/8 laurent vaudoit
>>>
>>>
>>>>
>>>> Hi all,
>>>> i have a project with lpc2468 c and SMSC LAN8700 phy device
>>>> sometimes when my firmware send a frame on the ethernet,
>>>> this one is not sent on the bus.
>>>> everything seems to be correct, i mean i can see the eth_TX_EN signal to
>>>> high level,
>>>> i even have the TX_DONE interrupt, but my frame is not seen on the bus.
>>>>
>>>> i am in MII mode, my c is running at 72MHz
>>>>
>>>> when i analyse the signals TXD[0..3] and TX_CLK, it seems that when the
>>>> problem occurs,
>>>> the synchronisation is not perfect (not compliant whith IEEE MII
>>>> specication)
>>>> but i have no idea if this is really the cause of my problem or not.
>>>>
>>>> Does anyone allready got same kind of problem, or any idea on how to
>>>> find where the problem come from?
>>>>
>>>> thanks in advance for your help
>>>>
>>>> Laurent
>>>>
>>>>
>>>
>>>
>>> --
>>> Pozdrawiam,
>>> Kuba
>>> http://www.jdorzak.pl
>>>
>> --
> Pozdrawiam,
> Kuba
> http://www.jdorzak.pl
>
>
>
So check the MII coniguration- maybe NicheLite uses RMII. You can also check
if your hardware supports MII coniguration- I know that you mentioned that
you use TXD[0..3], which is for MII, but for example, on one Olimex board
RMII is implemented but on schematic they use RXD[0..3], what is confusing.

If I were you I'd try to do the following things:
1) put the NicheLite away for a moment
2) get your PHY datasheet
3) adapt the code from NXP site to work on your hardware (their code allows
you to choose between MII/RMII)
4) check whether the comunication on the lowest level is ok (without IP,
TCP, apps)

If you do this, than you'll easier change the Nichelite EMAC layer.

Good luck,
Kuba

2010/12/9 laurent vaudoit

> i spend some time analysing the problem, and the problem is not coming from
> the interruption, or even from the stack ethernet i use (nichestack)
> the problem seems to come from the communication on the MII interface with
> the phy driver
> i have some weird synchronisation when the frame is not sent, between
> TX_CLK and TXD[] signals.
>
> Regards
> Laurent
> On Wed, Dec 8, 2010 at 9:49 PM, Kuba Dorzak wrote:
>
>> Working on my LPC2478+Micrel+examplary code from NXP site I had a problem
>> with interrupts- I'd reccomend you at the beginning not to use interrupts,
>> just polling. If from time to time you lost a frame- try to debug your
>> function which sends the frames to see what exactly is going on. With
>> Packeth you can check in debugging mode how's your EMAC receives frames.
>> Regards,
>> Kuba
>>
>> 2010/12/8 laurent vaudoit
>>
>>>
>>>
>>> hi
>>> i allready use wireshark to spy ethernet bus.
>>> and when everything is ok, i'm able to sse the frame on wireshark,
>>> and when i have the problem, no frame is seen on the spy
>>>
>>> Regards
>>> Laurent
>>>
>>>
>>> On Wed, Dec 8, 2010 at 6:25 PM, Kuba Dorzak wrote:
>>>
>>>>
>>>>
>>>> Hi,
>>>> what do you mean on the bus? Try to use wireshark and packeth to check
>>>> sending/receiving frames.
>>>>
>>>> Regards,
>>>> Kuba
>>>>
>>>> 2010/12/8 laurent vaudoit
>>>>
>>>>
>>>>>
>>>>> Hi all,
>>>>> i have a project with lpc2468 c and SMSC LAN8700 phy device
>>>>> sometimes when my firmware send a frame on the ethernet,
>>>>> this one is not sent on the bus.
>>>>> everything seems to be correct, i mean i can see the eth_TX_EN signal
>>>>> to high level,
>>>>> i even have the TX_DONE interrupt, but my frame is not seen on the bus.
>>>>>
>>>>> i am in MII mode, my c is running at 72MHz
>>>>>
>>>>> when i analyse the signals TXD[0..3] and TX_CLK, it seems that when the
>>>>> problem occurs,
>>>>> the synchronisation is not perfect (not compliant whith IEEE MII
>>>>> specication)
>>>>> but i have no idea if this is really the cause of my problem or not.
>>>>>
>>>>> Does anyone allready got same kind of problem, or any idea on how to
>>>>> find where the problem come from?
>>>>>
>>>>> thanks in advance for your help
>>>>>
>>>>> Laurent
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Pozdrawiam,
>>>> Kuba
>>>> http://www.jdorzak.pl
>>>>
>>>>
>>
>

--
Pozdrawiam,
Kuba
http://www.jdorzak.pl
>> from the stack ethernet i use (nichestack)

I tried using Nichelite and it had major problems. I wrote my own LPC2468 driver for their stack, but the source of the problems lies deep in their code. Cannot be fixed. I could show you the problems in their code exactly, but would take too much time here. I switched over to lwIP and it performs 1000% better, and it is free..

Chris.
Yeah, right now I am working on LWIP (LPC2478+Sourcery) I wrote the driver,
but I have a mistake somwhere as the stack claims that the devices (PC and
uc directly connected) are from different subnetworks and quit the packet on
IP level. ARP works fine.
Kuba

2010/12/9 Chris

> >> from the stack ethernet i use (nichestack)
>
> I tried using Nichelite and it had major problems. I wrote my own LPC2468
> driver for their stack, but the source of the problems lies deep in their
> code. Cannot be fixed. I could show you the problems in their code
> exactly, but would take too much time here. I switched over to lwIP and
> it performs 1000% better, and it is free..
>
> Chris.
>
>
>

--
Pozdrawiam,
Kuba
http://www.jdorzak.pl