hawkwolf 发表于 2014-11-11 00:01:14

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

目前cc-a80每次开机mac地址都会变,所以不能实现路由器上绑定静态IP,求使mac地址固定下来方法。

PeterW 发表于 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為示範用 , 不要照抄) , 存檔

MAC = "9E5264CD5822"

6. sudo fex2bin script.fex /boot/script.bin
7. sudo reboot 重新開機 , 完成 !!

@allen 发表于 2014-11-11 11:58:30

楼上的方法是不可行的,下一版应该能固定,如果LZ有条件的话可打上这个临时的补丁--- a/drivers/net/ethernet/sunxi/eth/sunxi_geth.c
+++ b/drivers/net/ethernet/sunxi/eth/sunxi_geth.c
@@ -33,11 +33,14 @@
#include <linux/pinctrl/consumer.h>
#include <linux/pinctrl/pinctrl.h>
#include <linux/netdevice.h>
+//#include <mach/hardware.h>

#include <linux/clk/sunxi_name.h>

#include <mach/sys_config.h>
#include <mach/gpio.h>
+#include <mach/sun9i/platform-sun9iw1p1.h>
+

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

+#define IO_ADDRESS(x)(x + 0xf0000000)
+
#define HASH_TABLE_SIZE      64
#define MAX_BUF_SZ   (SZ_2K - 1)

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

+
+               unsigned int reg_val;
+               reg_val = readl(SUNXI_SID_VBASE);
+               pr_warning("emac: use mac address from chipid\n");
+               ndev->dev_addr = 0x02; /* Non OUI / registered MAC address */
+
+               pr_warning("reg_val=%d",reg_val);
+               ndev->dev_addr = (reg_val >>0) & 0xff;
+               reg_val = readl(SUNXI_SID_VBASE + 0x0c);
+               ndev->dev_addr = readl(SUNXI_SID_VBASE + 0x200);
+               ndev->dev_addr = readl(SUNXI_SID_VBASE + 0x200 + 0x4);
+               ndev->dev_addr = readl(SUNXI_SID_VBASE + 0x200 + 0x8);
+               ndev->dev_addr = readl(SUNXI_SID_VBASE + 0x200 + 0xc);
+
+
+
+/*
                if (!is_valid_ether_addr(ndev->dev_addr)) {
                        random_ether_addr(ndev->dev_addr);
                        printk(KERN_WARNING "%s: Use random mac address\n", ndev->name);
                }
+
+
+               */
      }
}

hawkwolf 发表于 2014-11-15 11:27:19

通过给a80制定静态IP的方式暂时解决,坐等官方下一版固件吧。

hawkwolf 发表于 2014-11-15 11:30:21

目前的设计也有可取之处,入网局域网会变MAC,避免第一次入网络MAC冲突。不过最好是能在入网成功的时候自动固定最好。要是代码里直接写死,量产后都一样,入网也是个问题。

tianguau 发表于 2014-11-15 12:46:04

修改fex文件完全搞不定, 在sunxi-linux的代码里面只有emac用到了fex设定的值,在gmac里面没有用到。
我的方法是修改/etc/network/interface文件,增加下面一行。
pre-up ifconfig eth0 hw ether "abcdedf012344"
页: [1]
查看完整版本: cc-a80mac地址每次开机都不同