Linux下读取网卡默认MAC地址的方法

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 握手包跑包

各位好 又见面了 我是曹操 今天给大家带来一篇新的教程

希望各位细心学习 低调用网

cdlinux怎么识别网卡

在嵌入式Linux学习中,了解和操作MAC(介质访问控制)是必不可少的。本文将重点介绍如何通过操作OTP来读取嵌入式Linux设备网卡的MAC地址。

cdlinux怎么识别网卡cdlinux怎么识别网卡

1.1 适用范围
本方法适用于EasyARM-i.MX287A开发套件,并可适用于下表1.1中列出的其他产品型号。本文将介绍读取网卡MAC地址的原理和示例。

1.2 原理介绍
MAC(介质访问控制)用于定义网络设备的位置。它是表示互联网上每个站点的标识符,采用十六进制数表示,共有六个字节(48位)。其中,前三个字节是由IEEE的注册管理机构RA分配给不同厂家的代码(高位24位),也称为“编制上唯一的标识符”(Organizationally Unique Identifier),后三个字节(低位24位)由各厂家自行指派给生产的适配器接口,称为扩展标识符(唯一性)。一个地址块可以生成2^24个不同的地址。MAC地址实际上就是适配器地址或适配器标识符,具有全球唯一性。

“网卡的默认MAC”是广州致远电子股份有限公司为Awork开发套件和M283、M287工控核心板开发的一项功能。通过芯片的OTP来存储网卡MAC地址,我们公司出厂的核心板和开发套件的MAC地址的前两个字节固定为“0x00”和“0x04”,后四个字节保存在OTP中。本文将描述如何通过操作OTP来读取网卡MAC地址。

在内核配置OTP选项并编译内核后,文件系统中会导出OTP设备文件。通过操作这些设备文件,可以读取已注册的网卡MAC信息。MAC0地址的低4位可以通过设备文件“/sys/fslotg/SBK0”读取,MAC1地址的低4位可以通过设备文件“/sys/fslotg/SBK1”读取。

注意:如果使用的是M287、M283工控板,则无需配置内核。

1.3 技术实现
1.3.1 内核编译

  1. 配置内核
    进入linux-2.6.35.3目录,执行make menuconfig命令进行内核配置。配置步骤如下:
    sok@zlgmcu:~$ cd linux-2.6.35.3/
    sok@zlgmcu:~/linux-2.6.35.3$ make menuconfig
    按回车键进入Device Drivers选项,如图3.1所示。

cdlinux怎么识别网卡cdlinux怎么识别网卡

图3.1 内核配置

按回车键进入Character devices选项,如图3.2所示。

图3.2 内核配置

按空格键选择Freescale On-Chip OTP Memory Support选项,如图3.3所示。

cdlinux怎么识别网卡

图3.3 内核配置

按回车键保存退出。

  1. 编译内核
    在当前目录下执行以下命令编译内核,参考命令如下:
    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。

1.4 读取MAC实操
下面介绍读取网卡MAC的操作过程,实质上是操作OTP设备文件。

1.4.1 执行MAC脚本文件
将本文档目录下的MAC.sh文件通过U盘或TF卡拷贝到EasyARM-i.MX287A开发套件,修改文件权限为可执行权限,参考命令如下:
root@EasyARM-iMX28x ~# chmod 777 MAC.sh
root@EasyARM-iMX28x ~# ./MAC.sh
执行后,查看网络设备,MAC如图4.1所示。

图4.1 网络设备图

查看“/sys/fslotp/HWOCOTPSRK1”和“/sys/fslotp/HWOCOTPSRK0”设备,可以发现网卡MAC的低4位实际上就是保存在OTP中的值,如图4.2所示。

图4.2 OTP读取图

欢迎加入我们的微信公众号。

赞(0)