當前位置: 首頁 > 工業電子產品 > 其他電子產品 > 開發板,套件,編程器 > 開發板
發布日期:2022-10-14 點擊率:79
近期在為朋友制定OpenWRT系統下產測解決方案時,遇到了MAC地址的寫入問題。產測使用Qualcomm Atheros的ART軟件,只能寫入無線的MAC地址,無法寫入以太網的MAC地址, 筆者花了一些時間終于研究清楚,在這里做個記錄,以便后續查閱。注:本文以AR9344無線AP為例進行說明,這種方法僅適用于采用Qualcomm Atheros AR93xx/AR94xx系列芯片的AP設備。
首先,必須清楚一點,AP類設備與無線相關的校準數據都是保存在Flash的ART分區的,熟悉OpenWRT的讀者肯定都知道。例如 筆者所用的OpenWRT固件版本,其Flash分區如下圖。可以看到,Flash中的0x7F0000-0x80000這一段是劃分給ART分區的。
然后,Qualcomm Atheros官方說明文檔中對于ART分區的內容有進一步的說明,如下圖。可以看到MAC0也就是ETH0的MAC地址保存在0x0-0x5偏移地址中,MAC1也就是ETH1的MAC地址保存在0x6-0xB偏移地址中,無線的MAC地址分別保存在0x1000-0x4FFF與0x5000-0x8FFF偏移地址中。這里需要指出的是,如果是單Radio設備,那么只有First Radio Calibration Data,如果是雙Radio設備,會同時有First/Second Radio Calibration Data。
接下來,可以根據這些已有的信息嘗試寫入MAC地址,以下是全部過程。
1. 為主板加電,當串口中出現Hit any key to stop autoboot:字樣時,敲擊回車鍵,待測板會停留在u-boot階段。
2. 敲入printenv命令,不難看出Flash的地址空間映射為0x9F000000-0x9F7FFFFF,則推斷出ART分區的地址為0x9F7F0000-0x9F7FFFF。由此,可以得知,ETH0的MAC地址存放于0x9F7F0000-0x9F7F0005,ETH1的MAC地址存放于0x9F7F0006-0x9F7F000B。
3. 寫入以太網MAC地址不能破壞原有校準數據,因此需要先將ART分區的內容復制到內存中,輸入以下命令
cp.b 0x9f7f0000 0x80060000 10000
4. 假設欲寫入的ETH0,ETH1 MAC分別為“00-03-7f-01-01-02”,“00-03-7f-01-01-03”,則修改內存中的MAC地址,依次輸入以下命令
mw 0x80060000 00037f01 mw 0x80060004 01020003 mw 0x80060008 7f010103
5. 查看內存中的MAC地址是否準確,輸入以下命令
md 0x80060000
串口中的打印信息應為
80060000: 00037f01 01020003 7f010103 ffffffff
即80060000存放的數據為ETH0與ETH1 MAC地址的結合。
6. 確認無誤后,將Flash中的原有校準數據擦除,在串口中輸入以下命令
erase 0x9f7f0000 +10000 cp.b 0x80060000 0x9f7f0000 10000
串口中的打印信息應為
Copy to Flash... write addr: 9f7f0000 done
7. 以上完整操作過程下圖所示。
8. 最后檢驗MAC地址是否已準確寫入,在串口中輸入以下命令
md 0x9f7f0000
串口中的打印信息應為
9f7f0000: 00037f01 01020003 7f010103 ffffffff
此時可確認ETH0及ETH1 MAC地址已準確寫入。
下一篇: PLC、DCS、FCS三大控
上一篇: 使用USB接口為i.MX6處