海思wifi驱动一

文章目录

      • 环境说明
      • 一. 修改wifi驱动
        • 1. 修改reg_on和host_wake引脚
        • 2. 屏蔽扫卡操作
        • 3. 将wifi驱动代码放到linux内核中进行编译
      • 二. 配置内核
        • 1. CFG80211配置
        • 2. sdio配置
        • 3. 配置wifi驱动模块
        • 4. 编译内核和wifi驱动模块
      • 三. 修改uboot中 sdio口复用
      • 四. 在板子上调试 wifi驱动

环境说明

  • 平台:hi3516cv500
  • wifi模块:AP6255 (sdio接口)
  • kernel版本:4.9.37
  • wifi驱动版本:bcmdhd.100.10.545.x

一. 修改wifi驱动

1. 修改reg_on和host_wake引脚

将reg_on和host_wake引脚修改为我们自己板子上连接到hi3516cv500的GPIO口,具体修改如下:
找到dhd_gpio.c文件:将其中的 gpio_wl_reg_ongpio_wl_host_wake引脚修改为自己板子上的GPIO口,如我的 reg_on 引脚接到的是 GPIO0_4,那么 gpio_wl_reg_on 就是 0x8+4 = 4,我的HOST_WAKE接的是 GPIO0_5gpio_wlhost_wake 就是 0x8+5 = 5。
海思wifi驱动一_第1张图片

2. 屏蔽扫卡操作

扫卡操作驱动里调用的是linux内核中的接口,这个版本的驱动中用的比较老的接口,与当前4.9版本的接口对应不上,可以直接屏蔽掉,linux开机时内核中会进行扫卡操作。
文件:dhd_gpio.c 函数名:dhd_wlan_set_carddetect()
需要屏蔽的地方:将截图中红色划线的函数进行注释,不然编译不过。
海思wifi驱动一_第2张图片

3. 将wifi驱动代码放到linux内核中进行编译
  • 将驱动代码放到如下路径:/linux-4.9.37.y/drivers/net/wireless/bcmdhd
  • Makefile中增加wifi驱动代码编译:
    路径:/linux-4.9.37.y/drivers/net/wireless/Makefile
    海思wifi驱动一_第3张图片
  • Kconfig 中增加bcmdhd驱动配置选项:
    Kconfig路径:/linux-4.9.37.y/drivers/net/wireless/Kconfig
    海思wifi驱动一_第4张图片

二. 配置内核

1. CFG80211配置

海思wifi驱动一_第5张图片

2. sdio配置

海思wifi驱动一_第6张图片
我们的wifi模块是接的sdio1,需要在设备树中将sdio1打开:
disable状态改成okay
文件路径:arch/arm/boot/dts/hi3516cv500-demb.dts
海思wifi驱动一_第7张图片
还要在设备树中添加sdio中断状态:
文件路径:arch/arm/boot/dts/hi3516cv500.dtsi
海思wifi驱动一_第8张图片

3. 配置wifi驱动模块

海思wifi驱动一_第9张图片
这里建议配置成模块,方便调试,sdio使用内部中断,In-Band Interrupt

4. 编译内核和wifi驱动模块

make ARCH=arm CROSS_COMPILE=arm-himix200-linux- uImage -j12
make ARCH=arm CROSS_COMPILE=arm-himix200-linux- modules
海思wifi驱动一_第10张图片
生成的wifi驱动文件为bcmdhd.ko

三. 修改uboot中 sdio口复用

具体操作可参见 Hi3516CV500_SDK_V2.0.2.0/package/osdrv/readme_cn.txt中uboot编译。
海思wifi驱动一_第11张图片
将单板Excel表格中添加sdio复用寄存器配置,关于GPIO复用寄存器配置说明前面章节中已经说明,这里不再复述。
海思wifi驱动一_第12张图片

四. 在板子上调试 wifi驱动

  • 重新烧写上面编译过的uboot,uImage。
  • bcmdhd.ko(wifi驱动),fw_bcm43455c0_ag_apsta.bin(固件),nvram_ap6255.txt放到板子上。
  • 加载驱动:`insmod bcmdhd.ko “firmware_path=/opt/fw_bcm43455c0_ag_apsta.bin nvram_path=/opt/nvram_ap6255.txt”
  • 若加载成功,ifconfig -a会出现 wlan0网络设备:
    海思wifi驱动一_第13张图片
    后面章节我们会继续讲解在调试过程中遇到的问题以及排查方法。

你可能感兴趣的:(海思开发专栏)