admin管理员组

文章数量:1530858

2024年7月11日发(作者:)

福州瑞芯微电子有限公司

密级状态:绝密()秘密()内部(√)公开()

RK平台RealtekWiFi驱动移植说明

(系统产品一部)

文件状态:

[]正在修改

[√]正式发布

当前版本:

作者:

V1.0

胡卫国

2015-03-13完成日期:

审核:

完成日期:

福州瑞芯微电子有限公司

FuzhouRockchipsSemiconductorCo.,Ltd

(版本所有,翻版必究)

福州瑞芯微电子有限公司

版本历史

版本号

V1.0

作者

胡卫国

修改日期

2015-03-13初始版本

修改说明备注

福州瑞芯微电子有限公司

目录

1REALTEK驱动基本情况说明........................................................................................................................2

2WIFI驱动移植..................................................................................................................................................3

2.1

WIFI

驱动入口函数.....................................................................................................................................3

2.2电源控制及

SDIO

识别操作......................................................................................................................4

2.3M

AKEFILE

配置修改...................................................................................................................................5

2.4使用自定义W

I

F

I

MAC地址....................................................................................................................6

3BT固件更新......................................................................................................................................................7

1

福州瑞芯微电子有限公司

1Realtek

驱动基本情况说明

Realtek系列WiFiBT芯片,如RTL8188EU,RTL8189ES,RTL8723系列,驱动移植包都是类似

的目录结构,驱动代码目录结构也类似。

以RTL8188EUS_RTL8189ES_linux_v4.1.8_为例

解压之后里面包含文档、驱动源码包、androidreference代码等内容,具体如下:

Android部分RK一般都已经移植好集成到SDK中,由于Realtek驱动更新比较频繁,所以客

户最常遇到的事情就是更新WiFi驱动。

2

福州瑞芯微电子有限公司

2WiFi

驱动移植

可对比SDKKernel中已经移植好的驱动与Realtek的驱动进行合并。驱动在以下目录

drivers/net/wireless/rockchip_wlan/

drivers/net/wireless/

针对kernel3.10版本

针对kernel3.0版本

2.1wifi驱动入口函数

Realtek提供的驱动入口函数为:

module_init(rtw_drv_entry);

module_exit(rtw_drv_halt);

在以下文件中:

os_deplinuxsdio_intf.c针对sdio接口wifi

os_deplinuxusb_intf.c针对usb接口wifi

RK平台做了稍微修改,主要是为了增加RK版本信息打印及wifigpio电源控制,启动sdio

识别。

统一将入口函数由原来的:rtw_drv_entry与rtw_drv_halt,修改成了

rockchip_wifi_init_module与rockchip_wifi_exit_module针对3.0版本kernel

rockchip_wifi_init_module_rtkwifi与rockchip_wifi_exit_module_rtkwifi针对3.10版本kernel

并加了如下版本信息打印(以RTL8723BSVQ0Kernel3.0为例):

introckchip_wifi_init_module(void)

{

printk("=======================================================n");

printk("====LaunchingWi-Fidriver!(PoweredbyRockchip)====n");

printk("=======================================================n");

printk("Realtek8723BSSDIOWiFidriver(PoweredbyRockchip,Ver%s)init.n",

RTL8723BS_DRV_VERSION);

returnrtw_drv_entry();

}

3

福州瑞芯微电子有限公司

voidrockchip_wifi_exit_module(void)

{

printk("=======================================================n");

printk("====DislaunchingWi-Fidriver!(PoweredbyRockchip)====n");

printk("=======================================================n");

rtw_drv_halt();

}

Android4.2平台

编译成ko,入口函数如下:

module_init(rockchip_wifi_init_module);

module_exit(rockchip_wifi_exit_module);

Android4.4kernel3.0平台

Buildin到kernle中,入口函数如下

EXPORT_SYMBOL(rockchip_wifi_init_module);

EXPORT_SYMBOL(rockchip_wifi_exit_module);

Android4.4kernel3.10平台

Buildin到kernle中,入口函数如下

EXPORT_SYMBOL(rockchip_wifi_init_module_rtkwifi);

EXPORT_SYMBOL(rockchip_wifi_exit_module_rtkwifi);

Android5.0kernel3.10平台

#ifdefCONFIG_RTL8723BS_VQ0

EXPORT_SYMBOL(rockchip_wifi_init_module_rtkwifi);

EXPORT_SYMBOL(rockchip_wifi_exit_module_rtkwifi);

#else

module_init(rockchip_wifi_init_module_rtkwifi);

module_exit(rockchip_wifi_exit_module_rtkwifi);

#endif

2.2电源控制及sdio识别操作

Kernel3.10版本

introckchip_wifi_init_module_rtkwifi(void)

{

printk("n");

4

福州瑞芯微电子有限公司

printk("=======================================================n");

printk("====LaunchingWi-Fidriver!(PoweredbyRockchip)====n");

printk("=======================================================n");

printk("Realtek8723BSVQ0SDIOWiFidriver(PoweredbyRockchip,Ver%s)init.n",

RTL8723BS_DRV_VERSION);

rockchip_wifi_power(1);

returnrtw_drv_entry();

}

电源控制及sdio识别操作的函数实现在:net/rfkill/rfkill-wlan.c

Kernel3.0版本

电源控制与sdio识别函数有些不一样,具体如下:

intrk29sdk_wifi_power(inton);

intrk29sdk_wifi_set_carddetect(intval);

电源控制及sdio识别操作的函数实现在:arch/arm/plat-rk/rk-sdmmc-wifi.c

//使能wifi电源

rockchip_wifi_set_carddetect(1);//通知sdio进行识别sdio卡操作,只针对SDIOWiFi

2.3Makefile配置修改

在3.10版本kernel中防止出现编译warning

