欢迎来到天天文库
浏览记录
ID:27511972
大小:338.50 KB
页数:6页
时间:2018-12-04
《Linux下读取网卡默认MAC地址的方法.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Linux下读取网卡默认MAC地址的方法 MAC(MediaAccessControl,介质访问控制)是用来定义网络设备的位置。在嵌入式linux学习中无可避免也会遇到MAC,本文主要描述了如何通过操作OTP来读取嵌入式linux设备网卡中的MAC地址 1.1适用范围 这里主要介绍读取网卡MAC地址的方法,适用于EasyARM-i.MX287A开发套件,其应用原理及配套示例也适用于下表1.1所列出的产品型号。 表1.1适用产品型号 1.2原理介绍 MAC(MediaAccessControl,介质访问控制)是用来定义
2、网络设备的位置。用来表示互联网上每一个站点的标识符,采用十六进制数表示,共六个字节(48位)。其中,前三个字节是由IEEE的注册管理机构RA负责给不同厂家分配的代码(高位24位),也称为“编制上唯一的标识符”(OrganizaTIonallyUniqueIdenTIfier),后三个字节(低位24位)由各厂家自行指派给生产的适配器接口,称为扩展标识符(唯一性)。一个地址块可以生成2个不同的地址。MAC地址实际上就是适配器地址或适配器标识符。MAC具有全球唯一性。 “网卡的默认MAC”是广州致远电子股份有限公司针对Awork开发套件和
3、M283、M287工控核心板开发的一项功能,通过芯片的OTP来存储网卡MAC地址,我公司出厂的核心板和开发套件的MAC地址的前两个字节固定为“0x00”,“0x04”,后四个字节保存在OTP中,本文档主要描述了如何通过操作OTP来读取网卡MAC地址。 在内核配置OTP选项,编译出的内核启动后,在文件系统中会导出OTP设备文件,通过操作这些设备文件来读取信息。可以将已经注册的网卡MAC信息首先固化到OTP中,在应用层就可以读取。MAC0地址的低4位可以通过设备文件“/sys/fsl_otg/SBK0”读取,MAC1地址的低4位可以通过设
4、备文件“/sys/fsl_otg/SBK1”读取。 注意:如果使用的是M287、M283工控板,不需要配置内核。 1.3技术实现 1.3.1内核编译 1.配置内核 进入linux-2.6.35.3目录。执行makemenuconfig配置内核。配置步骤如下: sok@zlgmcu:~$cdlinux-2.6.35.3/ sok@zlgmcu:~/linux-2.6.35.3$makemenuconfig 按回车键,进入DeviceDrivers选项,如下图3.1所示。 图3.1内核配置 按回车键,进入Chract
5、erdevices选项。如图3.2所示。 图3.2内核配置 按空格键,选择FreescaleOn-ChipOTPMemorySupport选项,如图3.3内核配置图3.3所示。 图3.3内核配置 按回车键,保存退出。 2.编译内核 在当前目录下执行如下命令编译内核,参考命令如下: vmuser@Linux-host:~/linux-2.6.35.3$makeclean vmuser@Linux-host:~/linux-2.6.35.3$makeuImage 内核固件位于“arch/arm/boot/uImag
6、e”,将生成的内核固件通过TF卡烧写到NANDFlash。 1.4读取MAC实操 下面介绍读取网卡MAC操作过程,其实质是操作OTP设备文件。 1.4.1执行MAC脚本文件 将本文档目录下MAC.sh文件通过U盘或TF卡拷贝到EasyARM-i.MX287A开发套件,修改文件权限为可执行权限,参考命令如下: root@EasyARM-iMX28x~#chmod777MAC.sh root@EasyARM-iMX28x~#./MAC.sh 执行后,查看网络设备,MAC如图4.1所示。 图4.1网络设备图 查看“/sy
7、s/fsl_otp/HW_OCOTP_SRK1”和“/sys/fsl_otp/HW_OCOTP_SRK0”设备。可以发现,网卡MAC低4位其实就是保存在OTP中的值,如图4.2所示。 图4.2OTP读取图
此文档下载收益归作者所有