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

    if(IS_RT30xx(pAd))

    {

            if(IS_RT3390(pAd))

                 ; //RT33xx_Init(pAd);

            else

                    RT30xx_Init(pAd);

    }

#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 ===

<-- RTMPAllocTxRxRingMemory,Status=0

<-- RTMPAllocAdapterBlock,Status=0

usbcore: registered new interfacedriverrt2870

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

~#ifconfig –a

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

      BROADCASTMULTICAST  MTU:1500  Metric:1

      RXpackets:0 errors:0 dropped:0 overruns:0 frame:0

      TXpackets:0 errors:0 dropped:0 overruns:0 carrier:0

      collisions:0txqueuelen:1000

      RXbytes:0 (0.0 B)  TX bytes:0(0.0 B)

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

~#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

<–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

<==== rt28xx_init, Status=0

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

                Protocol:802.11b/g/n

                ESSID:"idart-wlan311"

                Mode:Managed

                Frequency:2.437GHz(Channel 6)

                Quality=100/100  Signallevel=-43 dBm  Noise level=-92 dBm

                Encryptionkey:on

                BitRates:22.5 Mb/s

                IE:WPA Version 1

                    GroupCipher : CCMP

                    PairwiseCiphers (1) :CCMP

                    AuthenticationSuites(1) : PSK

                IE:IEEE 802.11i/WPA2Version 1

                    GroupCipher : CCMP

                    PairwiseCiphers (1) :CCMP

                    AuthenticationSuites(1) : PSK

                IE:Unknown:DD0E0050F204104A0001101044000102

      Cell07 - Address: 58:66:BA:EE:DB:40

                Protocol:802.11b/g/n

                ESSID:"ChinaNet"

                Mode:Managed

                Frequency:2.437GHz(Channel 6)

                Quality=42/100  Signallevel=-73 dBm  Noise level=-76 dBm

                Encryptionkey:off

                BitRates:54 Mb/s

      Cell08 - Address: 58:66:BA:EE:DB:41

                Protocol:802.11b/g/n

                ESSID:"SYSUWLAN"

                Mode:Managed

                Frequency:2.437GHz(Channel 6)

                Quality=37/100  Signallevel=-75 dBm  Noise level=-78 dBm

                Encryptionkey:off

                BitRates:54 Mb/s

至此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_supplicant和wpa_cli。

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={

     ssid="TPBLKJ"

     scan_ssid=1

     key_mgmt=WPA-EAP WPA-PSK IEEE8021X NONE

     pairwise=TKIP CCMP

     group=CCMP TKIP WEP104 WEP40

     psk="00000000"

}
~#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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值