rt3070—ap的移植

1,修改MODULE, NETIF, UTIL目录下的Makefile,

      -PLATFORM = PC

      +PLATFORM = IXP

      LINUX_SRC =改成自己的内核目录

      CROSS_COMPILE =改成开发板的交叉工具

2,修改MODULE, NETIF, UTIL的os/linux/下的config.mk

     ifeq ($(PLATFORM),IXP)
      -WFLAGS += -DRT_BIG_ENDIAN
      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
   + export CFLAGS        
endif

3,修改NETIF/os/linux/目录下的usb_main_dev.c
              MODULE_LICENSE("GPL");//在文件前面添上这句申明

      修改MODULE/common/rtmp_init.c
             #ifdef RTMP_MAC_USB
              - MODULE_LICENSE("RALINK");//删除这个申明
               + MODULE_LICENSE("GPL");//添加GPL申明
             #endif // RTMP_MAC_USB  

4,在2.6.35和之后的内核中 usb_buffer_alloc 和  usb_buffer_free这两个函数已不在使用了,可以用usb_alloc_coherent 和
         usb_free_coherent代替。编译的时候有错误的,按照错误进行替换就可以了

5,make ARCH=arm 进行编译

6,#mkdir /etc/Wireless/         创建一个文件夹,这个是雷凌默认启动路径, 也可以在头文件进行修改,把路径修改成自己想要的路径
     #mkdir /etc/Wireless/RT2870AP/  再创建一个目录,也是雷凌默认启动路径

    #cp   /mnt/rt2870ap.dat /etc/Wireless/RT2870AP/RT2870AP.dat拷贝配置文件到默认路径
     #cp /mnt/rtutil3070ap.ko /home/root 

    #cp  /mnt/rt3070ap.ko /home/root  拷贝三个文件到开发板一个目录。
    #cp /mnt/rtnet3070ap.ko /home/root

    当装载rtnet3070ap.ko的时候出现以下的崩溃:

        # insmod rtnet3070ap.ko
rtusb init --->


=== pAd = c6f8c000, size = 417992 ===

<-- RTMPAllocAdapterBlock, Status=0
------------[ cut here ]------------
WARNING: at include/linux/netdevice.h:1557 RtmpPhyNetDevInit+0xa8/0xfc [rtnet3070ap]()
Modules linked in: rtnet3070ap(+) rt3070ap rtutil3070ap osa_kermod at88sc ti_gpio syslink
Backtrace:
[<c004bf70>] (dump_backtrace+0x0/0x110) from [<c0361d30>] (dump_stack+0x18/0x1c)
 r6:bf199edc r5:00000615 r4:00000000 r3:60000013
[<c0361d18>] (dump_stack+0x0/0x1c) from [<c0070864>] (warn_slowpath_common+0x54/0x6c)
[<c0070810>] (warn_slowpath_common+0x0/0x6c) from [<c00708a0>] (warn_slowpath_null+0x24/0x2c)
 r8:c4711e00 r7:c4673c00 r6:c2484c00 r5:c6f8c000 r4:c254fd20
r3:00000009
[<c007087c>] (warn_slowpath_null+0x0/0x2c) from [<bf197994>] (RtmpPhyNetDevInit+0xa8/0xfc [rtnet3070ap])
[<bf1978ec>] (RtmpPhyNetDevInit+0x0/0xfc [rtnet3070ap]) from [<bf1993d4>] (rtusb_probe+0x21c/0x2dc [rtnet3070ap])
 r6:c47181c8 r5:00000134 r4:c6f8c000
[<bf1991b8>] (rtusb_probe+0x0/0x2dc [rtnet3070ap]) from [<c02320ec>] (usb_probe_interface+0x124/0x1a8)
[<c0231fc8>] (usb_probe_interface+0x0/0x1a8) from [<c01d3bd4>] (driver_probe_device+0xd0/0x18c)
[<c01d3b04>] (driver_probe_device+0x0/0x18c) from [<c01d3cf8>] (__driver_attach+0x68/0x8c)
 r7:00000000 r6:bf19ad28 r5:c4711e54 r4:c4711e20
