Tina上移植RTL8188FTV WiFi模块

零、概述

2024年年中的时候画了一块T113的开发板,采用了核心板和可替换底板设计,为了学习WiFi相关内容,选了RTL8188FTV作为WiFi模块(网上最便宜的,不过大家适配比较少,所以坑很多),花了一段时间将这部分移植成功了,做出如下记录以供参考。
驱动链接在此:点击即可

一、前期准备

我们的目的是适配一款新的WiFi模块,所以一开始系统什么的需要先准备好,不在本文探讨的范畴。需要做出如下准备:

  1. RTL8188FTV模块(USB款)
  2. 运行Linux的开发板(虽然我是在Tina上完成的,但是原理通用于Linux),我使用的芯片是T113
  3. 虚拟机Tina4.0开发环境
  4. 对应版本的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,马上出问题了:

  1. 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 😎

  • 17
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值