关于ESP32与海思平台(作为host)建立Wi-Fi连接的疑问

chenluhui2019
Posts: 36
Joined: Wed Apr 10, 2019 9:08 am

关于ESP32与海思平台(作为host)建立Wi-Fi连接的疑问

Postby chenluhui2019 » Tue Oct 13, 2020 7:14 am

贵司在github上提供了ESP32与树莓派之间的SDIO接口 Wi-Fi连接方案,目录为esp-hosted-master
方案中关于Wi-Fi部分,TCP/IP协议栈是运行在树莓派上面(如附件图)
(1)那如果树莓派关机了,ESP32还能正常的上网执行业务吗(TCP/IP协议栈也会在ESP32上执行吗)?
(2)和上题类似,ESP32在这个方案中是充当类似ESP8089之类的网卡还是充当一个Soc可运行业务代码?
(3)我们是海思平台。那么海思Linux平台(uclibc,Hi35XX系列)并不能像树莓派教程里那样去执行sudo apt-get install raspberrypl-kernel-headers和pip install utils之类的语句,要如何完成setup.md的环境安装并运行python脚本呢?
Attachments
linux_hosted_design.png
ESP32与树莓派的软硬件连接结构图
linux_hosted_design.png (45.07 KiB) Viewed 6245 times

ESP_morris
Posts: 290
Joined: Wed Sep 05, 2018 6:23 am

Re: 关于ESP32与海思平台(作为host)建立Wi-Fi连接的疑问

Postby ESP_morris » Wed Oct 14, 2020 5:12 am

(1):ESP32上并没有运行TCP/IP协议栈
(2):可以理解为网卡
(3):这个项目提供了Linux端的驱动和Makefile,需要你们用海思的工具链和内核编译成linux内核模块,这属于Linux内核驱动开发的范畴。host端依赖的工具包需要你们自己交叉编译到文件系统中或者使用buildroot等项目在menuconfig中勾选。

chenluhui2019
Posts: 36
Joined: Wed Apr 10, 2019 9:08 am

Re: 关于ESP32与海思平台(作为host)建立Wi-Fi连接的疑问

Postby chenluhui2019 » Thu Oct 15, 2020 9:20 am

ESP_morris wrote:
Wed Oct 14, 2020 5:12 am
(1):ESP32上并没有运行TCP/IP协议栈
(2):可以理解为网卡
(3):这个项目提供了Linux端的驱动和Makefile,需要你们用海思的工具链和内核编译成linux内核模块,这属于Linux内核驱动开发的范畴。host端依赖的工具包需要你们自己交叉编译到文件系统中或者使用buildroot等项目在menuconfig中勾选。

谢谢您的回复
关于问题(2),我编译并在海思平台成功的加载了esp32_sdio.ko,并且可以通过esp32 ping通外网(把ESP32当做网卡)。

我的疑问如下:
ESP32自己可以上网,海思平台如果把ESP32当做网卡后(ifconfig能看到的网卡设备),也可以借助ESP32上网。那是否可以海思平台和ESP32都能同时借助ESP32的wifi模块上网呢?(比如ESP32连上网之后,海思和ESP32各有tcp/ip栈,esp32是代理,海思利用ESP32共享此网络)

ESP_morris
Posts: 290
Joined: Wed Sep 05, 2018 6:23 am

Re: 关于ESP32与海思平台(作为host)建立Wi-Fi连接的疑问

Postby ESP_morris » Thu Oct 15, 2020 10:10 am

我觉得你的想法很有意思,值得尝试,建议去https://github.com/espressif/esp-hosted/issues提feature request ;)

xiaoyao
Posts: 18
Joined: Wed Apr 10, 2019 9:04 am

Re: 关于ESP32与海思平台(作为host)建立Wi-Fi连接的疑问

Postby xiaoyao » Wed Oct 21, 2020 2:45 am

你好,
我司目前也有这个项目需求,实现esp32和外接芯片能同时通过esp32的网卡去联网。我去运行esp-hosted demo和esp-iot-solution里的eth2wifi demo,发现网络数据包802.11的数据接收转发调用

Code: Select all

esp_err_t esp_wifi_internal_reg_rxcb(wifi_interface_t ifx, wifi_rxcb_t fn);

int esp_wifi_internal_tx(wifi_interface_t wifi_if, void *buffer, uint16_t len);
这两个接口去实现桥接功能。如果调用了这两个接口,外接芯片能联网,esp32本地就连不了网络。如果不调用,则esp32本地能联网。有没有办法能同时满足两边都能联网?

我们有想到一个方法,在esp32做路由功能,虚拟一张网卡给外接芯片使用,外接芯片通过SDIO/SPI连接过来,esp32分配假IP给它,后续的网络通讯由esp32这边实现路由转发,这里面的数据转发可以esp_wifi_internal_tx()接口,但是数据接收下来分发没发现有接口可以中间截取的?不知道这种方法可行吗?

Who is online

Users browsing this forum: No registered users and 50 guests