EXTRA_CFLAGS+=-O1

修改成

EXTRA_CFLAGS+=-O1-Wframe-larger-than=1200

选择RK平台

将CONFIG_PLATFORM_I386_PC=y

修改成

CONFIG_PLATFORM_I386_PC=n

将CONFIG_PLATFORM_ARM_RK3188=n

修改成

CONFIG_PLATFORM_ARM_RK3188=y

5

福州瑞芯微电子有限公司

CONFIG_PLATFORM_ARM_RK3188其实控制以下驱动中需要打开的关键宏:

CONFIG_PLATFORM_ANDROID

CONFIG_IOCTL_CFG80211

RTW_USE_CFG80211_STA_EVENT

CONFIG_CONCURRENT_MODE

CONFIG_P2P_IPS

休眠唤醒配置说明

如果发现连接AP时wifi休眠功耗大,可按如下配置

CONFIG_WOWLAN=n

CONFIG_GPIO_WAKEUP=n

CONFIG_RTW_SDIO_PM_KEEP_POWER=y

2.4使用自定义WiFiMAC地址

一般wifi模块自带硬件MAC地址,默认使用此地址。也可修改成自定义的MAC地址,通过

PC工具写MAC地址到flash中,然后再在驱动中读取并使用此MAC地址,修改如下:

在文件corertw_ieee80211.c中,通过以下函数来读取flash中的MAC地址:

针对3.10版本kernel

externintrockchip_wifi_mac_addr(unsignedchar*buf);

针对3.0版本kernel

intrk29sdk_wifi_mac_addr(unsignedchar*buf)

6

福州瑞芯微电子有限公司

3BT

固件更新

如果是rtl8723系统wifibt二合一芯片,更新了wifi驱动后,一般需要同时更新btfirmware。

firmware在realtek提供的驱动移植包以下目录hardwarerealtekbtfirmware。

对应移植到RK平台目录如下

在SDK源码目录:安装到机器中目录

device/rockchip/common/bluetooth/realtek/bt/firmware/rtl8723au/rtl87

Android4.2,

4.4

23a_fw:system/etc/firmware/rtl8723a_fw

device/rockchip/common/bluetooth/realtek/bt/firmware/rtl8723au/rtl87

23a_config:system/etc/firmware/rtl8723a_config

rtl8723au

vendor/rockchip/common/bluetooth/realtek/bt/firmware/rtl8723au/rtl8

723a_fw:system/etc/firmware/rtl8723a_fw

Android5.0

vendor/rockchip/common/bluetooth/realtek/bt/firmware/rtl8723au/rtl8

723a_config:system/etc/firmware/rtl8723a_config

device/rockchip/common/bluetooth/realtek/bt/firmware/rtl8723bu/rtl87

Android4.2,

4.4

23b_fw:system/etc/firmware/rtl8723b_fw

device/rockchip/common/bluetooth/realtek/bt/firmware/rtl8723bu/rtl87

23bu_config:system/etc/firmware/rtl8723bu_config

rtl8723bu

vendor/rockchip/common/bluetooth/realtek/bt/firmware/rtl8723bu/rtl8

723b_fw:system/etc/firmware/rtl8723b_fw

Android5.0

vendor/rockchip/common/bluetooth/realtek/bt/firmware/rtl8723bu/rtl8

723bu_config:system/etc/firmware/rtl8723bu_config

device/rockchip/common/bluetooth/realtek/bt/firmware/rtl8723as/rtl87

Android4.2,

rtl8723as

4.4

device/rockchip/common/bluetooth/realtek/bt/firmware/rtl8723as/rtl87

23a_fw:system/etc/firmware/rtlbt/rtlbt_fw

7

福州瑞芯微电子有限公司

23a_config:system/etc/firmware/rtlbt/rtlbt_config

vendor/rockchip/common/bluetooth/realtek/bt/firmware/rtl8723as/rtl87

23a_fw:system/etc/firmware/rtlbt/rtlbt_fw

Android5.0

vendor/rockchip/common/bluetooth/realtek/bt/firmware/rtl8723as/rtl87

23a_config:system/etc/firmware/rtlbt/rtlbt_config

device/rockchip/common/bluetooth/realtek/bt/firmware/rtl8723bs/rtl87

Android4.2,

4.4

23b_fw:system/etc/firmware/rtlbt/rtlbt_fw

device/rockchip/common/bluetooth/realtek/bt/firmware/rtl8723bs/rtl87

23b_al:system/etc/firmware/rtlbt/rtlbt_config

rtl8723bs

vendor/rockchip/common/bluetooth/realtek/bt/firmware/rtl8723bs/rtl8

723b_fw:system/etc/firmware/rtl8723bs_fw

Android5.0

vendor/rockchip/common/bluetooth/realtek/bt/firmware/rtl8723bs/rtl8

723b_config:system/etc/firmware/rtl8723bs_config

device/rockchip/common/bluetooth/realtek/bt/firmware/rtl8723bs/rtl87

Android4.2,

4.4

23b_fw:system/etc/firmware/rtlbt/rtlbt_fw

device/rockchip/common/bluetooth/realtek/bt/firmware/rtl8723bs/rtl87

23b_al:system/etc/firmware/rtlbt/rtlbt_config

rtl8723bs-vq0

vendor/rockchip/common/bluetooth/realtek/bt/firmware/rtl8723bs_vq0

/rtl8723b_fw:system/etc/firmware/rtl8723bs_VQ0_fw

Android5.0

vendor/rockchip/common/bluetooth/realtek/bt/firmware/rtl8723bs_vq0

/rtl8723b_VQ0_config:system/etc/firmware/rtl8723bs_VQ0_config

8

福州瑞芯微电子有限公司

_______________

9

本文标签: 驱动移植说明函数