hisi3518ev200移植MT7601

注意:本博客来源于朱老师海思项目开车第五季部分,本博客仅供学习和交流

虚拟机:VMware15.5
系统:Ubuntu18.04
平台:hisi3518ev300

MT7601驱动,包括有station模式和access point模式的:https://pan.baidu.com/s/1i_hPImFTZN-afyHh4f54bQ
提取码:vcge

工作在sta模式

1.解压文件

tar -jxvf DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2

2.修改Makefile
(1)把49行的PLATFORM = SMDK注释掉
(2)在67行添加:PLATFORM = HISI_3518E
(3)继续搜索SMDK,在276行找到,仿照相应的格式,在282空行处添加

ifeq ($(PLATFORM),HISI_3518E)
LINUX_SRC = /home/Hi3518E_SDK_V1.0.3.0/osdrv/opensource/kernel/linux-3.4.y
CROSS_COMPILE = arm-hisiv300-linux-
endif
1.注意修改自己内核源码树路径
2.如果交叉编译工具链没有export出来的话就要添加绝对路径。

3.修改./os/linux/config.mk
(1)搜索一下HAS_WPA_SUPPLICNAT,确认一下

HAS_WPA_SUPPLICANT=y
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y

(2)搜索SMDK,然后仿照格式在其下面添加

ifeq ($(PLATFORM),HISI_3518E)
        EXTRA_CFLAGS := $(WFLAGS)
endif

4.修改ko文件的输出路径,如果不改则在当前目录
(1)打开Makefile
(2)修改439行

cp -f $(RT28xx_DIR)/os/linux/mt$(MODULE)sta.ko /自己修改的输出路径 2>/dev/nul    l || :

5.直接make
发现报错

make[1]: 进入目录“/home/Hi3518E_SDK_V1.0.3.0/osdrv/opensource/kernel/linux-3.4.y”
  CC [M]  /home/MT7601_driver/sta/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/../../os/linux/rt_profile.o
arm-hisiv300-linux-gcc: 错误: unrecognized command line option ‘-m64’
arm-hisiv300-linux-gcc: 错误: unrecognized command line option ‘-mno-red-zone’
arm-hisiv300-linux-gcc: 错误: unrecognized command line option ‘-mcmodel=kernel’
arm-hisiv300-linux-gcc: 错误: unrecognized command line option ‘-maccumulate-outgoing-args’

解决:
修改主目录的Makefile,
在406行,把FREESCALEE8377改成HISI_3518E
在407行,改成ARCH=arm,其他不改

6.make

  LD [M]  /home/MT7601_driver/sta/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/mt7601Usta.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /home/MT7601_driver/sta/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/mt7601Usta.mod.o
  LD [M]  /home/MT7601_driver/sta/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/mt7601Usta.ko
make[1]: 离开目录“/home/Hi3518E_SDK_V1.0.3.0/osdrv/opensource/kernel/linux-3.4.y”
cp -f /home/MT7601_driver/sta/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/mt7601Usta.ko /home/nfs_server 2>/dev/null || :
root@czp-PC:/home/MT7601_driver/sta/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913# 

我把导出的目录修改为/home/nfs_server,所以我的ko文件导出在/home/nfs_server目录里面

root@czp-PC:/home/nfs_server# ls -l mt7601Usta.ko 
-rw-r--r-- 1 root root 909244 1024 15:38 mt7601Usta.ko

7.确认
确认模块的vermagic信息 。版本是3.4.35的

root@czp-PC:/home/nfs_server# modinfo mt7601Usta.ko 
filename:       /home/nfs_server/mt7601Usta.ko
version:        3.0.0.3
description:    RT2870 Wireless Lan Linux Driver
author:         Paul Lin <paul_lin@ralinktech.com>
license:        GPL
srcversion:     B2632BD2D7AD40A63B72D9E
alias:          usb:v148Fp760Bd*dc*dsc*dp*ic*isc*ip*
alias:          usb:v148Fp7601d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v148Fp6370d*dc*dsc*dp*ic*isc*ip*
alias:          usb:v148Fp7650d*dc*dsc*dp*ic*isc*ip*
depends:        
vermagic:       3.4.35 mod_unload ARMv5 p2v8 
parm:           mac:rt28xx: wireless mac addr (charp)

8.改名字
现在insmod装载驱动得到的网卡是ra0,可以通过修改驱动来改名
进入vim include/rtmp_def.h
搜索ra,都改成wlan即可。
最后回到根目录ls重新make一次获得新的ko文件

9.复制RT2870STA.dat
在开发板上新建路径/etc/Wireless/RT2870STA,把RT2870STA.dat复制到这个文件夹里面

cp RT2870STA.dat  /etc/Wireless/RT2870STA/RT2870STA.dat

