执行setenv ethaddr的时候提示Can't over write的原因及解决方法

  UBOOT mac一般只可以更改一次,可以看一下UBOOT的源码,是否可重复更改取决于系统配置

     

    相关代码在 uboot源码目录下的common\cmd_nvedit.c


#ifndef CONFIG_ENV_OVERWRITE
      /*
      * Ethernet Address and serial# can be set only once,
      * ver is readonly.
      */
      if ( (strcmp (name, "serial#") == 0) ||
      ((strcmp (name, "ethaddr") == 0)
      #if defined(CONFIG_OVERWRITE_ETHADDR_ONCE) &&  
                  defined(CONFIG_ETHADDR)
                  && (strcmp (env_get_addr(oldval),MK_STR
                  (CONFIG_ETHADDR)) != 0)
      #endif /* CONFIG_OVERWRITE_ETHADDR_ONCE && CONFIG_ETHADDR */
      ) ) {
      printf ("Can't overwrite \"%s\"\n", name);
      return 1;
      }
      #endif


            从此处代码分析得知,若没有定义CONFIG_ENV_OVERWRITE ,则不能

 多次更改MAC地址,所以只要#define CONFIG_ENV_OVERWRITE 定义下就

 可以了,定义在哪里合适我不怎么知道,我是定义在 “include/configs/”中与自

 己板子对应的配置头文件中的。仅供参考


你可能感兴趣的:(over,write,Can't,setenv,ethaddr)