当前位置: > 华清远见教育科技集团 > 嵌入式学习 > 讲师博文 > Wifi移植浅析一
Wifi移植浅析一
时间:2016-12-14作者:华清远见

大家都知道在做wifi的移植过程中主要是涉及到移植三个东西,一个openssl的移植,一个wpa_suplicant的移植。还有一个就是添加咱们的wifi驱动了,咱们这里使用的rt8192cu.ko。这三个家伙搞定了,咱们的wifi就可以使用了哦。

一 、openssl的移植

我们先来搞清楚openssl是干什么的,为甚么要移植它?带着这些问题咱们往下看吧!

Openssl是为网络通信提供安全及数据完整性的一种安全协议,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。SSL是Secure Socket Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。源码下载网站 //www.openssl.org/source/,咱们用的源码是openssl-0.9.8e.tar.gz

1.1 解压源码

tar xvf openssl-0.9.8e.tar.gz

1.2 给源码打补丁

openssl源码编译需要打wpa_supplicant提供的补丁,我们选择的openssl版本为openssl-0.9.8e,所以我们要拷贝wpa_supplicant-0.7.2/patches/ openssl-0.9.8e-tls-extensions.patch拷贝到openssl-0.9.8e源码下。

(在wifi目录下新建一个openssl目录)

patch –p1 < openssl-0.9.8e-tls-extensions.patch

1.3配置编译安装

./Configure linux-elf-arm -DL_ENDIAN linux:'arm-none-linux-gnueabi-gcc' shared --prefix=/home/linux/workdir/wifi/openssl //要视具体路径而定
        make
        make install

这些都是咱们移植手册上提供的,那么咱们来看看这些参数的含义和这么运用他们的根据。

Linux-elf-arm 表示咱们的平台是arm,下见图中INSTALL

-DL_ENDIAN 调试

Linux:‘arm-none-linux-gnueabi-gcc’咱们编译使用的交叉工具链

Shared:生成共享库

--prefix:就是咱们的安装路径,

当然以上的这些参数都是可以调整的,其实这些东西都可以在Makefile INSTALL README中寻找到的,官方文档为咱们的配置移植,都提供了详细的解释说明的,所以移植不要怕,查看官方文档就ok的了

二、wpa_suplicant 移植

上面咱们说了openssl就是一个加密的东东,那么wpa_suplicant简单的说,就是WiFi驱动和用户的中转站外加对协议和加密认证的支持。

wpa_suplicant 的源码下载//hostap.epitest.fi/wpa_supplicant/

具体的移植步骤如下:

进入~/workdir/wifi/wpa_supplicant-0.7.2/wpa_supplicant目录下

makefile修改

下列路径要视具体情况而定

添加
        CC=arm-none-linux-gnueabi-gcc

        在
        CFLAGS += -I../src
        CFLAGS += -I../src/utils
        下添加:
        CFLAGS += -I/home/linux/workdir/wifi/openssl/include

        修改
        LIBS += -lssl
        为
        LIBS += -lssl -L/home/linux/workdir/wifi/openssl/lib/

        修改
        LIBS_p += -lcrypto
        为
        LIBS_p += -lcrypto -L/home/linux/workdir/wifi/openssl/lib/

对于makefile的修改的就不用多说了吗,如果你有写的不对的地方,你编译的时候,它直接就会给出错误的提示,根据错误提示,锁定错误的源头,改正即可。

编译

cp defconfig .config
        make

编译后将产生的wpa_supplicant和wpa_cli拷贝到根文件系统的bin目录下(/source/rootfs/bin)

三、加载insmod rt8192cu.ko的驱动到开发板上去。

在这里咱们就不详细说了,因为内核中有都有相应的源码,编译后即可有相应的驱动模块了。

四、wifi的测试

前面三步搞定,咱们的wifi移植,基本上搞定了,剩下的就是怎么了进行测试了。

第一个就是配置咱们的/etc/resolv.conf文件中的nameserver了

1、 在根文件中添加/etc/resolv.conf(/source/rootfs/etc/resolv.conf)

内容为:

# Generated by NetworkManager
        nameserver 202.96.64.68

2、 在根文件系统/etc(/source/rootfs/etc)下添加wpa_supplicant配置文件wpa-psk-tkip.conf

内容为:

# WPA-PSK/TKIP

        ctrl_interface=/var/run/wpa_supplicant

        network={
                ssid="XXXX" #无线路由ssid //farsight
                key_mgmt=WPA-PSK
                proto=WPA
                pairwise=CCMP
                group=CCMP
                psk="XXXXXXXX" #无线路由密码 //12345678
        }

        这个配置文件咱们是怎么来的呢,大家可以看看README和
        在这个example目录下,给出了相应的配置的例子

3、 创建目录/var/run/wpa_supplicant

mkdir /var/run/wpa_supplicant -p

4、 启动开发板完成如下操作

配置无线网卡ip

ifconfig wlan0 192.168.0.200

配置默认网关

route add default gw 192.168.0.1

启动wpa_supplicant连接无线网络

wpa_supplicant -B -iwlan0 -c /etc/wpa-psk-tkip.conf

查看连接状态

wpa_cli status

后面的启动wifi,查看工作状态呀,这些信息都是从哪里来的,你上网搜索发现,每个人写的参数各不相同。那么我们还是来看看官方的配置。

发表评论
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)