jz2440 ----移植自制的USB RTL8188EUS网卡驱动

1:google 下载rtl8188eus的网卡驱动源码

https://github.com/quickreflex/rtl8188eus 

2.解压缩下载的文件,把驱动文件rtl8192_8188eus_linux_xxx.tar.gz(xxx是版本号)添加到要编译的内核树里面去

(1)假定你的内核位置为/root/linux-kernel,解压缩驱动文件,并且把解压缩后的驱动文件夹名改为rtl8192eus。

(2)把改好名字的驱动文件夹rtl8192eus复制到/root/linux-kernel/drivers/net/wireless/下。

(3)修改/root/linux-kernel/drivers/net/wireless/下的Makefile和Kconfig文件,在Makefile添加obj -$(CONFIG_RTL8192EU)  += rtl8192eu/,在Kconfig下添加 source "drivers/net/wireless/rtl8192cu/Kconfig"。

(4)make menuconfig 配置内核,在Device Drivers/Network device support/Wireless LAN下选中8192cu,编译内核。

kernel/drivers/net/wireless/Makefile

这里的CONFIG_RTL8188EU名字必须是 8188eus/Konfig里面的指定的名字

kernel/drivers/net/wireless/Kconfig下添加 source "drivers/net/wireless/rtl8192cu/Kconfig

3. (1)make menuconfig,将8188eus配置编译进内核:

       在Device Drivers/Network device support/Wireless LAN下选中Realtek 8188E USB WiFi

另外 根据其它网友的经验需要将下面配置也添加进去,防止编译出错

进入内核目录,make menuconfig

[*] Networking support —> 

[*] Wireless —> 

Device Drivers —> [*] Network device support —> Wireless LAN —> [*] Wireless LAN (IEEE 802.11) <*> IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP) 

保存退出后,vi .Config

3 (2) make uImage 成功 烧录到开发板 插入USB wifi

ifconfig wlan0 up ,

4.

(1)应用软件测试 https://code.google.com/archive/p/starterkit-org/downloads

下载软件:

(2)tar -xvf wireless_tools.30.rtl.tar.gz

vi Makefile  (没有看到configure 文件) 

sudo make DESTDIR=$PWD/tmp install (可以不用修改)

nfs 30000000 192.168.2.102:/work/nfs_root/uImage_wifi

/ # mount -t nfs -o nolock,vers=2 192.168.2.102:/work/app/wireless_8188eus/wirel
ess_tools.30.rtl /mnt 成功挂载后,可以执行命令!

如何设置上电启动挂载文件系统:

set bootargs console=ttySAC0,115200 init=linuxrc root=/dev/nfs nfsroot=192.168.2.102:/work/nfs_root/fs_mini_mdev_new ip=192.168.2.5:192.168.2.102:192.168.2.1:255.255.255.0::eth0:off

###############################################################################################

关于-/bin/sh:xx(命令) not found  的几种原因:
1./bin/目录下没有这个命令;
2.bin/目录有这个命令,只是执行权限不够,或者程序执行权限不够;
3.程序需要的静态库或者动态库没有;
解决办法:
原因一的解决方法:安装busy box将busy box支持的命令安装到文件系统的bin目录下;(只要安装了busy box它会自动加载命令到bin目录下,这个你懂的,若不懂请看我的博文《根文件系统的制作》)
原因二的解决方法:在/bin/目录下找到对应的命令,修改其权限为777;具体操作: chmod   777  xx(命令)  【附加:在编写执行脚本文件时不能运行也大多是没有修改脚本权限的问题(命令其实就是一个特殊的脚本)】
原因三的解决方法:
(1)最“高效”的解决方法:用命令:arm-linux-readelf   -d   xxx(目标文件/命令)    查看xxx使用的动态库
如图:我的iwlist命令使用的动态库是libiw.so.29 、libm.so.6 和libc.so.6  

于是我便去交叉编译器所在目录/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib下的动态库中寻找所需的上面三个库libiw.so.29 、libm.so.6 和libc.so.6  ,并复制到根文件系统的lib目录下:
(注意:这里我使用交叉编译器的版本为4.3.2的版本所以目录4.3.2有所不同即到/usr/local/arm/(编译器版本)/arm-none-linux-gnueabi/libc/armv4t/lib下的动态库中寻找)

(2)最“2”最笨的方法:把/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib下的所有动态库都拷贝到根文件系统的lib目录下;(但是这种方法在嵌入式开发里面无意增加了成本,拷贝了一些不必要的动态库文件,增大了根文件系统的体积)
 

参考这个后,我发现是库文件也在相应的目录,权限也打开了,就是iw list 一直-/bin/sh:xx(命令) not found ,分析后发现

