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