rk3399 android7.1.2 usbwifi调试

1、源码获取

        可以通过瑞芯微公司提供的ftp文档服务器中查找对应usbwifi驱动源码或找模块供应商要到wifi模块驱动源码

2、拷贝源码

        将上面提取到的usb wifi驱动拷贝到内核drivers/net/wireless/rockchip_wlan/rtl8812au目录中

3、修改内核config文件

    打开arch/arm64/configs/rockchip_defconfig
        修改内容:
            CONFIG_CFG80211=y
            CONFIG_MAC80211=y
            CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP=n
            #CONFIG_AP6XXX=y
            CONFIG_RTL8188EU=n
            CONFIG_WIFI_BUILD_MODULE=y
            CONFIG_RTL8812AU=m

4、添加Makefile与Kconfig

    drivers\net\wireless\rockchip_wlan\Makefile
        obj-$(CONFIG_RTL8812AU)	+= rtl8812au/
    drivers\net\wireless\rockchip_wlan\Kconfig
        source "drivers/net/wireless/rockchip_wlan/rtl8812au/Kconfig"

5、修改代码生成方式,使用动态加载模块

    #ifdef CONFIG_RTL_WIRELESS_SOLUTION
            if (type < WIFI_RTL_SERIES) {
                    /*if (enable > 0)
                            ret = rockchip_wifi_init_module_rtkwifi();
                    else
                            rockchip_wifi_exit_module_rtkwifi();*/
                    return ret;
            }
    #endif

注释调驱动其他加载方式

   //#ifdef CONFIG_WIFI_BUILD_MODULE
    module_init(rockchip_wifi_init_module_rtkwifi);
    module_exit(rockchip_wifi_exit_module_rtkwifi);
    /*#else
    #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 1, 0))
    #ifdef CONFIG_WIFI_LOAD_DRIVER_WHEN_KERNEL_BOOTUP
    late_initcall(rockchip_wifi_init_module_rtkwifi);
    module_exit(rockchip_wifi_exit_module_rtkwifi);
    #else
    EXPORT_SYMBOL(rockchip_wifi_init_module_rtkwifi);
    EXPORT_SYMBOL(rockchip_wifi_exit_module_rtkwifi);
    #endif
    #else
    #ifdef CONFIG_ANDROID_4_2
    module_init(rockchip_wifi_init_module);
    module_exit(rockchip_wifi_exit_module);
    #else
    EXPORT_SYMBOL(rockchip_wifi_init_module);
    EXPORT_SYMBOL(rockchip_wifi_exit_module);
    #endif
    #endif
    #endif*/

6、驱动编译方式

方式一:
        rk3399编译usb wifi驱动采用ko的方式在系统中加载,使用对应的脚本进行编译,脚本文件
        device/rockchip/common/build_wifi_ko.sh
    方式二:
        在内核中输入命令
        make ARCH=arm64 modules -j8 
        在驱动代码目录下会生成对应的ko文件

7、上层驱动加载

    上层驱动加载直接在代码中insmod对应的ko文件
            将usbwifi的ko文件拷贝到系统/sys/lib/modules目录下,开启wifi会自动加载wifi驱动。
        在编译系统时build_wifi_ko.sh脚本会将编译生成ko文件拷贝到对应的目录下。

8、问题分析

在编译生成ko驱动后,拷贝到Android系统/sys/lib/modules目录下,开启wifi发现wifi开启失败,上层服务调用失败。

打开usbwifi驱动LOG打印,发现上层做系统调用时驱动对上层应用返回过空指针

 

查找rtw_cfgvendor_lstats_get_info函数,发现该函数由CONFIG_RTW_CFGVEDNOR_LLSTATS宏控制

 

    在usbwifi驱动的Makefile中关闭上述宏
    #EXTRA_CFLAGS += -DCONFIG_RTW_CFGVEDNOR_LLSTATS
    再次编译usbwifi驱动代码,更换ko文件,重新启动系统,wifi开启成功

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 7.1.2(也被称为Nougat)是Android操作系统的一个版本,它的源代码是公开可用的。源码包含了构建和运行Android操作系统所需的所有代码文件和资源。 Android操作系统是一个基于Linux内核的开源平台,用于移动设备和嵌入式系统。它提供了一个统一的操作系统环境,使开发者能够轻松地构建和定制自己的Android设备。 Android 7.1.2源码提供了一套开发工具和框架,使开发者能够创建功能丰富、稳定和安全的应用程序。该版本中引入了一些新的功能和改进,例如通知栏的增强、多任务处理的改进、Doze模式的优化等,以提供更好的用户体验。 通过查看源代码,开发者可以深入了解Android操作系统的内部工作原理,并理解其中的各个组件和模块是如何相互协作的。例如,开发者可以研究Android的用户界面框架、应用程序生命周期管理、通信和存储机制等。 修复和优化Android 7.1.2源码也是可能的,因为它是开源的。开发者可以根据自己的需求和想法对操作系统进行修改,并参与到Android社区中,与其他开发者分享和贡献代码。 总之,Android 7.1.2源码为开发者提供了一个定制和构建Android应用的平台。通过深入了解源码,开发者能够创建出更加出色和创新的应用程序,同时也有机会参与到Android开源社区中,为整个生态系统的发展做出贡献。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值