mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-07-03 23:48:59 +08:00
optimize: Support to put rodata to Flash
Version(488a5a6) Refer to ld/eagle.app.v6.common.ld, you can add your libraries into .irom0.text segment.
This commit is contained in:
25
LICENSE
25
LICENSE
@ -35,6 +35,29 @@ DEALINGS IN THE SOFTWARE.
|
|||||||
<EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD>ı<EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߺͰ<EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD>ͬ<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ
|
<EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD>ı<EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߺͰ<EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD>ͬ<EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>⡢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>θ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>⡢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>θ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
Exception vectors include code relicensed from the following:
|
||||||
|
Original vector contents Copyright (C) 2014-2015 Espressif Systems
|
||||||
|
Additions Copyright (C) Superhouse Automation Pty Ltd and Angus Gratton
|
||||||
|
Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
provided with the distribution.
|
||||||
|
|
||||||
|
3. Neither the name of the copyright holder nor the names of its contributors may be used
|
||||||
|
to endorse or promote products derived from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
|
||||||
|
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
||||||
|
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
||||||
|
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
|
||||||
|
IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||||
|
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
|
||||||
|
4
Makefile
4
Makefile
@ -201,7 +201,8 @@ CCFLAGS += \
|
|||||||
-mtext-section-literals \
|
-mtext-section-literals \
|
||||||
-ffunction-sections \
|
-ffunction-sections \
|
||||||
-fdata-sections \
|
-fdata-sections \
|
||||||
-fno-builtin-printf
|
-fno-builtin-printf \
|
||||||
|
-fno-jump-tables
|
||||||
# -Wall
|
# -Wall
|
||||||
|
|
||||||
CFLAGS = $(CCFLAGS) $(DEFINES) $(EXTRA_CCFLAGS) $(INCLUDES)
|
CFLAGS = $(CCFLAGS) $(DEFINES) $(EXTRA_CCFLAGS) $(INCLUDES)
|
||||||
@ -407,3 +408,4 @@ INCLUDES += -I $(SDK_PATH)/include/nopoll
|
|||||||
INCLUDES += -I $(SDK_PATH)/include/spiffs
|
INCLUDES += -I $(SDK_PATH)/include/spiffs
|
||||||
INCLUDES += -I $(SDK_PATH)/include/ssl
|
INCLUDES += -I $(SDK_PATH)/include/ssl
|
||||||
INCLUDES += -I $(SDK_PATH)/include/json
|
INCLUDES += -I $(SDK_PATH)/include/json
|
||||||
|
INCLUDES += -I $(SDK_PATH)/include/openssl
|
||||||
|
@ -66,14 +66,14 @@ extern void vPortFree(void *pv);
|
|||||||
#define ssl_speed_up_enter() system_update_cpu_freq(SYS_CPU_160MHZ)
|
#define ssl_speed_up_enter() system_update_cpu_freq(SYS_CPU_160MHZ)
|
||||||
#define ssl_speed_up_exit() system_update_cpu_freq(SYS_CPU_80MHZ)
|
#define ssl_speed_up_exit() system_update_cpu_freq(SYS_CPU_80MHZ)
|
||||||
|
|
||||||
#ifndef ets_printf
|
#ifndef os_printf
|
||||||
#define ets_printf(fmt, ...) do { \
|
#define os_printf(fmt, ...) do { \
|
||||||
static const char flash_str[] ICACHE_RODATA_ATTR STORE_ATTR = fmt; \
|
static const char flash_str[] ICACHE_RODATA_ATTR STORE_ATTR = fmt; \
|
||||||
printf(flash_str, ##__VA_ARGS__); \
|
printf(flash_str, ##__VA_ARGS__); \
|
||||||
} while(0)
|
} while(0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define SSL_PRINT_LOG ets_printf
|
#define SSL_DEBUG_LOG os_printf
|
||||||
|
|
||||||
#define LOCAL_ATRR ICACHE_RODATA_ATTR STORE_ATTR
|
#define LOCAL_ATRR ICACHE_RODATA_ATTR STORE_ATTR
|
||||||
|
|
||||||
|
@ -62,6 +62,59 @@ SECTIONS
|
|||||||
_dport0_data_end = ABSOLUTE(.);
|
_dport0_data_end = ABSOLUTE(.);
|
||||||
} >dport0_0_seg :dport0_0_phdr
|
} >dport0_0_seg :dport0_0_phdr
|
||||||
|
|
||||||
|
.text : ALIGN(4)
|
||||||
|
{
|
||||||
|
_stext = .;
|
||||||
|
_text_start = ABSOLUTE(.);
|
||||||
|
*(.UserEnter.text)
|
||||||
|
. = ALIGN(16);
|
||||||
|
*(.DebugExceptionVector.text)
|
||||||
|
. = ALIGN(16);
|
||||||
|
*(.NMIExceptionVector.text)
|
||||||
|
. = ALIGN(16);
|
||||||
|
*(.KernelExceptionVector.text)
|
||||||
|
LONG(0)
|
||||||
|
LONG(0)
|
||||||
|
LONG(0)
|
||||||
|
LONG(0)
|
||||||
|
. = ALIGN(16);
|
||||||
|
*(.UserExceptionVector.text)
|
||||||
|
LONG(0)
|
||||||
|
LONG(0)
|
||||||
|
LONG(0)
|
||||||
|
LONG(0)
|
||||||
|
. = ALIGN(16);
|
||||||
|
*(.DoubleExceptionVector.text)
|
||||||
|
LONG(0)
|
||||||
|
LONG(0)
|
||||||
|
LONG(0)
|
||||||
|
LONG(0)
|
||||||
|
. = ALIGN (16);
|
||||||
|
*(.entry.text)
|
||||||
|
*(.init.literal)
|
||||||
|
*(.init)
|
||||||
|
*libfreertos.a:(.literal .text .literal.* .text.*)
|
||||||
|
*(.literal .text .stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
|
||||||
|
*(.fini.literal)
|
||||||
|
*(.fini)
|
||||||
|
*(.gnu.version)
|
||||||
|
_text_end = ABSOLUTE(.);
|
||||||
|
_etext = .;
|
||||||
|
} >iram1_0_seg :iram1_0_phdr
|
||||||
|
|
||||||
|
.irom0.text : ALIGN(4)
|
||||||
|
{
|
||||||
|
_irom0_text_start = ABSOLUTE(.);
|
||||||
|
*libuser.a:(.rodata.* .rodata)
|
||||||
|
*libcirom.a:(.rodata.* .rodata)
|
||||||
|
*libmbedtls.a:(.rodata.* .rodata)
|
||||||
|
*libssl.a:(.rodata.* .rodata)
|
||||||
|
*libopenssl.a:(.rodata.* .rodata)
|
||||||
|
*(.irom0.literal .irom.literal .irom.text.literal .irom0.text .irom.text)
|
||||||
|
*(.literal.* .text.*)
|
||||||
|
_irom0_text_end = ABSOLUTE(.);
|
||||||
|
} >irom0_0_seg :irom0_0_phdr
|
||||||
|
|
||||||
.data : ALIGN(4)
|
.data : ALIGN(4)
|
||||||
{
|
{
|
||||||
_data_start = ABSOLUTE(.);
|
_data_start = ABSOLUTE(.);
|
||||||
@ -112,7 +165,7 @@ SECTIONS
|
|||||||
*(.xt_except_desc_end)
|
*(.xt_except_desc_end)
|
||||||
*(.dynamic)
|
*(.dynamic)
|
||||||
*(.gnu.version_d)
|
*(.gnu.version_d)
|
||||||
. = ALIGN(4); /* this table MUST be 4-byte aligned */
|
. = ALIGN(4); /* this table MUST be 4-byte aligned */
|
||||||
_bss_table_start = ABSOLUTE(.);
|
_bss_table_start = ABSOLUTE(.);
|
||||||
LONG(_bss_start)
|
LONG(_bss_start)
|
||||||
LONG(_bss_end)
|
LONG(_bss_end)
|
||||||
@ -122,9 +175,9 @@ SECTIONS
|
|||||||
|
|
||||||
.UserExceptionVector.literal : AT(LOADADDR(.rodata) + (ADDR(.UserExceptionVector.literal) - ADDR(.rodata))) ALIGN(4)
|
.UserExceptionVector.literal : AT(LOADADDR(.rodata) + (ADDR(.UserExceptionVector.literal) - ADDR(.rodata))) ALIGN(4)
|
||||||
{
|
{
|
||||||
_UserExceptionVector_literal_start = ABSOLUTE(.);
|
_UserExceptionVector_literal_start = ABSOLUTE(.);
|
||||||
*(.UserExceptionVector.literal)
|
*(.UserExceptionVector.literal)
|
||||||
_UserExceptionVector_literal_end = ABSOLUTE(.);
|
_UserExceptionVector_literal_end = ABSOLUTE(.);
|
||||||
} >dram0_0_seg :dram0_0_phdr
|
} >dram0_0_seg :dram0_0_phdr
|
||||||
|
|
||||||
.bss ALIGN(8) (NOLOAD) : ALIGN(4)
|
.bss ALIGN(8) (NOLOAD) : ALIGN(4)
|
||||||
@ -151,46 +204,6 @@ SECTIONS
|
|||||||
} >dram0_0_seg :dram0_0_bss_phdr
|
} >dram0_0_seg :dram0_0_bss_phdr
|
||||||
/* __stack = 0x3ffc8000; */
|
/* __stack = 0x3ffc8000; */
|
||||||
|
|
||||||
.text : ALIGN(4)
|
|
||||||
{
|
|
||||||
_stext = .;
|
|
||||||
_text_start = ABSOLUTE(.);
|
|
||||||
*(.UserEnter.text)
|
|
||||||
. = ALIGN(16);
|
|
||||||
*(.DebugExceptionVector.text)
|
|
||||||
. = ALIGN(16);
|
|
||||||
*(.NMIExceptionVector.text)
|
|
||||||
. = ALIGN(16);
|
|
||||||
*(.KernelExceptionVector.text)
|
|
||||||
LONG(0)
|
|
||||||
LONG(0)
|
|
||||||
LONG(0)
|
|
||||||
LONG(0)
|
|
||||||
. = ALIGN(16);
|
|
||||||
*(.UserExceptionVector.text)
|
|
||||||
LONG(0)
|
|
||||||
LONG(0)
|
|
||||||
LONG(0)
|
|
||||||
LONG(0)
|
|
||||||
. = ALIGN(16);
|
|
||||||
*(.DoubleExceptionVector.text)
|
|
||||||
LONG(0)
|
|
||||||
LONG(0)
|
|
||||||
LONG(0)
|
|
||||||
LONG(0)
|
|
||||||
. = ALIGN (16);
|
|
||||||
*(.entry.text)
|
|
||||||
*(.init.literal)
|
|
||||||
*(.init)
|
|
||||||
*libfreertos.a:(.literal .text .literal.* .text.*)
|
|
||||||
*(.literal .text .stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
|
|
||||||
*(.fini.literal)
|
|
||||||
*(.fini)
|
|
||||||
*(.gnu.version)
|
|
||||||
_text_end = ABSOLUTE(.);
|
|
||||||
_etext = .;
|
|
||||||
} >iram1_0_seg :iram1_0_phdr
|
|
||||||
|
|
||||||
.lit4 : ALIGN(4)
|
.lit4 : ALIGN(4)
|
||||||
{
|
{
|
||||||
_lit4_start = ABSOLUTE(.);
|
_lit4_start = ABSOLUTE(.);
|
||||||
@ -200,13 +213,6 @@ SECTIONS
|
|||||||
_lit4_end = ABSOLUTE(.);
|
_lit4_end = ABSOLUTE(.);
|
||||||
} >iram1_0_seg :iram1_0_phdr
|
} >iram1_0_seg :iram1_0_phdr
|
||||||
|
|
||||||
.irom0.text : ALIGN(4)
|
|
||||||
{
|
|
||||||
_irom0_text_start = ABSOLUTE(.);
|
|
||||||
*(.irom0.literal .irom.literal .irom.text.literal .irom0.text .irom.text)
|
|
||||||
*(.literal.* .text.*)
|
|
||||||
_irom0_text_end = ABSOLUTE(.);
|
|
||||||
} >irom0_0_seg :irom0_0_phdr
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* get ROM code address */
|
/* get ROM code address */
|
||||||
|
BIN
lib/libcirom.a
BIN
lib/libcirom.a
Binary file not shown.
Binary file not shown.
BIN
lib/libjson.a
BIN
lib/libjson.a
Binary file not shown.
BIN
lib/liblwip.a
BIN
lib/liblwip.a
Binary file not shown.
BIN
lib/libmain.a
BIN
lib/libmain.a
Binary file not shown.
BIN
lib/libmbedtls.a
BIN
lib/libmbedtls.a
Binary file not shown.
Binary file not shown.
BIN
lib/libnopoll.a
BIN
lib/libnopoll.a
Binary file not shown.
BIN
lib/libopenssl.a
BIN
lib/libopenssl.a
Binary file not shown.
BIN
lib/libspiffs.a
BIN
lib/libspiffs.a
Binary file not shown.
BIN
lib/libssl.a
BIN
lib/libssl.a
Binary file not shown.
BIN
lib/libwpa.a
BIN
lib/libwpa.a
Binary file not shown.
BIN
lib/libwps.a
BIN
lib/libwps.a
Binary file not shown.
165
third_party/lwip/core/dhcp.c
vendored
Normal file → Executable file
165
third_party/lwip/core/dhcp.c
vendored
Normal file → Executable file
@ -774,6 +774,35 @@ dhcp_inform(struct netif *netif)
|
|||||||
dhcp_option(&dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN);
|
dhcp_option(&dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN);
|
||||||
dhcp_option_short(&dhcp, DHCP_MAX_MSG_LEN(netif));
|
dhcp_option_short(&dhcp, DHCP_MAX_MSG_LEN(netif));
|
||||||
|
|
||||||
|
/**add options for support more router by liuHan**/
|
||||||
|
#ifdef LWIP_ESP8266
|
||||||
|
#if LWIP_NETIF_HOSTNAME
|
||||||
|
dhcp_option_hostname(&dhcp, netif);
|
||||||
|
#endif /* LWIP_NETIF_HOSTNAME */
|
||||||
|
|
||||||
|
dhcp_option(&dhcp, DHCP_OPTION_PARAMETER_REQUEST_LIST, 12/*num options*/);
|
||||||
|
dhcp_option_byte(&dhcp, DHCP_OPTION_SUBNET_MASK);
|
||||||
|
dhcp_option_byte(&dhcp, DHCP_OPTION_ROUTER);
|
||||||
|
dhcp_option_byte(&dhcp, DHCP_OPTION_BROADCAST);
|
||||||
|
dhcp_option_byte(&dhcp, DHCP_OPTION_DNS_SERVER);
|
||||||
|
|
||||||
|
dhcp_option_byte(&dhcp, DHCP_OPTION_DOMAIN_NAME);
|
||||||
|
dhcp_option_byte(&dhcp, DHCP_OPTION_NB_TINS);
|
||||||
|
dhcp_option_byte(&dhcp, DHCP_OPTION_NB_TINT);
|
||||||
|
dhcp_option_byte(&dhcp, DHCP_OPTION_NB_TIS);
|
||||||
|
dhcp_option_byte(&dhcp, DHCP_OPTION_PRD);
|
||||||
|
dhcp_option_byte(&dhcp, DHCP_OPTION_STATIC_ROUTER);
|
||||||
|
dhcp_option_byte(&dhcp, DHCP_OPTION_CLASSLESS_STATIC_ROUTER);
|
||||||
|
dhcp_option_byte(&dhcp, DHCP_OPTION_VSN);
|
||||||
|
|
||||||
|
#else
|
||||||
|
dhcp_option(dhcp, DHCP_OPTION_PARAMETER_REQUEST_LIST, 4/*num options*/);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_SUBNET_MASK);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_ROUTER);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_BROADCAST);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_DNS_SERVER);
|
||||||
|
#endif
|
||||||
|
|
||||||
dhcp_option_trailer(&dhcp);
|
dhcp_option_trailer(&dhcp);
|
||||||
|
|
||||||
pbuf_realloc(dhcp.p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp.options_out_len);
|
pbuf_realloc(dhcp.p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp.options_out_len);
|
||||||
@ -877,6 +906,35 @@ dhcp_decline(struct netif *netif)
|
|||||||
dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4);
|
dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4);
|
||||||
dhcp_option_long(dhcp, ntohl(ip4_addr_get_u32(&dhcp->offered_ip_addr)));
|
dhcp_option_long(dhcp, ntohl(ip4_addr_get_u32(&dhcp->offered_ip_addr)));
|
||||||
|
|
||||||
|
/**add options for support more router by liuHan**/
|
||||||
|
#ifdef LWIP_ESP8266
|
||||||
|
#if LWIP_NETIF_HOSTNAME
|
||||||
|
dhcp_option_hostname(dhcp, netif);
|
||||||
|
#endif /* LWIP_NETIF_HOSTNAME */
|
||||||
|
|
||||||
|
dhcp_option(dhcp, DHCP_OPTION_PARAMETER_REQUEST_LIST, 12/*num options*/);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_SUBNET_MASK);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_ROUTER);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_BROADCAST);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_DNS_SERVER);
|
||||||
|
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_DOMAIN_NAME);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_NB_TINS);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_NB_TINT);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_NB_TIS);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_PRD);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_STATIC_ROUTER);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_CLASSLESS_STATIC_ROUTER);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_VSN);
|
||||||
|
|
||||||
|
#else
|
||||||
|
dhcp_option(dhcp, DHCP_OPTION_PARAMETER_REQUEST_LIST, 4/*num options*/);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_SUBNET_MASK);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_ROUTER);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_BROADCAST);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_DNS_SERVER);
|
||||||
|
#endif
|
||||||
|
|
||||||
dhcp_option_trailer(dhcp);
|
dhcp_option_trailer(dhcp);
|
||||||
/* resize pbuf to reflect true size of options */
|
/* resize pbuf to reflect true size of options */
|
||||||
pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len);
|
pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len);
|
||||||
@ -1118,6 +1176,31 @@ dhcp_renew(struct netif *netif)
|
|||||||
#if LWIP_NETIF_HOSTNAME
|
#if LWIP_NETIF_HOSTNAME
|
||||||
dhcp_option_hostname(dhcp, netif);
|
dhcp_option_hostname(dhcp, netif);
|
||||||
#endif /* LWIP_NETIF_HOSTNAME */
|
#endif /* LWIP_NETIF_HOSTNAME */
|
||||||
|
/**add options for support more router by liuHan**/
|
||||||
|
#ifdef LWIP_ESP8266
|
||||||
|
|
||||||
|
dhcp_option(dhcp, DHCP_OPTION_PARAMETER_REQUEST_LIST, 12/*num options*/);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_SUBNET_MASK);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_ROUTER);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_BROADCAST);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_DNS_SERVER);
|
||||||
|
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_DOMAIN_NAME);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_NB_TINS);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_NB_TINT);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_NB_TIS);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_PRD);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_STATIC_ROUTER);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_CLASSLESS_STATIC_ROUTER);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_VSN);
|
||||||
|
|
||||||
|
#else
|
||||||
|
dhcp_option(dhcp, DHCP_OPTION_PARAMETER_REQUEST_LIST, 4/*num options*/);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_SUBNET_MASK);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_ROUTER);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_BROADCAST);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_DNS_SERVER);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* append DHCP message trailer */
|
/* append DHCP message trailer */
|
||||||
dhcp_option_trailer(dhcp);
|
dhcp_option_trailer(dhcp);
|
||||||
@ -1162,6 +1245,30 @@ dhcp_rebind(struct netif *netif)
|
|||||||
#if LWIP_NETIF_HOSTNAME
|
#if LWIP_NETIF_HOSTNAME
|
||||||
dhcp_option_hostname(dhcp, netif);
|
dhcp_option_hostname(dhcp, netif);
|
||||||
#endif /* LWIP_NETIF_HOSTNAME */
|
#endif /* LWIP_NETIF_HOSTNAME */
|
||||||
|
/**add options for support more router by liuHan**/
|
||||||
|
#ifdef LWIP_ESP8266
|
||||||
|
dhcp_option(dhcp, DHCP_OPTION_PARAMETER_REQUEST_LIST, 12/*num options*/);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_SUBNET_MASK);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_ROUTER);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_BROADCAST);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_DNS_SERVER);
|
||||||
|
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_DOMAIN_NAME);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_NB_TINS);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_NB_TINT);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_NB_TIS);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_PRD);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_STATIC_ROUTER);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_CLASSLESS_STATIC_ROUTER);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_VSN);
|
||||||
|
|
||||||
|
#else
|
||||||
|
dhcp_option(dhcp, DHCP_OPTION_PARAMETER_REQUEST_LIST, 4/*num options*/);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_SUBNET_MASK);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_ROUTER);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_BROADCAST);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_DNS_SERVER);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4);
|
dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4);
|
||||||
@ -1209,8 +1316,34 @@ dhcp_reboot(struct netif *netif)
|
|||||||
dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN);
|
dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN);
|
||||||
dhcp_option_short(dhcp, 576);
|
dhcp_option_short(dhcp, 576);
|
||||||
|
|
||||||
dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4);
|
/**add options for support more router by liuHan**/
|
||||||
dhcp_option_long(dhcp, ntohl(ip4_addr_get_u32(&dhcp->offered_ip_addr)));
|
#ifdef LWIP_ESP8266
|
||||||
|
#if LWIP_NETIF_HOSTNAME
|
||||||
|
dhcp_option_hostname(dhcp, netif);
|
||||||
|
#endif /* LWIP_NETIF_HOSTNAME */
|
||||||
|
|
||||||
|
dhcp_option(dhcp, DHCP_OPTION_PARAMETER_REQUEST_LIST, 12/*num options*/);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_SUBNET_MASK);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_ROUTER);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_BROADCAST);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_DNS_SERVER);
|
||||||
|
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_DOMAIN_NAME);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_NB_TINS);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_NB_TINT);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_NB_TIS);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_PRD);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_STATIC_ROUTER);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_CLASSLESS_STATIC_ROUTER);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_VSN);
|
||||||
|
|
||||||
|
#else
|
||||||
|
dhcp_option(dhcp, DHCP_OPTION_PARAMETER_REQUEST_LIST, 4/*num options*/);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_SUBNET_MASK);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_ROUTER);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_BROADCAST);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_DNS_SERVER);
|
||||||
|
#endif
|
||||||
|
|
||||||
dhcp_option_trailer(dhcp);
|
dhcp_option_trailer(dhcp);
|
||||||
|
|
||||||
@ -1262,6 +1395,34 @@ dhcp_release(struct netif *netif)
|
|||||||
/* create and initialize the DHCP message header */
|
/* create and initialize the DHCP message header */
|
||||||
result = dhcp_create_msg(netif, dhcp, DHCP_RELEASE);
|
result = dhcp_create_msg(netif, dhcp, DHCP_RELEASE);
|
||||||
if (result == ERR_OK) {
|
if (result == ERR_OK) {
|
||||||
|
/**add options for support more router by liuHan**/
|
||||||
|
#ifdef LWIP_ESP8266
|
||||||
|
LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_release: making request\n"));
|
||||||
|
|
||||||
|
dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN);
|
||||||
|
dhcp_option_short(dhcp, DHCP_MAX_MSG_LEN(netif));
|
||||||
|
|
||||||
|
#if LWIP_NETIF_HOSTNAME
|
||||||
|
dhcp_option_hostname(dhcp, netif);
|
||||||
|
#endif /* LWIP_NETIF_HOSTNAME */
|
||||||
|
|
||||||
|
dhcp_option(dhcp, DHCP_OPTION_PARAMETER_REQUEST_LIST, 12/*num options*/);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_SUBNET_MASK);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_ROUTER);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_BROADCAST);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_DNS_SERVER);
|
||||||
|
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_DOMAIN_NAME);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_NB_TINS);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_NB_TINT);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_NB_TIS);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_PRD);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_STATIC_ROUTER);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_CLASSLESS_STATIC_ROUTER);
|
||||||
|
dhcp_option_byte(dhcp, DHCP_OPTION_VSN);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
dhcp_option_trailer(dhcp);
|
dhcp_option_trailer(dhcp);
|
||||||
|
|
||||||
pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len);
|
pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len);
|
||||||
|
41
third_party/lwip/netif/ethernetif.c
vendored
Normal file → Executable file
41
third_party/lwip/netif/ethernetif.c
vendored
Normal file → Executable file
@ -73,8 +73,6 @@ low_level_init(struct netif *netif)
|
|||||||
/* set MAC hardware address length */
|
/* set MAC hardware address length */
|
||||||
netif->hwaddr_len = ETHARP_HWADDR_LEN;
|
netif->hwaddr_len = ETHARP_HWADDR_LEN;
|
||||||
|
|
||||||
/* set MAC hardware address */
|
|
||||||
|
|
||||||
/* maximum transfer unit */
|
/* maximum transfer unit */
|
||||||
netif->mtu = 1500;
|
netif->mtu = 1500;
|
||||||
|
|
||||||
@ -158,23 +156,23 @@ ethernetif_input(struct netif *netif, struct pbuf *p)
|
|||||||
struct ethernetif *ethernetif;
|
struct ethernetif *ethernetif;
|
||||||
struct eth_hdr *ethhdr;
|
struct eth_hdr *ethhdr;
|
||||||
|
|
||||||
|
if(p == NULL)
|
||||||
|
goto _exit;
|
||||||
|
|
||||||
if(p == NULL)
|
if(p->payload == NULL) {
|
||||||
goto _exit;
|
|
||||||
|
|
||||||
|
|
||||||
if(p->payload == NULL)
|
|
||||||
{
|
|
||||||
pbuf_free(p);
|
pbuf_free(p);
|
||||||
goto _exit;
|
goto _exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(netif == NULL) {
|
||||||
|
goto _exit;
|
||||||
|
}
|
||||||
|
|
||||||
if(netif == NULL)
|
if (!(netif->flags & NETIF_FLAG_LINK_UP)) {
|
||||||
{
|
pbuf_free(p);
|
||||||
goto _exit;
|
p = NULL;
|
||||||
}
|
goto _exit;
|
||||||
|
}
|
||||||
|
|
||||||
ethernetif = netif->state;
|
ethernetif = netif->state;
|
||||||
|
|
||||||
@ -224,6 +222,16 @@ err_t ethernetif_init(struct netif *netif)
|
|||||||
{
|
{
|
||||||
LWIP_ASSERT("netif != NULL", (netif != NULL));
|
LWIP_ASSERT("netif != NULL", (netif != NULL));
|
||||||
|
|
||||||
|
u8_t mac[NETIF_MAX_HWADDR_LEN];
|
||||||
|
|
||||||
|
/* set MAC hardware address */
|
||||||
|
if ((struct netif *)wifi_get_netif(STATION_IF) == netif) {
|
||||||
|
wifi_get_macaddr(STATION_IF, mac);
|
||||||
|
} else {
|
||||||
|
wifi_get_macaddr(SOFTAP_IF, mac);
|
||||||
|
}
|
||||||
|
memcpy(netif->hwaddr, mac, NETIF_MAX_HWADDR_LEN);
|
||||||
|
|
||||||
#if LWIP_NETIF_HOSTNAME
|
#if LWIP_NETIF_HOSTNAME
|
||||||
if ((struct netif *)wifi_get_netif(STATION_IF) == netif) {
|
if ((struct netif *)wifi_get_netif(STATION_IF) == netif) {
|
||||||
if (default_hostname == 1) {
|
if (default_hostname == 1) {
|
||||||
@ -256,6 +264,9 @@ err_t ethernetif_init(struct netif *netif)
|
|||||||
#endif /* LWIP_IPV6 */
|
#endif /* LWIP_IPV6 */
|
||||||
netif->linkoutput = low_level_output;
|
netif->linkoutput = low_level_output;
|
||||||
|
|
||||||
|
extern void wifi_station_dhcpc_event(void);
|
||||||
|
netif->dhcp_event = wifi_station_dhcpc_event;
|
||||||
|
|
||||||
/* initialize the hardware */
|
/* initialize the hardware */
|
||||||
low_level_init(netif);
|
low_level_init(netif);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user