零、概述
2024年年中的时候画了一块T113的开发板,采用了核心板和可替换底板设计,为了学习WiFi相关内容,选了RTL8188FTV作为WiFi模块(网上最便宜的,不过大家适配比较少,所以坑很多),花了一段时间将这部分移植成功了,做出如下记录以供参考。
驱动链接在此:点击即可
一、前期准备
我们的目的是适配一款新的WiFi模块,所以一开始系统什么的需要先准备好,不在本文探讨的范畴。需要做出如下准备:
- RTL8188FTV模块(USB款)
- 运行Linux的开发板(虽然我是在Tina上完成的,但是原理通用于Linux),我使用的芯片是T113
- 虚拟机Tina4.0开发环境
- 对应版本的RTL8188FTV驱动(这个是最难搞到的部分,因为RTL8188FTV的驱动不好找,我随后会发出)
二、移植过程
1.内核中加入rtl8188ftv驱动
(1).添加驱动到内核中
在Tina4.0中可以将wif模块的驱动放在linux-5.4/drivers/staging
或者是linux-5.4/drivers/net/wireless
,我选择放在staging中,尽量不要去修改原生的目录,包括Tina5.0就开始使用bsp目录,专门管理全志特性的东西,尽量不修改到Linux原生的目录,后续编译的时候通过链接的方式整合到一起。
好了,话说回来,现在需要在staging中新建对应目录,并将驱动解压进去。
解压后的rtl8188ftv目录如下:
然后接下来需要让Linux能够识别到,需要做两项修改,一个是Kconfig,另一个是Makefile,修改这两处目的如下:
- Kconfig:可以让make kernel_menuconfig的时候识别到。
- Makefile:可以让Linux编译到驱动代码。
(2).修改Kconfig
可以查看一下rtl8188ftv中的Kconfig的内容,如下:
然后需要到staging进行修改Kconfig,让其包括rtl8188ftv下的Kconfig,如下:
这样就可以在Linux下的menuconfig中找到这个驱动文件的配置。
(3).修改Makefile
接下来修改staging的Makefile,使Linux可以找到rtl8188ftv下的Makefile,如下:
还记得最开始看的rtl8188ftv下的Kconfig嘛,就是里面有一个对应开启的宏,在Makefile中添加上前缀CONFIG,就作为Makefile的参数,所以当Kconfig的配置被选中后,CONFIG_RTL8188FU就有对应的变化,就会识别到rtl8188ftv的路径。
现在执行m kernel_menuconfig
就可以找到对应的设置,如下:
2.修改驱动配置
现在需要对驱动,也就是rtl8188ftv的Makefile进行修改,主要修改这几项:
-
修改WIFI IC,也就是型号,这边如下:
-
修改Interface,因为是USB模块,所以选到USB即可,如下:
-
修改Platform Related,我使用的是T133,所以选择ARM_SUNxI,如下:
-
修改对应编译链和编译目录,如下:
这是原来的:
修改为:
这里面的几个参数分别是:
- CROSS_COMPILE:就是Tina编译链位置
- KVER:Linux的版本
- KSRC:Linux源码的路径
3.解决编译错误问题
上面配置后就可以开始尝试编译,可以看到正在正常编译:
距离成功有进一步了!!but,马上出问题了:
- fatal error: mach/sys_config.h: No such file or directory
这个问题好解,参考网上可以看到只要修改成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中。
4.修改openwrt
修改一下对应的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 😎