RT5572 5G网卡移植到友善之臂4412 嵌入式arm+linux

核心板:友善之臂4412

平台:嵌入式ARM+linux-3.5

网卡:2.4G/5G双频RT5572网卡

模式:adhoc

一:驱动之家或者Github上获取RT5572的linux驱动包,修改makefile文件,修改编译平台PLATFORM = SMDK,修改内核路径为自己板子上所运行的内核( 我的是Linux_src = /usr/src/linux-3.5),修改编译工具为arm-linux-(需要先安装arm-linux-gcc交叉编译工具),

二:根据readme修改源码,在os / linux / config.mk文件中,修改使得 HAS_WPA_SUPPLICANT=y,               HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y

三:在虚拟机中执行make编译命令,生成rt5572sta.ko驱动模块,将其烧写到4412核心板上,执行insmod挂载ko模块,出现错误:rt5572sta: module license 'unspecified'taints kernel.

上网查找原因,需要在驱动源码的 rt5592.c 中添加MODULE_LICENSE("GPL");

再执行make命令

四:insmod加载时继续出现错误:

<-- RTMPAllocTxRxRingMemory, Status=3

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

ifconfig: SIOCSIFFLAGS: Operation not permitted

网上查找方法,修改include / os / rt_linux.hBULKAGGRE_SIZE 和 include / iface /rtmp_usb.h里的RXBULKAGGRE_SIZE改小即可解决错误,我这样修改之后可以解决insmod时的错误,网卡也能用起来,2.4G频段时没问题的,5G频段时,adhoc模式下,在两网卡距离小的时候视频正常传输,距离拉大传输断开,距离再减小,这时就会卡死,不能重新建立连接进行传输,问题找了好久

:在出现四中的错误后,修改两个size可以临时避开insmod的问题,但是在后续使用过程中产生了问题,所以还是要从根源入手解决它,询问了好多工程师,最后定位到,应该是内核配置的dma缓冲区太小,需要改内核配置,修改内核中的arch/arm/mm/dma-mapping.c中,奖256k改为2M,重新编译内核(需要一两个小时),重新烧录内核,这样5G频段下的问题就解决了。




你可能感兴趣的:(RT5572 5G网卡移植到友善之臂4412 嵌入式arm+linux)