其实大部分的步骤在文件夹的README_STA_usb中是有提及到的,可以一边参考这里的步骤一边对照README_STA_usb进行操作。

工作在ap模式

1.解压后进入主目录的Makefile
(1)把PLATFORM=pc注释掉,在后面新增PLATFORM=HISI_3518E
(2)搜SMDK,在270行,以它的格式为蓝本,然后在下面复制一份进行修改,

ifeq ($(PLATFORM),HISI_3518E)
LINUX_SRC = /home/Hi3518E_SDK_V1.0.3.0/osdrv/opensource/kernel/linux-3.4.y
CROSS_COMPILE = arm-hisiv300-linux-
export ARCH=arm
endif

(3)到399行,把FREESCALE8377改成 HISI_3518E,ARCH=arm
2.make
报错

  CC [M]  /home/MT7601_driver/ap/MT7601U_LinuxAP_3.0.0.1_20130802/os/linux/../../os/linux/rt_profile.o
/home/MT7601_driver/ap/MT7601U_LinuxAP_3.0.0.1_20130802/os/linux/../../os/linux/rt_profile.c:26:23: 致命错误: rt_config.h:没有那个文件或目录

解决
进入os/linux目录下,打开config.mk文件
搜索SMDK,仿照它的格式,在其下面添加

ifeq ($(PLATFORM),HISI_3518E)
        EXTRA_CFLAGS := $(WFLAGS)
endif

3.make
最终获得的ko文件在os/linux下,也可以参照上面的方式修改makefile,从而修改ko文件的输出路径

4.修改RT2870AP.dat
在开发板上新建路径/etc/Wireless/RT2870AP,把RT2870AP.dat复制到这个文件夹里面
修改项目

SSID=MT7601AP_WPA(这里的名字是在pc机上看到的连接ssid名)
AuthMode=WPA2PSK(加密方式)
EncrypType=TKIP;AES
WPAPSK=1234567890(这个是密码)

5.insmod

/mnt # insmod mt7601Uap.ko
rtusb init rt2870 --->


=== pAd = c2f14000, size = 866712 ===

<-- RTMPAllocTxRxRingMemory, Status=0
<-- RTMPAllocAdapterBlock, Status=0
RTMP_COM_IoctlHandle():pAd->BulkOutEpAddr=0x8
RTMP_COM_IoctlHandle():pAd->BulkOutEpAddr=0x4
RTMP_COM_IoctlHandle():pAd->BulkOutEpAddr=0x5
RTMP_COM_IoctlHandle():pAd->BulkOutEpAddr=0x6
RTMP_COM_IoctlHandle():pAd->BulkOutEpAddr=0x7
RTMP_COM_IoctlHandle():pAd->BulkOutEpAddr=0x9
NVM is EFUSE
Endpoint(8) is for In-band Command
Endpoint(4) is for WMM0 AC0
Endpoint(5) is for WMM0 AC1
Endpoint(6) is for WMM0 AC2
Endpoint(7) is for WMM0 AC3
Endpoint(9) is for WMM1 AC0
Endpoint(84) is for Data-In
Endpoint(85) is for Command Rsp
usbcore: registered new interface driver rt2870

6.设置ip

/mnt # ifconfig ra0 192.168.3.123
FW Version:0.1.00 Build:7640
Build Time:201302052146____
ILM Length = 45380(bytes)
DLM Length = 0(bytes)
Loading FW....
#
RTMP_TimerListAdd: add timer obj c2fa2cd4!
RTMP_TimerListAdd: add timer obj c2f17f70!
RTMP_TimerListAdd: add timer obj c2f17b5c!
RTMP_TimerListAdd: add timer obj c2f17f3c!
…………(省略一些,太长了,调试信息)
cfg_mode=9
cfg_mode=9
wmode_band_equal(): Band Equal!
APSDCapable[0]=0
APSDCapable[1]=0
…………(省略一些,太长了,调试信息)
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 = 14
2. Phy Mode = 14
NVM is Efuse and its size =1d[1e0-1fc]
ERROR!!! MT7601 E2PROM: WRONG VERSION 0xd, should be 12
3. Phy Mode = 14
AntCfgInit: primary/secondary ant 0/1
MCS Set = ff 00 00 00 01
Main bssid = 00:e0:2d:4a:41:7c
<==== rt28xx_init, Status=0
0x1300 = 00064320
RTMPDrvOpen(1):Check if PDMA is idle!
RTMPDrvOpen(2):Check if PDMA is idle!

7.用手机搜一下网络
根据第四步设置的ssid名字和psk
在这里插入图片描述
8.设置pc机的ip地址
在这里插入图片描述
ping测试
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值