CubieBoard中文论坛

 找回密码
 立即注册
搜索
热搜: unable
查看: 6833|回复: 5

cc-a80mac地址每次开机都不同

[复制链接]
发表于 2014-11-11 00:01:14 | 显示全部楼层 |阅读模式
目前cc-a80每次开机mac地址都会变,所以不能实现路由器上绑定静态IP,求使mac地址固定下来方法。
回复

使用道具 举报

发表于 2014-11-11 10:38:06 | 显示全部楼层
我是用 cubian , lubuntu 應該是一樣吧 !!

修改 MAC Address (改script.bin方式)

1. 先建立一個工作區 mkdir work
2. cd /home/cubie/work
3. cp /boot/script.bin script_org.bin
4. bin2fex script_org.bin script.fex
4. sudo nano script.fex
5. 在最後一行加上 (以下MAC ADDR為示範用 , 不要照抄) , 存檔
[dynamic]
MAC = "9E5264CD5822"

6. sudo fex2bin script.fex /boot/script.bin
7. sudo reboot 重新開機 , 完成 !!
回复 支持 反对

使用道具 举报

发表于 2014-11-11 11:58:30 | 显示全部楼层
楼上的方法是不可行的,下一版应该能固定,如果LZ有条件的话可打上这个临时的补丁
  1. --- a/drivers/net/ethernet/sunxi/eth/sunxi_geth.c
  2. +++ b/drivers/net/ethernet/sunxi/eth/sunxi_geth.c
  3. @@ -33,11 +33,14 @@
  4. #include <linux/pinctrl/consumer.h>
  5. #include <linux/pinctrl/pinctrl.h>
  6. #include <linux/netdevice.h>
  7. +//#include <mach/hardware.h>

  8. #include <linux/clk/sunxi_name.h>

  9. #include <mach/sys_config.h>
  10. #include <mach/gpio.h>
  11. +#include <mach/sun9i/platform-sun9iw1p1.h>
  12. +

  13. #include "sunxi_geth.h"
  14. #include "sunxi_geth_status.h"
  15. @@ -47,6 +50,8 @@
  16. #define BUDGET         (DMA_DESC_RX/4)
  17. #define TX_THRESH      (DMA_DESC_TX/4)

  18. +#define IO_ADDRESS(x)  (x + 0xf0000000)
  19. +
  20. #define HASH_TABLE_SIZE        64
  21. #define MAX_BUF_SZ     (SZ_2K - 1)

  22. @@ -609,10 +614,30 @@ static void geth_check_addr(struct net_device *ndev, unsigned char *mac)
  23.                 for (i=0; i<ETH_ALEN; i++, p++)
  24.                         ndev->dev_addr[i] = simple_strtoul(p, &p, 16);

  25. +
  26. +               unsigned int reg_val;
  27. +               reg_val = readl(SUNXI_SID_VBASE);
  28. +               pr_warning("emac: use mac address from chipid\n");
  29. +               ndev->dev_addr[0] = 0x02; /* Non OUI / registered MAC address */
  30. +
  31. +               pr_warning("reg_val=%d",reg_val);
  32. +               ndev->dev_addr[1] = (reg_val >>  0) & 0xff;
  33. +               reg_val = readl(SUNXI_SID_VBASE + 0x0c);
  34. +               ndev->dev_addr[2] = readl(SUNXI_SID_VBASE + 0x200);
  35. +               ndev->dev_addr[3] = readl(SUNXI_SID_VBASE + 0x200 + 0x4);
  36. +               ndev->dev_addr[4] = readl(SUNXI_SID_VBASE + 0x200 + 0x8);
  37. +               ndev->dev_addr[5] = readl(SUNXI_SID_VBASE + 0x200 + 0xc);
  38. +
  39. +
  40. +
  41. +/*
  42.                 if (!is_valid_ether_addr(ndev->dev_addr)) {
  43.                         random_ether_addr(ndev->dev_addr);
  44.                         printk(KERN_WARNING "%s: Use random mac address\n", ndev->name);
  45.                 }
  46. +
  47. +
  48. +               */
  49.         }
  50. }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-15 11:27:19 | 显示全部楼层
通过给a80制定静态IP的方式暂时解决,坐等官方下一版固件吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-15 11:30:21 | 显示全部楼层
目前的设计也有可取之处,入网局域网会变MAC,避免第一次入网络MAC冲突。不过最好是能在入网成功的时候自动固定最好。要是代码里直接写死,量产后都一样,入网也是个问题。
回复 支持 反对

使用道具 举报

发表于 2014-11-15 12:46:04 | 显示全部楼层
修改fex文件完全搞不定, 在sunxi-linux的代码里面只有emac用到了fex设定的值,在gmac里面没有用到。
我的方法是修改/etc/network/interface文件,增加下面一行。
pre-up ifconfig eth0 hw ether "abcdedf012344"
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|粤ICP备13051116号|cubie.cc---深刻的嵌入式技术讨论社区

GMT+8, 2024-4-30 13:27 , Processed in 0.023910 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc. | Style by Coxxs

返回顶部