应用层从mtd获取ethaddr等boot env

应用层从mtd获取mac等boot env

一.背景知识

烧录空片:指的是将bootloader或者其他固件写入到flash,一般在写入之前会格式化flash所有空间。
烧录image:将镜像文件写入到flash指定位置。两者区别空片对整个flash操作。

mac地址对于开发板或者一个设备来说,在网络通信上相当于他的身份证。所有如果对于不同的设备,不同的mac地址尤为重要。

设备第一次完成空片烧录后,会获取到boot env变量,并将这些env写入flash。
在uboot下输入printenv,可看见所有的boot env变量。
在这里插入图片描述
在uboot下也可通过增加变量,不建议直接在这修改mac地址,容易产生冲突,且修改成组播地址,会使网络用不了

//add/modify  env 
setenv  xxx  xxx

//save env 
saveenv
 

在uboot下修改和增加的ethaddr会更新mtd的env变量,kernel下查看会和uboot保存一致

二.应用层从mtd获取env

最开打算是通过追溯代码,来获取uboot将env写入flash的什么位置,但是发现追溯过程比较曲折,建立哈希表啥的,放弃了追溯。
由于我使用的开发板将boot的env单独写入一个mtd存储.
在这里插入图片描述
在kernel下可通过cat /dev/mtd2来查看env。
所以我在应用层解决方案是直接读取mtd设备的数据,以此来获取想要的env变量。
由于此系统平台获取mtd的数据,通过00来分割各个变量,所以通过strstr获取变量名不可行。
提供一个demo,供参考
在这里插入图片描述
此外网络驱动也提供了api接口,通过访问api也可获取mac地址
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值