Hi3518E开发板上添加RT5370模块

来源:互联网 发布:数据库教程 pdf 编辑:程序博客网 时间:2024/06/06 07:13

最近在搞摄像头,手上雄迈的3518e板子引出了usb接口,正好也扒出来一块带着rt5370的小板,然后焊点线就行了,剩下的就是搞移植了。

0.准备工作

虚拟机中已正常安装海思交叉工具链且path也export了,这里使用arm-hisiv100nptl-linux,内核代码,这里是linux-3.0.y,绝对路径为/work/hi3518/linux-3.0.y。

待移植源码
2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO.bz2
openssl-1.0.1e.tar.gz
wpa_supplicant-0.7.3.tar.gz
wireless_tools.29.tar.gz

1.配置内核
Networking support==>Wireless 下80211相关配置选上,至于debug开关酌情考虑
Device Drivers==>Network deivce support==>Wireless LAN==><*> USB ZD1201 based Wireless device support
Device Drivers==>USB support下EHCI HCD support、OHCI HCD support 、USB Wireless Device Management support
make uImage

2.移植rt5370驱动

a.解压源码

2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO.bz2

b.修改顶层Makefile
修改平台为Hi3518E:
#PLATFORM = PC
PLATFORM = HI3518E
添加平台内核路径及编译工具
ifeq ($(PLATFORM),HI3518E)
LINUX_SRC = /work/hi3518/linux-3.0.y
CROSS_COMPILE = arm-hisiv100nptl-linux-
endif
c.修改配置文件
修改os/linux/config.mk
使能wpa supplicant
# Support Wpa_Supplicant
HAS_WPA_SUPPLICANT=y
# Support Native WpaSupplicant for Network Maganger
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
添加平台的EXTRT_CFLAGS
ifeq ($(PLATFORM),HI3518E) 
EXTRA_CFLAGS := $(WFLAGS) -I$(RT28xx_DIR)/include
endif
d.修改设备名称
修改include/rtmp_def.h
将宏
#define INF_MAIN_DEV_NAME"ra"
#define INF_MBSSID_DEV_NAME"ra"
修改为
#define INF_MAIN_DEV_NAME"wlan"
#define INF_MBSSID_DEV_NAME"wlan"
这样加载驱动后,添加的网卡名称为wlan0
e.编译 make
f.部署到开发板饿
将os/linux/rt5370sta.ko放入开发板ko目录下
将RT2870STA.dat放入开发板/etc/Wireless/RT2870STA/目录下
f.加载5370驱动
#insmod rt5370sta.ko
#rtusb init rt2870 --->

=== pAd = c31c3000, size = 510192 ===

 RTMPAllocTxRxRingMemory, Status=0
 RTMPAllocAdapterBlock, Status=0
usbcore: registered new interface driver rt2870

ifconfig -a  之后会看到有个wlan0

#ifconfig wlan0 up
#(Efuse for 3062/3562/3572) Size=0x2d [2d0-2fc] 
RTMP_TimerListAdd: add timer obj c320a9c8!
RTMP_TimerListAdd: add timer obj c320a9f8!
RTMP_TimerListAdd: add timer obj c320aa28!
RTMP_TimerListAdd: add timer obj c320a998!
RTMP_TimerListAdd: add timer obj c320a908!
RTMP_TimerListAdd: add timer obj c320a938!
RTMP_TimerListAdd: add timer obj c31d553c!
RTMP_TimerListAdd: add timer obj c31c4d40!
RTMP_TimerListAdd: add timer obj c31c4d78!
RTMP_TimerListAdd: add timer obj c31d55e0!
RTMP_TimerListAdd: add timer obj c31d54dc!
RTMP_TimerListAdd: add timer obj c31d55ac!
-->RTUSBVenderReset
RTUSBVenderReset
Key1Str is Invalid key length(0) or Type(0)
Key2Str is Invalid key length(0) or Type(0)
Key3Str is Invalid key length(0) or Type(0)
Key4Str is Invalid key length(0) or Type(0)
1. Phy Mode = 5
2. Phy Mode = 5
NVM is Efuse and its size =2d[2d0-2fc] 
phy mode> Error! The chip does not support 5G band 15!
RTMPSetPhyMode: channel is out of range, use first channel=1 
(Efuse for 3062/3562/3572) Size=0x2d [2d0-2fc] 
3. Phy Mode = 9
AntCfgInit: primary/secondary ant 0/1
AsicSetRxAnt, switch to main antenna
MCS Set = ff 00 00 00 01
== rt28xx_init, Status=0
0x1300 = 00064300

3.移植wpa supplicant
wpa supplicant需要用到ssl库,为此需先编译openssl,
a.解压源码
解压openssl-1.0.1e.tar.gz与wpa_supplicant-0.7.3.tar.gz
b.编译OpenSSL库
将上一步解压出来wpa_supplicant-0.7.3中的patches/openssl-0.9.8e-tls-extensions.patch复制到openssl-1.0.1e目录下。
建立一个openssl的安装目录,例如work/hi3518/openssl.
修改顶层Makefile
CC= arm-hisiv100nptl-linux-gcc
AR= arm-hisiv100nptl-linux-ar $(ARFLAGS) r
RANLIB= arm-hisiv100nptl-linux-ranlib
INSTALLTOP=/work/hi3518/openssl
OPENSSLDIR=/work/hi3518/openssl
make
make install
c.编译wpa_suppicant
进入目录wpa_supplicant-0.7.3/wpa_supplicant,
cp defconfig .config
修改.config
CC=arm-hisiv100nptl-linux-gcc -L/work/hi3518/openssl/lib/
CFLAGS += -I/work/hi3518/openssl/include
LIBS += -L/work/hi3518/openssl/lib/
编译make
d.部署到开发板
将编译生成的wpa_supplicant、wpa_cli下载到开发板
创建配置文件/etc/wap_supplicant.conf,内容如下:
ctrl_interface=/var/run/wpa_supplicant

network={
ssid="Test-Wifi"
scan_ssid=1
key_mgmt= WPA-EAP WPA-PSK IEEE8021X NONE
pairwise=TKIP CCMP
group=CCMP TKIP WEP104 WEP40
psk="12345678"

}

创建运行目录mkdir /var/run/wpa_supplicant,上面配置文件中ssid、psk为路由wifi名称与密码
e.连接到路由
运行命令
./wpa_supplicant -Dwext -iwlan0 -c/home/wpa_supplicant.conf -dd &
这里-dd可以去掉,关闭调试信息。
这样3518就连接到了路由,路由ssid、密码在wpa_supplicant.conf中配置
f.自动获得ip
busybox中已默认包含udhcpc,只需要在开发板中做配置运行即可
复制busybox中example/udhcp/simple.script到开发板etc目录下,根据其中的RESOLV_CONF="/etc/resolv.conf"在etc下建立resolv.conf文件,修改权限为777

运行命令 udhcpc -i wlan0 -s /etc/udhcpc-default.script &
开发板能够从路由获得ip

4.移植wireless_tools
a.解压源码,修改Makefile
CC = arm-hisiv100nptl-linux-gcc
AR = arm-hisiv100nptl-linux-ar
RANLIB = arm-hisiv100nptl-linux-ranlib
b.编译make

c.部署到开发板

将编译生成的libiw.so.29放到开发板/usr/lib/目录下

将编译生成的iwlist、iwconfig、iwpriv等下载到开发板运行即可,具体使用可查找相关资料。

参考
无线wlan在mips平台上的移植与应用
嵌入式Linux USB WIFI驱动的移植
1 0