一、適用範圍
這裡主要介紹讀取網絡卡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配置核心。配置步驟如下:
sok@zlgmcu:~$ cd linux-2.6.35.3/按回車鍵,進入device drivers選項,sok@zlgmcu:~/linux-2.6.35.3$ make menuconfig
按回車鍵,進入chracter devices選項。
按空格鍵,選擇 freescale on-chip otp memory support選項,如圖3 核心配置。
按回車鍵,儲存退出。
2.編譯核心
在當前目錄下執行如下命令編譯核心,參考命令如下:
vmuser@linux-host:~/ linux-2.6.35.3$ make clean核心韌體位於「arch/arm/boot/uimage」,將生成的核心韌體通過tf卡燒寫到nandflash。vmuser@linux-host:~/ linux-2.6.35.3$ make uimage
四、讀取mac實操
下面介紹讀取網絡卡mac操作過程,其實質是操作otp裝置檔案。
執行mac指令碼檔案
將本文件目錄下mac.s**件通過u盤或tf卡拷貝到easyarm-i.mx287a開發套件,修改檔案許可權為可執行許可權,參考命令如下:
root@easyarm-imx28x ~# chmod 777 mac.sh執行後,檢視網路裝置,macroot@easyarm-imx28x ~# ./mac.sh
檢視「/sys/fsl_otp/hw_ocotp_srk1」和「/sys/fsl_otp/hw_ocotp_srk0」裝置。可以發現,網絡卡mac低4位其實就是儲存在otp中的值。
Linux下讀取預設MAC位址
mac media access control,介質訪問控制 計算機通過它來定義並識別網路裝置的位置。在嵌入式linux學習中不可避免也會遇到mac,本文主要描述了如何通過操作otp來讀取嵌入式linux裝置網絡卡中的mac位址!一 適用範圍 這裡主要介紹讀取網絡卡mac位址的方法,適用於easy...
Linux下讀取預設MAC位址
mac media access control,介質訪問控制 計算機通過它來定義並識別網路裝置的位置。在嵌入式linux學習中不可避免也會遇到mac,本文主要描述了如何通過操作otp來讀取嵌入式linux裝置網絡卡中的mac位址!一 適用範圍 這裡主要介紹讀取網絡卡mac位址的方法,適用於easy...
LINUX下獲取IP位址和MAC位址
include include include include include include include include ifdef solaris include endif define maxinte ces 16 main argc,argv register int argc reg...