####WLAN DONGLE OVERVIEW
The Dongle Host Driver (DHD) is the executable module that provides encapsulated communication between the host device and the Ampak module over the SDIO bus.

————————————————
####概念:

######Firmware:
WiFi芯片内部有一个小系统,用来运行802.11协议,此部分代码就叫Firmware。有些芯片(例如 broadcom)的Firmware是以文件的形式存放的,有些芯片(例如 realteck)的Firmware是做到驱动代码中的。

######Nvram:
WiFi芯片需要作相应的RF参数校准,校准值等信息一般放到到Nvram中。例如,同一个芯片bcm4330,做成不同的模块时,需要不同的Nvram。另外,有些芯片(例如realtek)将RF参数校准等信息写到芯片的EEPROM中,这部分工作在模块出厂时完成
WiFi芯片工作前,需要host先下载Firmware文件到WiFi芯片中,此部分工作在WiFi驱动中完成。

######路径:
Firmware与Nvram文件存放于external/wlan_loader/firmware/目录中,最终被编译到系统的/system/etc/firmware
原文链接:https://blog.csdn.net/kris_fei/article/details/76804992
————————————————
————————————————
######固件
1.Firmware,是表示运行在非“控制处理器”(指不直接运行操作系统的处理器,例如外设中的处理器,或者被用于bare metal的主处理器的其中一些核)中的程序。这些程序很多时候使用和操作系统所运行的处理器完全不同的指令集。这些程序以二进制形式存在于Linux内核的源代码树中,生成目标系统的时候,通常拷贝在/lib/firmware目录下。当driver对device进行初始化的时候,通过request_firmware()等接口,在一个用户态helper程序的帮助下,可以把指定的firmware加载到内存中,由驱动传输到指定的设备上。

2.所以,总的来说,其实driver和firmware没有什么直接的关系,但firmware通常由驱动去加载。我们讨论的那个OS,一般不需要理解firmware是什么,只是把它当做数据。firmware是什么,只有使用这些数据的那个设备才知道。好比你用一个电话,电话中有一个软件,这个软件你完全不关心如何工作的,你换这个软件的时候,就可以叫这个软件是“固件”。

版权声明:本文为CSDN博主「zqixiao_09」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zqixiao_09/article/details/51106663
————————————————

驱动程序主要有三个文件:bcmdhd.ko/ fw_bcmdhd.bin/ nvram.txt
内核需要打开CONFIG_CFG80211=y
注释掉#CONFIG_BRCMFMAC is not set
首先要修改内核源码

######添加Kconfig关联,根据上面截图提示,我们在drivers目录下的Kconfig文件中添加source “drivers/net/wireless/bcmdhd/Kconfig”

######把博通提供的源码解压到相关目录,记得备份之前的文件再删掉这些文件,驱动完全使用解压后的文件。


然后在drivers/net/wireless/目录下的Makefile中添加如下内容

这样Kconfig和Makefile都关联起来了

######配置编译环境,编译内核,目的是让其支持新的博通驱动代码。

进入linux内核代码目录:
~/imx6ull-songzhi/fsl-release-bsp/build/tmp/work/imx6ull14x14evk-poky-linux-gnueabi/linux-imx/4.1.15-r0/git$
source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
export ARCH=arm
export CROSS_COMPILE=arm-poky-linux-gnueabi-
make imx_v7_defconfig
make uImage LOADADDR=0x12000000(这里的载入地址是IMX6Q的,请换成IMX6ULL的内核载入地址)提示说配置已经写入隐藏的配置文件中# configuration written to .config
vim .config
搜索并配置CONFIG_CFG80211 = y
注释掉#CONFIG_BRCMFMAC is not set
其实默认的就是上面这样的,不用修改make menuconfig
注意终端窗口尺寸太小是会报错的
在device drivers中可以看到新添加的博通驱动配置
另外还需要选择合适的接口类型和中断方式


配置结束后保存并覆盖已有的.config文件即可

