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 主控CPU功能框图:
i.MX6UL/L核心模块产品:
i.MX6UL/L核心模块尺寸:
i.MX6UL/L核心模块引脚定义:
产品参数:
| | | | | NXP[size=10.5000pt] I.MX6UL/L[size=10.5000pt],Cortex-A7[size=10.5000pt],528MHZ/800MHZ (900MHZ Max) | | | 256MB DDR[size=10.5000pt]3[size=10.5000pt](Up to 1GB [size=10.5000pt]) | | | SLC NAND [size=10.5000pt](Up to 1GB) /QSPI NOR FLASH(Up to 64MB) | | | 内置24位 LCD控制器[size=10.5000pt] | | | | | | | | | | | | 支持软件和硬件复位 (直接写寄存器[size=10.5000pt]) | | | 串口8个,LVTTL电平(双网络复用其中3个串口) | | | | | | | | | | | | | | | | | | | | | |
评估板(工控板)实物图:
前言由于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内核中,需要修改Kconfig与Makefile文件。步骤如下: 1、使能CFG80211以及移除BRCMFMAC驱动配置项 CONFIG_CFG80211=y # CONFIG_BRCMFMACis not set 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所示: 注:可将CONFIG_BCMDHD=y或CONFIG_BCMDHD=m添加到内核配置文件中(EVB-6ULx 的为evb6ulx_defconfig),使之包含bcmdhd驱动。 2.2 固件
以2.1节的固件与NVRAM文件的存储路径为例,说明在buildroot与yocto下打包固件到rootfs方法。 · buildroot: 在BR2_ROOTFS_OVERLAY变量所指定的目录中新建子目录:/ lib/firmware/brcm/,然后复制固件以及NVRAM文件到改目录,然后重编译buildroot,新生成的rootfs中将包含固件与NVRAM。 · yocto 在sources/meta-embfly/recipes-connectivity/中新建recipe,编译该recipe,然后重新生成rootfs即可包含固件与NVRAM。有关代码参考EVB-6ULx yocto BSP。 3 网络通信测试
WiFi网络通信测试内容包括:连通性测试与带宽测试。前者旨在验证WiFi的功能,后者更多地关注性能。 3.1 连通性测试
1、连接AP(access point) root@embfly ~# wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -B 假设以将连接AP的配置写入/ect/wpa_supplicant.conf文件,举例如下: 连接AP的过程内核会枚举设备、加载固件等操作,调试信息中看到ssid、加密方式则表明连接成功,入图3-1: 注:亦可通过iwconfig指令查看WiFi连接信息。 2、获取IP root@embfly ~# udhcpc -i wlan0 执行udhcpc,从路由获取一个动态IP,如图3-2: 4、连通性测试 root@embfly ~# ping 192.168.0.1 -I wlan0 -c 5 ping指令测试网络联通性,如图3-3所示: 3.2 带宽测试 在完成连接AP与成功获取IP的基础上,测试WiFi的带宽。 1、开启iperf3服务器 2、带宽测试 执行iperf3测试前,为免受干扰,先将无关的网络设备关闭,只保留要测试的设备。例如,需要测试wlan0,先将eth0关闭。 root@embfly ~# ifconfig eth0 down root@embfly ~# iperf3 -c 192.168.0.114 -p 1472 -t 10 -4 测试TCP带宽、端口为1472、时长10s、IPv4标准,如图3-4所示:
|