客戶在使用啟揚(yáng)板卡的過程中提出要求開發(fā)板支持網(wǎng)口熱插拔自動(dòng)獲取ip地址的需求。
啟揚(yáng)工程師了解到需求后快速確定了解決思路:
通過ifplugd工具監(jiān)聽網(wǎng)口熱插拔信息,并且執(zhí)行指定腳本,腳本中使用udhcpc工具自動(dòng)獲取ip地址。
接下來將對(duì)操作過程進(jìn)行介紹與分析。
編譯環(huán)境準(zhǔn)備?
QIYANG
主機(jī):ubuntu16.04
編譯器:arm-linux-gnueabihf-gcc,版本4.7
開發(fā)板環(huán)境:ARM32
1
移植libdaemon
因?yàn)閕fplugd依賴libdaemon庫,所以我們需要先編譯daemon。
筆者這里選擇daemon的版本是官方git下來的版本,git鏈接如下:
git clone git://git.0pointer.de/libdaemon
git下來之后先執(zhí)行./bootstrap.sh腳本,此腳本會(huì)根據(jù)配置環(huán)境自動(dòng)生成configure等編譯相關(guān)文件,生成之后配置
./configure--host=arm-linux-gnueabihf--prefix=/home/ylook/Tools/libdaemon/build,
腳本執(zhí)行完成之后會(huì)檢查配置等,這里會(huì)出現(xiàn)一個(gè)報(bào)錯(cuò):
checking whether setpgrp takes no argument... configure: error: cannot check setpgrp when cross compiling
遇到這個(gè)報(bào)錯(cuò)可以在之前配置的configure中加入ac_cv_func_setpgrp_void=yes,即可解決。
最后通過make && make install會(huì)將所需的lib以及include文件生成到build文件夾下。
注意:最后用file命令檢查一下文件架構(gòu),防止誤用X86的庫。
2
移植ifplugd
本次使用的編譯器是4.7版本,因?yàn)榘姹据^低,所以ifplugd選擇的也是老版本——ifplugd-0.14.tar.gz。
編譯過程需要daemon的庫和頭文件,筆者為了方便直接將庫和頭文件放到編譯器的頭文件與庫中,準(zhǔn)備完畢后直接解壓文件,
隨后配置./configure --host=arm-linux-gnueabihf --prefix=/home/ylook/Tools/ifplugd-0.14/build
這里會(huì)報(bào)lynx的錯(cuò)誤,可直接在原先配置的configuer后添加“--disable-lynx”,就可解決,
即修改為./configure--host=arm-linux-gnueabihf--prefix=/home/ylook/Tools/ifplugd-0.14/build/ --disable-lynx,;
此外還會(huì)報(bào)“ undefined reference to rpl_malloc”錯(cuò)誤,解決方式是修改config.h.in,去掉其中的malloc。
配置完成后make && make install,同樣會(huì)在build目錄下生成我們需要的二進(jìn)制文件。
注意:為了避免錯(cuò)誤,最后依舊是用file命令檢查文件架構(gòu),確認(rèn)采用的是否為arm架構(gòu)。
3
配置相關(guān)環(huán)境
配置環(huán)境過程中,啟揚(yáng)開發(fā)板需要daemon的庫文件以及編譯出來的ifplugd二進(jìn)制文件。我們將daemon庫文件拷貝到/usr/lib下,二進(jìn)制文件拷貝到/usr/sbin下,輸入ifplugd -h命令可以看到成功運(yùn)行。
根據(jù)help信息,我們可以用以下兩個(gè)命令監(jiān)聽兩個(gè)網(wǎng)口:
ifplugd -i eth0 -r /etc/network/if.sh
ifplugd -i eth1-r /etc/network/if.sh
監(jiān)聽兩個(gè)網(wǎng)口并且執(zhí)行后面的腳本文件,如果你的文件系統(tǒng)里有/etc/network/interface文件,需要將里面的auto改為allow-hotplug。
而if.sh里面的內(nèi)容就是簡單的檢測并且dhcp。
最后我們可以將上面兩個(gè)命令設(shè)置開機(jī)自啟動(dòng),這樣就會(huì)自動(dòng)up兩個(gè)網(wǎng)口,哪怕沒有插網(wǎng)線也是準(zhǔn)備狀態(tài),當(dāng)插入網(wǎng)線后就會(huì)自動(dòng)獲取ip地址。
注意可能會(huì)出現(xiàn)延遲,可以稍等一下查看。
-
開發(fā)板
+關(guān)注
關(guān)注
25文章
6001瀏覽量
110074
發(fā)布評(píng)論請先 登錄
EtherCAT熱插拔技術(shù):提升工業(yè)自動(dòng)化系統(tǒng)靈活性的關(guān)鍵

兆易創(chuàng)新600MHz高性能MCU在聚沃科技雙網(wǎng)口通信開發(fā)板的應(yīng)用方案

RT-Thread+STM32F429IGT6+LWIP(2.1.2)開啟IPV6功能,無法獲取有效IPV6地址怎么處理?
從站熱插拔技術(shù):ZMC900E 助力自動(dòng)化系統(tǒng)靈活擴(kuò)展與穩(wěn)定運(yùn)行

【HZ-RK3568開發(fā)板免費(fèi)體驗(yàn)】外設(shè)接口測試
【創(chuàng)龍TL3562-MiniEVM開發(fā)板試用體驗(yàn)】--開發(fā)板外設(shè)與接口測試
【HZ-T536開發(fā)板免費(fèi)體驗(yàn)】開箱評(píng)測
熱插拔算力集群
熱插拔的危害及防護(hù)

如何選擇可靠的熱插拔?連接器熱插拔防護(hù)等級(jí)詳解
【ELF 2學(xué)習(xí)板試用】ELF 2開發(fā)板的鏡像燒錄與網(wǎng)線連接配置
怎么綁定IP地址和MAC地址
android如何獲取本機(jī)ip地址及ip歸屬地
PCIe熱插拔機(jī)制介紹

評(píng)論