美文网首页
USB wifi 驱动分析-RTL8821cu

USB wifi 驱动分析-RTL8821cu

作者: Hemsl | 来源:发表于2019-07-28 11:52 被阅读0次

    “人生若只如初见,何事秋风悲画扇”,这句话用来开头作为最近的状态表述吧!
    最近愈发觉得年龄大了,技术上很多事情只如初见,隔天就秋风悲画扇,丢了、再也无法寻回,没了思想灵魂、成不了体系战斗力,剩下孤独的自己。
    如此敏感的情怀下、又容不下躁动的心、毕竟技术和哲学的结合是种追求、超越感觉之后的理性是我的追求啊。
    言归正传、上属扯淡,人生是被随机的命运主宰的,一切追求只不过是机会来临的准备!这不,让我遇到了一个usb wifi设备故障的bug,关键客户给我搜集了完整的日志。
    要知道平时要看懂一个这么复杂设备驱动得花很久时间的,但是根据故障信息回推半个小时就可以有个大概的流程映像,这就是运气。恰好前几天综合研究了一下usb驱动架构,简直是证明实力的机会啊。

    错误的关键信息:

    RTW: ERROR [HALMAC][ERR]Dump efuse in suspend
    

    所以20分钟后有了以下的结果:

    rtl8821cu/os_dep/linux/usb_intf.c 入口
    module_init(rtw_drv_entry)
    --->usb_register(&usb_drv.usbdrv);
    --->rtw_drv_init()
    --->rtw_usb_primary_adapter_init()
    --->rtw_set_hal_ops()
    --->rtl8821cu_set_hal_ops()
    --->rtl8821cu_set_hal_ops()
    --->rtl8821cu_halmac_init_adapter()
    ---> rtw_halmac_init_adapter()
    ---> halmac_init_adapter()
    ---> mount_api_88xx()
    ---> mount_api_8821c()
    --->mount_api_8821c(根据pcie、usb、sdio等接口区分,初始化wifi设备依赖的接口函数)
    --->mac_pwr_switch_usb_8821c(读取寄存器的值:value8 = HALMAC_REG_R8(REG_CR);)
    ---> dump_efuse_map_88xx(halmac_ret_status: 获取halmac 的状态)
    出现RTW: ERROR [HALMAC][ERR]Dump efuse in suspend错误的地方
    

    好吧,有了这个架构流程,至少可以大致描述是因为驱动读取wifi模块的寄存器信息的时候返回的状态是异常的,猜测是硬件故障了导致的。
    那么具体的原因可以进一步分析、甚至根据自己的理解找芯片原厂确认。再进一步wlan协议也可以学习了解下。

    相关文章

      网友评论

          本文标题:USB wifi 驱动分析-RTL8821cu

          本文链接:https://www.haomeiwen.com/subject/qyvurctx.html