Tcar:智能车之基于rtl8188eu驱动的wifi模块

来源:互联网 发布:潜龙谍影1java 编辑:程序博客网 时间:2024/06/07 20:13
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可进行访问。
0 0
原创粉丝点击