pcDuino 上RT3070 SoftAP:修改在Linux 3.18.0 内核上的编译错误

RT3070 SoftAP:修改在Linux 3.18.0 内核上的编译错误

http://bbs.eetop.cn/thread-478234-1-1.html

http://blog.sina.com.cn/s/blog_6e5e78bf0100vk2f.htm

l
http://www.geek-workshop.com/thread-5040-1-1.html


http://blog.sina.com.cn/s/blog_c612638e0101jrm7.html
RT3070 SoftAP
1. Rt_linux.c编译时报错
/workspace/git/2010_0203_RT3070_SoftAP_v2.4.0.1_DPA/UTIL/os/linux/../../os/linux/rt_linux.c: In function 'RtmpOSFSInfoChange':
/workspace/git/2010_0203_RT3070_SoftAP_v2.4.0.1_DPA/UTIL/os/linux/../../os/linux/rt_linux.c:991:20:error: incompatible types when assigning to type 'int' from type 'kuid_t'
   pOSFSInfo->fsuid = current_fsuid();
                    ^
/workspace/git/2010_0203_RT3070_SoftAP_v2.4.0.1_DPA/UTIL/os/linux/../../os/linux/rt_linux.c:992:20: error: incompatible types when assigning to type 'int' from type 'kgid_t'
   pOSFSInfo->fsgid = current_fsgid();  
                    ^
修改=============
Rt_linux.c
diff: line 991
-        pOSFSInfo->fsuid = current_fsuid();
+        pOSFSInfo->fsuid = current_fsuid().val;
diff: line 992
-        pOSFSInfo->fsgid = current_fsgid().val;
+        pOSFSInfo->fsgid = current_fsgid().val;        

2. 继续报错: GPL-incompatible module rt3070ap.ko uses GPL-only symbol '__rcu_read_unlock' 
修改=============
Rtmp_init.c 
diff: line 5242
-MODULE_LICENSE("RALINK");
+MODULE_LICENSE("GPL");

History:2011-10-25
Author:yr
雷凌系列网卡驱动移植后的调试工作记录:
为了支持多块wifi网卡同时在板子上启动,需要修改驱动源代码的参数。
假设板子上有3块网卡,都作为AP端使用,加载移植好的驱动后,分别驱动出ra0,ra1,ra2三个接口。
ifconfig ra0 up 成功,ifconfig ra1 up 时 提示:
<-- ERROR in Alloc TX TxContext[3] HTTX_BUFFER!! 
                                                         
<-- RTMPAllocTxRxRingMemory,Status=3                                                                                   
ERROR!!! RTMPAllocDMAMemory failed,Status[=0x00000003]                                               
!!! rt28xx Initialized fail!!!                                                                                               
ifconfig: SIOCSIFFLAGS: Operation notpermitted 

修改MODULE NETIFUTIL三个目录下的include/os/rt_linux.h中BULKAGGRE_SIZE参数,将100改为60,可以成功启动ra0和 ra1 但是ra2启动失败。继续减小这一参数值,到30后,三快都可以启动成功。
ifconfig rax up时若提示BIRIdx(0): RXDMALen not multiple of 4.[38539],BulkInBufLen = 172,说明DMA空间不够下一块网卡加载了,需要继续减小,但是应该会影响性能。

////////////////////////////////下面内容转载自一技术帖回复///////////////////////////////////
该网卡驱动需要使用DMA内存,而且还挺大(没记错的话有200k左右),出错的原因是驱动申请DMA内存失败。 
解决办法: 
1. 先确定系统可用于DMA的内存有多大,其他驱动是否用得差不多了。 
2. 如果不能修改系统DMA内存大小,那么 
3. 修改rt2870驱动rtmp_usb.h将BULKAGGRE_ZISE宏改小一些,比如(60)

在网上看到的。
http://www.61ic.com/code/redirect.php?fid=170&tid=18751&goto=nextoldset
http://blog.csdn.net/bbandxq521/archive/2010/11/09/5997419.aspx

如果再次出现一些error的话:
[99] RtmpOSFileOpen(): Error 2 opening/etc/Wireless/RT2870STA/RT2870STA.dat
[99] Open file "/etc/Wireless/RT2870STA/RT2870STA.dat"failed!
[99] 1. Phy Mode = 0
[99] ERROR!!! NICReadRegParameters failed,Status[=0x00000001]
[99] usb 1-1: RtmpTimerTask timed out on ep0in len=4/4
[99] usb 1-1: wpa_supplicant timed out on ep0in len=4/4
[99] ---> RTMPFreeTxRxRingMemory
[99] <--- RTMPFreeTxRxRingMemory
[99] !!! rt28xx Initialized fail !!!
[99] rt28xx_open return fail!
如果是PC机,请参考驱动包里的sta_ate_iwpriv_usage.txt文件。里面有这样的英文:
=======================================================================
CONFIGURATION:  
====================
RT2870 driver can be configured via followinginterfaces, 
i.e. (i)"iwconfig" command, (ii)"iwpriv" command, (iii)configuration file

i) iwconfig comes with kernel.  
ii) iwpriv usage, please refer to file "iwpriv_usage.txt" fordetails.
iii)modify configuration file "RT2870STA.dat" in/etc/Wireless/RT2870STA/RT2870STA.dat.
   
Configuration File : RT2870STA.dat
---------------------------------------
# Copy this file to /etc/Wireless/RT2870STA/RT2870STA.dat
# This file is a binary file and will be read on loading rt.omodule.
#
# Use "vi RT2870STA.dat" to modify settings according to yourneed.

# 1.) set NetworkType to "Adhoc" for using Adhoc-mode, otherwiseusing Infrastructure
# 2.) set Channel to "0" for auto-select on Infrastructuremode
# 3.) set SSID for connecting to your Accss-point.
# 4.) AuthMode can be "WEPAUTO", "OPEN", "SHARED", "WPAPSK","WPA2PSK", "WPANONE"
# 5.) EncrypType can be "NONE", "WEP", "TKIP", "AES"
# for more information refer to the Readme file.


因为我是做嵌入式的,为了省事,就将RT2870STA.dat直接固话到嵌入式设备里。然后修改路径就OK了。路径在/include/os/rt_linux.h里。

你可能感兴趣的:(pcDuino 上RT3070 SoftAP:修改在Linux 3.18.0 内核上的编译错误)