这时内核已经配置结束,需要在你编译出来的文件系统中添加刚才配置的文件路径中的文件

/home/marvin/imx6ull-songzhi/fsl-release-bsp/build/tmp/deploy/images/imx6ull14x14evk/

在这里会有编译好的文件系统,取决于你使用bitbake的镜像名称。

解压并添加刚才的文件,路径要对,名称要对,结束后重新打包。

进入解压出来的文件系统的目录,把该目录下的所有文件(*)都打包
tar -cjf rootfs.tar.bz2 *  //可以自己命名压缩后的文件名
重新打包成tar.bz2格式
结束后将新的内核和文件系统更新即可使用

####在内核中添加博通驱动程序的使用方法
1.将bcmdhd.ko放到…/kernel/drivers/net/wireless/bcmdhd
2.将/drivers/net/wireless/bcmdhd/Kconfig文件修改如下:
obj-$(CONFIG_BCMDHD) += bcmdhd/
3.WIFI 驱动配置,在menuconfig 中修改如下:
firmware/nvram/config

####在ROOTFS文件系统中添加自己的软件
https://blog.csdn.net/sy373466062/article/details/50370323

marvin@marvin-VirtualBox:~/imx6ull-songzhi/fsl-release-bsp/sources$ find . -name *core-image-minimal*.bb*

####恩智浦官方yocto教程
https://community.nxp.com/docs/DOC-94849
https://community.nxp.com/docs/DOC-94023

####WLAN DONGLE OVERVIEW
The Dongle Host Driver (DHD) is the executable module that provides encapsulated communication between the host device and the Ampak module over the SDIO bus.

————————————————
####概念:

######Firmware:
WiFi芯片内部有一个小系统,用来运行802.11协议,此部分代码就叫Firmware。有些芯片(例如 broadcom)的Firmware是以文件的形式存放的,有些芯片(例如 realteck)的Firmware是做到驱动代码中的。

######Nvram:
WiFi芯片需要作相应的RF参数校准,校准值等信息一般放到到Nvram中。例如,同一个芯片bcm4330,做成不同的模块时,需要不同的Nvram。另外,有些芯片(例如realtek)将RF参数校准等信息写到芯片的EEPROM中,这部分工作在模块出厂时完成
WiFi芯片工作前,需要host先下载Firmware文件到WiFi芯片中,此部分工作在WiFi驱动中完成。

######路径:
Firmware与Nvram文件存放于external/wlan_loader/firmware/目录中,最终被编译到系统的/system/etc/firmware
原文链接:https://blog.csdn.net/kris_fei/article/details/76804992
————————————————
————————————————
######固件
1.Firmware,是表示运行在非“控制处理器”(指不直接运行操作系统的处理器,例如外设中的处理器,或者被用于bare metal的主处理器的其中一些核)中的程序。这些程序很多时候使用和操作系统所运行的处理器完全不同的指令集。这些程序以二进制形式存在于Linux内核的源代码树中,生成目标系统的时候,通常拷贝在/lib/firmware目录下。当driver对device进行初始化的时候,通过request_firmware()等接口,在一个用户态helper程序的帮助下,可以把指定的firmware加载到内存中,由驱动传输到指定的设备上。

2.所以,总的来说,其实driver和firmware没有什么直接的关系,但firmware通常由驱动去加载。我们讨论的那个OS,一般不需要理解firmware是什么,只是把它当做数据。firmware是什么,只有使用这些数据的那个设备才知道。好比你用一个电话,电话中有一个软件,这个软件你完全不关心如何工作的,你换这个软件的时候,就可以叫这个软件是“固件”。

版权声明:本文为CSDN博主「zqixiao_09」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zqixiao_09/article/details/51106663
————————————————

驱动程序主要有三个文件:bcmdhd.ko/ fw_bcmdhd.bin/ nvram.txt
内核需要打开CONFIG_CFG80211=y
注释掉#CONFIG_BRCMFMAC is not set
首先要修改内核源码

