搜索
bottom↓
回复: 26

ESP8266模块能否只当PHY传输用,不使用内部协议栈

[复制链接]

出0入0汤圆

发表于 2017-8-29 11:52:31 | 显示全部楼层 |阅读模式
本帖最后由 菜包 于 2017-8-29 12:34 编辑

之前有个产品使用STM32F407作主控,在上面用LwIP实现了简单的Web管理和TFTP文件传输,

现在想给产品加上wifi功能,看到esp8266似乎挺简单的,用串口就能控制,但网上找到的各种例程都是使用内部TCP/IP协议栈做应用,

不知道能不能把407中的LwIP底层收发函数改成通过ESP8266收发数据,协议处理还是用407的LwIP完成,这样对原系统的改动最少,Web之类的应用都不需要改动,

如果要把原来407中的Web和TFTP程序移植到8266工作量有点大,还要同时维护407中的Web和8266中的Web应用,才能保证有线和无线看到的内容一样,不知道怎么弄

修改一下:经下面网友提醒,这类应用应该是把ESP8266当成类似MCU内部的MAC来用,完成网络包的收发,不是PHY

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入8汤圆

发表于 2017-8-29 12:08:51 来自手机 | 显示全部楼层
你这个不叫phy,叫mac,理论上没问题
建议从IP层那里剥离更合理

出0入0汤圆

 楼主| 发表于 2017-8-29 12:32:06 | 显示全部楼层
canspider 发表于 2017-8-29 12:08
你这个不叫phy,叫mac,理论上没问题
建议从IP层那里剥离更合理

嗯你说的没错,是当成MAC用,能不能说的详细点,或者给个例子吗?
看到的ESP8266资料都是基于它内部协议栈的,没看到类似的应用

出0入0汤圆

发表于 2017-8-29 13:08:29 | 显示全部楼层
是不是可以用pppos:stm32跑lwip做pppos的client,esp也跑lwip但做server。

出0入0汤圆

 楼主| 发表于 2017-8-29 15:23:22 | 显示全部楼层
K.O.Carnivist 发表于 2017-8-29 13:08
是不是可以用pppos:stm32跑lwip做pppos的client,esp也跑lwip但做server。

pppos是什么,只听说过pppoe,如果是pppoe的话,怎么做呢?

出0入0汤圆

发表于 2017-8-29 17:01:55 | 显示全部楼层
不熟悉8266的话买一个串口-wifi的透传模块就可以了吧

出0入0汤圆

 楼主| 发表于 2017-8-29 17:08:52 | 显示全部楼层
liujingwei 发表于 2017-8-29 17:01
不熟悉8266的话买一个串口-wifi的透传模块就可以了吧

价格合适的话也可以考虑,有推荐的模块吗,我是在MCU里面跑LwIP协议栈哦,手机连上wifi后,可以打开MCU中的网页,不是简单的无线串口

出0入90汤圆

发表于 2017-8-29 20:20:24 | 显示全部楼层
用SDIO接口,可以做网卡用

出0入0汤圆

发表于 2017-8-30 01:16:05 | 显示全部楼层
可以,esp系列用的也是lwip,当然涉及到硬件层的部分是闭源的。
但是你可以参考,aHR0cHM6Ly9naXRodWIuY29tL3BmYWxjb24vZXNwLW9wZW4tbHdpcA== 这个项目以及其他一些对esp的逆向成果,比如说
aHR0cHM6Ly9naXRodWIuY29tL3BmYWxjb24vZXNwLW9wZW4tbHdpcC9ibG9iL2I5YTIzYTZlOWVmODhkOTk1YWU3NDAxNGU3MWE2YTQyMjdmNjFkNjIvaW5jbHVkZS9uZXRpZi93bGFuX2x3aXBfaWYuaA==
来获得底层接口。或者是这个,
aHR0cHM6Ly9naXRodWIuY29tL1N1cGVySG91c2UvZXNwLW9wZW4tcnRvcy9pc3N1ZXMvNA==
来取得甚至更底层一些的接口(在一定限制下直接收发原始的802.11包)
原理上来说你把这几个接口暴露给你stm那边就可以了,实际操作起来当然要复杂很多……
我没法发url,你可以自行base64解码

