Linux SDIO-WiFi 协议栈

embedded/2024/9/23 6:53:34/

Linux SDIO-WiFi 协议栈

  • 1. 简介
  • 2. BCMDHD
    • 2.1 WiFi模组
    • 2.2 驱动初始化(dhd_module_init)
  • 3. Broadcom fullmac WLAN

1. 简介

2. BCMDHD

  • BCMDHD:Broadcom Dongle Host Driver
  • SIP:System In Package

2.1 WiFi模组

在这里插入图片描述

2.2 驱动初始化(dhd_module_init)

  • dhd_module_init
dhd_module_init =>   # dhd_linux.c (drivers\net\wireless\bcmdhd) dhd_wifi_platform_register_drv =>wifi_ctrlfunc_register_dr =>dhd_wifi_platform_load => # 对于不同接口,包括usb,sdio,pcie的wifi进行加载dhd_wifi_platform_load_sdio =>  # 主要是给所有adapters上电,然后匹配funcdhd_bus_register => # 主要是注册sdio驱动sdio_register_driver(&dummy_sdmmc_driver);# 通过总线驱动sdio_bus_match匹配,# 主要匹配三个参数ids->class || ids->vendor || ids->device。# 匹配成功后调用bcmsdh_sdmmc_probe 》 sdioh_probe 》 bcmsdh_probe bcmsdh_register =>  # 注册bcmsdh_driver_t dhd_sdio
  • dhd_sdio驱动
static bcmsdh_driver_t dhd_sdio = {dhdsdio_probe,dhdsdio_disconnect,dhdsdio_suspend,dhdsdio_resume
};
  • dhdsdio_probe
dhdsdio_probe =>dhd_attach =>  #  绑定到dhd/OS/网口, 对DHD管理的每个硬件(狗)实例调用一次wl_cfg80211_attach # 把设备注册到cfg80211,操作函数是wl_cfg80211_ops, 注册到rfkillwl_iw_attach       # 加入到iw里面dhd_dpc_thread     # 启动延迟函数,也就是中断后半部dhd_rxf_thread     # 启动 网络包接收线程  dhd_attach_net =>dhd_register_if    # Register primary net device , 这里的need_rtnl_lock=truewl_cfg80211_net_attach # 加入到cfg80211里面,cfg80211是Linux 802.11用于管理配置的一套API,# 它是用户和驱动之间的桥梁,替代了WEXT,提供和802.11相关的功能

3. Broadcom fullmac WLAN

  • The brcm80211 drivers are included in the kernel. They are named brcmsmac for PCI cards and brcmfmac for SDIO devices.
  • SDIO设备驱动代码
drivers/net/wireless/broadcom/brcm80211/brcmfmac

http://www.ppmy.cn/embedded/13012.html

相关文章

基于卷积神经网络的垃圾图像分类系统研究与实现

1.摘要 垃圾分类作为资源回收利用的重要环节之一, 可以有效地提高资源回收利用效率, 进一步减轻环境污染带来的危害. 随着现代工业逐步智能化, 传统的图像分类算法已经不能满足垃圾分拣设备的要求. 本文提出一种基于卷积神经网络的垃圾图像分类模型 (Garbage Classification Ne…

Pyside6:多行按钮点击判断序号

在Pyside开发过程中会遇到这么个问题:当多个按钮在很多行中,需要在点击槽函数中确认按钮的行。 普通的按钮点击信号如下: clicked() 该信号并未有任何参数,无法得到有效的信息,那么如何完成点击哪个确定是哪个按钮呢…

激励与约束的协同效应—人力资源管理的新趋势

随着全球经济一体化的深入发展,企业间的竞争愈发激烈,人力资源作为企业最宝贵的资源之一,其管理的重要性日益凸显。在这样的背景下,激励与约束的协同效应成为了人力资源管理的新趋势,它不仅能够提高员工的工作积极性&a…

Android 应用更新提醒自动跳转安装

废话少说,直接上干货 1.首先需要你获取本地的程序版本号 //获取当前版本 public int getAppVersion(Context context) {try {PackageInfo packageInfo context.getPackageManager().getPackageInfo(context.getPackageName(), 0);return packageInfo.versionCode…

真实世界的密码学(一)

原文:annas-archive.org/md5/655c944001312f47533514408a1a919a 译者:飞龙 协议:CC BY-NC-SA 4.0 前言 序言 当你拿起这本书时,你可能会想,为什么又一本关于密码学的书?甚至,为什么我要读这本…

Vue+Echarts 实现中国地图和飞线效果

目录 实现效果准备 实现效果 在线预览:https://mouday.github.io/vue-demo/packages/china-map/dist/index.html 准备 高版本的echarts,不包含地图数据,需要自己下载到项目中 1、地图数据下载 https://datav.aliyun.com/portal/school/at…

QTableView获取可见的行数

场景 当我们需要实时刷新QTableView时&#xff0c;而此时tableView的数据量较大&#xff0c;如果全部刷新显然不合理&#xff0c;如果可以只对用户看的到的数据进行刷新那就最好了&#xff0c;经过一番摸索找到了几种方式&#xff0c;可供参考 代码 方法1 QVector<int>…

禅道安装(非docker 版本)(一键部署版)

1.安装包下载地址 https://www.zentao.net/dl/zentao/18.5/ZenTaoPMS.18.5.zbox_64.tar.gzLinux一键安装包内置了Apache、PHP、MySQL和XXD 服务&#xff0c;不需要再单独安装。 2.上传到linux服务器 scp /Users/admin/Downloads/ZenTaoPMS.18.5.zbox_64.tar.gz root192.168.…