######添加Kconfig关联,根据上面截图提示,我们在drivers目录下的Kconfig文件中添加source “drivers/net/wireless/bcmdhd/Kconfig”

######把博通提供的源码解压到相关目录,记得备份之前的文件再删掉这些文件,驱动完全使用解压后的文件。


然后在drivers/net/wireless/目录下的Makefile中添加如下内容

这样Kconfig和Makefile都关联起来了

######配置编译环境,编译内核,目的是让其支持新的博通驱动代码。

进入linux内核代码目录:
~/imx6ull-songzhi/fsl-release-bsp/build/tmp/work/imx6ull14x14evk-poky-linux-gnueabi/linux-imx/4.1.15-r0/git$
source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
export ARCH=arm
export CROSS_COMPILE=arm-poky-linux-gnueabi-
make imx_v7_defconfig
make uImage LOADADDR=0x12000000(这里的载入地址是IMX6Q的,请换成IMX6ULL的内核载入地址)提示说配置已经写入隐藏的配置文件中# configuration written to .config
vim .config
搜索并配置CONFIG_CFG80211 = y
注释掉#CONFIG_BRCMFMAC is not set
其实默认的就是上面这样的,不用修改make menuconfig
注意终端窗口尺寸太小是会报错的
在device drivers中可以看到新添加的博通驱动配置
另外还需要选择合适的接口类型和中断方式


配置结束后保存并覆盖已有的.config文件即可

这时内核已经配置结束,需要在你编译出来的文件系统中添加刚才配置的文件路径中的文件

/home/marvin/imx6ull-songzhi/fsl-release-bsp/build/tmp/deploy/images/imx6ull14x14evk/

在这里会有编译好的文件系统,取决于你使用bitbake的镜像名称。

解压并添加刚才的文件,路径要对,名称要对,结束后重新打包。

进入解压出来的文件系统的目录,把该目录下的所有文件(*)都打包
tar -cjf rootfs.tar.bz2 *  //可以自己命名压缩后的文件名
重新打包成tar.bz2格式
结束后将新的内核和文件系统更新即可使用

####在内核中添加博通驱动程序的使用方法
1.将bcmdhd.ko放到…/kernel/drivers/net/wireless/bcmdhd
2.将/drivers/net/wireless/bcmdhd/Kconfig文件修改如下:
obj-$(CONFIG_BCMDHD) += bcmdhd/
3.WIFI 驱动配置,在menuconfig 中修改如下:
firmware/nvram/config

####在ROOTFS文件系统中添加自己的软件
https://blog.csdn.net/sy373466062/article/details/50370323

marvin@marvin-VirtualBox:~/imx6ull-songzhi/fsl-release-bsp/sources$ find . -name *core-image-minimal*.bb*

####恩智浦官方yocto教程
https://community.nxp.com/docs/DOC-94849
https://community.nxp.com/docs/DOC-94023

