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 = /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可进行访问。