参照文档说明,解压rtl8821CS_WiFi_linux_v5.5.1_30884.20181122_COEX20180712-3232.tar.gz,修改MakeFile文件,主要修改目标平台、交叉编译环境和内核路径,如下:
1.去掉默认为PC的目标平台,修改为海思:
2、修改交叉编译环境和内核路径:
修改完后,make,ko就生成了:
需要的话,可以吧debug关掉,现在是开着的:
将驱动拷贝到设备上,加载运行就可以了。
之前使用的是别人编译好的完整的内核和文件系统,换用默认配置的内核后,make出现问题,之前没注意到,还是提示了但是没在意?:
意思就是一堆符号找不到,驱动放板子上insmod出错:
insmod: can't insert 'rtl8192eu.ko': unknown symbol in module, or unknown parameter
重新烧写别人编译好的内核,insmod是OK的,所以应该是内核没配置80211这块东西,重新添加配置编译内核:
/home/work/Hisi/Hi3519AV100_SDK_V2.0.1.0/osdrv/opensource/kernel/linux-4.9.y-smp
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- menuconfig
选择80211配置:
重新生成内核,重新编译驱动:
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- uImage
cd /home/nfsshare/hisi/wifi/RTL8821/driver/rtl8821/
make clean
make
在编译就没用上述warning了,编译正常之后,将内核重新烧写,insmod就正常了。
再后续,烧写之后,insmod正常,但是不会生成wlan0,但是使用原来的uboot、kernel、fs正常,反复对比之后发现是uboot配置问题。弄好之后就可以用wpa工具连接了。
uboot在管脚复用配置更新后,需要重新生成reg文件:
生成reg_info.bin,并将它拷贝到u-boot目录,替换原来的.reg文件,重新编译,这里这个问题就是没有更新导致的。也可以切换到linux生成。