当前位置:  技术问答>linux和unix

关于uboot如何获取MAC

    来源: 互联网  发布时间:2016-06-21

    本文导语:  各位大侠好,我在网上搜了一下关于uboot获取mac的方法,说是在board.c中的下面这一段实现了获取mac的功能, /* MAC Address */ { int i; ulong reg; char *s, *e; char tmp[64]; i = getenv_r ("ethaddr", tmp, sizeof (tmp)); s =...

各位大侠好,我在网上搜了一下关于uboot获取mac的方法,说是在board.c中的下面这一段实现了获取mac的功能,
/* MAC Address */
{
int i;
ulong reg;
char *s, *e;
char tmp[64];

i = getenv_r ("ethaddr", tmp, sizeof (tmp));
s = (i > 0) ? tmp : NULL;

for (reg = 0; reg bd->bi_enetaddr[reg] = s ? simple_strtoul (s, &e, 16) : 0;
if (s)
s = (*e) ? e + 1 : e;
}
其中getenv_r()函数是:
int getenv_r (char *name, char *buf, unsigned len)
{
int i, nxt;

for (i=0; env_get_char(i) != ''; i=nxt+1) {
int val, n;

for (nxt=i; env_get_char(nxt) != ''; ++nxt) {
if (nxt >= CFG_ENV_SIZE) {
return (-1);
}
}
if ((val=envmatch((uchar *)name, i))  n++) && (*buf++ = env_get_char(val++)) != '')
;
if (len == n)
*buf = '';
return (n);
}
return (-1);
}
我怎么看都看不大明白,也许是自己水平有限,麻烦各位大侠帮我注释一下,或是有讲解资料的也说明一下,说一下获取mac到底是个怎么个过程,感激不尽!!!!!!!!!谢谢!!!!!!!

|
uboot有一些环境变量存储在flash的一个sector上,ethaddr是其中的一个,uboot启动时会读取这些内容放到SDRAM中,上面的代码只不过是从这些放在SDRAM的参数中把ethaddr读出来而已。

|

可以这么设置setenv ethaddr

read_srom_word()应该是从eeprom里面读取MAC地址,所以你要跟着下源码,
正常的运行应该是uboot启动后,如果ethaddr环境变量存在和读eeprom不是会同时进行的



|
看起来是的,这个靠你用环境变量设置。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 区分uboot和kernel的宏
  • 怎么用gdb调试uboot?????求解
  • ARM11 UBOOT移植问题
  • uboot 不能启动了
  • UBOOT启动一直输出OK是怎么回事
  • uboot移植后,使用历史命令问题~
  • uboot里 nboot 和 nboot.e有什么区别
  • uboot烧写问题,大家指教。初学。谢谢大家了。
  • dm355 uboot调试问题,高手指教,快,快,很急。。。。。。。。。。。。。。。。
  • 关于uboot打补丁的问题
  • 求各位高人 UBOOT!
  • UBOOT之MDDR内存参数修改
  • 关于uboot2009.08 debug的问题
  • uboot1.1.6移植问题
  • uboot 实现升级的问题。
  • uboot 怎样不输出内核信息
  • uboot和grub是什么关系
  • 如何让uboot自动从U盘更新内核?
  • 如何让uboot提速
  • 如何在DM368平台,Uboot下添加RTL8201的驱动


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3