android uboot获取mac地址,uboot生成随机的MAC地址
uboot生成随机的MAC地址
R.wen
由于设备量产需要每台机器的MAC地址都不一样,所以我们给Uboot增加一个环境变量sysready,用来表示如果系统没有ready,就做一些额外的初始化工作,如生成一个随机的MAC地址,并保存到环境变量中。
一、 在s2410中找一个随机源也不容易,它不像x86一样有个硬件计数器可以作为随机源。这里我们使用了s2410的timer,经过测试也可以得到很好的随机数。
Timer部分的代码在cpu/arm920t/s24x0/interrupt.c中,首先要在lib_arm/board.c的初始化函数中加入初始化定时器的函数:
interrupt_init ();
接着就可以通过
Ret = get_ticks();
得到中断计数和。
由于系统总有一些不确定因素的影响,所以总会得到不同的计数和。
二、得到随机数
上面得到的随机数值差别非常小,但是经过下面的计算,就可以得到看起来很随机的数。
static unsigned char random(void)
{
unsigned long long rand = get_ticks() * 100000;
unsigned char a;
// See "Numerical Recipes in C", second edition, p. 284
rand = rand * + ;
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;
}
三、设置随机MAC地址:
s = getenv("sysready");
sysready = s ? (int)simple_strtol(s, NULL, 10) : CONFIG_BOOTDELAY;
if (sysready == 0) /* system not ready */
{
/*set mac addr */
char mac[18]={'0','0',};
int i;
for (i=3; i<17; i++)
{
udelay(10);
mac= random();
}
mac[2] = mac[5] = mac[8] = mac[11] = mac[14] = ':';
mac[17] = '\0';
setenv("ethaddr", mac);
setenv("sysready", "1");
saveenv();
}
四、应用
完成了上面的设置之后, 在系统第一次加载的时候,由于sysready为0,所以会重新生成一个随机的MAC地址,随后uboot会将sysready置为1。
如果需要重新生成一个MAC地址,则只需要将sysready重置为0,然后保存环境变量即可,即执行:
setenv sysready 0; saveenv
android uboot获取mac地址,uboot生成随机的MAC地址相关推荐
- android下获取无线wif信号、ssid、MAC等操作类
一个android下获取无线wif信号.ssid.MAC等操作的类. WifiAdmin.java package com.afu; import java.util.List; import and ...
- python随机生成一个地区地址_利用Python生成随机的IP地址
需求 在某应用中,需要根据一定的规则生成随机的IP地址,规则类似于192.168.11.0/24这样的CIDR形式给出. 实现 经过艰苦卓绝的调试,下面的代码是可以用的: RANDOM_IP_POOL ...
- python随机生成一个地区地址_Python生成随机MAC地址
利用python代码生成一个随机的MAC地址,使用python网络编程时或可用上,如果使用scapy模块则可直接利用RandMAC()函数来生成MAC. python 复制代码 代码如下: impor ...
- c语言怎么生成随机的mac,使用C语言生成随机MAC地址
最近,项目中使用了LM3S8962这个芯片,来让投影机具有网络控制功能,这个模块主要就是内部有一个简单的WEB服务器,可以进行SSI和CGI的编程,其还有串口,通过和DDP内部的UART口相连,两者可 ...
- android 中获取所有有效网卡和对应的IP地址
在开发应用时,经常要获取网络的所有网卡的IP地址,这样可以选择绑定哪个网卡. 代码如下: 获取所有有效的网卡: import java.net.Inet6Address; import java.ne ...
- 2003服务器修改网卡mac,网卡MAC地址修改神器 修改MAC地址、一键更换网卡MAC地址信...
网卡MAC地址修改神器支持Win XP,Win7,Win200,Win2003等并自动读取本机网卡所有列表信息,可自动生成随机网卡MAC地址,软件全自动禁启用网卡,可以全自动扫描网卡地址,修改多处网卡 ...
- 用python随机生成5000个网址_使用Python脚本生成随机IP的简单方法
需求 在某应用中,需要根据一定的规则生成随机的IP地址,规则类似于192.168.11.0/24这样的CIDR形式给出. 实现 经过艰苦卓绝的调试,下面的代码是可以用的: RANDOM_IP_POOL ...
- python生成随机个人信息——python批量生成随机信息
实验:python批量生成随机信息 这个实验很简单,直接上代码了~~ 一.常用汉字的Unicode编码 在unicode码中,汉字的范围是(0x4e00,0x9fbf),但是其中包含了很多生僻字或 ...
- android程序获取WIFI的IP地址和MAC地址
转自:http://my.oschina.net/chenj/blog/68680 近日在鼓捣这玩意,拿出来大家分享一下,代码比较简单,如果有不懂的再问 <Button android:id=& ...
最新文章
- 233网校java_java辅导:使用java模拟登陆考试大
- 以太坊智能合约生命周期(Ethereum smart contracts lifecycle)
- OpenCV学习笔记九-Canny边缘检测
- 链表 - 约瑟夫问题
- java 数字组合_java解决数字组合问题
- 全微分推导: 全微分感性理解: 全微分几何意义举例: 偏导与全微分的意义 通过物理性质理解。偏导与全微分的意义
- 【算法】极小极大值搜索算法MinimaxSearch————井字棋的应用
- 秒懂!什么是BI商业智能!
- 只有程序猿才知道的12个人艰不拆的真相
- 10--Django-ORM操作-choices参数、多对多的三种创建方式
- 【用Python对全职高手小说分析分词词频词性,小说人物出场次数排序,小说中食物排序,小说人物关系等等】
- 单元测试的必要性?一文聊聊单元测试
- C++学习笔记——播放音乐
- 百度数据实习生面试经历—2019.4.15
- 设计模式-备忘录模式(快照模式)
- Vue的生命周期详解,一文带你弄懂Vue的生命周期
- 探寻C/C++中更快的大数(自然数集)模板
- 设计一个中国象棋游戏,ChessPiece为抽象类,提供代表一个棋子位置的属性和方法,和isMoveLegal();设计ChessPiece的具体实现类(如车,马,帅等)
- 【Pytorch项目实战】之对抗攻击:无目标对抗攻击(FGSM)、有目标对抗攻击(FGSM)
- 如何从ST官网下载STM32标准外设库
热门文章
- python 窗口最小化_有没有办法通过Python 3最小化Windows 7中的窗口?
- vue 检测ie版本_Vue2+Webpack+ES6 兼容低版本浏览器(IE9)解决方案
- python删除特定的几行数据_Python:分成几行,并根据搜索删除特定行 - python
- 计算机学院学生会宣传稿,计算机与信息工程学院学生会
- java document to xml_Java Document.asXML方法代碼示例
- 计算机系统应用的书,基于领域本体与上下文感知计算的智能图书-计算机系统应用.PDF...
- linux中代码挂上n,Linux系统常用命令nl详解(示例代码)
- linux部署python web项目 详细_linux下nginx+python+uwsgi部署总结(django+web.py)
- 验证码_12306验证码很难吗?2020年最新的Python验证码模块开源
- php时间日期函数转字符串,php自定义时间转换函数示例