基于全志T133-s3(Tina Linux)移植wifi(rtl8723d)驱动

  • 1.硬件电路
  • 2.软件准备
    • 2.1.驱动代码
    • 2.2.修改脚本
    • 2.3.添加驱动
    • 2.4.设备树适配
  • 3、测试wifi

1.硬件电路


2.软件准备

2.1.驱动代码

1)首先,我们需要获得驱动程序,一般可以找厂家获得,也可以在 Github Gitee 上找到。


2)检查 platform 文件夹内是否有 platform_ARM_SUNxI_sdio.c 这个接口源码。


如果没有,需要适配到 Tina 平台。主要修改的地方是调用Tina平台提供的上下电,扫卡函数,SDIO 驱动等等。工作量较大建议请专业人士进行移植

3)然后将驱动文件复制进 lichee/linux-5.4/drivers/net/wireless 文件夹内,其实就是内核目录下的路径

2.2.修改脚本

1)编辑 lichee/linux-5.4/drivers/net/wireless/rtl8723ds/Makefile 找到 Platform Related 设置区域,将其他选项全部关闭,只保留 CONFIG_PLATFORM_ARM_SUNxI = y 是开启的。

2)同时找到 Interface 区域,只启用 CONFIG_SDIO_HCI


3)接下来编辑 lichee/linux-5.4/drivers/net/wireless/Kconfig ,增加引索

source "drivers/net/wireless/rtl8723ds/Kconfig"


4)再打开 lichee/linux-5.4/drivers/net/wireless/rtl8723ds/Kconfig 查看对应的 config 符号,可以看到是 RTL8723DS

5)就可以在 lichee/linux-5.4/drivers/net/wireless/Makefile 里增加编译文件夹

obj-$(CONFIG_RTL8723DS)    += rtl8723ds/

2.3.添加驱动

1)配置完成,就可以在 make kernel_menuconfig 里找到这个选项了,将其编译为模块。


2)Tina 适配对于wifi固件
上面完成了内核驱动方面的配置,接下来是配置 Tina Linux 侧。由于部分 Wi-Fi 驱动需要文件系统挂载提供固件,所以需要在 Tina Linux 配置完成打包上面编译的驱动模块与固件,同时也要配置自动加载驱动的脚本才能使系统正常运行。

在这之前,我们先检查一下是否提供了 RTL8723DS 的固件,可以在 make menuconfig s搜索是否有 8723DS 的固件存在。没有就自己添加。

可以看到,Tina Linux 提供了 RTL8723DS 的固件,名叫 r8723ds-firmware 可以进行下一步了。

3)修改 Tina-Linux/target/allwinner/t113-evb1/modules.mk 文件(这里的路径根据自己的找到就行),增加 RTL8723DS 这个 kmod 选项。注意,DEPENDS 里包含的固件名称就是上面查找得到的名称。

define KernelPackage/net-rtl8723dsSUBMENU:=$(WIRELESS_MENU)TITLE:=RTL8723DS support (staging)DEPENDS:= +r8723ds-firmware +@IPV6 +@USES_REALTEKFILES:=$(LINUX_DIR)/drivers/net/wireless/rtl8723ds/8723ds.koAUTOLOAD:=$(call AutoProbe,8723ds)
endefdefine KernelPackage/net-rtl8723ds/descriptionKernel modules for RealTek RTL8723DS support
endef$(eval $(call KernelPackage,net-rtl8723ds))


4)现在 make menuconfig 进入 Tina Linux 的配置界面,就可以在 Kernel modules > Wireless Drivers 中找到 <*> kmod-net-rtl8723ds… RTL8723DS support (staging),勾选他。


6)最后,还需要启用自动加载驱动的功能,位于 Tina-Linux/target/allwinner/t113-evb1/busybox-init-base-files/etc/init.d/rc.modules ,别忘了注释不需要的驱动。

2.4.设备树适配

与上文相同,注意启用 SDC1 节点与 wlan0节点,配置wlan_busnum、wlan_regon、wlan_hostwake 。由于这里使用的是同款开发板所以不做再次说明,这里直接使用下面的内核设备树。

rfkill: rfkill@0 {compatible    = "allwinner,sunxi-rfkill";chip_en;power_en;pinctrl-0 = <&wlan_pins_a>;pinctrl-names = "default";status        = "okay";wlan: wlan@0 {compatible    = "allwinner,sunxi-wlan";clock-names = "32k-fanout1";clocks = <&ccu CLK_FANOUT1_OUT>;wlan_busnum    = <0x1>;wlan_regon    = <&pio PG 12 GPIO_ACTIVE_HIGH>;wlan_hostwake  = <&pio PG 10 GPIO_ACTIVE_HIGH>;/*wlan_power    = "VCC-3V3";*//*wlan_power_vol = <3300000>;*//*interrupt-parent = <&pio>;interrupts = < PG 10 IRQ_TYPE_LEVEL_HIGH>;*/wakeup-source;};

最后编译烧录即可。

3、测试wifi

1)使用ifconfig可以看到wlan0


2)这里需要注意一个问题,由于wpa_supplicant.conf这个文件没有我们的路由器名称和密码,所以需要自己添加一下,路径再Tina-Linux/package/allwinner/wifimanager/files/wpa_supplicant.conf

打开wpa_supplicant.conf

ctrl_interface=/etc/wifi/sockets
#disable_scan_offload=1
#update_config=1
#wowlan_triggers=any#---------------添加这部分,记得把此注释删掉-----------------
ap_scan=1                  network={ssid="xxx"psk="xxxxxxxxx"}

