u盘模式 linux hi3518,嵌入式 RT3070_STA驱动移植到hi3518c平台小结

首先在官方的驱动中不一定支持我们需要的平台,这样就需要我们对需要的平台进行相关的添加,主要修改下面两个文件:

1、根目录下的Makefile:

PLATFORM = HI_3518C

#add by kj ,in the platform hi_3518c

ifeq ($(PLATFORM),HI_3518C)

LINUX_SRC = /home/kongjun/mywork/develop_kj/Hi3518_SDK_V1.0.3.0/osdrv/kernel/linux-3.0.y

LINUX_SRC_MODULE = /home/kongjun/mywork/develop_kj/Hi3518_SDK_V1.0.3.0/osdrv/kernel/linux-3.0.y/drivers/net/wireless/

CROSS_COMPILE = arm-hisiv100nptl-linux-

endif

#end alter by kj

2、./os/linux/config.mk 文件:

#add by kj

ifeq ($(PLATFORM),HI_3518C)

#WFLAGS += -DRT_BIG_ENDIAN

endif

#add by kj

ifeq ($(PLATFORM),HI_3518C)

#CFLAGS := -v -D__KERNEL__ -DMODULE -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -mbig-endian -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -Uarm -fno-common -pipe -mapcs-32 -D__LINUX_ARM_ARCH__=5 -mcpu=xscale -mtune=xscale -malignment-traps -msoft-float $(WFLAGS)

EXTRA_CFLAGS := -v $(WFLAGS) -I$(RT28xx_DIR)/include

export CFLAGS

endif

3、make即可。

注:

驱动加载后生成的设备名称是‘ra0’,这个在驱动是可以修改的,在驱动中的位置是:

./include/rtmp_def.h

#define INF_MAIN_DEV_NAME "ra"

#define INF_MBSSID_DEV_NAME "ra"

#define INF_WDS_DEV_NAME "wds"

#define INF_APCLI_DEV_NAME "apcli"

#define INF_MESH_DEV_NAME "mesh"

#define INF_P2P_DEV_NAME "p2p"

其他参考资料:

2. RT3070驱动修改

解压 tar -zxvf 2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO.tar.gz

进入RT3070_Linux_STA目录,看到有一个README_STA_usb文件,里面介绍了如何加载该驱动,先浏览一下

2.1 先设好环境变量export PATH=/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/usr/bin:$PATH

2.2 makefile修改 (-为去掉设置, +为新加的设置)

#vi makefile

- #PLATFORM = PC

+ PLATFORM = IXP

#(选用的是IXP)

ifeq ($(PLATFORM),IXP)

- LINUX_SRC = /project/stable/Gmtek/snapgear-uclibc/linux-2.6.x

- CROSS_COMPILE = arm-linux-

+ LINUX_SRC = /xxx/kernel/linux-2.6.14

+ CROSS_COMPILE = arm-hismall-linux-

endif

2.3 /os/linux/config.mk修改#cd /os/linux/

#vi config.mk

# Support Wpa_Supplicant

- HAS_WPA_SUPPLICANT=n

+ HAS_WPA_SUPPLICANT=y

# Support Native WpaSupplicant for Network Maganger

- HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n

+ HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y

ifeq ($(PLATFORM),IXP)

- WFLAGS += -DRT_BIG_ENDIAN

#加这个选项,模块运行时显示出错,CPU不能工作

endif

ifeq ($(PLATFORM),IXP)

- CFLAGS := -v -D__KERNEL__ -DMODULE -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -mbig-endian -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -Uarm -fno-common -pipe -mapcs-32 -D__LINUX_ARM_ARCH__=5 -mcpu=xscale -mtune=xscale -malignment-traps -msoft-float $(WFLAGS)

- EXTRA_CFLAGS := -v $(WFLAGS) -I$(RT28xx_DIR)/include -mbig-endian

+ EXTRA_CFLAGS := -v $(WFLAGS) -I$(RT28xx_DIR)/include

export CFLAGS

endif

3、 编译源码make通过,在2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO/os/linux目录下生成了rt3070sta.ko,也就是RT3070的驱动了

4. 拷贝驱动到目标系统把RT2870STA.dat拷贝到/etc/Wireless/RT2870STA目录下

把rt3070sta.ko拷贝到/xxx/ 目录下 xxx自定

5. 加载驱动模块insmod /xxx/rt3070sta.ko

出现以下错误rt3070sta: Unknown symbol usb_alloc_urb

rt3070sta: Unknown symbol usb_free_urb

rt3070sta: Unknown symbol usb_register

rt3070sta: Unknown symbol usb_put_dev

rt3070sta: Unknown symbol usb_get_dev

rt3070sta: Unknown symbol usb_submit_urb

rt3070sta: Unknown symbol usb_control_msg

rt3070sta: Unknown symbol usb_deregister

rt3070sta: Unknown symbol usb_kill_urb

rt3070sta: Unknown symbol usb_buffer_free

rt3070sta: Unknown symbol usb_buffer_alloc