IMX6ULL博通wifi移植BCM4345C5相关推荐

  1. 苹果iOS 10.3.1修复博通Wi-Fi芯片重大安全漏洞

    如果你还没有将设备升级到 iOS 10.3.1 的话,那么现在是个机会了.因为不久前发布的 iOS 10.3.1,修复了 iPhone 中博通 Wi-Fi 芯片的一个重大安全漏洞,该安全漏洞可能会使在 ...

  2. 第一只WiFi蠕虫的诞生:完整解析博通WiFi芯片Broadpwn漏洞(含EXP/POC)

    过去的几个月里,Android 和 iOS 数十亿台设备中都曾出现过可怕的 WiFi 远程代码执行漏洞 BroadPwn.谷歌 7 月初发布了修复补丁,而苹果则是在 7 月 19 日发布的更新.而此次 ...

  3. 博通wifi驱动详解

    1        WLAN技术 WLAN是英文WirelessLAN的缩写,就是无线局域网的意思.无线以太网技术是一种基于无线传输的局域网技术,与有线网络技术相比,具有灵活.建网迅速.个人化等特点.将 ...

  4. 博通wifi 芯片配置工具wl 详解

    wl是博通wifi 芯片配置工具,除可以设置phy芯片的一些硬件参数如信道.频宽.和信道带宽外,还可以查看phy芯片的一些状态和参数.在配置phy芯片一些硬件参数之前要执行wl down 将芯片关闭, ...

  5. 解决Duo13内置博通蓝牙和博通Wifi冲突

    http://benyouhui.it168.com/forum.php?mod=viewthread&tid=4869009&typeid=994&typeid=994 我先 ...

  6. 博通wifi驱动详解(三)

    1        WLAN驱动结构介绍 1.1      SDIO驱动 在drivers/mmc下面是mmc卡,SD卡和SDIO卡驱动部分,其中包括host驱动,card驱动和core部分,由于网络接 ...

  7. 芯片验证漫游指南_博通Wi-Fi芯片被曝安全漏洞,超10亿台终端或受影响,苹果、谷歌、小米、华为等大厂在列...

    知名电脑安全软件公司 ESET 的研究人员在 Wi-Fi 芯片中发现了一个先前未知的漏洞,并将其命名为 Kr00k.保守估计,这一漏洞将涉及超过 10 亿台支持 Wi-Fi 的设备和接入点. 据科技媒 ...

  8. iPhone/三星/Nexus等手机的博通Wi-Fi芯片易被OTA攻击

    谷歌旗下 Project Zero 安全研究人员发现了一个与博通(Broadcom)Wi-Fi 芯片有关.复杂且令人不快的 Bug .鉴于 Broadcom 为 iPhone.Nexus.三星等公司的 ...

  9. linux 博通wifi驱动,博通WiFi驱动

    补: //调用bcm_wlan_set_power,将ap6335的12脚拉低,让其内部电源稳压器工作.上电完成返回TRUE.上电正常返回值err=0. [cpp] view plain copy 7 ...

最新文章

  1. android倒计时功能,android实现倒计时功能(开始、暂停、0秒结束)
  2. python 权限修饰符
  3. for循环中执行setTimeout问题(任务队列的问题)
  4. 第五章 - 图像形态学 - 基于图像金字塔的图像分割(cvPyrSegmentation)
  5. 地推主管需要跑业务吗
  6. Linux Shell数值比较和字符串比较及相关
  7. EXCEL 制作万年历
  8. AS3组件之Slider滑块拖动条
  9. 【尚硅谷】JavaWeb
  10. Visio Professional详细教程(一)
  11. 织梦采集_dede采集_dede自动采集
  12. 低功耗服务器cpu性能排行,电脑CPU天梯图性能排行榜 CPU性能天梯图2018年6月最新版...
  13. 第三阶段应用层——1.7 数码相册—电子书(1)—实现
  14. 王强是如何学计算机的,浙江大学计算机科学与技术学院导师介绍:王强
  15. tp对接抖音sdk_Thinkphp集成抖音SDK的实现方法
  16. Spring boot 事物管理
  17. 计算机成绩排名公式,职称计算机考试:Excel的数据分析—排位与百分比
  18. Windows安装VMware(Linux系统)
  19. ajax如何使用,页面如何调试
  20. 芯科EFR32BG22芯片,详细分析与nRF52805和CC2640R2F区别

热门文章

  1. 深度学习7 Transformer系列实例分割Mask2Former
  2. Python数据可视化:香港地图、房价可视化,绘制气泡图
  3. 大数据学习之——Zookeeper安装
  4. sql数据库之提取时间函数date()、year()、month()...及示例
  5. 线上自行车销售业务分析报告
  6. RTX51 Tiny用户指南(一)
  7. 【Linux】Linux 中 man 1、man 2 和 man 3 的区别
  8. 顶尖游戏设计师陈星汉:虚拟世界的架构观
  9. selenium 酷狗音乐搜索歌曲播放
  10. 第二次作业--结对作业