|
发表于 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.
|
|