博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Feescale K60开发笔记15: 更改MAC地址
阅读量:2042 次
发布时间:2019-04-28

本文共 1010 字,大约阅读时间需要 3 分钟。

    项目要求可以自己设定MAC地址,下面介绍具体的实现方法。
    在RTCS初始化时,有函数:ENET_get_mac_address,此函数返回MAC地址,但是此函数的具体使用方法没有在文档中介绍,查看其源码,其原型在enaddr.c中出现:
uint32_t ENET_get_mac_address
   (
      uint32_t        device,
      uint32_t        value,
      _enet_address  address
   )
{
   return _bsp_get_mac_address(device,value,address);
}
 
    次函数只是简单的调用了函数_bsp_get_mac_address,此函数在init_enet.c中。在这个函数里使用BSP_DEFAULT_ENET_OUI给MAC地址的高3字节赋值,用自身IP地址的低3字节给MAC地址低3字节赋值。
const _enet_address _enet_oui = BSP_DEFAULT_ENET_OUI;
bool _bsp_get_mac_address
   (
      uint32_t        device,
      uint32_t        value,
      _enet_address  address
   )
{ /* Body */
   if (device >= BSP_ENET_DEVICE_COUNT)
      return FALSE;
   address[0] = _enet_oui[0];
   address[1] = _enet_oui[1];
   address[2] = _enet_oui[2];
   address[3] = (value & 0xFF0000) >> 16;
   address[4] = (value & 0xFF00) >> 8;
   address[5] = (value & 0xFF);
   return TRUE;
}
    所以,可以通过
BSP_DEFAULT_ENET_OUI宏定义MAC地址的高3字节,但是此宏在BSP中也已经调用,所以在更改时,必须对BSP进行重新编译才会起效果。好在MAC地址在定义时,高3字节为厂家标识,对于同一个厂家而言,MAC地址的高3字节是不需要改变的,这样我们只需编译1次即可。MAC地址的低3字节,我们可以任意修改,修改后传递给
ipcfg_init_device函数即可。调用程序如下:
图片
图片
图片
原创性文章,转载请注明出处 
 
CSDN:
你可能感兴趣的文章
剑指offer 61. 求1+2+3+...+n
查看>>
剑指offer 62. 孩子们的游戏
查看>>
剑指offer 63.扑克牌顺子
查看>>
剑指offer 64. 翻转单词顺序列
查看>>
剑指offer 65. 左旋转字符串
查看>>
剑指offer 66. 和为S的两个数字
查看>>
leetcode 热题 Hot 100-5. 二叉树的最大深度
查看>>
leetcode 热题 Hot 100-2. 有效的括号
查看>>
leetcode 热题 Hot 100-3. 合并两个有序链表
查看>>
leetcode 热题 Hot 100-4. 对称二叉树
查看>>
Leetcode C++《热题 Hot 100-12》226.翻转二叉树
查看>>
Leetcode C++《热题 Hot 100-13》234.回文链表
查看>>
Leetcode C++《热题 Hot 100-14》283.移动零
查看>>
Leetcode C++《热题 Hot 100-15》437.路径总和III
查看>>
Leetcode C++《热题 Hot 100-16》448.找到所有数组中消失的数字
查看>>
Leetcode C++《热题 Hot 100-17》461.汉明距离
查看>>
Leetcode C++《热题 Hot 100-18》538.把二叉搜索树转换为累加树
查看>>
Leetcode C++《热题 Hot 100-19》543.二叉树的直径
查看>>
Leetcode C++《热题 Hot 100-20》617.合并二叉树
查看>>
Leetcode C++《热题 Hot 100-21》581.最短无序连续子数组
查看>>