insmod: cannot insert `rt3070sta.ko': Unknown symbol in module (-1): No such file or directory

原因未加载USB驱动

5.1 加载usbcore.koinsmod /lib/modules/2.6.14-hi3511v100dmeb-release/kernel/drivers/usb/core/usbcore.ko

显示usbcore: registered new driver usbfs

usbcore: registered new driver hub

加载成功

5.2.1 如果为USB1.1 加载hi3511_usb_1-1.ko

insmod /lib/modules/2.6.14-hi3511v100dmeb-release/misc/hi3511_usb_1-1.ko

显示USB1_1-M0001C030002 @Hi3511v110_OSDrv_1_0_0_1 2008-11-03 18:35:15

Clock to USB host has been enabled

hisilicon-ohci hisilicon-ohci.0: hisilicon OHCI

hisilicon-ohci hisilicon-ohci.0: new USB bus registered, assigned bus number 1

hisilicon-ohci hisilicon-ohci.0: irq 20, io mem 0xa0000000

hub 1-0:1.0: USB hub found

hub 1-0:1.0: 2 ports detected

usb 1-1: new full speed USB device using hisilicon-ohci and address 2

加载成功

5.2.2 如果为USB2.0 加载hiusb.ko

insmod /lib/modules/2.6.14-hi3511v100dmeb-release/misc/hiusb.ko

显示<6>hiusb-hcd hiusb-hcd.0: Hisilicon USB host controller

hiusb-hcd hiusb-hcd.0: new USB bus registered, assigned bus number 1

hiusb-hcd hiusb-hcd.0: irq 23, io base 0x80090000

hub 1-0:1.0: USB hub found

hub 1-0:1.0: 1 port detected

加载成功

5.3 然后再加载rt3070sta.koinsmod /xxx/rt3070sta.ko

显示

rtusb init rt2870 --->

=== pAd = d1af4000, size = 514424 ===

usbcore: registered new driver rt2870

加载成功

#ifconfig -a 可以查看到ra0设备的存在

若无密码或密码为WEP加密,则此时可以启动无线, 若密码为WPA加密,则需移植wpa_supplicant,往后再说移植

6.无密码或密码为WEP加密:6.1 启动无线#ifconfig ra0 up(Efuse for 3062/3562/3572) Size=0x2d [2d0-2fc]

RTMP_TimerListAdd: add timer obj d1b3c620!

RTMP_TimerListAdd: add timer obj d1b3c650!

RTMP_TimerListAdd: add timer obj d1b3c680!

RTMP_TimerListAdd: add timer obj d1b3c5f0!

RTMP_TimerListAdd: add timer obj d1b3c560!

RTMP_TimerListAdd: add timer obj d1b3c590!

RTMP_TimerListAdd: add timer obj d1b06b94!

RTMP_TimerListAdd: add timer obj d1af5f54!

RTMP_TimerListAdd: add timer obj d1af5f8c!

RTMP_TimerListAdd: add timer obj d1b06c38!

RTMP_TimerListAdd: add timer obj d1b06b34!

RTMP_TimerListAdd: add timer obj d1b06c04!

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

phy mode> Error! The chip does not support 5G band 5!

RTMPSetPhyMode: channel is out of range, use first channel=1

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

3. Phy Mode = 9

MCS Set = ff 00 00 00 01

<==== rt28xx_init, Status=0

0x1300 = 00064300

启动成功

6.2 设置ip

#ifconfig ra0 192.168.1.230 netmask 255.255.255.0

6.3 扫描无线网络#iwlist ra0 scan===>rt_ioctl_giwscan. 9(9) BSS returned, data->length = 1476

ra0 Scan completed :

Cell 01 - Address: F0:7D:68:96:A6:C2

Protocol:802.11b/g/n

ESSID:"dlinktf"

Mode:Managed

Frequency:2.412 GHz (Channel 1)

Quality=18/100 Signal level=-83 dBm Noise level=-92 dBm

Encryption key:on

Bit Rates:54 Mb/s

Cell 02 - Address: F4:EC:38:55:AF:BC

Protocol:802.11b/g/n

ESSID:"visview"

Mode:Managed

Frequency:2.427 GHz (Channel 4)

Quality=18/100 Signal level=-83 dBm Noise level=-91 dBm

Encryption key:off

Bit Rates:54 Mb/s

显示以上信息说明模块已经正常工作

6.4 设置SSID和WEP加密算法可以参考里面的iwpriv_usage.txt进行配置,

6.4.1 无密码

Config STA to link with AP which is OPEN/NONE(Authentication/Encryption)

1. iwpriv ra0 set NetworkType=Infra

2. iwpriv ra0 set AuthMode=OPEN

3. iwpriv ra0 set EncrypType=NONE

4. iwpriv ra0 set SSID="AP's SSID"

6.4.2 WEP加密算法

iwpriv ra0 set NetworkType=Infra

iwpriv ra0 set AuthMode=SHARED

iwpriv ra0 set EncrypType=WEP

iwpriv ra0 set DefaultKeyID=1

iwpriv ra0 set Key1="AP's wep key"

iwpriv ra0 set SSID="AP's SSID"

设置完一会,等网络连接好就可以了。0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值