出0入0汤圆

 楼主| 发表于 2017-8-30 09:36:42 | 显示全部楼层
yangff 发表于 2017-8-30 01:16
可以,esp系列用的也是lwip,当然涉及到硬件层的部分是闭源的。
但是你可以参考,aHR0cHM6Ly9naXRodWIuY29t ...

这个似乎有点复杂啊,对8266开发不是很了解,我先看看吧,谢谢

出0入0汤圆

发表于 2017-8-30 14:13:31 | 显示全部楼层
菜包 发表于 2017-8-29 17:08
价格合适的话也可以考虑,有推荐的模块吗,我是在MCU里面跑LwIP协议栈哦,手机连上wifi后,可以打开MCU中 ...

你移植lwip的时候不是要编写底层数据接口么,底层数据收发转到串口上就行了。看样子你对8266编程不是很熟悉,透传方案最适合

出0入0汤圆

发表于 2017-8-30 17:27:16 来自手机 | 显示全部楼层
菜包 发表于 2017-8-30 09:36
这个似乎有点复杂啊,对8266开发不是很了解,我先看看吧,谢谢

如果性能要求不高的话感觉你还是在串口上搭个http proxy会比较简单一些。可以绕过这些底层协议。
ESP8266这边开一个HTTP server,handle的时候把请求整个通过串口发给stm,stm这边串口接受到请求之后直接把数据发到stm这边的httpserver,当作正常的请求处理,再把处理好的数据再用串口发回去

出0入0汤圆

 楼主| 发表于 2017-8-30 18:16:37 | 显示全部楼层
按照楼上你们两个的说法,我是不是应该用串口透传方式,8266开80端口监听,透传到串口上,然后在串口也做一套跟现在网口用的Web一样的server?如果同时有几个人打开网页会有影响吗?透传好像只能一对一?

出0入0汤圆

发表于 2017-8-30 20:38:31 | 显示全部楼层
菜包 发表于 2017-8-30 18:16
按照楼上你们两个的说法,我是不是应该用串口透传方式,8266开80端口监听,透传到串口上,然后在串口也做一 ...

透传是数据通路,和几个人访问没有关系……

出0入0汤圆

发表于 2017-8-30 22:14:32 | 显示全部楼层
407直接用SDIO WIFI ,可选的多了88W8801,BCM43362,RTL8189

出0入0汤圆

 楼主| 发表于 2017-8-31 09:51:32 | 显示全部楼层
irobot07 发表于 2017-8-30 22:14
407直接用SDIO WIFI ,可选的多了88W8801,BCM43362,RTL8189

谢谢你的建议,如果产品改版的话可能会考虑SDIO方案,目前的硬件只留了串口可以扩展(实际就是用来下程序的串口),因此优先考虑用支持串口的8266来弄,呵呵

出0入0汤圆

 楼主| 发表于 2017-8-31 09:52:44 | 显示全部楼层
yangff 发表于 2017-8-30 20:38
透传是数据通路,和几个人访问没有关系……

我先按这个办法试试,以前没搞过wifi,很多陌生的概念,谢谢

出0入0汤圆

发表于 2017-10-29 17:28:23 | 显示全部楼层
https://hackaday.io/project/8678-rpi-wifi

ESP8266 从 SDIO 启动

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2017-10-29 17:30:28 | 显示全部楼层
https://oshlab.com/esp8266-raspberry-pi-gpio-wifi/

ESP8266 Raspberry Pi GPIO Wifi

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2017-10-29 17:34:03 | 显示全部楼层
https://gitlab.com/goodwin-europe/raw-esp

ESP8266 WiFi模块的原始IP /以太网数据包固件

有时期望绕过ESP的TCP / IP协议栈并使用网络堆栈的主机微控制器。

此固件将ESP8266作为IP或以太网层链路提供给主机具有配置WiFi,日志记录等功能的所有通讯功能ESP8266通过基于二进制消息的协议通过RS232完成。

在IP转发模式下,ESP8266固件内部运行ARP,DHCP。