我用的文件系统是jz2440的移植的系统,而我copy的库文件 实际是在ubuntu的网络文件里面,所以可以尝试挂载网络文件系统来解决!

set bootargs console=ttySAC0,115200 init=linuxrc root=/dev/nfs nfsroot=192.168.2.102:/work/nfs_root/fs_mini_mdev_new ip=192.168.2.5:192.168.2.102:192.168.2.1:255.255.255.0::eth0:off

iw command

Description
iw dev wlp5s0 link获取连接状态
iw dev wlp5s0 scan扫描可用热点
iw dev wlp5s0 set type ibss设置操作模式为ad-hoc
iw dev wlp5s0 connect your_essid连接到开放网络
iw dev wlp5s0 connect your_essid 2432连接到开放网络的指定通道
iw dev wlp5s0 set power_save on启用省电模式

 可能iphone没有设置wep加密方式导致,无法验证这个功能

 

下面验证wpa加密方式:

b.1 先编译它的依赖libopenssl  ----》该文章有记录

b.2 要有一个配置文件.config
tar xzf wpa_supplicant-2.0.tar.gz 
cd wpa_supplicant-2.0/wpa_supplicant/
cp defconfig .config
修改.config加上一行: CONFIG_LIBNL32=y
修改Makefile:
CC=arm-linux-gcc

make  出现错误:/usr/bin/ld: cannot find -lnl-genl-3 和下面编译 hostapd 出现的error现象一样的!

                     分析原因:root@book-virtual-machine:/work/app/wireless_8188eus/libnl-3.2.23/tmp/include/libnl3# cp netlink -rf /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include

make DESTDIR=$PWD/tmp install

################################################################################

 

 

 

用hostapd配置WiFi作为AP接入点

(1)解压配置tar xzf hostapd-2.0.tar.gz

(2)
cd hostapd-2.0/hostapd
cp defconfig .config
vi .config   // 添加一行: CONFIG_LIBNL32=y
vi Makefile  // CC=arm-linux-gcc
make
make install DESTDIR=$PWD/tmp
cp tmp/usr/local/bin  nfs...

 

操作:make 后出现

../src/drivers/driver_nl80211.c:22:31: fatal error:netlink/genl/genl.h: No such file or directory

原因:缺少libnl

解决方法:下载并编译安装libnl

tar xzf libnl-3.2.23.tar.gz 
cd libnl-3.2.23/
./configure --host=arm-linux --prefix=$PWD/tmp
make // 修改lib/addr.c添加宏 出错
make install

 

 

lib/addr.c添加宏 从内核里面找到:

安装完成libnl后 再次make hostpad 仍然出现之前的错误,

1.怀疑编译的libnl库是不是没有放到相应的目录,导致环境变量里面没有这个文件

那就把所有libnl-3.2.23/incude目录下的文件copy 到环境变量的目录下:

2.重新编译 hostpad,出现新的错误

 

编译openssl

编译openssl:
http://www.openssl.org/
http://www.openssl.org/source/
tar xzf openssl-1.0.1d.tar.gz
cd openssl-1.0.1d/
./config shared no-asm --prefix=$PWD/tmp
修改Makefile:
CC= arm-linux-gcc
AR= arm-linux-ar $(ARFLAGS) r
RANLIB= arm-linux-ranlib
MAKEDEPPROG= arm-linux-gcc

make 发现出现莫名奇妙的 编译错误,后面定位到没有加sudo 权限
make install 出现错误:

rm -f /usr/bin/pod2man 重新编译sudo make clean /sudo make + 重新安装即可sudo make install!

安装成功后!!!!

3.再次编译 之前的hostapd ,出现之前错误提示

../src/crypto/tls_openssl.c:17:25: fatal error: openssl/ssl.h: No such file or director ,明明已经安装了openssl ,为什么还是找不到ssh.h

 

root@book-virtual-machine:/work/app/wireless_8188eus/hostapd-2.0# vi src/crypto//tls_openssl.c

 发现ssl.h是在openssl目录下,所以将openssl文件夹copy到/usr/local/include目录下

再次编译,错误消失,但出现下面的问题:

解决办法:

1.# gcc -libnl-3.so 查询库文件 libhdf5.so 是否能在搜索路径中找到。

若安装了软件,找到了库文件的路径。但是依然会提示上述错误。则表示gcc的搜索路径不包含该库文件所在的路径。将库文件所在的路径加入到搜寻路径中的方法为:

gcc中的默认头文件搜索路径

 

  1. For C: gcc -xc -E -v -
  2.  没有看到/usr/local/lib 库

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值