@syk1324
SDK根目录下执行make menuconfig
然后把PACKAGE_kmod-cfg80211
选上即可。
原因是wpa_supplicant和内核的通信是通过netlink,是用户态协议,然后你没在openwrt的配置中选中,所以会无法使用。选上后即可。
@syk1324
SDK根目录下执行make menuconfig
然后把PACKAGE_kmod-cfg80211
选上即可。
原因是wpa_supplicant和内核的通信是通过netlink,是用户态协议,然后你没在openwrt的配置中选中,所以会无法使用。选上后即可。
内核配置里面有一个配置开起来:
CONFIG_SUNXI_ADDR_MGT
同时设备树也需要加点东西,&soc节点里面加:
addr_mgt: addr_mgt@0 {
compatible = "allwinner,sunxi-addr_mgt";
type_addr_wifi = <0x0>;
type_addr_bt = <0x0>;
type_addr_eth = <0x0>;
status = "okay";
};
2024年年中的时候画了一块T113的开发板,采用了核心板和可替换底板设计,为了学习WiFi相关内容,选了RTL8188FTV作为WiFi模块(网上最便宜的,不过大家适配比较少,所以坑很多),花了一点时间将这部分移植成功了,做出如下记录以供参考。
我们的目的是适配一款新的WiFi模块,所以一开始系统什么的需要先准备好,不在本文探讨的范畴。需要做出如下准备:
在Tina4.0中可以将wif模块的驱动放在linux-5.4/drivers/staging
或者是linux-5.4/drivers/net/wireless
,我选择放在staging中,尽量不要去修改原生的目录,包括Tina5.0就开始使用bsp目录,专门管理全志特性的东西,尽量不修改到Linux原生的目录,后续编译的时候通过链接的方式整合到一起。
好了,话说回来,现在需要在staging中新建对应目录,并将驱动解压进去。
解压后的rtl8188ftv目录如下:
然后接下来需要让Linux能够识别到,需要做两项修改,一个是Kconfig,另一个是Makefile,修改这两处目的如下:
可以查看一下rtl8188ftv中的Kconfig的内容,如下:
然后需要到staging进行修改Kconfig,让其包括rtl8188ftv下的Kconfig,如下:
这样就可以在Linux下的menuconfig中找到这个驱动文件的配置。
接下来修改staging的Makefile,使Linux可以找到rtl8188ftv下的Makefile,如下:
还记得最开始看的rtl8188ftv下的Kconfig嘛,就是里面有一个对应开启的宏,在Makefile中添加上前缀CONFIG,就作为Makefile的参数,所以当Kconfig的配置被选中后,CONFIG_RTL8188FU就有对应的变化,就会识别到rtl8188ftv的路径。
现在执行m kernel_menuconfig
就可以找到对应的设置,如下:
现在需要对驱动,也就是rtl8188ftv的Makefile进行修改,主要修改这几项:
这是原来的:
修改为:
这里面的几个参数分别是:
上面配置后就可以开始尝试编译,可以看到正在正常编译:
距离成功有进一步了!!but,马上出问题了:
这个问题好解,参考网上可以看到只要修改成linux下的sys_config.h即可,但是然而内核中也没有对应文件,我查了一下这个头文件主要是提供一个用于读取配置的操作,再看看drivers/staging/rtl8188ftv/platform/platform_ARM_SUNxI_usb.c
内容,会发现这个其实是和模块上下电有关的,不过我现在是常供电,所以完全没必要。
其实即使解决了这个问题,还会报一些缺少sw_usb_enable_hcd、sw_usb_disable_hcd、script_parser_fetch等的问题。我这边直接给出我的解决办法--取消编译且在初始化源码中注释上下电操作!
取消编译
注释相关代码
随后即可编译通过!!
但是仔细看看log或是拿到板子上去跑一下就会发现报一个错,就是log中提到的:
这个是由于内核命名空间未导入的原因,如下修改:
理论上到此就可以直接结束了,把ko文件拿到板子上insmod即可,但是这是在Tina呢,需要再修改一下openwert,让系统自动加到rootfs中。
修改一下对应的mk文件,在通过软件包的形式将驱动安装到rootfs中。首先修改wireless.mk文件将对应ko文件写一个软件包,路径是/home/book/T113/tina/package/kernel/linux/modules/wireless.mk
,如下:
然后再执行m menuconfig,找到rtl8188ftv相关选项,然后选上即可。
这样就会自动加载rootfs中了。
烧写新编译的固件,然后在/lib/modules/5.4.61
下可以看到对应驱动
使用insmod命令就可以将驱动加载了,如下:
此时,ifconfig -a
大概率是可以看到wlan0的,随后的操作自由发挥吧。
整个移植过程还算顺利,当然也有查看一些大佬写的文章,我只是学到了然后也分享出来,以后大家有遇到可以进行参考,同时也给自己做一个笔记。
至此,分享结束,谢谢大家!!73