Receiving Ethernet frames with MCF52233DEMO

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

Receiving Ethernet frames with MCF52233DEMO

跳至解决方案
2,004 次查看
mellow
Contributor I

Hi, I am starting to develop a network application using my own code because the Inter Niche stack is too big for my requirements.

After setting the PHY and FEC modules, I receive Ethernet frames, but only multicast (1st byte of MAC Address = 01) or broadcast (FF:FF:FF:FF:FF:FF) frames. I am not able to make a FEC interrupt with unicast frames addressed to my eval board. Neither using the promiscuous mode asserted. I think the unicast frames are being rejected, but I don’t see the reason. Following you can see some of my registers configuration.

 

 

MCF_FEC_RCR = MCF_FEC_RCR_MAX_FL(0x3E8) |

                  MCF_FEC_RCR_MII_MODE      |

                  MCF_FEC_RCR_PROM                                |                 

                  MCF_FEC_RCR_DRT;

    MCF_FEC_TCR = 0;

    MCF_FEC_EIMR = MCF_FEC_EIMR_TXF |

                   MCF_FEC_EIMR_RXF ;

    MCF_FEC_FRSR = 0x00000500;

    MCF_FEC_TFWR = MCF_FEC_TFWR_X_WMRK(0x2);

 

unsigned char mac_addr_fec[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

 

    /* Program this station's Ethernet physical address */

                /* Set the source address for the controller */

                MCF_FEC_PALR = (uint32)((0

                               | (mac_addr_fec[0] <<24)

                               | (mac_addr_fec[1] <<16)

                               | (mac_addr_fec[2] <<8)

                               | (mac_addr_fec[3] <<0)));

                MCF_FEC_PAUR = (uint32)((0

                               | (mac_addr_fec[4] <<24)

                                | (mac_addr_fec[5] <<16)

        | MCF_FEC_PAUR_TYPE(0x00008808)));   

   

   

      /* Configure Ethernet hash table bits */

    MCF_FEC_GAUR = 0;

    MCF_FEC_GALR = 0;

    MCF_FEC_IAUR = 0;

    MCF_FEC_IALR = 0;

 

 

Thanks for your help in advanced

标签 (1)
0 项奖励
回复
1 解答
883 次查看
bkatt
Contributor IV

mellow wrote:

 

unsigned char mac_addr_fec[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

 


This is not a legal mac address.

If you are going to just make one up, be careful about the  first octet. 

在原帖中查看解决方案

0 项奖励
回复
4 回复数
884 次查看
bkatt
Contributor IV

mellow wrote:

 

unsigned char mac_addr_fec[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

 


This is not a legal mac address.

If you are going to just make one up, be careful about the  first octet. 

0 项奖励
回复
883 次查看
mellow
Contributor I
Thanks for your response bkatt.

 
At first I was using this MAC address from an old Ethernet card 00:16:E6:1A:44:80, which is not detected by the receive block. However now I have tested the MAC address used in the InterNiche Stack (00:cf:52:08:cf:01) and it is received correctly. Does it mean that not all MAC address are detected right by the receive block?

Which is the first octet? I think is the one starting on the left, isn’t?
0 项奖励
回复
883 次查看
bkatt
Contributor IV

mellow wrote:
 
At first I was using this MAC address from an old Ethernet card 00:16:E6:1A:44:80, which is not detected by the receive block. However now I have tested the MAC address used in the InterNiche Stack (00:cf:52:08:cf:01) and it is received correctly. Does it mean that not all MAC address are detected right by the receive block?

Which is the first octet? I think is the one starting on the left, isn’t?

More useful information is here: http://en.wikipedia.org/wiki/MAC_address

 

If the first octet is odd, the coldfire hardware handles it as multicast and it cannot be used as a unicast address. If the MAC address is all zero, some implementations of the ARP protocol will be confused because they use all zeros as an internal indicator that the MAC is unknown.

 

I don't see any obvious problem with 00:16:E6:1A:44:80, although some company probably owns the 00:16:E6 prefix (likewise the 00:cf:52 prefix).

 

Vendors should advise implementors to set the "locally administered" bit when they need to create their own MAC addresses (for example start with 02:smileyhappy:

0 项奖励
回复
883 次查看
mjbcswitzerland
Specialist V

Hi

 

mac_addr_fec[0] is the first octet.

 

There should be no problems with using 00-00-00-00-00-00 as MAC address. The only time that it may cause difficulties is when using it together with DHCP where the DHCP server may not grant an IP address (many do though).

 

See also following threads:

http://forums.freescale.com/freescale/board/message?board.id=CFCOMM&message.id=2215&query.id=170591#...

 

http://forums.freescale.com/freescale/board/message?board.id=CFCOMM&message.id=437&query.id=170591#M...

 

Regards

 

Mark

 

 

www.uTasker.com
- OS, TCP/IP stack, USB, device drivers and simulator for M521X, M521XX, M5221X, M5222X, M5223X, M5225X. One package does them all - "Embedding it better..."

 

 

 

0 项奖励
回复