/**************************************************************************************************/
步驟 1 (USB PHY被禁用)
/**************************************************************************************************/
熱插拔usb無反應(沒有打印一下信息):
# usb 1-1: new high speed USB device number 3 using hiusb-ehci
1、查看你是否加載了hi3518e的驅動。
2、查看hi3518e的驅動腳本
insert_ko()
{
# low power control
source ./lowpower.sh > /dev/null
。。。。
3、查看是否是驅動腳本中的lowpower.sh,禁止了熱插拔。
#!/bin/sh
#....USB PHY..........0x20050080 [12]bit......0
himm 0x20050080 0x000121a8
#....USB PHY............0x20050084 [22]bit......1
himm 0x20050084 0x005d2188
#....NANDC..0x200300D0 [1:0]......2'b01
himm 0x200300D0 0x5
。。。
4、果然禁用了USB
PHY,這裏我們只需要註釋掉,做如下更改:
#....USB PHY..........0x20050080 [12]bit......0
#himm 0x20050080 0x000121a8
#....USB PHY............0x20050084 [22]bit......1
#himm 0x20050084 0x005d2188
#....NANDC..0x200300D0 [1:0]......2'b01
himm 0x200300D0 0x5
。。。
/**************************************************************************************************/
步驟 2 (內核配置)
/**************************************************************************************************/
複製hi3518e的配置文件到.config
#cp arch/arm/configs/hi3518e_mini_defconfig ./.config
配置內核參數
#make menuconfig
[*] Networking support --->
-*- Wireless --->
<*> cfg80211 - wireless configuration API
[*] enable powersave by default
[*] cfg80211 wireless extensions compatibility
[*] Wireless extensions sysfs files
<*> Common routines for IEEE802.11 drivers
<*> Generic IEEE 802.11 Networking Stack (mac80211)
[ ] PID controller based rate control algorithm
[*] Minstrel
[*] Minstrel 802.11n support
Default rate control algorithm (Minstrel) --->
[ ] Select mac80211 debugging features --->
Device Drivers --->
[*] Network device support --->
[*] Wireless LAN --->
<*> USB ZD1201 based Wireless device support
[*] USB support --->
-*- Support for Host-si
[*]hiusb(ehci/ohci) family usb host device support --->
<*> EHCI HCD (USB 2.0) support
[*] Root Hub Transaction Translators
<*> OHCI HCD support
#make uImage
/**************************************************************************************************/
步驟 3 (編譯RT3070驅動)
/**************************************************************************************************/
1、修改Makfile,如下:
ifeq ($(TARGET),)
TARGET = LINUX / /目標平臺
endif
ifeq ($(CHIPSET),)
CHIPSET = 3070 //使用芯片
endif
.....
#PLATFORM = PC
PLATFORM = 5VT //選擇平臺
....
ifeq ($(PLATFORM),5VT)
LINUX_SRC = /root/hi3518/linux-3.0.y //剛剛編譯好的內核的目錄(一定要編譯好內核才行)
CROSS_COMPILE = arm-hisiv100nptl-linux- //HI編譯工具鏈
#LINUX_SRC = /home/ralink-2860-sdk-5vt-distribution/linux-2.6.17
#CROSS_COMPILE = /opt/crosstool/uClibc_v5te_le_gcc_4_1_1/bin/arm-linux-
endif
....
2、修改os/linux/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
搜索5VT
ifeq ($(PLATFORM),5VT)
#WFLAGS += -DCONFIG_5VT_ENHANCE //屏蔽flags參數,hi3518e引腳是3.3v
endif
。。。
ifeq ($(PLATFORM),5VT)
#CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -mlittle-endian -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -O3 -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-omit-frame-pointer -mapcs -mno-sched-prolog -mabi=apcs-gnu -mno-thumb-interwork -D__LINUX_ARM_ARCH__=5 -march=armv5te -mtune=arm926ej-s --param max-inline-insns-single=40000 -Uarm -Wdeclaration-after-statement -Wno-pointer-sign -DMODULE $(WFLAGS)
EXTRA_CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -mlittle-endian -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -O3 -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-omit-frame-pointer -mapcs -mno-sched-prolog -mno-thumb-interwork -D__LINUX_ARM_ARCH__=5 -march=armv5te -mtune=arm926ej-s --param max-inline-insns-single=40000 -Uarm -Wdeclaration-after-statement -DMODULE $(WFLAGS) //參數和cflags一樣,但是要去掉 -mabi=apcs-gnu和 -Wno-pointer-sign 兩個參數
#export CFLAGS
export EXTRA_CFLAGS //將cflags 修改爲 extra_cflags, 不然編譯不通過。
3、修改 ./chips/rtmp_chip.c 文件,如下:
...
#ifdef RT30xx
if (IS_RT30xx(pAd))
{
/*
if (IS_RT3390(pAd))
RT33xx_Init(pAd);
else
*/
RT30xx_Init(pAd);
}
#endif /* RT30xx */
...
4、修改./include/iface/rtmp_usb.h文件,如下:
...
//#define RXBULKAGGRE_SIZE 12
#define RXBULKAGGRE_SIZE 6
...
5、編譯
6、生成os/linux/rt3070sta.ko
7、複製運行配置文件(可自己修改配置),到板端文件系統
#cp RT2870STA.dat /etc/Wireless/RT2870STA/RT2870STA.dat
8、加載驅動
#insmod rt3070sta.ko
rtusb init rt2870 --->
=== pAd = c2a78000, size = 509944 ===
<-- RTMPAllocTxRxRingMemory, Status=0
<-- RTMPAllocAdapterBlock, Status=0
usbcore: registered new interface driver rt2870
注:
1、請嚴格按照步驟進行,因爲兩步之間相互有影響。
2、如果重新編譯內核後,驅動不可用,可以嘗試重新編譯驅動。
3、郵箱網卡不可用,可修改內核,如下:
Device Drivers --->
[*] Network device support --->
[*] Ethernet (10 or 100Mbit) --->
<*> hieth(switch fabric) family network device support --->
(1) hieth mii/rmii mode for up port (mii:0/rmii:1)
(1) hieth mii/rmii mode for down port (mii:0/rmii:1)