當(dāng)前位置: 首頁(yè) > 工業(yè)電子產(chǎn)品 > 其他電子產(chǎn)品 > 開發(fā)板,套件,編程器 > 開發(fā)板
發(fā)布日期:2022-10-14 點(diǎn)擊率:149
近期在為朋友制定OpenWRT系統(tǒng)下產(chǎn)測(cè)解決方案時(shí),遇到了MAC地址的寫入問(wèn)題。產(chǎn)測(cè)使用Qualcomm Atheros的ART軟件,只能寫入無(wú)線的MAC地址,無(wú)法寫入以太網(wǎng)的MAC地址, 筆者花了一些時(shí)間終于研究清楚,在這里做個(gè)記錄,以便后續(xù)查閱。注:本文以AR9344無(wú)線AP為例進(jìn)行說(shuō)明,這種方法僅適用于采用Qualcomm Atheros AR93xx/AR94xx系列芯片的AP設(shè)備。
首先,必須清楚一點(diǎn),AP類設(shè)備與無(wú)線相關(guān)的校準(zhǔn)數(shù)據(jù)都是保存在Flash的ART分區(qū)的,熟悉OpenWRT的讀者肯定都知道。例如 筆者所用的OpenWRT固件版本,其Flash分區(qū)如下圖??梢钥吹剑現(xiàn)lash中的0x7F0000-0x80000這一段是劃分給ART分區(qū)的。
然后,Qualcomm Atheros官方說(shuō)明文檔中對(duì)于ART分區(qū)的內(nèi)容有進(jìn)一步的說(shuō)明,如下圖??梢钥吹組AC0也就是ETH0的MAC地址保存在0x0-0x5偏移地址中,MAC1也就是ETH1的MAC地址保存在0x6-0xB偏移地址中,無(wú)線的MAC地址分別保存在0x1000-0x4FFF與0x5000-0x8FFF偏移地址中。這里需要指出的是,如果是單Radio設(shè)備,那么只有First Radio Calibration Data,如果是雙Radio設(shè)備,會(huì)同時(shí)有First/Second Radio Calibration Data。
接下來(lái),可以根據(jù)這些已有的信息嘗試寫入MAC地址,以下是全部過(guò)程。
1. 為主板加電,當(dāng)串口中出現(xiàn)Hit any key to stop autoboot:字樣時(shí),敲擊回車鍵,待測(cè)板會(huì)停留在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)無(wú)誤后,將Flash中的原有校準(zhǔn)數(shù)據(jù)擦除,在串口中輸入以下命令
erase 0x9f7f0000 +10000 cp.b 0x80060000 0x9f7f0000 10000
串口中的打印信息應(yīng)為
Copy to Flash... write addr: 9f7f0000 done
7. 以上完整操作過(guò)程下圖所示。
8. 最后檢驗(yàn)MAC地址是否已準(zhǔn)確寫入,在串口中輸入以下命令
md 0x9f7f0000
串口中的打印信息應(yīng)為
9f7f0000: 00037f01 01020003 7f010103 ffffffff
此時(shí)可確認(rèn)ETH0及ETH1 MAC地址已準(zhǔn)確寫入。
下一篇: PLC、DCS、FCS三大控
上一篇: 使用USB接口為i.MX6處