LINUX 移植 RT3070祥解

RT3070移植祥解

工具:
1.EasyARM-iMX283 Linux开发板
2.M05-50模块(RT3070芯片)

软件
宿主机 VMware 10 + Linux ubuntu 3.2.0-29-generic-pae i686 i686 i386 GNU/Linux
开发板 Linux EasyARM-iMX283 2.6.35.3 armv5tejl GNU/Linux
GCC :gcc-4.4.4-glibc-2.11.1-multilib-1.0_EasyARM-iMX283.tar.bz2
指导文档:EasyARM-iMX283 Linux开发指南 V1.05.pdf

1.按照指导文档编译好HELLO可执行文件,复制到开发板中测试,确定GCC没有问题。
2.编译RT3070驱动
3、编译rt3070模块的驱动

https://blog.csdn.net/zhongli1994/article/details/77540454
在雷凌的官 下载linux版本的rt3070驱动2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO.bz2

,解压后的目录名称太长,所以可以对其做修改方便使用,然后进入到目录中

~#tar –jxvf 2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO.bz2

mv2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO rt3070

~#cd rt3070

目录中的README_STA_usb文件介绍了编译和加载驱动的一些信息。需要对os/linux/目录下的conf.mk文件进行修改,

这里只贴出要修改的部分:

~#vim os/linux/config.mk

Support Wpa_Supplicant

HAS_WPA_SUPPLICANT=y

Support Native WpaSupplicant for NetworkMaganger

HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y

Makefile也要进行修改,芯片类型改为3070,默认的PLATFORM为PC,那么将后面的ifeq($(PLATFORM),PC)下的内核源

码路径指定为上述的交叉编译过的内核源码目录,交叉编译工具指定为/opt/arm-2009q1-203/bin/arm-none-linux-

gnueabi-gcc当然之前应该把交叉工具链安装好,这里不再详述。

~#vim Makefile

ifeq ($(CHIPSET),)
CHIPSET = 3070
endif

……

ifeq ($(PLATFORM),PC)

Linux 2.6

LINUX_SRC = /usr/src/kernels/linux-2.6.38(内核的路径)

Linux 2.4 Change to your local setting

#LINUX_SRC = /usr/src/linux-2.4

LINUX_SRC_MODULE = /lib/modules/$(shelluname-r)/kernel/drivers/net/wireless/(无线模块路径)

CROSS_COMPILE =/opt/arm-2009q1-203/bin/arm-none-linux-gnueabi-

endif

然后如果直接make,会 如下错误:

/home/cabbage/Desktop/rt3070/os/linux/…/…/chips/rtmp_chip.c:Infunction ‘RtmpChipOpsHook’:

/home/cabbage/Desktop/rt3070/os/linux/…/…/chips/rtmp_chip.c:470:error:implicit declaration of

function ‘RT33xx_Init’

make[2][/home/cabbage/Desktop/rt3070/os/linux/…/…/chips/rtmp_chip.o] Error 1

make[1][module/home/cabbage/Desktop/rt3070/os/linux] Error 2

