打印

基于I.MX6UL平台的WIFI模块AP6214A驱动移植

[复制链接]
450|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
szembed|  楼主 | 2021-5-21 11:58 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 szembed 于 2021-5-21 14:06 编辑

IoT-6ULX简要介绍:                                IoT-6ULX,主要面向Internet Of Things应用,该产品集成了 ARM Cortex-A7 900Hz(MAX) NXP I.MX6UL/L 处理器,并板载AP6214 WIFI模块+BT4.2,稳定运行Linux 4.14和YACTO。IoT-6ULX提供了3.3V I/O接口,可提供宽温的工业组件,运行于条件恶劣的工业现场!
产品特性:
l 采用NXP公司Cortex-A7 I.MX6UL/L处理器,运行最高速度为900MHZ,低功耗;
l 支持128M-1G BYTES DDR3 SDRAM;
l 支持SLC NAND(256M-1G BYTES)或QSPI NOR FLASH可启动;
l 最多可支持一路百兆以太网+AP6214 WIFI+BT 4.2;
l 支持两路高速USB OTG,可接口4G/WIFI模块;
l 支持最多4路串口,双路CAN BUS;
l 支持DS1338高精度时钟,带电池备份
l 支持分辨率最高的1366*768显示接口;
l 邮票孔式核心模块,性价比高,low Price,稳定性好;
l 稳定的操作系统的支持,可预装LINUX 4.14.78/Yacto,欢迎客户定制
超小体积,尺寸为:39X39X1.0MM




评估板(工控板)实物图:
前言
由于linux内核中使用brcmfmac驱动针对于AP6214稳定性不佳,经常无法连接NETGEAR R6220路由,且通信速度未能接近WiFi模块的标称值,故移植bcmdhd驱动。
下文简要介绍基于盈鹏飞嵌入式的IoT-6ULX/EVB-6ULx平台、i.MX Linux-4.14.98内核,如何集成bcmdhd驱动、并测试无线网络通信的过程。
1 IoT-6ULX中CPU与AP6214的硬件连接

2 驱动移植
   bcmdhd驱动是Dongle Host Driver (DHD) 是一个可执行的模块,它基于SDIO总线之上提供了通信主机与Ampak (WiFi)模块之间的协议栈封装。DHD架构如图1-1所示:

驱动移植除了处理驱动代码,还要设定固件与NVRAM文件的存储路径。驱动加载时从指定的路径读取固件与NVRAM,当不能正常读取时,会导致WiFi模块不正常通信。
2.1 内核驱动
与集成其他的Linux驱动类似,bcmdhd驱动添加到Linux内核中,需要修改KconfigMakefile文件。步骤如下:
1、使能CFG80211以及移除BRCMFMAC驱动配置项
2、驱动配置
        解压bcmdhd驱动代码bcmdhd.1.579.77.41.x.7z到drivers/net/wireless/目录,并重命名为bcmdhd(删除版本信息,为了缩短路径)。作如下修改:
① 在drivers/net/wireless/Kconfig中添加:
source "drivers/net/wireless/bcmdhd/Kconfig"
② 在drivers/net/wireless/Makefile中添加:
obj-$(CONFIG_BCMDHD) += bcmdhd/
3、配置dts与修改代码
① 配置dts
添加WiFi上电regulator,GPIO为WL_REG_ON。
cd-post属性检测不可插拔主机设备以及让客户启动已经就绪的端驱动程序。调试过程中,因为少了该属性,WiFi设备不能正常枚举。此外,还需注意添加wifi-host 属性,用于BCM WiFi设备卡检测。
② 修改代码
dts中可以看出,使用了外部中断,因此需在drivers/net/wireless/bcmdhd/Makefile打开:
CONFIG_BCMDHD_OOB := y
EVB-6ULx板载的AP6214A模块为SDIO接口,因此需在drivers/net/wireless/bcmdhd/Makefile打开:
CONFIG_BCMDHD_SDIO := y
WL_REG_ON与WL_HOST_WAKE使用dts配置,而不是hardcode,因此需在drivers/net/wireless/bcmdhd/Makefile打开:
CONFIG_BCMDHD_DTS := y
在drivers/net/wireless/bcmdhd/Kconfig中修改固件与NVRAM文件的存储路径:
default "/lib/firmware/brcm/fw_bcmdhd.bin"
default "/lib/firmware/brcm/nvram.txt"
在drivers/net/wireless/bcmdhd/dhd_gpio.c中添加上电控制:
注:① 以上的打开是指,将Makefile中注释符号#删除;
② 固件与NVRAM的路径、文件名可随意指定。

4、配置WiFi驱动
选择Broadcom FullMAC wireless cards support,如图2-1所示:



邮票孔式ARM工控模块1.png (78.42 KB )

邮票孔式ARM工控模块1.png

I.MX6UL核心模块产品.png (927.08 KB )

I.MX6UL核心模块产品.png

I.MX6UL 核心模块尺寸1.png (125.56 KB )

I.MX6UL 核心模块尺寸1.png

I.M6ULX核心模块引脚定义1.png (646.59 KB )

I.M6ULX核心模块引脚定义1.png

评估板实物图.png (870.62 KB )

评估板实物图.png

1328560a74a3703e00.png (217.49 KB )

1328560a74a3703e00.png

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:ARM工控开发板,QQ:259134942 http://artcor.taobao.com/

44

主题

267

帖子

0

粉丝