3)重启一下即可,然后重启之后,动态分配一下ip,使用以下命令

udhcpc -i wlan0

4)最后可以是ping一下网络,

ping www.baidu.com

5)注意这里内核会打印一些debug信息,这是wifi驱动里面打开的,自己去驱动代码里面关闭即可。我这里就直接放出来,主要是更改Makefile文件里面的宏控制。


6)如果再使用这个wifi模块的过程中出现以下情况,如图所示:

出现这种问题,只要在驱动代码的os_dep/linux/ioctl_cfg80211.c的rtw_cfg80211_ch_switch_notify这个函数中对结构体struct cfg80211_chan_def_chdef进行初始化就可以了。

基于全志T133-s3(Tina Linux)移植wifi(rtl8723d)驱动相关推荐

  1. 基于全志T133-s3(Tina Linux)移植5寸RGB显示屏驱动

    基于全志T133-s3(Tina Linux)移植5寸RGB显示屏驱动 1.硬件电路 2.LCD实物图 3.LCD 的驱动 4.uboot配置 4.1.配置文件 4.2.uboot设备树 5.kern ...

  2. 基于全志A33开发板linux系统移植学习记录(Boot0)

    基于全志A33开发板linux系统移植学习记录 第一章 Boot0基于ARMGCC的编译与修改 文章目录 基于全志A33开发板linux系统移植学习记录 前言 一.全志A33简介以及上电引导流程 二. ...

  3. 全志哪吒D1-H Tina Linux Ubuntu 22.04入门踩坑日记

    哪吒D1-H Tina Linux入门踩坑日记 系统环境 源码编译 mklibs-readelf的C++标准问题 m4的SIGSTKSZ问题 libfakeroot的_STAT_VER问题 read_ ...

  4. pcDuino的linux移植五GPIO驱动开发

    2019独角兽企业重金招聘Python工程师标准>>> 为首的亮,灭.同时如果你GPIO4,GPIO5接个LED,也会跟着亮,灭. 开发环境: 系统:Ubuntu的 一,硬件介绍 仔 ...

  5. linux移植wifi板载驱,基于arm\Linux平台USB无线网卡的wifi驱动移植

    arm平台是三星2440,Linux内核是2.6.24,威盛VNT6656的USB无线网卡:开发平台是Fedora10,内核是2.6.27.遭遇的问题主要有如下几个: 一.驱动程序的版本不对 开始在网 ...

  6. 全志D1-H哪吒开发板Tina Linux 下WiFi的连接

    16.查看wifi规格 支持2.4G wifi,支持13个工作信道(Channel1-13),提供wifi扫描命令,可搜索到附件的wifi list. 执行: wifi_scan_results_te ...

  7. linux 提取网卡驱动,韦东山-Linux下移植wifi网卡驱动(RTL8723) - 百问网嵌入式问答社区...

    硬件:韦老师的开发板IMX6ULL 内核版本:4.15(自己移植) 这次实验是在自己移植的内核上面加入RTL8723驱动 问题一:如何获取RTL8723驱动? 在韦老师给我们的程序中能够使用wifi, ...

  8. linux移植wifi sd8688.bin 最新固件,[ZZ]浅析firmware完整生存和使用流程

    /class/firmware error = kobject_add(&dev->kobj, dev->kobj.parent, "%s", dev-> ...

  9. 嵌入式Linux移植USB网卡驱动

    开发板:友善之臂smart210 操作系统:Ubuntu 12,04 交叉编译器:arm-none-linux-gnueabi gcc version 4.3.2 WIFI 模组:TP-LINK TL ...

最新文章

  1. QApplication类详细描述
  2. map和pair配合使用
  3. 【Clickhouse】Clickhouse 访问控制和账号管理
  4. centos7 mysql添加密码_centos-在Centos7上更改mysql根密码
  5. python海龟漂亮图案代码大全_Python游戏海龟图案
  6. 【实验报告】LFM信号产生与频谱分析(记录一次实验:《电类综合实验》)
  7. pdf格式压缩大小,pdf如何压缩大小?
  8. 国外服务器和网站,国外服务器网站好吗?国外服务器网站和国内有什么区别?...
  9. Premiere导入视频之后音频轨没有内容
  10. android fd泄露分析,文件描述符(fd)泄漏排查一篇就够了
  11. STM32单片机学习笔记(七)-RCC时钟控制:简单了解时钟树(一)
  12. larval框架的获取并存储(cache的使用)
  13. flowchart流程图编程语言下载_流程图(flowchart)
  14. Java:获取字符串长度(length())
  15. Unity ECS初学
  16. 【杂谈分享】world.execute(me); 用代码谱写从0到1的死亡情诗
  17. Linux之pstree命令
  18. Spring系列之FactoryBean(一)
  19. ppsspp 手柄按键映射 北通 BTP
  20. 联想的“智慧城市群落”

热门文章

  1. 为什么无线信号(RSSI)是负值
  2. Mysql数据库常用查询方法及演示(where条件查询、分页、排序等)
  3. 2023特种作业操作证熔化焊接与热切割一[安考星]
  4. 学问之道无他求其放心而已矣
  5. WDCP 服务器定时任务重启
  6. IOS与Android APP界面设计规范要点
  7. CentOS服务端命令大全
  8. CSS设置背景颜色透明的两种方法
  9. 联想小新15安装双系统win10+ubuntu
  10. 【MVC框架】——什么是MVC框架