导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页

    Tina中移植RTL8188FTV

    Linux
    wifi t113-s3 tina rtl8188eu 驱动
    7
    9
    2344
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • C
      Haitun_CZR LV 3 最后由 编辑

      零、概述

      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中新建对应目录,并将驱动解压进去。

      185262e9-4abf-4510-bf75-33b0d67f9850-image-20240831210727715.png

      解压后的rtl8188ftv目录如下:

      ddb856e6-03dc-4ccf-bbc7-0d40245fbb4a-image-20240831210808753.png

      然后接下来需要让Linux能够识别到,需要做两项修改,一个是Kconfig,另一个是Makefile,修改这两处目的如下:

      • Kconfig:可以让make kernel_menuconfig的时候识别到。
      • Makefile:可以让Linux编译到驱动代码。

      (2).修改Kconfig

      可以查看一下rtl8188ftv中的Kconfig的内容,如下:

      0226c84a-ee9a-4a22-85db-71b91002009b-image-20240831211045460.png

      然后需要到staging进行修改Kconfig,让其包括rtl8188ftv下的Kconfig,如下:

      1dd62f36-55bc-4a5d-8de2-fc8623a862df-image-20240831211522633.png

      这样就可以在Linux下的menuconfig中找到这个驱动文件的配置。

      (3).修改Makefile

      接下来修改staging的Makefile,使Linux可以找到rtl8188ftv下的Makefile,如下:

      0ff9a97d-87dc-4abb-bd79-c55a5b27dd2a-image-20240831211732996.png

      还记得最开始看的rtl8188ftv下的Kconfig嘛,就是里面有一个对应开启的宏,在Makefile中添加上前缀CONFIG,就作为Makefile的参数,所以当Kconfig的配置被选中后,CONFIG_RTL8188FU就有对应的变化,就会识别到rtl8188ftv的路径。

      现在执行m kernel_menuconfig就可以找到对应的设置,如下:

      99c5e290-9b88-406a-8113-95e2b5262079-image-20240831212241509.png

      2.修改驱动配置

      现在需要对驱动,也就是rtl8188ftv的Makefile进行修改,主要修改这几项:

      • 修改WIFI IC,也就是型号,这边如下:

      7e303340-a1f9-4e9d-8ecc-1e4e7c3edac2-image-20240831212429893.png

      • 修改Interface,因为是USB模块,所以选到USB即可,如下:

      9e988bf4-a658-42dd-bdf4-940cc22d7d52-image-20240831212509794.png

      • 修改Platform Related,我使用的是T133,所以选择ARM_SUNxI,如下:

      60c30cb1-4ac2-41f7-aafb-10542ebfe8a3-image-20240831212628777.png

      • 修改对应编译链和编译目录,如下:

      这是原来的:

      f4421f21-3b2b-4825-ae6b-65d78d7f1974-image-20240831212749527.png

      修改为:

      52b8a014-09fa-4b4a-8afb-1031c8ad0120-image-20240831213016673.png

      这里面的几个参数分别是:

      • CROSS_COMPILE:就是Tina编译链位置
      • KVER:Linux的版本
      • KSRC:Linux源码的路径

      3.解决编译错误问题

      上面配置后就可以开始尝试编译,可以看到正在正常编译:

      10bf83ef-d2d8-4778-8963-389c811f847d-image-20240831213606605.png

      距离成功有进一步了!!but,马上出问题了:

      1. fatal error: mach/sys_config.h: No such file or directory

      1401c858-75e1-4ca7-9174-8b25ce70f14c-image-20240831213705741.png

      这个问题好解,参考网上可以看到只要修改成linux下的sys_config.h即可,但是然而内核中也没有对应文件,我查了一下这个头文件主要是提供一个用于读取配置的操作,再看看drivers/staging/rtl8188ftv/platform/platform_ARM_SUNxI_usb.c内容,会发现这个其实是和模块上下电有关的,不过我现在是常供电,所以完全没必要。

      其实即使解决了这个问题,还会报一些缺少sw_usb_enable_hcd、sw_usb_disable_hcd、script_parser_fetch等的问题。我这边直接给出我的解决办法--取消编译且在初始化源码中注释上下电操作!

      • 取消编译
        e5d06271-6e8d-44e9-8343-4c4ddb27708f-image.png

      • 注释相关代码
        2873ffed-8d27-4c95-83cc-79c34d7af656-image-20240831235848458.png

      ef982001-7ed5-4893-9b45-dbc2531376fe-image-20240831235740438.png

      随后即可编译通过!!

      4ab6d244-068c-47c4-854c-160e1f374bb5-image-20240901000118595.png

      但是仔细看看log或是拿到板子上去跑一下就会发现报一个错,就是log中提到的:

      0e62cef9-0b77-450d-a07e-93a55ec385e6-image-20240901000210098.png

      这个是由于内核命名空间未导入的原因,如下修改:

      5d5573e8-30e3-4a3a-8bab-c54de494a474-image-20240901000706357.png

      理论上到此就可以直接结束了,把ko文件拿到板子上insmod即可,但是这是在Tina呢,需要再修改一下openwert,让系统自动加到rootfs中。

      4.修改openwrt

      修改一下对应的mk文件,在通过软件包的形式将驱动安装到rootfs中。首先修改wireless.mk文件将对应ko文件写一个软件包,路径是/home/book/T113/tina/package/kernel/linux/modules/wireless.mk,如下:

      aab2bf73-03fc-46be-b861-05ba28799af0-image-20240901001426733.png

      然后再执行m menuconfig,找到rtl8188ftv相关选项,然后选上即可。

      27d6eabd-6376-4317-95e9-d3b2dc3ecddc-image-20240901001519206.png

      这样就会自动加载rootfs中了。

      三、驱动验证

      烧写新编译的固件,然后在/lib/modules/5.4.61下可以看到对应驱动

      5e58f18b-8109-4a0e-9469-5f56ad6ba612-image-20240901001956313.png

      使用insmod命令就可以将驱动加载了,如下:

      d81b2767-053e-4866-aed0-a427c4dee7e1-image-20240901002116708.png

      此时,ifconfig -a大概率是可以看到wlan0的,随后的操作自由发挥吧。

      整个移植过程还算顺利,当然也有查看一些大佬写的文章,我只是学到了然后也分享出来,以后大家有遇到可以进行参考,同时也给自己做一个笔记。

      至此,分享结束,谢谢大家!!73 😎

      B 1 条回复 最后回复 回复 引用 分享 5
      • A
        abcdef LV 5 最后由 编辑

        好文,mark一下

        1 条回复 最后回复 回复 引用 分享 1
        • Z
          zoipuus LV 5 最后由 编辑

          很详细,点赞收藏

          1 条回复 最后回复 回复 引用 分享 0
          • A
            Asoul_Ava LV 5 最后由 编辑

            非常详细,很适合作为驱动移植安装的教程,好文

            1 条回复 最后回复 回复 引用 分享 0
            • B
              b13322485475 LV 3 @CZR1711 最后由 编辑

              @czr1711 好文章我要移植8812eu USB

              C 1 条回复 最后回复 回复 引用 分享 0
              • C
                Haitun_CZR LV 3 @b13322485475 最后由 编辑

                @b13322485475 原理都是一样的

                1 条回复 最后回复 回复 引用 分享 0
                • C
                  Haitun_CZR LV 3 最后由 编辑

                  rtl8188ftv驱动在此:rtl8188FU_linux_v5.15.3-6.tar.gz

                  Y 1 条回复 最后回复 回复 引用 分享 1
                  • T
                    tivon LV 6 最后由 编辑

                    现在开始慢慢给wifi模块做适配,向你学习。

                    1 条回复 最后回复 回复 引用 分享 0
                    • Y
                      yyyyppppp LV 5 @CZR1711 最后由 编辑

                      此回复已被删除!
                      1 条回复 最后回复 回复 引用 分享 0
                      • 1 / 1
                      • First post
                        Last post

                      Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

                      行为准则 | 用户协议 | 隐私权政策