3518e uboot自动设置mac地址
来源:互联网 发布:淘宝宝贝手机拍摄技巧 编辑:程序博客网 时间:2024/06/04 18:54
由于产品的需要,需要在uboot中自动设置mac地址,因此查了网上的一些资料,再加上自己的修改,可以成功设置mac地址。以下是具体步骤:***1.获取随机数,代码是来自网上***
static unsigned char random1(void){ unsigned long long rand = get_timer(0) * 100000; unsigned char a; rand = rand * 1664525L + 1013904223L; a = rand >> 24; //不是最低8位 //为了得到 ‘0~9, a ~ f, A ~ F’ 的值, if (a < 'A') a = a % 10 + 48; else if (a < 'F') a = a % 6 + 65; else if (a < 'a' || a > 'f') a = a % 6 + 97; return a;}
2.设置mac地址
代码如下,来自于网上,做了一些修改
void autoset_mac_addr(void){ #define XMK_STR(x) #x #define MK_STR(x) XMK_STR(x) char *mac_add; mac_add = getenv("ethaddr"); //默认mac地址00:00:23:34:45:66 if(strcmp(mac_add, MK_STR(CONFIG_ETHADDR)) == 0)//如果为默认值,则修改mac地址 { /*set mac addr */ char mac[18]={'0','0'}; int i; for (i=3; i<17; i++) { if((i%3) == 2)//不用给 2 5 8 11 14 即":"位获取随机数 continue; udelay(10); mac[i] = random1();//获取随机数 } mac[2] = mac[5] = mac[8] = mac[11] = mac[14] = ':'; mac[17] = '\0'; setenv("ethaddr", mac);//设置mac saveenv();//保存 }}
3.调用
我主要是在u-boot-2010.06\common\main.c中调用的,具体是在main_loop函数中,每次启动uboot直接调用,如果和默认Mac地址一样,则修改,否则不修改。
经过测试,可以每次获得不同的Mac地址,大致思路就是这样,新手一枚,若有错误或者更好的方法,敬请指教。
0 0
- 3518e uboot自动设置mac地址
- uboot修改mac地址
- 设置uboot自动启动命令
- uboot生成随机的MAC地址
- 设置MAC地址
- 设置mac地址
- zynq MAC地址设置
- nrf51822 --- 设置mac地址
- 随机设置MAC地址
- 网络IP地址/MAC地址/网络代理一键设置脚本(自动配置)
- Mac自动开关机设置
- 自动设置IP地址
- MAC地址自动学习机制
- MAC地址自动学习机制
- OK6410 uboot编译以及设置uboot开机自动启动内核
- MAC地址及设置方法
- MAC地址及设置方法
- Mobile设置查看MAC地址
- 用C语言进行CGI程序设计
- leetcode 191. Number of 1 Bits
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
- SSH Secure Shell Client远程登录Linux
- hdu 4252(单调栈)
- 3518e uboot自动设置mac地址
- TCP/IP四层模型和OSI七层模型对应表
- 百万级数据查询优化
- Hibernate 配置
- 开源社区网址 (cheng long)
- Linux Kernel系列一:开篇和Kernel启动概要
- oracle union 用法
- adb模式下管理数据库
- leetcode