[<c01d3c90>] (__driver_attach+0x0/0x8c) from [<c01d2d6c>] (bus_for_each_dev+0x58/0x88)
 r6:c01d3c90 r5:c254fe00 r4:bf19ad28 r3:c44aa3b4
[<c01d2d14>] (bus_for_each_dev+0x0/0x88) from [<c01d386c>] (driver_attach+0x20/0x28)
 r7:00000000 r6:c04c3b70 r5:c2444200 r4:bf19ad28
[<c01d384c>] (driver_attach+0x0/0x28) from [<c01d3470>] (bus_add_driver+0xb4/0x230)
[<c01d33bc>] (bus_add_driver+0x0/0x230) from [<c01d3f54>] (driver_register+0xb0/0x134)
[<c01d3ea4>] (driver_register+0x0/0x134) from [<c023105c>] (usb_register_driver+0x6c/0x130)
[<c0230ff0>] (usb_register_driver+0x0/0x130) from [<bf19e024>] (init_module+0x24/0x38 [rtnet3070ap])
 r7:bf19e000 r6:00000001 r5:00000000 r4:bf19ad64
[<bf19e000>] (init_module+0x0/0x38 [rtnet3070ap]) from [<c003e4f8>] (do_one_initcall+0xbc/0x190)
[<c003e43c>] (do_one_initcall+0x0/0x190) from [<c009b358>] (sys_init_module+0x1668/0x1830)
 r8:00000001 r7:c2459340 r6:00000001 r5:00000000 r4:bf19ad64
[<c0099cf0>] (sys_init_module+0x0/0x1830) from [<c00483c0>] (ret_fast_syscall+0x0/0x30)
---[ end trace 09b9d30b57341122 ]---
netif_stop_queue() cannot be called before register_netdev()
usbcore: registered new interface driver rt2870

这个原因主要是netif_stop_queue() cannot be called before register_netdev()这个引起的,

修改的地方:./NETIF/os/linux/rt_main_dev.c文件里面的RtmpPhyNetDevInit函数里面的netif_stop_queue(net_dev);

  不应该在register_netdev()这个之前调用。将这个netif_stop_queue(net_dev);删除并移动到./UTIL/os/linux/rt_linux.c的if (rtnl_locked)
        ret = register_netdevice(pNetDev);
    else
        ret = register_netdev(pNetDev);

的后面netif_stop_queue(pNetDev);

  这样问题就解决了。


7,按照上面cp的顺序进行insmod驱动,ifconfig -a可以看到有网卡名了,然后配置ip

8,配置udhcpd.conf(这个文件可以在busybox的example里面找)

    

start 192.168.1.20 #default: 192.168.0.20

end 192.168.1.254  #default: 192.168.0.254

interface wlan0 #default: eth0

#Examles

opt dns 192.168.1.1 192.168.1.10

option subnet 255.255.255.0

opt router 192.168.1.1

opt wins192.168.1.10

#option 129.219.13.81 # appened to above DNS servers for a total of 3

option dns 192.168.1.1

option domain local

option lease 864000 # 10 days of seconds


9,udhcpd   ./udhcpd.conf

10,直接用手机或者电脑就可以直接连接上了,ping下

note: 修改网卡名

修改ralink的wifi的驱动,更名ra0为wlan0

include\rtmp_def.h

#define INF_MAIN_DEV_NAME "wlan"

#define INF_MBSSID_DEV_NAME "wlan"



11,默认rt3070ap路由是没有密码的

     这时候需要修改配置成WPA2的加密方式,需要把RT2870AP.dat修改以下几个地方:
     SSID=RT2860AP_WPA(这里的名字是在pc机上看到的连接ssid名)
     AuthMode=WPA2PSK(加密方式
     EncrypType=TKIP;AES
     WPAPSK=loongson1234(这个是密码)

12,卸载的顺序

#ifconfig ra0 down

#rmmod rtnet3070ap.ko

#rmmod rt3070ap.ko

#rmmod rtutil3070ap.ko
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值