Linux下读取默认MAC地址的方法
MAC(Media Access Control,介质访问控制)计算机通过它来定义并识别网络设备的位置。在嵌入式linux学习中不可避免也会遇到MAC,本文主要描述了如何通过操作OTP来读取嵌入式linux设备网卡中的MAC地址
一、适用范围
这里主要介绍读取网卡MAC地址的方法,适用于EasyARM-i.MX287A开发套件,其应用原理及配套示例也适用于下表1.1所列出的产品型号。
二、原理介绍
MAC(Media Access Control,介质访问控制)是用来定义网络设备的位置。用来表示互联网上每一个站点的标识符,采用十六进制数表示,共六个字节(48位)。其中,前三个字节是由IEEE的注册管理机构RA负责给不同厂家分配的代码(高位24位),也称为“编制上唯一的标识符”(Organizationally Unique Identifier),后三个字节(低位24位)由各厂家自行指派给生产的适配器接口,称为扩展标识符(唯一性)。一个地址块可以生成2^24个不同的地址。MAC地址实际上就是适配器地址或适配器标识符。MAC具有全球唯一性。
“网卡的默认MAC”是广州致远电子股份有限公司针对Awork开发套件和M283、M287工控核心板开发的一项功能,通过芯片的OTP来存储网卡MAC地址,我公司出厂的核心板和开发套件的MAC地址的前两个字节固定为“0x00”,“0x04”,后四个字节保存在OTP中,本文档主要描述了如何通过操作OTP来读取网卡MAC地址。
在内核配置OTP选项,编译出的内核启动后,在文件系统中会导出OTP设备文件,通过操作这些设备文件来读取信息。可以将已经注册的网卡MAC信息首先固化到OTP中,在应用层就可以读取。MAC0地址的低4位可以通过设备文件“/sys/fsl_otg/SBK0”读取,MAC1地址的低4位可以通过设备文件“/sys/fsl_otg/SBK1”读取。
注意:如果使用的是M287、M283工控板,不需要配置内核。
三、技术实现
内核编译
1.配置内核
进入linux-2.6.35.3目录。执行make menuconfig配置内核。配置步骤如下:
?
1 2 |
sok@zlgmcu:~$ cd linux-2.6.35.3/ sok@zlgmcu:~/linux-2.6.35.3$ make menuconfig |
按回车键,进入Device Drivers选项,如下图1所示。
图1内核配置
按回车键,进入Chracter devices选项。如下图2所示。
图2内核配置
按空格键,选择<*> Freescale On-Chip OTP Memory Support选项,如图3 内核配置图3所示。
图3内核配置
按回车键,保存退出。
2.编译内核
在当前目录下执行如下命令编译内核,参考命令如下:
?
1 2 |
vmuser@Linux-host:~/ linux-2.6.35.3$ make clean vmuser@Linux-host:~/ linux-2.6.35.3$ make uImage |
内核固件位于“arch/arm/boot/uImage”,将生成的内核固件通过TF卡烧写到NANDFlash。
四、读取MAC实操
下面介绍读取网卡MAC操作过程,其实质是操作OTP设备文件。
执行MAC脚本文件
将本文档目录下MAC.sh文件通过U盘或TF卡拷贝到EasyARM-i.MX287A开发套件,修改文件权限为可执行权限,参考命令如下:
?
1 2 |
root@EasyARM-iMX28x ~# chmod 777 MAC.sh root@EasyARM-iMX28x ~# ./MAC.sh |
执行后,查看网络设备,MAC如图5所示。
图5网络设备图
查看“/sys/fsl_otp/HW_OCOTP_SRK1”和“/sys/fsl_otp/HW_OCOTP_SRK0”设备。可以发现,网卡MAC低4位其实就是保存在OTP中的值,如图6所示。
图6 OTP读取图
iqoo怎么设置门禁卡 iqoo手机怎么设置门禁卡
iqoo怎么设置门禁卡,iqoo设置门禁卡的方法如下:1、首先在手机桌面上点击设置,并进入。2、然后点击更多设置,进入后找到NFC选项。3、接着开启NFC开关,同时设置付款方式为vivo钱包。4、其次进入钱包门(0)人阅读时间:2023-08-28天猫魔盒一直桌面正在启动中 天猫魔盒一直停留在开机画面
天猫魔盒一直桌面正在启动中,天猫魔盒一直桌面正在启动中的解决方法如下:1、如果天猫魔盒卡在“桌面正在启动中”,可以切断设备电源;2、之后用手机卡针顶住设备后方的recover或reset小孔,然后插上电源,等待指(0)人阅读时间:2023-08-28bigint是什么意思(big是什意思是什么)
bigint是什么意思,bigint为TransactSQL的系统数据类型,当整数值超过int数据范围时才可以使用。(0)人阅读时间:2023-08-28抖音的粉丝团牌子怎么取下(抖音粉丝牌怎么退团)
抖音的粉丝团牌子怎么取下,以抖音V12.6.0版本为例,用户想要取消抖音的粉丝团牌子时,只需在7天之内与相关用户无任何互动行为,至第八天时,粉丝勋章即可自动熄灭。抖音(Tik Tok)是由今日头条推出的一款短视频(0)人阅读时间:2023-08-28iqoo怎么设置门禁卡 iqoo手机怎么设置门禁卡
iqoo怎么设置门禁卡,iqoo设置门禁卡的方法如下:1、首先在手机桌面上点击设置,并进入。2、然后点击更多设置,进入后找到NFC选项。3、接着开启NFC开关,同时设置付款方式为vivo钱包。4、其次进入钱包门..2023-08-28天猫魔盒一直桌面正在启动中 天猫魔盒一直停留在开机画面
天猫魔盒一直桌面正在启动中,天猫魔盒一直桌面正在启动中的解决方法如下:1、如果天猫魔盒卡在“桌面正在启动中”,可以切断设备电源;2、之后用手机卡针顶住设备后方的recover或reset小孔,然后插上电源,等待指..2023-08-28bigint是什么意思(big是什意思是什么)
bigint是什么意思,bigint为TransactSQL的系统数据类型,当整数值超过int数据范围时才可以使用。..2023-08-28抖音的粉丝团牌子怎么取下(抖音粉丝牌怎么退团)
抖音的粉丝团牌子怎么取下,以抖音V12.6.0版本为例,用户想要取消抖音的粉丝团牌子时,只需在7天之内与相关用户无任何互动行为,至第八天时,粉丝勋章即可自动熄灭。抖音(Tik Tok)是由今日头条推出的一款短视频..2023-08-28