Wi-Fi無線網絡短距離數據傳輸以其無需布線、數據傳輸速度快等優勢,在工業應用中越來越普及。針對這類的應用我們公司前段時間在EM9160、EM9260、EM9280等系列Linux嵌入式板卡板卡上移植了基于RT73的無線網絡驅動。
由于rt73芯片的諸多因素,目前市面上支持rt73的Wi-Fi無線模塊很難購買,根據這種情況,我們選擇了基于RT3070_RT5370芯片的無線上網模塊,對其Linux驅動進行了移植。RT3070_RT5370的Linux驅動在http://www.mediatek.com/可以直接進行下載,下載的最新驅動文件:
DPO_RT5572_LinuxSTA_2.6.1.3_20121022.tar.bz2
解壓之后獲得驅動源代碼,我們將RT3070_RT5370的驅動做成一個可加載的模塊rt3070sta.ko移植到工控主板中。EM9160和EM9260將驅動模塊放在根文件系統的目錄/lib/modules/2.6.30下,EM9280將驅動模塊放在/lib/modules/3.9.7下,客戶使用時只需調用Linux標準命令insmod進行加載。
移植工作還有一部分,因為Linux內核中的wireless_tools工具不支持WPA認證,而現在的無線Wi-Fi網絡大多是WPA加密,所以需要移植wpa_supplicant工具,目標板上通過運行該工具軟件來激活無線網卡。
wpa_supplicant工具分為兩個部分,一個是可執行程序wpa_supplicant,大小近2M左右,該文件直接放在根文件系統/usr/bin中,以方便客戶操作。
wpa_supplicant工具還有一個很重要的部分,wpa_supplicant運行時所需要的配置文件wpa_supplicant.conf,通過wpa_supplicant.conf配置文件,可以修改一些基本屬性,這里客戶需要了解的是連接Wi-Fi的名稱ssid和驗證的密碼psk。我們將設置好的一個示例配置文件放在目錄/etc下,客戶可將示例配置文件復制到/mnt/nandflash中修改成自己需要的配置。
下面就以目前市面上性價比較高基于RT3070_RT5370芯片的B-LINK公司的BL-LW05-H模塊為例,介紹英利嵌入式Linux工控主板連接無線Wi-Fi的具體方法。客戶也可自行選擇基于RT3070_RT5370芯片的其他無線上網模塊進行開發。
1、首先需要設置wpa_supplicant的配置文件wpa_supplicant.conf。該示例配置文件在目錄/etc下。
建議客戶先把示例文件復制到/mnt/nandflash中,再進行設置。如果出錯還能在/etc中找到示例配置文件:
[root@EM9X60 /]#cp /etc/wpa_supplicant.conf /mnt/nandflash/.
復制成功以后,進入VI模式編輯wpa_supplicant.conf:
[root@EM9X60 /]#vi /mnt/nandflash/wpa_supplicant.conf
進入vi模式可以看見wpa_supplicant.conf的配置,按“i”切換到插入模式進行編輯,客戶只需修改其中的兩項:
ssid=” ” //填入需要連接的Wi-Fi名稱
psk=” ” //填入連接Wi-Fi的密碼
修改完成以后,按“ESC”進入命令行模式,并在底行輸入“:wq”(存盤退出),這樣就設置完成。
2、加載無線模塊的驅動:
[root@EM9X60 /]#insmod /lib/modules/2.6.30/rt3070sta.ko
加載成功之后,通過USB接口接入無線模塊系統能檢測到無線模塊。
3、啟動無線網卡:
[root@EM9X60 /]#ifconfig ra0 up
4、調用wpa_supplicant連接無線網:
[root@EM9X60/]#wpa_supplicant -B -Dwext -ira0 -c /mnt/nandflash/wpa_supplicant.conf -d
參數說明:
-B 指定以守護進程模式運行,即程序將以后臺模式運行。連接Wi-Fi需要supplicant一直運行,所以采用后臺模式,不會影響客戶其他程序的運行。
-D 指定使用的驅動,這里是無線網,所以用wext。
-i 指定網卡。
-c 指定使用的配置文件,這里是我們之前設置好放在/mnt/nandflash中的配置文件。
-d 添加調試信息。
這條指令調用成功之后,工控主板將成功連接上在supplicant.conf中設置的Wi-Fi。
5、成功連接上Wi-Fi之后,可以輸入指令自動獲取動態IP:
[root@EM9X60 /]#udhcpc –i ra0
至此已經成功使用英利嵌入式Linux工控主板連接無線Wi-Fi。
成都英創信息技術有限公司 028-8618 0660