×
单片机 > 单片机程序设计 > 详情

TQ2440上移植RT3070AP过程

发布时间:2020-07-08 发布时间:
|

  硬件:TQ2440,USB RT3070


  编译环境:ubuntu、TQ提供的EABI-4.3.3、网上下载的2010_0203_RT3070_SoftAP_v2.4.0.1_DPA包


  配置好编译环境,解压2010_0203_RT3070_SoftAP_v2.4.0.1_DPA


  移植过程:


  1、修改配置相关文件


  进入2010_0203_RT3070_SoftAP_v2.4.0.1_DPA


  下面有3个文件夹MODULE、NETIF、UTIL


  分别修改3个Makefile文件


  将PLATFORM = SMDK打开,其他注释掉


  然后配置平台,LINUX_SRC是内核的绝对路径


  ifeq ($(PLATFORM),SMDK)


  LINUX_SRC = /opt/EmbedSky/linux-2.6.30.4


  CROSS_COMPILE = arm-linux-


  endif


  另外需要修改的地方


  NETIF/os/linux/usb_main_dev.c中添加MODULE_LICENSE("GPL");


  MODULE/common/rtmp_init.c中的MODULE_LICENSE("RALINK");改为MODULE_LICENSE("GPL");


  2、编译


  用make或者make ARCH=arm KBUILD_NOPEDANTIC=1编译都行


  但是make编译时没有生成rtnet3070ap.ko


  进入NETIF文件夹直接make也可以生成ko文件


  3、拷到开发板上的文件


  上述三个文件夹的os/linux下的ko文件rtutil3070ap.ko、rt3070ap.ko、rtnet3070ap.ko


  再加一个MODULE下的RT2870AP.dat文件


  四个文件copy到u盘,插到开发板上


  4、开发板配置


  在开发板的/etc/Wireless下创建一个文件夹RT2870AP,将RT2870AP.dat放到此文件夹下


  将另外三个ko文件放到/usr下,这个可以自己定义


  5、加载


  按顺序加载


  #insmod rtutil3070ap.ko


  #insmod rt3070ap.ko


  #insmod rtnet3070ap.ko


  如果不允许加载


  用lsmod查看目前存在的模块


  如果有rt5370就卸载再上述顺序加载,TQ开发板默认安装了这个ko文件,卸载命令rmmod rt5370sta.ko


  6、可能遇到问题


  如果上述一切正常


  下面继续


  问题一:


  [root@EmbedSky /usr]# ifconfig ra0 up


  


  


  ERROR!!! RTMPAllocDMAMemory failed, Status[=0x00000003]


  !!! rt28xx Initialized fail !!!


  ifconfig: SIOCSIFFLAGS: Operation not permitted


  解决:


  修改MODULE NETIF UTIL三个目录下的include/os/rt_linux.h中BULKAGGRE_SIZE参数,将100改为60


  问题二:


  [root@EmbedSky /usr]# ifconfig ra0 up


  


  -->RTUSBVenderReset


  


  RtmpOSFileOpen(): Error 2 opening /etc/Wireless/RT2870AP/RT2870AP.dat


  Open file "/etc/Wireless/RT2870AP/RT2870AP.dat" failed!


  1. Phy Mode = 0


  ERROR!!! RTMPReadParametersHook failed, Status[=0x00000001]


  ---> RTMPFreeTxRxRingMemory


  


  !!! rt28xx Initialized fail !!!


  ifconfig: SIOCSIFFLAGS: Operation not permitted


  解决:


  应该是没有创建RT2870AP文件夹,创建好再把RT2870AP.dat烤过去,因为我先移植过RT3070STA,所以以为这个RT2870××.dat是通用的


  7、正常工作


  下面是正常打印


  [root@EmbedSky /]# ifconfig ra0 up


  


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


  2. Phy Mode = 9


  NVM is Efuse and its size =2d[2d0-2fc]


  3. Phy Mode = 9


  MCS Set = ff 00 00 00 01


  SYNC - BBP R4 to 20MHz.l


  SYNC - BBP R4 to 20MHz.l


  SYNC - BBP R4 to 20MHz.l


  SYNC - BBP R4 to 20MHz.l


  SYNC - BBP R4 to 20MHz.l


  SYNC - BBP R4 to 20MHz.l


  SYNC - BBP R4 to 20MHz.l


  SYNC - BBP R4 to 20MHz.l


  Main bssid = 7c:dd:90:56:6d:84


  <==== rt28xx_init, Status=0


  0x1300 = 00064320


  配置IP命令:


  ifconfig ra0 192.168.8.25


  #iwconfig ra0


  ra0 RTWIFI SoftAP ESSID:"RT2860AP" Nickname:""


  Mode:Managed Channel=11 Access Point: 7C:DD:90:56:6D:84


  Bit Rate=150 Mb/s


  用android手里可以查到RT2870AP的wifi信号


  8、关闭模块


  结束后,可以通过以下命令卸载模块:


  #ifconfig ra0 down


  #rmmod rtnet3070ap.ko


  #rmmod rt3070ap.ko


  #rmmod rtutil3070ap.ko


  修改后的源码包可以到下面地址下载,注意内核路径的设置




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机制作超级流水灯