6657例程GE的自有MAC地址设置问题

2019-07-21 16:55发布

本帖最后由 二十八 于 2016-8-29 21:33 编辑

C6657的以太网学习。“用户也可以使用自有的MAC地址,而不使用TI提供的MAC地址。在这种情况下,用户将自有的MAC地址填入mac_srcAddress,不再调用GE_get_macaddr(mac_srcAddress),同时需要在EMAC_init()函数中,将自有MAC地址加入到接收地址列表,以保证正常收包“(具体文件在附件中)下面是加入MAC地址到接收地址列表的范例代码:
  1. /* Setup MAC Address for Channel 0 */
  2.         EMAC_REGS->MACINDEX = 0;
  3.         EMAC_REGS->MACADDRHI = ((mac_addr1 & 0x00ff0000) << 8)
  4.                         | ((mac_addr1 & 0xff000000) >> 8)
  5.                         | ((mac_addr2 & 0x000000ff) << 8)
  6.                         | ((mac_addr2 & 0x0000ff00) >> 8);

  7.         EMAC_REGS->MACADDRLO = CSL_FMK(EMAC_MACADDRLO_VALID, 1)
  8.                         | CSL_FMK(EMAC_MACADDRLO_MATCHFILT, 1)
  9.                         | ((mac_addr1 & 0x000000ff) << 8)
  10.                         | ((mac_addr1 & 0x0000ff00) >> 8);

  11.         printf("macaddress: %02X:%02X:%02X:%02X:%02X:%02X ",
  12.                         ((mac_addr2 & 0x0000ff00) >> 8),
  13.                         (mac_addr2 & 0x000000ff),
  14.                         ((mac_addr1 & 0xff000000) >> 24),
  15.                         ((mac_addr1 & 0x00ff0000) >> 16),
  16.                         ((mac_addr1 & 0x0000ff00) >> 8),
  17.                         (mac_addr1 & 0x000000ff));
复制代码这个例子看得不是太懂,这里的这些与或运算要表达什么意思,怎样将自有的MAC地址通过改这段代码写入呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
zhangmangui
1楼-- · 2019-07-21 19:28
 精彩回答 2  元偷偷看……
二十八
2楼-- · 2019-07-21 19:54
zhangmangui 发表于 2016-8-29 22:52
与或运算是将你的MAC地址写到程序的相关寄存器或变量里面了
而你只需将mac_addr1和mac_addr2根据实际情况写 ...

比如我要写入的MAC地址是40:15:7e:ab:91:ab,我该怎样对mac_addr1和mac_addr2赋值呢?
zhangmangui
3楼-- · 2019-07-21 23:03
EMAC_REGS->MACADDRHI = ((mac_addr1 & 0x00ff0000) << 8)

04.                        | ((mac_addr1 & 0xff000000) >> 8)

05.                        | ((mac_addr2 & 0x000000ff) << 8)

06.                        | ((mac_addr2 & 0x0000ff00) >> 8);

这个很明显是4个字节   
EMAC_REGS->MACADDRLO = CSL_FMK(EMAC_MACADDRLO_VALID, 1)

09.                        | CSL_FMK(EMAC_MACADDRLO_MATCHFILT, 1)

10.                        | ((mac_addr1 & 0x000000ff) << 8)

11.                        | ((mac_addr1 & 0x0000ff00) >> 8);

这个是2个字节  
共六个字节     你的这6个字节  40:15:7e:ab:91:ab   写入这两个地址啊

一周热门 更多>