make[1]: Leavingdirectory`/usr/src/kernels/linux-2.6.38’

make: ***[LINUX] Error 2

在 上查到似乎是因为改变了CHIPSET所导致的错误。修改chips/目录下的rtmp_chip.c文件,定位到470行,修改后

如下:

#ifdef RT30xx

#endif /* RT30xx */

然后再make,编译通过后会在os/linux/下生成rt3070sta.ko,这就是模块的驱动。 但是这里我出现了一个问题,查

看rt3070sta.ko这个文件的大小,居然达到了12m,这是不合理的,原因应该是包含了大量调试信息,用arm-linux-

strip可将它的大小裁剪为750k左右。

~#arm-linux-strip -S rt3070sta.ko

其中-S参数是必须的,否则在加载驱动的时候会 找不到版本信息的错误。




3.测试驱动
加载驱动模块

~#insmod /usr/rt3070sta.ko

rtusb init rt2870 —>

=== pAd = d1502000, size = 513400 ===

usbcore: registered new interfacedriverrt2870

然后可以通过ifconfig–a可以看到系统已经正确识别 卡,名称为ra0。

~#ifconfig –a

ra0 Linkencap:Ethernet HWaddr00:00:00:00:00:00

然后启动 卡,有如下信息输出,此时 卡已经可以正常工作了。

~#ifconfig ra0 up

(Efuse for 3062/3562/3572)Size=0x2d[2d0-2fc]

RTMP_TimerListAdd: add timer objd1549ba8!

RTMP_TimerListAdd: add timer objd1549bd8!

RTMP_TimerListAdd: add timer objd1549c08!

RTMP_TimerListAdd: add timer objd1549b78!

RTMP_TimerListAdd: add timer objd1549ae8!

RTMP_TimerListAdd: add timer objd1549b18!

RTMP_TimerListAdd: add timer objd151471c!

RTMP_TimerListAdd: add timer objd1503edc!

RTMP_TimerListAdd: add timer objd1503f14!

RTMP_TimerListAdd: add timer objd15147c0!

RTMP_TimerListAdd: add timer objd15146bc!

RTMP_TimerListAdd: add timer objd151478c!

–>RTUSBVenderReset

Key1Str is Invalid key length(0) orType(0)

Key2Str is Invalid key length(0) orType(0)

Key3Str is Invalid key length(0) orType(0)

Key4Str is Invalid key length(0) orType(0)

  1. Phy Mode = 5

  2. Phy Mode = 5

NVM is Efuse and its size=2d[2d0-2fc]

phy mode> Error! The chip doesnotsupport 5G band 5!

RTMPSetPhyMode: channel is out ofrange, usefirst channel=1

(Efuse for 3062/3562/3572)Size=0x2d[2d0-2fc]

  1. Phy Mode = 9

AntCfgInit: primary/secondary ant 0/1

MCS Set = ff 00 00 00 01

0x1300 = 00064300

至此 卡驱动移植成功。

4.编译和安装上层应用软件

4.1移植wireless_tools(AP扫描工具)

源码下载地址:http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.29.tar.gz

~#tar zxvf wireless_tools.29.tar.gz

~#cd wireless_tools.29

~#vim Makefile

PREFIX = /usr/local/wirelesstool (生成文件的路径)

CC = /opt/arm-2009q1-203/bin/arm-none-linux-gnueabi-gcc

AR = /opt/arm-2009q1-203/bin/arm-none-linux-gnueabi-ar

RANLIB = /opt/arm-2009q1-203/bin/arm-none-linux-gnueabi-ranlib

~#make

~#make install

在/usr/local/wirelesstool/lib目录下找到libiw.so.29,下载到开发板的/lib/目录

下;/usr/local/wirelesstool/sbin目录下找到iwpriv、iwconfig、iwlist, iwevent, iwspy等命令,下载到开发板

的/usr/sbin目录下。这时就应该可以使用这些命令通过 卡搜索到环境中的无线 络。

~#ifconfig ra0 up

~#iwlist ra0 scan

Cell 06 – Address: 38:83:45:E5:CB:3E

至此wireliss_tools移植成功。

4.2

因为现在的无线wifi 络大多是wpa加密。所以需要移植wpa_supplicant工具。
一、下载源码
http://hostap.epitest.fi/wpa_supplicant/
http://w1.fi/releases/
下载wpa_supplicant-0.7.3.tar.gz (openssl用到0.7.3提供的补丁)
#tar xvfz wpa_supplicant-0.7.3.tar.gz
下载www.openssl.org/source/openssl-0.9.8e.tar.gz
#tar zxvf openssl-0.9.8e.tar.gz

二、编译openssl库
ftp://ftp.openssl.org/source/old/0.9.x/
将wpa_supplicant中的补丁拷贝到openssl中
# cp wpa_supplicant-0.7.3/patches/openssl-0.9.8e-tls-extensions.patch openssl-0.9.8e/
#cd openssl-0.9.8e
#mkdir /usr/local/ssl
#vim Makefile
CC= arm-linux-gnu-gcc
AR= arm-linux-gnu-ar $(ARFLAGS) r
RANLIB= arm-linux-gnu-ranlib
INSTALLTOP=/usr/local/ssl
OPENSSLDIR=/usr/local/ssl
#make
#make install

在/usr/local/ssl目录下安装了ssl库
~#ils /usr/local/ssl
~#ibin certs include lib man misc openssl.cnf private

后面编译wpa_supplicant要依赖openssl中的lib和include

三、编译wpa_supplicant
进入wpa_supplicant-0.7.3.tar.gz解压生成的wpa_supplicant-0.7.3/wpa_supplicant目录中:
#cp defconfig .config
#vim .config
CC= arm-linux-gnu-gcc -L/usr/local/ssl/lib/
CFLAGS += -I/usr/local/ssl/include/
LIBS += -L/usr/local/ssl/lib/
#make

wpa_supplicant是核心程序,它和wpa_cli的关系就是服务和客户端的关系:后台运行wpa_supplicant,使用wpa_cli

来搜索、设置、和连接 络。

5.总体测试

(1)首先拷贝wpa_supplicant和wpa-psk-tkip.conf到开发板根文件系统中,并改名wpa-psk-tkip.conf为

wpa_supplicant.conf

~#ivi /etc/ wpa_supplicant.conf
#输入下面的内容

WPA-PSK/TKIP

ctrl_interface=/var/run/wpa_supplicant
network={

}
~#wq!
2
输入以下命令
~#ifconfig eth0 down

~#ifconfig ra0 up

~#ifconfig ra0 192.168.1.248netmask255.255.255.0

~#route add default gw 192.168.1.1

~#wpa_supplicant -B -ira0-c/etc/wpa_supplicant.conf –Dwext

3.测试 络连接
~#pin 192.168.1.1

~#ping 115.239.211.112

文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux25351 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年5月22日
下一篇 2019年5月22日

相关推荐