Linux下讀取默認MAC地址

Linux下讀取默認MAC地址Linux下讀取默認MAC地址

1、適用範圍linux

這裏主要介紹讀取網卡MAC地址的方法,適用於EasyARM-i.MX287A開發套件,其應用原理及配套示例也適用於下表1.1所列出的產品型號。網絡


Linux下讀取默認MAC地址Linux下讀取默認MAC地址

2、原理介紹教程

MAC(Media Access Control,介質訪問控制)是用來定義網絡設備的位置。用來表示互聯網上每個站點的標識符,採用十六進制數表示,共六個字節(48位)。其中,前三個字節是由IEEE的註冊管理機構RA負責給不一樣廠家分配的代碼(高位24位),也稱爲「編制上惟一的標識符」(Organizationally Unique Identifier),後三個字節(低位24位)由各廠家自行指派給生產的適配器接口,稱爲擴展標識符(惟一性)。一個地址塊能夠生成2^24個不一樣的地址。MAC地址實際上就是適配器地址或適配器標識符。MAC具備全球惟一性。接口

「網卡的默認MAC」是廣州致遠電子股份有限公司針對Awork開發套件和M28三、M287工控核心板開發的一項功能,經過芯片的OTP來存儲網卡MAC地址,我公司出廠的核心板和開發套件的MAC地址的前兩個字節固定爲「0x00」,「0x04」,後四個字節保存在OTP中,本文檔主要描述瞭如何經過操做OTP來讀取網卡MAC地址。ip

在內核配置OTP選項,編譯出的內核啓動後,在文件系統中會導出OTP設備文件,經過操做這些設備文件來讀取信息。能夠將已經註冊的網卡MAC信息首先固化到OTP中,在應用層就能夠讀取。MAC0地址的低4位能夠經過設備文件「/sys/fsl_otg/SBK0」讀取,MAC1地址的低4位能夠經過設備文件「/sys/fsl_otg/SBK1」讀取。開發

注意:若是使用的是M28七、M283工控板,不須要配置內核。文檔

3、技術實現get

內核編譯產品

1.配置內核io

進入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選項,以下圖1所示。


Linux下讀取默認MAC地址Linux下讀取默認MAC地址

  圖1內核配置

  按回車鍵,進入Chracter devices選項。以下圖2所示。


Linux下讀取默認MAC地址Linux下讀取默認MAC地址

  圖2內核配置

  按空格鍵,選擇<*> Freescale On-Chip OTP Memory Support選項,如圖3 內核配置圖3所示。

Linux下讀取默認MAC地址Linux下讀取默認MAC地址

  圖3內核配置

  按回車鍵,保存退出。

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。

4、讀取MAC實操

下面介紹讀取網卡MAC操做過程,其實質是操做OTP設備文件。

執行MAC腳本文件

將本文檔目錄下MAC.sh文件經過U盤或TF卡拷貝到EasyARM-i.MX287A開發套件,修改文件權限爲可執行權限,參考命令以下:

root@EasyARM-iMX28x ~# chmod 777 MAC.sh
root@EasyARM-iMX28x ~# ./MAC.sh

執行後,查看網絡設備,MAC如圖5所示。


Linux下讀取默認MAC地址Linux下讀取默認MAC地址

 圖5網絡設備圖

查看「/sys/fsl_otp/HW_OCOTP_SRK1」和「/sys/fsl_otp/HW_OCOTP_SRK0」設備。能夠發現,網卡MAC低4位其實就是保存在OTP中的值,如圖6所示。


Linux下讀取默認MAC地址Linux下讀取默認MAC地址

 圖6 OTP讀取圖

免費提供最新Linux技術教程書籍,爲開源技術愛好者努力作得更多更好:http://www.linuxprobe.com/

相關文章
相關標籤/搜索