Tcar:智慧車之基於rtl8188eu驅動的wifi模組
阿新 • • 發佈:2019-01-02
2、WIFI模組
2.1 WIFI模組的驅動程式
http://www.realtek.com.tw
https://github.com/lwfinger/rtl8188eu
// wifi_hostapd_dnsmasq.rar/rtl8188eu.tar.bz2
git 分散式的版本控制軟體,linus開發的
很多開源的程式 廠家的驅動都在'github'上託管
免費。
2.1.1 配置核心開啟80211相關協議
802.11 協議簇是國際電工電子工程學會(IEEE)為'無線區域網絡制定的標準
// kernel目錄下
$:' make menuconfig
Networking supports --->
Wireless --->
[*] cfg80211 wireless extensions compatibility --->
[*] Wireless extensions sysfs files
// 網路協議配置開啟80211相關協議 802.11協議簇是國際電工電子工程學會(IEEE)為無線區域網絡制定的標準
Device Drivers ---> 開啟WIRELESS LAN
Network device supports --->
[*] Wireless LAN --->
<*> IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP)
[*] Support downloading firmware images with Host AP driver
[*] Support for non-volatile firmware download
[*] USB support --->
<*> USB Wireless Device Management support
2.1.2 rtl8188eu驅動模組的編譯
$:' mkdir project/wifi
$:' cd project/wifi
$:' cp /mnt/hgfs/project/env/wifi_hostapd_dnsmasq/rtl8188eu.tar.bz2 ./
// 拷貝驅動程式rtl8188eu的tar包
$:' tar xf rtl8188eu.tar.bz2
$:' cd rtl8188eu/
// 從README檢視編譯方法,留意 line35
$:' vi Makefile +101
// 核對以下引數配置
ARCH = arm
CROSS_COMPILE = arm-cortex_a9-linux-gnueabi-
KVER := 3.4.39
KSRC = /home/tarena/project/kernel
// 核心原始碼目錄【路徑修改】
MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless
INSTALL_PREFIX :=
$:' make
$:' cp 8188eu.ko /home/tarena/project/rootfs/home/drivers
2.1.3 驗證方式
1) 讓開發板載入新編譯出的核心
$:' cp arch/arm/boot/uImage /tftpboot/
#:' tftp 48000000 uImage
#:' mmc write 48000000 0x800 0x3000
/* 此時使用nfs網路掛載根檔案系統,進行操作驗證,環境變數修改如下: */
#:' setenv bootargs root=/dev/nfs nfsroot=192.168.1.8:/home/tarena/project/rootfs ip=192.168.1.6:192.168.1.8:192.168.1.1:255.255.255.0 lcd=vs070cxn tp=gslx680-linux console=ttySAC0,115200 maxcpus=1
#:' saveenv
#:' re
// 臨時在pc上登出掉rootfs/etc/init.d/rcS中的 exec
2) 將韌體檔案拷貝到根檔案系統中
$:' mkdir rootfs/lib/firmware/rtlwifi/ -p
$:' cp ../wifi/rtl8188eu/rtl8188eufw.bin rootfs/lib/firmware/rtlwifi/
3) 安裝驅動模組
#:' insmod /home/drivers/8188eu.ko
4) 插入wifi模組【手動插入wifi硬體】
#:' cat /proc/net/wireless
// 多出一行 wlan0: ...
或者
#:' ifconfig -a
// 有線網絡卡 eth0:...
// 無線網絡卡 wlan0:...
2.2 WIFI 相關的應用程式
2.2.1 hostapd
AP(access point),熱點
'hostapd',將wifi模組模擬成路由器
// hostapd開源程式模擬路由器功能來生成熱點(AP)
可以使用手機或者筆記本上的無線網絡卡連線該熱點
$:' cd ~/project/wifi/rtl8188eu/hostapd-0.8/hostapd
// ---> README line95
$:' vi Makefile
5 CC=arm-cortex_a9-linux-gnueabi-gcc
// 【新增】此編譯行,arm平臺
$:' make
// You can run "cp defconfig .config" to create an example configuration.
$:' cp defconfig .config
$:' make
$:' file hostapd
// 確認arm版本的可執行程式
$:' cp hostapd ~/project/rootfs/home/bin/
$:' cp /mnt/hgfs/jy/project/env/wifi_hostapd_dnsmasq/rtl_hostapd_2G.conf ~project/rootfs/home/etc/
$:' vi ~/project/rootfs/home/etc/rtl_hostapd_2G.conf
3 #hostapd執行時使用的裝置檔案
4 interface=wlan0
5 #hostapd執行時需要的快取檔案,確保/var/run/有此目錄(需建立)
6 ctrl_interface=/var/run/hostapd
7 #熱點名稱,可以隨意修改
8 ssid=wifi_def_name
9 #通道
10 channel=6
11 #加密方式
12 wpa=2
13 #連線熱點時需要輸入的密碼,可自定義
14 wpa_passphrase=87654321
$:' mkdir ~/project/rootfs/var/run -p
#:' source /home/etc/profile
#:' /home/bin/hostapd /home/etc/rtl_hostapd_2G.conf -B
// -B:以守護程序方式執行
通過手機 檢視是否出現了熱點“wifi_def_name”
連線熱點,輸入密碼“87654321”
卡在 “正在獲取IP地址。。。”
DHCP:動態分配IP
// 需要使用dnsmasq開源程式實現動態分配IP功能
↓
2.2.2 dnsmasq
中國開源社群
dnsmasq的功能:
1)dns : 域名解析
// 例如:www.baidu.com ---->xxxx.xxxx.xxxx.xxxx
2)dhcp:動態分配IP
$:' cp /mnt/hgfs/jy/project/env/wifi_hostapd_dnsmasq/dnsmasq-2.66.tar.gz ./
$:' tar xf dnsmasq-2.66.tar.gz
$:' cd dnsmasq-2.66/
$:' vi Makefile
32 CC=arm-cortex_a9-linux-gnueabi-gcc
// 【新增】32行使用arm交叉編譯工具
$:' make
// 生成dnsmasq可執行檔案
$:' find ./ -name "dnsmasq"
// ./src/dnsmasq
$:' file dnsmasq
$:' cp src/dnsmasq ~/project/rootfs/home/bin/
$:' vi dnsmasq.conf.example
// 簡單瞭解,修改好的檔案在虛擬機器共享資料夾,接下來拷貝到home/etc/
$:' cp /mnt/hgfs/jy/project/env/wifi_hostapd_dnsmasq/dnsmasq.conf ~/project/rootfs/home/etc/
$:' vi ~/project/rootfs/home/etc/dnsmasq.conf
// 檢視修改好的.conf檔案
94 interface=wlan0
99 listen-address=192.168.2.1,127.0.0.1
132 domain=tcar.com
145 dhcp-range=192.168.2.1,192.168.2.150,12h
// 後面需要配置模擬出來的路由器的IP在同一個網段
$:' mkdir ~/project/rootfs/var/lib/misc -p
// 執行dnsmasq程式需要此目錄,需單獨創建出來。
完整步驟:
1) #:' insmod /home/drivers/8188eu.ko
2) #:' source /home/etc/profile
3) #:' /home/bin/hostapd /home/etc/rtl_hostapd_2G.conf -B
// 開啟熱點功能
4) #:' ifconfig wlan0 192.168.2.1
// 配置網絡卡(模擬路由器)的IP,與DHCP的IP範圍在同一個網段
5) #:' /home/bin/dnsmasq -C /home/etc/dnsmasq.conf
如果出現以下錯誤:
“dnsmasq: unknown user or group: nobody”
解決方案:
$:' vi src/dnsmasq.c
304 // if (baduser)
305 // die(_("unknown user or group: %s"), baduser, EC_BADCONF);
'註釋掉這兩行',只要不影響正常的DHCP分配IP的功能,即可無視此錯誤。
#:' make
#:' cp src/dnsmasq ../../rootfs/home/bin
#:' /home/bin/dnsmasq -C /home/etc/dnsmasq.conf
// 再次啟動即可。
6) 驗證
用筆記本連線熱點,在開發板上開啟視訊伺服器
#:' /home/bin/mjpg_streamer -i "/home/lib/input_uvc.so -d /dev/video9 -y -r 320x240 -f 30" -o "/home/lib/output_http.so -w /home/www -p 80"
在筆記本中開啟瀏覽器
http://192.168.2.1
// IP模擬訪問了主機192.168.1.6的埠位置
http://www.tcar.com
使用域名訪問的解決方式:
$:' cp /mnt/hgfs/project/env/wifi_hostapd_dnsmasq/hosts ~/project/rootfs/etc/
$:' vi hosts
192.168.2.1 www.tcar.com
// 【新增】此行內容可以自動實現域名解析,tcar.com可進行訪問。
2.1 WIFI模組的驅動程式
http://www.realtek.com.tw
https://github.com/lwfinger/rtl8188eu
// wifi_hostapd_dnsmasq.rar/rtl8188eu.tar.bz2
git 分散式的版本控制軟體,linus開發的
很多開源的程式 廠家的驅動都在'github'上託管
免費。
2.1.1 配置核心開啟80211相關協議
802.11 協議簇是國際電工電子工程學會(IEEE)為'無線區域網絡制定的標準
// kernel目錄下
$:' make menuconfig
Networking supports --->
Wireless --->
[*] cfg80211 wireless extensions compatibility --->
[*] Wireless extensions sysfs files
// 網路協議配置開啟80211相關協議 802.11協議簇是國際電工電子工程學會(IEEE)為無線區域網絡制定的標準
Device Drivers ---> 開啟WIRELESS LAN
Network device supports --->
[*] Wireless LAN --->
<*> IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP)
[*] Support downloading firmware images with Host AP driver
[*] Support for non-volatile firmware download
[*] USB support --->
<*> USB Wireless Device Management support
2.1.2 rtl8188eu驅動模組的編譯
$:' mkdir project/wifi
$:' cd project/wifi
$:' cp /mnt/hgfs/project/env/wifi_hostapd_dnsmasq/rtl8188eu.tar.bz2 ./
// 拷貝驅動程式rtl8188eu的tar包
$:' tar xf rtl8188eu.tar.bz2
$:' cd rtl8188eu/
// 從README檢視編譯方法,留意 line35
$:' vi Makefile +101
// 核對以下引數配置
ARCH = arm
CROSS_COMPILE = arm-cortex_a9-linux-gnueabi-
KVER := 3.4.39
KSRC =
// 核心原始碼目錄【路徑修改】
MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless
INSTALL_PREFIX :=
$:' make
$:' cp 8188eu.ko /home/tarena/project/rootfs/home/drivers
2.1.3 驗證方式
1) 讓開發板載入新編譯出的核心
$:' cp arch/arm/boot/uImage /tftpboot/
#:' tftp 48000000 uImage
#:' mmc write 48000000 0x800 0x3000
/* 此時使用nfs網路掛載根檔案系統,進行操作驗證,環境變數修改如下: */
#:' setenv bootargs root=/dev/nfs nfsroot=192.168.1.8:/home/tarena/project/rootfs ip=192.168.1.6:192.168.1.8:192.168.1.1:255.255.255.0 lcd=vs070cxn tp=gslx680-linux console=ttySAC0,115200 maxcpus=1
#:' saveenv
#:' re
// 臨時在pc上登出掉rootfs/etc/init.d/rcS中的 exec
2) 將韌體檔案拷貝到根檔案系統中
$:' mkdir rootfs/lib/firmware/rtlwifi/ -p
$:' cp ../wifi/rtl8188eu/rtl8188eufw.bin rootfs/lib/firmware/rtlwifi/
3) 安裝驅動模組
#:' insmod /home/drivers/8188eu.ko
4) 插入wifi模組【手動插入wifi硬體】
#:' cat /proc/net/wireless
// 多出一行 wlan0: ...
或者
#:' ifconfig -a
// 有線網絡卡 eth0:...
// 無線網絡卡 wlan0:...
2.2 WIFI 相關的應用程式
2.2.1 hostapd
AP(access point),熱點
'hostapd',將wifi模組模擬成路由器
// hostapd開源程式模擬路由器功能來生成熱點(AP)
可以使用手機或者筆記本上的無線網絡卡連線該熱點
$:' cd ~/project/wifi/rtl8188eu/hostapd-0.8/hostapd
// ---> README line95
$:' vi Makefile
5 CC=arm-cortex_a9-linux-gnueabi-gcc
// 【新增】此編譯行,arm平臺
$:' make
// You can run "cp defconfig .config" to create an example configuration.
$:' cp defconfig .config
$:' make
$:' file hostapd
// 確認arm版本的可執行程式
$:' cp hostapd ~/project/rootfs/home/bin/
$:' cp /mnt/hgfs/jy/project/env/wifi_hostapd_dnsmasq/rtl_hostapd_2G.conf ~project/rootfs/home/etc/
$:' vi ~/project/rootfs/home/etc/rtl_hostapd_2G.conf
3 #hostapd執行時使用的裝置檔案
4 interface=wlan0
5 #hostapd執行時需要的快取檔案,確保/var/run/有此目錄(需建立)
6 ctrl_interface=/var/run/hostapd
7 #熱點名稱,可以隨意修改
8 ssid=wifi_def_name
9 #通道
10 channel=6
11 #加密方式
12 wpa=2
13 #連線熱點時需要輸入的密碼,可自定義
14 wpa_passphrase=87654321
$:' mkdir ~/project/rootfs/var/run -p
#:' source /home/etc/profile
#:' /home/bin/hostapd /home/etc/rtl_hostapd_2G.conf -B
// -B:以守護程序方式執行
通過手機 檢視是否出現了熱點“wifi_def_name”
連線熱點,輸入密碼“87654321”
卡在 “正在獲取IP地址。。。”
DHCP:動態分配IP
// 需要使用dnsmasq開源程式實現動態分配IP功能
↓
2.2.2 dnsmasq
中國開源社群
dnsmasq的功能:
1)dns : 域名解析
// 例如:www.baidu.com ---->xxxx.xxxx.xxxx.xxxx
2)dhcp:動態分配IP
$:' cp /mnt/hgfs/jy/project/env/wifi_hostapd_dnsmasq/dnsmasq-2.66.tar.gz ./
$:' tar xf dnsmasq-2.66.tar.gz
$:' cd dnsmasq-2.66/
$:' vi Makefile
32 CC=arm-cortex_a9-linux-gnueabi-gcc
// 【新增】32行使用arm交叉編譯工具
$:' make
// 生成dnsmasq可執行檔案
$:' find ./ -name "dnsmasq"
// ./src/dnsmasq
$:' file dnsmasq
$:' cp src/dnsmasq ~/project/rootfs/home/bin/
$:' vi dnsmasq.conf.example
// 簡單瞭解,修改好的檔案在虛擬機器共享資料夾,接下來拷貝到home/etc/
$:' cp /mnt/hgfs/jy/project/env/wifi_hostapd_dnsmasq/dnsmasq.conf ~/project/rootfs/home/etc/
$:' vi ~/project/rootfs/home/etc/dnsmasq.conf
// 檢視修改好的.conf檔案
94 interface=wlan0
99 listen-address=192.168.2.1,127.0.0.1
132 domain=tcar.com
145 dhcp-range=192.168.2.1,192.168.2.150,12h
// 後面需要配置模擬出來的路由器的IP在同一個網段
$:' mkdir ~/project/rootfs/var/lib/misc -p
// 執行dnsmasq程式需要此目錄,需單獨創建出來。
完整步驟:
1) #:' insmod /home/drivers/8188eu.ko
2) #:' source /home/etc/profile
3) #:' /home/bin/hostapd /home/etc/rtl_hostapd_2G.conf -B
// 開啟熱點功能
4) #:' ifconfig wlan0 192.168.2.1
// 配置網絡卡(模擬路由器)的IP,與DHCP的IP範圍在同一個網段
5) #:' /home/bin/dnsmasq -C /home/etc/dnsmasq.conf
如果出現以下錯誤:
“dnsmasq: unknown user or group: nobody”
解決方案:
$:' vi src/dnsmasq.c
304 // if (baduser)
305 // die(_("unknown user or group: %s"), baduser, EC_BADCONF);
'註釋掉這兩行',只要不影響正常的DHCP分配IP的功能,即可無視此錯誤。
#:' make
#:' cp src/dnsmasq ../../rootfs/home/bin
#:' /home/bin/dnsmasq -C /home/etc/dnsmasq.conf
// 再次啟動即可。
6) 驗證
用筆記本連線熱點,在開發板上開啟視訊伺服器
#:' /home/bin/mjpg_streamer -i "/home/lib/input_uvc.so -d /dev/video9 -y -r 320x240 -f 30" -o "/home/lib/output_http.so -w /home/www -p 80"
在筆記本中開啟瀏覽器
http://192.168.2.1
// IP模擬訪問了主機192.168.1.6的埠位置
http://www.tcar.com
使用域名訪問的解決方式:
$:' cp /mnt/hgfs/project/env/wifi_hostapd_dnsmasq/hosts ~/project/rootfs/etc/
$:' vi hosts
192.168.2.1 www.tcar.com
// 【新增】此行內容可以自動實現域名解析,tcar.com可進行訪問。