Linux下讀取默認MAC地址的方法
MAC(Media Access Control,介質(zhì)訪問控制)計算機通過它來定義并識別網(wǎng)絡設備的位置。在嵌入式linux學習中不可避免也會遇到MAC,本文主要描述了如何通過操作OTP來讀取嵌入式linux設備網(wǎng)卡中的MAC地址

一、適用范圍
這里主要介紹讀取網(wǎng)卡MAC地址的方法,適用于EasyARM-i.MX287A開發(fā)套件,其應用原理及配套示例也適用于下表1.1所列出的產(chǎn)品型號。

二、原理介紹
MAC(Media Access Control,介質(zhì)訪問控制)是用來定義網(wǎng)絡設備的位置。用來表示互聯(lián)網(wǎng)上每一個站點的標識符,采用十六進制數(shù)表示,共六個字節(jié)(48位)。其中,前三個字節(jié)是由IEEE的注冊管理機構(gòu)RA負責給不同廠家分配的代碼(高位24位),也稱為“編制上唯一的標識符”(Organizationally Unique Identifier),后三個字節(jié)(低位24位)由各廠家自行指派給生產(chǎn)的適配器接口,稱為擴展標識符(唯一性)。一個地址塊可以生成2^24個不同的地址。MAC地址實際上就是適配器地址或適配器標識符。MAC具有全球唯一性。
“網(wǎng)卡的默認MAC”是廣州致遠電子股份有限公司針對Awork開發(fā)套件和M283、M287工控核心板開發(fā)的一項功能,通過芯片的OTP來存儲網(wǎng)卡MAC地址,我公司出廠的核心板和開發(fā)套件的MAC地址的前兩個字節(jié)固定為“0x00”,“0x04”,后四個字節(jié)保存在OTP中,本文檔主要描述了如何通過操作OTP來讀取網(wǎng)卡MAC地址。
在內(nèi)核配置OTP選項,編譯出的內(nèi)核啟動后,在文件系統(tǒng)中會導出OTP設備文件,通過操作這些設備文件來讀取信息。可以將已經(jīng)注冊的網(wǎng)卡MAC信息首先固化到OTP中,在應用層就可以讀取。MAC0地址的低4位可以通過設備文件“/sys/fsl_otg/SBK0”讀取,MAC1地址的低4位可以通過設備文件“/sys/fsl_otg/SBK1”讀取。
注意:如果使用的是M287、M283工控板,不需要配置內(nèi)核。
三、技術(shù)實現(xiàn)
內(nèi)核編譯
1.配置內(nèi)核
進入linux-2.6.35.3目錄。執(zhí)行make menuconfig配置內(nèi)核。配置步驟如下:
?
1 2 sok@zlgmcu:~$ cd linux-2.6.35.3/ sok@zlgmcu:~/linux-2.6.35.3$ make menuconfig
按回車鍵,進入Device Drivers選項,如下圖1所示。

圖1內(nèi)核配置
按回車鍵,進入Chracter devices選項。如下圖2所示。

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

圖3內(nèi)核配置
按回車鍵,保存退出。
2.編譯內(nèi)核
在當前目錄下執(zhí)行如下命令編譯內(nèi)核,參考命令如下:
?
1 2 vmuser@Linux-host:~/ linux-2.6.35.3$ make clean vmuser@Linux-host:~/ linux-2.6.35.3$ make uImage
內(nèi)核固件位于“arch/arm/boot/uImage”,將生成的內(nèi)核固件通過TF卡燒寫到NANDFlash。
四、讀取MAC實操
下面介紹讀取網(wǎng)卡MAC操作過程,其實質(zhì)是操作OTP設備文件。
執(zhí)行MAC腳本文件
將本文檔目錄下MAC.sh文件通過U盤或TF卡拷貝到EasyARM-i.MX287A開發(fā)套件,修改文件權(quán)限為可執(zhí)行權(quán)限,參考命令如下:
?
1 2 root@EasyARM-iMX28x ~# chmod 777 MAC.sh root@EasyARM-iMX28x ~# ./MAC.sh
執(zhí)行后,查看網(wǎng)絡設備,MAC如圖5所示。

圖5網(wǎng)絡設備圖
查看“/sys/fsl_otp/HW_OCOTP_SRK1”和“/sys/fsl_otp/HW_OCOTP_SRK0”設備。可以發(fā)現(xiàn),網(wǎng)卡MAC低4位其實就是保存在OTP中的值,如圖6所示。

圖6 OTP讀取圖
相關(guān)文章:
1. linux系統(tǒng)虛擬主機開啟支持Swoole Loader擴展的方法2. 新手學堂:Linux操作系統(tǒng)中如何編譯C程序3. linux服務器快速卸載安裝node環(huán)境(簡單上手)4. Linux調(diào)整命令歷史方法詳解5. Xmanager連接linux桌面6. Win7和Linux下的java開發(fā)環(huán)境配置7. Fedora Linux怎么設置自動清空回收站的時間?8. Linux Mint系統(tǒng)桌面Note可以用斜體字嗎?9. Linux中計算特定CPU使用率案例詳解10. Linux系統(tǒng)怎么變臉Win8 Linux系統(tǒng)Win8皮膚

網(wǎng)公網(wǎng)安備