[全志T113]:RTL8723BS驱动

[全志T113]:RTL8723BS驱动

1.添加驱动文件

驱动存放路径:

lichee/linux-5.4/drivers/net/wireless/rtl8723ds

在这里插入图片描述

修改wireless下的kconfig和Makefile

Kconfig

增加一行8723bs的kconfig

source "drivers/net/wireless/rtl8723bs/Kconfig"

在这里插入图片描述

Makefile

增加一行8723bs

obj-$(CONFIG_RTL8723BS)   += rtl8723bs/

在这里插入图片描述

2.添加驱动

make kernel_menuconfig

在这里插入图片描述

make menuconfig 

在这里插入图片描述

3.修改系统启动挂载的模块

这和每一个人的用的板级支持包有关,这里的路径是我的板极包路径

target/allwinner/t113-cloud_86/busybox-init-base-files/etc/init.d/rc.modules

在这里插入图片描述

/sbin/insmod /lib/modules/5.4.61/8723bs.ko

5.设备树配置

在这里插入图片描述

先查看sdc1的配置,wifi是挂在这上面的

sdc1_pins_a: sdc1@0 {
    pins = "PG0", "PG1", "PG2",
            "PG3", "PG4", "PG5";
    function = "sdc1";
    drive-strength = <30>;
    bias-pull-up;
};

sdc1_pins_b: sdc1@1 {
    pins = "PG0", "PG1", "PG2",
            "PG3", "PG4", "PG5";
        function = "sdc1";
};

开启uart1

&uart1 {
	pinctrl-names = "default", "sleep";
	pinctrl-0 = <&uart1_pins_a>;
	pinctrl-1 = <&uart1_pins_b>;
	status = "okay";
};

配置wifi

	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;

		};

		bt: bt@0 {
			compatible    = "allwinner,sunxi-bt";
			pinctrl-0 = <&wlan_pins_a>;
			pinctrl-names = "default";
			clock-names = "32k-fanout1";
			clocks = <&ccu CLK_FANOUT1_OUT>;
			/*bt_power_num = <0x01>;*/
			/*bt_power      = "axp803-dldo1";*/
			/*bt_io_regulator = "axp803-dldo1";*/
			/*bt_io_vol = <3300000>;*/
			/*bt_power_vol = <330000>;*/
			bt_rst_n      = <&pio PG 12 GPIO_ACTIVE_LOW>;
			status        = "okay";
		};
	};

在这里插入图片描述

5.启动测试

在这里插入图片描述

常见的测试指令

root@TinaLinux:/# wifi_scan_results_test

*********************************
***Start scan!***
*********************************
bssid / frequency / signal level / flags / ssid
1c:1f:f1:bb:6c:68       2437    -69     [WPA-PSK-CCMP][WPA2-PSK-CCMP][WPS][ESS]ChinaUnicom-3LRNAS
00:78:12:01:c3:67       2432    -91     [WPA2-PSK-CCMP][ESS]    243
******************************
Wifi get_scan_results: Success!
******************************

root@TinaLinux:/# wifi_connect_ap_test ChinaUnicom-3LRNAS 244244244
==================================
Connecting to the network(ChinaUnicom-3LRNAS)......
[  135.285527] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
Connected to the AP(ChinaUnicom-3LRNAS)
Getting ip address(ChinaUnicom-3LRNAS)......
udhcpc: started, v1.27.2
udhcpc: sending discover
udhcpc: sending select for 192.168.101.63
udhcpc: lease of 192.168.101.63 obtained, lease time 86400
Wifi connect ap : Success!
==================================
root@TinaLinux:/# /usr/sbin/odhcp6c-update: line 165: flock: not found
/usr/sbin/odhcp6c-update: line 165: flock: not found
nect ap : Success!
==================================
root@TinaLinux:/# /usr/sbin/odhcp6c-update: line 165: flock: not found
/usr/sbin/odhcp6c-update: line 165: flock: not found
<think>好的,用户现在问的是关于Wi-Fi固件源码的情况。先得理解用户的需求。他可能是在开发嵌入式系统,或者在做Linux驱动相关的项目,需要了解如何获取或修改Wi-Fi固件的源代码。 首先,我需要回顾之前的对话历史。之前用户询问的是关于MMC/SD/SDIO over SPI的配置问题,涉及到硬件连接和内核配置,特别是全志T113-i平台上的RTL8723BS模块。现在用户转向了Wi-Fi固件源码,可能是因为他在配置驱动时遇到了问题,或者需要定制固件。 接下来,用户可能想知道为什么需要固件,以及如何获取和处理这些源码。需要注意区分开源和闭源的固件,因为大多数厂商的Wi-Fi芯片固件是闭源的,比如Realtek、Broadcom、Qualcomm等。而像ath9k这样的开源驱动可能提供部分固件源码。 用户可能的真实需求包括:需要编译固件以适配特定硬件,调试驱动问题,或者进行安全审计。也可能是在开发过程中遇到了固件加载失败的问题,需要查看源码来排查。 需要解释固件的作用,即它是硬件运行的二进制代码,通常由厂商提供,用户需要根据芯片型号获取对应的固件。同时,要提到开源固件的例子,比如某些atheros芯片,以及像Linux内核中的固件包,比如linux-firmware仓库。 还要提醒用户注意法律问题,因为闭源固件的源码通常受版权保护,不能随意修改或分发。对于开源固件,用户可以从指定的仓库获取,并遵循相应的协议。 此外,用户可能需要知道如何将固件加载到系统中,比如通过内核的固件加载机制,或者手动放置到/lib/firmware目录下。如果用户遇到固件加载失败的问题,可能需要检查固件文件是否存在,权限是否正确,以及版本是否匹配。 最后,总结关键点,强调大部分情况下用户不需要直接处理固件源码,除非使用开源方案,否则应依赖厂商提供的二进制文件。同时,提供一些实用命令和资源链接,帮助用户进一步操作。</think>以下是关于**Wi-Fi固件源码**的详细解析: --- ### 一、固件源码的本质 Wi-Fi固件(Firmware)是运行在无线芯片内部的**专用二进制代码**,负责: 1. 管理射频信号调制/解调 2. 实现802.11协议栈(如关联、加密、速率控制) 3. 与主机驱动交互(通过SDIO/USB/PCIe总线) --- ### 二、开源 vs 闭源固件 #### 1. **闭源固件(主流方案)** 🔒 - **芯片厂商**:Realtek(RTL8723/8821等)、Broadcom(BCM4343等)、Qualcomm(ath10k等) - **特点**: - 仅提供编译后的`.bin`文件(如`rtlwifi/rtl8723bs_nic.bin`) - 需遵循厂商的**二进制分发协议**(禁止逆向工程) - **获取方式**: - 通过Linux内核的`linux-firmware`仓库([官方仓库](https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git)) - 芯片厂商提供的SDK(需签署NDA协议) #### 2. **开源固件(少数案例)** 🔓 - **代表方案**: - **ath9k_htc**(Atheros AR9271芯片):固件源码在OpenWrt项目中开放 - **OpenFWWF**:针对博通某些旧芯片的开源替代固件 - **代码示例**(以ath9k_htc为例): ```c // 固件初始化片段(来自OpenWrt) void target_flash_erase(struct ar9271 *ar, u32 addr)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值