本文共 3712 字,大约阅读时间需要 12 分钟。
最近准备搞一套基于mini2440的摄像头监控无线传输给PC机的系统,首先先要把mini2440的无线网卡驱动装上,用时大约不到一周的时间。
一 先要找到无线网卡的驱动,我的无线网卡是雷凌的 芯片是rt5270 ,这个如果你不清楚芯片是什么,可以先插到PC机上,看看型号
可以看到ID是148f 5370 ralink 根据这个可以找到驱动 下载网址http://pan.baidu.com/s/1mgHr2PU
下载完之后解压,然后在解压目录里make ,make install,最后可以通过modprobe或者insmod命令加载驱动,之后可以通过lsmod查看驱动已经加载上了。
二 需要把驱动移植到2440上,由于我的mini2440的驱动是kernel2.6.13的 里面没有无线模块所以需要自己添加,在2.6.32以后的版本好像已经有无线模块的驱动,貌似通用的网卡驱动都有,省了很大功夫。还是进入到解压目录里,首先修稿配置文件vim os/linux/config.mk
# Support Wpa_Supplicant
HAS_WPA_SUPPLICANT=y
# Support Native WpaSupplicant for NetworkMaganger
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
然后修改makefile:vim Makefile,将PLATFORM=PC 注释掉,将PLATFORM=SMDK的#号删除,就是把平台改成SMDK,然后将ifeq ($(PLATFORM),SMDK)下面的改成 LINUX_SRC = /linux-2.6.13/kernel-2.6.13 CROSS_COMPILE = /usr/local/arm/3.4.1/bin/arm-linux- 第一个是kernel2.6.13的解压位置,这个就是你2440板子里烧的内核,我的是http://pan.baidu.com/s/1jGFtGyy第二个是交叉编译的位置,经我测试,貌似只能用3.4.1的交叉编译环境,我最开始安装的是arm-linux-gcc 3.3.2和4.3.2 这两个比较通用,但是make的时候总是提示错误,显示缺少3.4.1的arm-linux-gcc,所以又只能装了个3.4.1。这样make clean,然后make,make install。这样就生成了可以在2440上运行的驱动,然后在当前目录下执行 cd os/linux/ 将里面生成的rt5370sta.ko 文件发送到mini2440里,这个就是驱动文件 我用ftp方式发送的,这个方式很多,就不一一说了。同时将源代码根目录下面的RT2870STA.dat文件传送到/etc/Wireles/TR2870STA/目录下,没有的话就mkdir命令创建。这个许多参考资料上说需要把rt5370sta.ko文件放到开发板的/lib/modules/2.6.32.2-FriendlyARM下面,其实没有必要,随便放到哪里即可,因为2.6.13不支持depmod modprobe 这些命令,只能用insmod命令,只要在存放.ko文件的路径里执行insmod即可,如图
这样就是驱动安装成功了,插入网卡,然后启动网卡,ifconfig ra0 up 注意这里给无线网卡分配的名字是ra0 不是wlan0 。
然后ifocnfig就能看到网卡信息了
三 需要安装执行网络相关命令的文件,再次强调一边由于kernel2.6.13的内核完全没有无线模块,所以常用的iwlist iwpriv 等命令都不支持,如果输入的话就会提示命令not found,这样需要我们下载工具包,首先下载wireless_tools.29.tar.gz工具包,这些资源我都会上传到我的百度云空间,下载地址http://pan.baidu.com/s/1k1PSE 然后在PC机上解压tar zxvf wireless_tools.29.tar.gz,进入解压目录,修改Makfile,vim Makfile,修改如下所示ifndef PREFIX
PREFIX = /usr/local endif ## Compiler to use (modify this for cross compile). CC = arm-linux-gcc ## Other tools you need to modify for cross compile (static lib only). AR = arm-linux-ar RANLIB = arm-linux-ranlib 就是改一下交叉编译环境。然后make,makeinstall。然后解压包的根目录下找到libiw.so.29。下载到开发板的/lib/目录下;还在根目录下找到iwpriv、iwconfig、iwlist, iwevent, iwspy等命令,下载到开发板的/usr/sbin目录下。这时就应该可以使用这些命令通过网卡搜索到环境中的无线网络。然后执行iwlist scan 就可看到周围的无线网络
接下来就需要安装加密软件,移植wpa_supplicant,和openssl-0.9.8e,下载地址http://pan.baidu.com/s/1gdzkI4b 和 http://pan.baidu.com/s/1ewmZk 将两个包解压后,需要为opensll打上wpa的补丁,然后交叉编译
cpwpa_supplicant-0.7.3/patches/openssl-0.9.8e-tls-extensions.patchopenssl-0.9.8e/
cd openssl-0.9.8e
mkdir /usr/local/ssl
vim Makefile
INSTALLTOP=/usr/local/ssl
OPENSSLDIR=/usr/local/ssl
……
CC= arm-linux-gcc
AR= arm-linux- ar $(ARFLAGS) r
RANLIB= arm-linux-ranlib
make
make install
在/usr/local/ssl目录下安装了ssl库。
然后进入到wpa_supplicant的目录,修改配置文件和Makefile
cd ../wpa_supplicant-0.7.3/wpa_supplicant
cp defconfig .config
在最后面加上下面三行。
vim .config
CC=arm-linux-gcc -L /usr/local/ssl/lib/
CFLAGS += -I/usr/local/ssl/include
LIBS += -L/usr/local/ssl/lib
可以在当前目录下得到需要的wpa_supplicant工具
对wpa_supplicant.conf文件进行编辑:
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="xxxxxx"
scan_ssid=1
key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE
pairwise=TKIP CCMP
group=CCMP TKIP WEP104 WEP40
psk="XXXXXXXX"
}将wpa_supplicant和配置文件wpa_supplicant.conf下载到开发板中,wpa_supplicant替换掉原本开发板/usr/sbin/目录下的wpa_supplicant,wpa_supplicant.conf放在/etc目录下,然后有参考资料说需要关闭有线网卡,否则不能成功,我写了个脚本文件
#!/bin/sh ifconfig eth0 down ifconfig ra0 up ifconfig ra0 192.168.1.248 netmask255.255.255.0 route add default gw 192.168.1.1 wpa_supplicant -B -ira0 -c/etc/wpa_supplicant.conf –Dwext
然后ftp进板子。然后加权限,执行。前提是你先要用PC机建个热点,可以通过ping测试
如果想用2440ping通PC机的话 需要改PC机IP,原因就是在启动脚本里已经将IP,网关都写死了,2440不能自动获取IP,如果想要自动获取IP,还需要移植其他安装包,由于时间限制,暂时还未做,希望大家一起探讨
参考文件http://www.educity.cn/wenda/419738.html
http://blog.chinaunix.net/uid-26333327-id-3212280.html
http://blog.csdn.net/liangyamin/article/details/7209761