NUC980移植ESP32WiFi模块(spi接口)

项目需求:nuc980需要一个WiFi模块,硬件设计上采用了esp32,通过spi接口连接了nuc980,因此esp32就作为了一个普通的WiFi模块。

移植步骤:

一,esp已经更新了esp32作为spi和sdio接口WiFi模块的Linux固件代码包,里面还包括了Linux下对应的驱动程序。下载:https://github.com/espressif/esp-hosted/tree/master,我采用的是ng包。

二,下载完成后找到esp_hosted_ng\esp\esp_driver\network_adapter,进去编译,不需要修改代码,但是要修改sdkconfig,我的make menuconfig 图形界面一直报错显示不出来,因此我就直接修改了sdkconfig,默认是支持SDIO的。需要把SDIO关闭,打开SPI。打开后编译烧录,具体编译步骤不再写了,esp官方文档很多。

二,开始编译980的驱动。

1.进入esp_hosted_ng\host目录,修改Makefile的CROSS_COMPILE和KERNEL目录,CROSS_COMPILE指定交叉编译工具链前缀,KERNEL指定内核源码目录。

2.由于内核版本不同,编译可能会遇到错误,根据具体错误提示进行修改源码,我的内核是4.4,修改如下图。大概就是不同内核的函数传参不同,还有的找不到我直接屏蔽掉了。

3.内核进行配置,具体可以看https://www.cnblogs.com/twzy/p/15160808.html

大概就是启用spi,启用cfg80211等。

4,先编译一遍没问题的话,就要修改驱动了,修改的地方不多,但很重要。

        一,修改esp_release_ng_host\spi\esp_spi.c下的    esp_board.bus_num = 1和esp_board.chip_select = 0;具体看硬件连接在哪个spi总线。和对应的片选线是几。由于我的内核没有启用设备树,所以没有修改设备树,如果有设备树的话,对应总线上有其他设备要屏蔽掉。没有设备树在linux-4.4.y\arch\arm\mach-nuc980\dev.c中屏蔽掉。的提示。

        如果spi修改完,加载驱动会有下面的打印。大概率代表spi没问题。

        二,修改esp_release_ng_host\spi\esp_spi.h中对应的两个中断脚,具体是几看硬件原理图。

三,到这里本来以为已经没问题,但是对应的两个中断脚只有第一次中断函数会进去。就再也进不去中断了,后面用esp32模拟上升沿,下降沿都不行,最后查资料才知道,Linux下的中断也是要清中断标志位的。于是去新唐官网翻手册。找到RHIEN要置1,每次进入中断函数先把两个外部中断脚RHIEN置1。

四,到这里在nuc980里面加载驱动后,复位esp32,980打印下面说明驱动已经OK。

五,接下来ifconfig -a,可以看到esp32的网卡espsta0。修改etc/wpa_supplicant.conf,如果没有这个文件要在文件系统使能wpa,然后重新编译烧录文件系统。

使用wpa_supplicant -B -i espsta0 -c /etc/wpa_supplicant.conf,此时已经连上了路由器。使用命令找不到的话,要在文件系统中使能,然后重新编译烧录文件系统。

  • wireless tools     --无线管理工具
  • wpa_supplicant  --连接无线网络
  • dhcpcd               --获取IP地址

在用udhcpc -i espsta0,分配ip.

ifconfig -a可以看到已经有ip了

ping 百度测试网络,ping www.baidu.com -I espsta0,成功。

  • 16
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值