mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-07-04 08:03:31 +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>
|
||||
|
||||
|
||||
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 \
|
||||
-ffunction-sections \
|
||||
-fdata-sections \
|
||||
-fno-builtin-printf
|
||||
-fno-builtin-printf \
|
||||
-fno-jump-tables
|
||||
# -Wall
|
||||
|
||||
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/ssl
|
||||
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_exit() system_update_cpu_freq(SYS_CPU_80MHZ)
|
||||
|
||||
#ifndef ets_printf
|
||||
#define ets_printf(fmt, ...) do { \
|
||||
static const char flash_str[] ICACHE_RODATA_ATTR STORE_ATTR = fmt; \
|
||||
printf(flash_str, ##__VA_ARGS__); \
|
||||
#ifndef os_printf
|
||||
#define os_printf(fmt, ...) do { \
|
||||
static const char flash_str[] ICACHE_RODATA_ATTR STORE_ATTR = fmt; \
|
||||
printf(flash_str, ##__VA_ARGS__); \
|
||||
} while(0)
|
||||
#endif
|
||||
|
||||
#define SSL_PRINT_LOG ets_printf
|
||||
#define SSL_DEBUG_LOG os_printf
|
||||
|
||||
#define LOCAL_ATRR ICACHE_RODATA_ATTR STORE_ATTR
|
||||
|
||||
|
@ -62,6 +62,59 @@ SECTIONS
|
||||
_dport0_data_end = ABSOLUTE(.);
|
||||
} >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_start = ABSOLUTE(.);
|
||||
@ -112,7 +165,7 @@ SECTIONS
|
||||
*(.xt_except_desc_end)
|
||||
*(.dynamic)
|
||||
*(.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(.);
|
||||
LONG(_bss_start)
|
||||
LONG(_bss_end)
|
||||
@ -122,9 +175,9 @@ SECTIONS
|
||||
|
||||
.UserExceptionVector.literal : AT(LOADADDR(.rodata) + (ADDR(.UserExceptionVector.literal) - ADDR(.rodata))) ALIGN(4)
|
||||
{
|
||||
_UserExceptionVector_literal_start = ABSOLUTE(.);
|
||||
*(.UserExceptionVector.literal)
|
||||
_UserExceptionVector_literal_end = ABSOLUTE(.);
|
||||
_UserExceptionVector_literal_start = ABSOLUTE(.);
|
||||
*(.UserExceptionVector.literal)
|
||||
_UserExceptionVector_literal_end = ABSOLUTE(.);
|
||||
} >dram0_0_seg :dram0_0_phdr
|
||||
|
||||
.bss ALIGN(8) (NOLOAD) : ALIGN(4)
|
||||
@ -151,46 +204,6 @@ SECTIONS
|
||||
} >dram0_0_seg :dram0_0_bss_phdr
|
||||
/* __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_start = ABSOLUTE(.);
|
||||
@ -200,13 +213,6 @@ SECTIONS
|
||||
_lit4_end = ABSOLUTE(.);
|
||||
} >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 */
|
||||
|
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_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);
|
||||
|
||||
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_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);
|
||||
/* resize pbuf to reflect true size of options */
|
||||
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
|
||||
dhcp_option_hostname(dhcp, netif);
|
||||
#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 */
|
||||
dhcp_option_trailer(dhcp);
|
||||
@ -1162,6 +1245,30 @@ dhcp_rebind(struct netif *netif)
|
||||
#if LWIP_NETIF_HOSTNAME
|
||||
dhcp_option_hostname(dhcp, netif);
|
||||
#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
|
||||
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_short(dhcp, 576);
|
||||
|
||||
dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4);
|
||||
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);
|
||||
|
||||
@ -1262,6 +1395,34 @@ dhcp_release(struct netif *netif)
|
||||
/* create and initialize the DHCP message header */
|
||||
result = dhcp_create_msg(netif, dhcp, DHCP_RELEASE);
|
||||
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);
|
||||
|
||||
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 */
|
||||
netif->hwaddr_len = ETHARP_HWADDR_LEN;
|
||||
|
||||
/* set MAC hardware address */
|
||||
|
||||
/* maximum transfer unit */
|
||||
netif->mtu = 1500;
|
||||
|
||||
@ -158,23 +156,23 @@ ethernetif_input(struct netif *netif, struct pbuf *p)
|
||||
struct ethernetif *ethernetif;
|
||||
struct eth_hdr *ethhdr;
|
||||
|
||||
if(p == NULL)
|
||||
goto _exit;
|
||||
|
||||
if(p == NULL)
|
||||
goto _exit;
|
||||
|
||||
|
||||
if(p->payload == NULL)
|
||||
{
|
||||
if(p->payload == NULL) {
|
||||
pbuf_free(p);
|
||||
goto _exit;
|
||||
}
|
||||
goto _exit;
|
||||
}
|
||||
|
||||
if(netif == NULL) {
|
||||
goto _exit;
|
||||
}
|
||||
|
||||
if(netif == NULL)
|
||||
{
|
||||
goto _exit;
|
||||
}
|
||||
|
||||
if (!(netif->flags & NETIF_FLAG_LINK_UP)) {
|
||||
pbuf_free(p);
|
||||
p = NULL;
|
||||
goto _exit;
|
||||
}
|
||||
|
||||
ethernetif = netif->state;
|
||||
|
||||
@ -224,6 +222,16 @@ err_t ethernetif_init(struct netif *netif)
|
||||
{
|
||||
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 ((struct netif *)wifi_get_netif(STATION_IF) == netif) {
|
||||
if (default_hostname == 1) {
|
||||
@ -256,6 +264,9 @@ err_t ethernetif_init(struct netif *netif)
|
||||
#endif /* LWIP_IPV6 */
|
||||
netif->linkoutput = low_level_output;
|
||||
|
||||
extern void wifi_station_dhcpc_event(void);
|
||||
netif->dhcp_event = wifi_station_dhcpc_event;
|
||||
|
||||
/* initialize the hardware */
|
||||
low_level_init(netif);
|
||||
|
||||
|
Reference in New Issue
Block a user