insmod移植好的wifi驱动,能正确加载,但却连不上wifi。一开始我以为是配置文件写的不对,改了下还是不行,最后把AP改成开放式连上了,分析应该是加解密有问题,因此打算移植wireless_tools手动配置看下。 下载wireless_tools解压,修改makefile, CC = arm-Linux-gcc
AR = arm-linux-ar
RANLIB = arm-linux-ranlib 然后make,把生成的可执行文件拷贝到开发板,执行时显示No such file or directory,发现官方BSP里的rootfs没有动态库。可以选择静态编译wireless-tools,也可以自己做动态库,这里先说静态编译。makefile中BUILD_STATIC = y, BUILD_NOLIBM = y。 %: %.o
$(CC) $(LDFLAGS) $(STRIPFLAGS) $(XCFLAGS) -o $@ $^ $(LIBS) -static 重新make拷贝,可以执行了。手动调试发现还是连不上wifi,网上看了下说要移植wpa_supplicant。 下载wpa_supplicant-0.7.3和依赖库openssl-0.9.8e,我用的版本比较老,新版本还需要libnl。 分别解压,mkdir openssl,openssl生成的库文件都放在这,不要用默认安装路径污染宿主机。 拷贝wpa_supplicant/patches下对应openssl版本的patch到openssl-0.9.8e下 cd openssl-0.9.8e ./config --prefix=/xx/xx/openssl 修改Makefile, 将CC AR RANLIB改成arm-linux-gccarm-linux-ararm-linux-ranlib make,make install 静态编译wpa_supplicant,修改.config文件,增加以下几行内容: CC= arm-linux-gcc -L/home/developer/wpa_supplicant/openssl/lib -static
CFLAGS += -I/home/developer/wpa_supplicant/include/
LIBS += -L/home/developer/wpa_supplicant/lib/
make,得到wpa_supplicant。 rootfs下增加/etc/wpa_supplicant/wpa_supplicant.conf,内容为: ctrl_interface=/var/run/wpa_supplicant
network={
ssid="xxxx"
scan_ssid=1
key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE
pairwise=TKIP CCMP
group=CCMP TKIP WEP104 WEP40
psk="xxxx"
} 执行wpa_supplicant -B -ira0 -c /etc/wpa_supplicant/wpa_supplicant.conf -Dwext,终于连接上了。
|