非DHCP UDP数据包和TCP数据包将转发给主机。
包从主机接收到的信息被注入到ESP的网络堆栈中。
ICMP数据包不是目前转发(因为我没有打扰,这很容易修复)。
支持AP / STA模式。网络可能配置为DHCP或静态。
此模式适用于ESP SDK <1.1.1。版本> = 1.1.1它倾向于在第一次注射包装后挂起,虽然我还没有测试版本> = 1.4。

在以太网转发模式下,ESP的LwIP堆栈完全分离。

它的定时器正在运行,它会不时地发送一些东西,但是那些数据包被丢弃。
来自WiFi接口的所有数据包都被重定向到主机和来自主机的数据包直接传递到ESP的WiFi接口。

Raw IP / Ethernet packet firmware for ESP8266 WiFi module

It's sometimes desirable to bypass ESP's TCP/IP stack and use network stack of a host microcontroller instead.

This firmware presents ESP8266 to the host as IP- or Ethernet-layer link with additional functions to configure WiFi, logging, etc. All communication with ESP8266 is done via binary message-based protocol over RS232.

In IP-forwarding mode ESP8266 firmware internally runs ARP and, optionally, DHCP. Non-DHCP UDP packets and TCP packets are forwarded to the host. Packets received from host are injected into ESP's network stack. ICMP packets aren't currently forwarded (because I haven't bothered, that's easy to fix). Both AP/STA modes are supported. Network may be configured with DHCP or statically. This mode works with ESP SDK <1.1.1. On version >=1.1.1 it tends to hang after the first injected packed, though I haven't tested with versions >=1.4.

In Ethernet-forwarding mode ESP's LwIP stack is completely detached. Its timers are operational and it attemps to send something from time to time, but those packets are dropped. All packets coming from WiFi interface are redirected to the host, and packets coming from host are passed directly to ESP's WiFi interface.

Compilation

Install cross-compilers as usual, change SDK_BASE in the Makefile to the root of non-OS ESP8266 SDK. After that run make. Firmware binaries will be built in firmware dir.

Prebuilt firmware is also provided in bin dir.

Host interface

Host interface is documented in user_main/message.h.

出10入0汤圆

发表于 2017-10-30 13:14:21 | 显示全部楼层
irobot07 发表于 2017-8-30 22:14
407直接用SDIO WIFI ,可选的多了88W8801,BCM43362,RTL8189

请问下,407是指stm32f407吗?
407跑什么系统?已经调通了SDIO的88W8801,BCM43362,RTL8189这些无线网卡吗?

出0入0汤圆

发表于 2017-10-30 21:25:10 来自手机 | 显示全部楼层
dgtg 发表于 2017-10-30 13:14
请问下,407是指stm32f407吗?
407跑什么系统?已经调通了SDIO的88W8801,BCM43362,RTL8189这些无线网卡 ...

是的,STM32跑ucosiii

出10入0汤圆

发表于 2017-10-31 08:54:52 来自手机 | 显示全部楼层
irobot07 发表于 2017-10-30 21:25
是的,STM32跑ucosiii

能否开源啊?

出0入0汤圆

发表于 2017-10-31 09:46:15 来自手机 | 显示全部楼层
BCM43362的话,可以看看 wiced

出0入0汤圆

发表于 2017-10-31 09:50:34 | 显示全部楼层
http://reclonelabs.com/fast-cheap-wifi-for-microcontrollers/

这里有个介绍,好像还没有做好。

出20入0汤圆

发表于 2017-10-31 10:00:47 | 显示全部楼层
shangdawei 发表于 2017-10-31 09:50
http://reclonelabs.com/fast-cheap-wifi-for-microcontrollers/

这里有个介绍,好像还没有做好。 ...

谢谢分享,很有参考意义。

出0入0汤圆

发表于 2020-3-18 17:04:54 | 显示全部楼层
当然可以,可以把他们开源的Lwip底层要的一些函数封装一下,在host上跑真正的lwip,用SPI或者串口之类的和8266通信调用底层要的一些函数。只要移植过lwip, 底层需要调用什么就了解了。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-21 04:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表