关于ATWILC1000 wifi模块在imx6q上SDIO接口驱动调试

 SDIO总线和USB总线类似,SDIO总线也有两端,其中一端是主机(HOST)端,另一端是设备端(DEVICE),采用HOST- DEVICE这样的设计是为了简化DEVICE的设计,所有的通信都是由HOST端发出命令开始的。在DEVICE端只要能解溪HOST的命令,就可以同HOST进行通信了。

SDIO接口类似于USB接口,如果了解USB接口调试SDIO也就不难了。

首先说一下如何添加驱动:

我使用的linux内核为4.1.15,MCU为NXP下的imx6q芯片

1. 我将ATWILC1000的wifi驱动放入到内核下的drivers/net/wireless/文件夹下,并且在Kconfig和Makefile下分别指定该文件路径

   Makefile中添加:

Kconfig中添加:

最后在执行make menuconfig在加该模块编入到内核中

在Device Drivers -》Network Device -》Wireless LAN -》Microhip device 下

选中,然后执行make zImage 重新编译内核

同时在设备树中找到对应的节点,这里用的是SD2_DATA这一组,

打开arch/arm/boot/dts目录下的imx6qdl-sabresd.dtsi设备树找到节点&usdhc2

关于ATWILC1000 wifi模块在imx6q上SDIO接口驱动调试_第1张图片

 

添加wilc_sdio设备树节点

重新编译设备树,并烧写到imx6q板子中。

执行ifconfig -a

关于ATWILC1000 wifi模块在imx6q上SDIO接口驱动调试_第2张图片

注意:一般使用wifi都需要添加一个固件,这里直接添加到内核文件夹中 firmware/下新建mchp文件夹将固件放入到该文件夹下。

并且在Makefile下加入:

重新编译内核,烧入到开发板中,

执行 ifconfig wlan0 up

打印以下信息

关于ATWILC1000 wifi模块在imx6q上SDIO接口驱动调试_第3张图片

证明wifi可以使用

特别注意:在这里需要将RESET_N和CHIP_EN引脚拉高SDIO_SPI_CFG引脚拉低否则wifi不工作在启动设备后一直找不到该驱动。到此为止结束了ATWILC1000 SDIO wifi驱动的添加。

                加载SDIO设备时,MMC系统中会进行扫描,如果扫描上该驱动才会加载该驱动,否则不进行加载。

你可能感兴趣的:(嵌入式开发,驱动开发)