mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-07-01 22:28:37 +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.
|
||||
|
||||
|
||||
|
820
Makefile
820
Makefile
@ -1,409 +1,411 @@
|
||||
# copyright (c) 2010 Espressif System
|
||||
#
|
||||
ifndef PDIR
|
||||
|
||||
endif
|
||||
|
||||
ifeq ($(COMPILE), xcc)
|
||||
AR = xt-ar
|
||||
CC = xt-xcc
|
||||
NM = xt-nm
|
||||
CPP = xt-xt++
|
||||
OBJCOPY = xt-objcopy
|
||||
OBJDUMP = xt-objdump
|
||||
else
|
||||
AR = xtensa-lx106-elf-ar
|
||||
CC = xtensa-lx106-elf-gcc
|
||||
NM = xtensa-lx106-elf-nm
|
||||
CPP = xtensa-lx106-elf-g++
|
||||
OBJCOPY = xtensa-lx106-elf-objcopy
|
||||
OBJDUMP = xtensa-lx106-elf-objdump
|
||||
endif
|
||||
|
||||
BOOT?=none
|
||||
APP?=0
|
||||
SPI_SPEED?=40
|
||||
SPI_MODE?=QIO
|
||||
SPI_SIZE_MAP?=0
|
||||
|
||||
ifeq ($(BOOT), new)
|
||||
boot = new
|
||||
else
|
||||
ifeq ($(BOOT), old)
|
||||
boot = old
|
||||
else
|
||||
boot = none
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(APP), 1)
|
||||
app = 1
|
||||
else
|
||||
ifeq ($(APP), 2)
|
||||
app = 2
|
||||
else
|
||||
app = 0
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(SPI_SPEED), 26.7)
|
||||
freqdiv = 1
|
||||
else
|
||||
ifeq ($(SPI_SPEED), 20)
|
||||
freqdiv = 2
|
||||
else
|
||||
ifeq ($(SPI_SPEED), 80)
|
||||
freqdiv = 15
|
||||
else
|
||||
freqdiv = 0
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
ifeq ($(SPI_MODE), QOUT)
|
||||
mode = 1
|
||||
else
|
||||
ifeq ($(SPI_MODE), DIO)
|
||||
mode = 2
|
||||
else
|
||||
ifeq ($(SPI_MODE), DOUT)
|
||||
mode = 3
|
||||
else
|
||||
mode = 0
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
addr = 0x01000
|
||||
|
||||
ifeq ($(SPI_SIZE_MAP), 1)
|
||||
size_map = 1
|
||||
flash = 256
|
||||
else
|
||||
ifeq ($(SPI_SIZE_MAP), 2)
|
||||
size_map = 2
|
||||
flash = 1024
|
||||
ifeq ($(app), 2)
|
||||
addr = 0x81000
|
||||
endif
|
||||
else
|
||||
ifeq ($(SPI_SIZE_MAP), 3)
|
||||
size_map = 3
|
||||
flash = 2048
|
||||
ifeq ($(app), 2)
|
||||
addr = 0x81000
|
||||
endif
|
||||
else
|
||||
ifeq ($(SPI_SIZE_MAP), 4)
|
||||
size_map = 4
|
||||
flash = 4096
|
||||
ifeq ($(app), 2)
|
||||
addr = 0x81000
|
||||
endif
|
||||
else
|
||||
ifeq ($(SPI_SIZE_MAP), 5)
|
||||
size_map = 5
|
||||
flash = 2048
|
||||
ifeq ($(app), 2)
|
||||
addr = 0x101000
|
||||
endif
|
||||
else
|
||||
ifeq ($(SPI_SIZE_MAP), 6)
|
||||
size_map = 6
|
||||
flash = 4096
|
||||
ifeq ($(app), 2)
|
||||
addr = 0x101000
|
||||
endif
|
||||
else
|
||||
size_map = 0
|
||||
flash = 512
|
||||
ifeq ($(app), 2)
|
||||
addr = 0x41000
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
LD_FILE = $(LDDIR)/eagle.app.v6.ld
|
||||
|
||||
ifneq ($(boot), none)
|
||||
ifneq ($(app),0)
|
||||
ifeq ($(size_map), 6)
|
||||
LD_FILE = $(LDDIR)/eagle.app.v6.$(boot).2048.ld
|
||||
else
|
||||
ifeq ($(size_map), 5)
|
||||
LD_FILE = $(LDDIR)/eagle.app.v6.$(boot).2048.ld
|
||||
else
|
||||
ifeq ($(size_map), 4)
|
||||
LD_FILE = $(LDDIR)/eagle.app.v6.$(boot).1024.app$(app).ld
|
||||
else
|
||||
ifeq ($(size_map), 3)
|
||||
LD_FILE = $(LDDIR)/eagle.app.v6.$(boot).1024.app$(app).ld
|
||||
else
|
||||
ifeq ($(size_map), 2)
|
||||
LD_FILE = $(LDDIR)/eagle.app.v6.$(boot).1024.app$(app).ld
|
||||
else
|
||||
ifeq ($(size_map), 0)
|
||||
LD_FILE = $(LDDIR)/eagle.app.v6.$(boot).512.app$(app).ld
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
BIN_NAME = user$(app).$(flash).$(boot).$(size_map)
|
||||
endif
|
||||
else
|
||||
app = 0
|
||||
endif
|
||||
|
||||
CSRCS ?= $(wildcard *.c)
|
||||
CPPSRCS ?= $(wildcard *.cpp)
|
||||
ASRCs ?= $(wildcard *.s)
|
||||
ASRCS ?= $(wildcard *.S)
|
||||
SUBDIRS ?= $(patsubst %/,%,$(dir $(wildcard */Makefile)))
|
||||
|
||||
ODIR := .output
|
||||
OBJODIR := $(ODIR)/$(TARGET)/$(FLAVOR)/obj
|
||||
|
||||
OBJS := $(CSRCS:%.c=$(OBJODIR)/%.o) \
|
||||
$(CPPSRCS:%.cpp=$(OBJODIR)/%.o) \
|
||||
$(ASRCs:%.s=$(OBJODIR)/%.o) \
|
||||
$(ASRCS:%.S=$(OBJODIR)/%.o)
|
||||
|
||||
DEPS := $(CSRCS:%.c=$(OBJODIR)/%.d) \
|
||||
$(CPPSRCS:%.cpp=$(OBJODIR)/%.d) \
|
||||
$(ASRCs:%.s=$(OBJODIR)/%.d) \
|
||||
$(ASRCS:%.S=$(OBJODIR)/%.d)
|
||||
|
||||
LIBODIR := $(ODIR)/$(TARGET)/$(FLAVOR)/lib
|
||||
OLIBS := $(GEN_LIBS:%=$(LIBODIR)/%)
|
||||
|
||||
IMAGEODIR := $(ODIR)/$(TARGET)/$(FLAVOR)/image
|
||||
OIMAGES := $(GEN_IMAGES:%=$(IMAGEODIR)/%)
|
||||
|
||||
BINODIR := $(ODIR)/$(TARGET)/$(FLAVOR)/bin
|
||||
OBINS := $(GEN_BINS:%=$(BINODIR)/%)
|
||||
|
||||
CCFLAGS += \
|
||||
-g \
|
||||
-Wpointer-arith \
|
||||
-Wundef \
|
||||
-Werror \
|
||||
-Wl,-EL \
|
||||
-fno-inline-functions \
|
||||
-nostdlib \
|
||||
-mlongcalls \
|
||||
-mtext-section-literals \
|
||||
-ffunction-sections \
|
||||
-fdata-sections \
|
||||
-fno-builtin-printf
|
||||
# -Wall
|
||||
|
||||
CFLAGS = $(CCFLAGS) $(DEFINES) $(EXTRA_CCFLAGS) $(INCLUDES)
|
||||
DFLAGS = $(CCFLAGS) $(DDEFINES) $(EXTRA_CCFLAGS) $(INCLUDES)
|
||||
|
||||
|
||||
#############################################################
|
||||
# Functions
|
||||
#
|
||||
|
||||
define ShortcutRule
|
||||
$(1): .subdirs $(2)/$(1)
|
||||
endef
|
||||
|
||||
define MakeLibrary
|
||||
DEP_LIBS_$(1) = $$(foreach lib,$$(filter %.a,$$(COMPONENTS_$(1))),$$(dir $$(lib))$$(LIBODIR)/$$(notdir $$(lib)))
|
||||
DEP_OBJS_$(1) = $$(foreach obj,$$(filter %.o,$$(COMPONENTS_$(1))),$$(dir $$(obj))$$(OBJODIR)/$$(notdir $$(obj)))
|
||||
$$(LIBODIR)/$(1).a: $$(OBJS) $$(DEP_OBJS_$(1)) $$(DEP_LIBS_$(1)) $$(DEPENDS_$(1))
|
||||
@mkdir -p $$(LIBODIR)
|
||||
$$(if $$(filter %.a,$$?),mkdir -p $$(EXTRACT_DIR)_$(1))
|
||||
$$(if $$(filter %.a,$$?),cd $$(EXTRACT_DIR)_$(1); $$(foreach lib,$$(filter %.a,$$?),$$(AR) xo $$(UP_EXTRACT_DIR)/$$(lib);))
|
||||
$$(AR) ru $$@ $$(filter %.o,$$?) $$(if $$(filter %.a,$$?),$$(EXTRACT_DIR)_$(1)/*.o)
|
||||
$$(if $$(filter %.a,$$?),$$(RM) -r $$(EXTRACT_DIR)_$(1))
|
||||
endef
|
||||
|
||||
define MakeImage
|
||||
DEP_LIBS_$(1) = $$(foreach lib,$$(filter %.a,$$(COMPONENTS_$(1))),$$(dir $$(lib))$$(LIBODIR)/$$(notdir $$(lib)))
|
||||
DEP_OBJS_$(1) = $$(foreach obj,$$(filter %.o,$$(COMPONENTS_$(1))),$$(dir $$(obj))$$(OBJODIR)/$$(notdir $$(obj)))
|
||||
$$(IMAGEODIR)/$(1).out: $$(OBJS) $$(DEP_OBJS_$(1)) $$(DEP_LIBS_$(1)) $$(DEPENDS_$(1))
|
||||
@mkdir -p $$(IMAGEODIR)
|
||||
$$(CC) $$(LDFLAGS) $$(if $$(LINKFLAGS_$(1)),$$(LINKFLAGS_$(1)),$$(LINKFLAGS_DEFAULT) $$(OBJS) $$(DEP_OBJS_$(1)) $$(DEP_LIBS_$(1))) -o $$@
|
||||
endef
|
||||
|
||||
$(BINODIR)/%.bin: $(IMAGEODIR)/%.out
|
||||
@mkdir -p $(BIN_PATH)
|
||||
@mkdir -p $(BINODIR)
|
||||
|
||||
ifeq ($(APP), 0)
|
||||
@$(RM) -r $(BIN_PATH)/eagle.S $(BIN_PATH)/eagle.dump
|
||||
@$(OBJDUMP) -x -s $< > $(BIN_PATH)/eagle.dump
|
||||
@$(OBJDUMP) -S $< > $(BIN_PATH)/eagle.S
|
||||
else
|
||||
@mkdir -p $(BIN_PATH)/upgrade
|
||||
@$(RM) -r $(BIN_PATH)/upgrade/$(BIN_NAME).S $(BIN_PATH)/upgrade/$(BIN_NAME).dump
|
||||
@$(OBJDUMP) -x -s $< > $(BIN_PATH)/upgrade/$(BIN_NAME).dump
|
||||
@$(OBJDUMP) -S $< > $(BIN_PATH)/upgrade/$(BIN_NAME).S
|
||||
endif
|
||||
|
||||
@$(OBJCOPY) --only-section .text -O binary $< eagle.app.v6.text.bin
|
||||
@$(OBJCOPY) --only-section .data -O binary $< eagle.app.v6.data.bin
|
||||
@$(OBJCOPY) --only-section .rodata -O binary $< eagle.app.v6.rodata.bin
|
||||
@$(OBJCOPY) --only-section .irom0.text -O binary $< eagle.app.v6.irom0text.bin
|
||||
|
||||
@echo ""
|
||||
@echo "!!!"
|
||||
@echo "SDK_PATH: $(SDK_PATH)"
|
||||
|
||||
ifeq ($(app), 0)
|
||||
@python $(SDK_PATH)/tools/gen_appbin.py $< 0 $(mode) $(freqdiv) $(size_map)
|
||||
@mv eagle.app.flash.bin $(BIN_PATH)/eagle.flash.bin
|
||||
@mv eagle.app.v6.irom0text.bin $(BIN_PATH)/eagle.irom0text.bin
|
||||
@rm eagle.app.v6.*
|
||||
@echo "BIN_PATH: $(BIN_PATH)"
|
||||
@echo ""
|
||||
@echo "No boot needed."
|
||||
@echo "Generate eagle.flash.bin and eagle.irom0text.bin successully in BIN_PATH"
|
||||
@echo "eagle.flash.bin-------->0x00000"
|
||||
@echo "eagle.irom0text.bin---->0x20000"
|
||||
else
|
||||
@echo "BIN_PATH: $(BIN_PATH)/upgrade"
|
||||
@echo ""
|
||||
|
||||
ifneq ($(boot), new)
|
||||
@python $(SDK_PATH)/tools/gen_appbin.py $< 1 $(mode) $(freqdiv) $(size_map)
|
||||
@echo "Support boot_v1.1 and +"
|
||||
else
|
||||
@python $(SDK_PATH)/tools/gen_appbin.py $< 2 $(mode) $(freqdiv) $(size_map)
|
||||
|
||||
ifeq ($(size_map), 6)
|
||||
@echo "Support boot_v1.4 and +"
|
||||
else
|
||||
ifeq ($(size_map), 5)
|
||||
@echo "Support boot_v1.4 and +"
|
||||
else
|
||||
@echo "Support boot_v1.2 and +"
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
@mv eagle.app.flash.bin $(BIN_PATH)/upgrade/$(BIN_NAME).bin
|
||||
@rm eagle.app.v6.*
|
||||
@echo "Generate $(BIN_NAME).bin successully in BIN_PATH"
|
||||
@echo "boot.bin------------>0x00000"
|
||||
@echo "$(BIN_NAME).bin--->$(addr)"
|
||||
endif
|
||||
|
||||
@echo "!!!"
|
||||
|
||||
#############################################################
|
||||
# Rules base
|
||||
# Should be done in top-level makefile only
|
||||
#
|
||||
|
||||
all: .subdirs $(OBJS) $(OLIBS) $(OIMAGES) $(OBINS) $(SPECIAL_MKTARGETS)
|
||||
|
||||
clean:
|
||||
$(foreach d, $(SUBDIRS), $(MAKE) -C $(d) clean;)
|
||||
$(RM) -r $(ODIR)/$(TARGET)/$(FLAVOR)
|
||||
|
||||
clobber: $(SPECIAL_CLOBBER)
|
||||
$(foreach d, $(SUBDIRS), $(MAKE) -C $(d) clobber;)
|
||||
$(RM) -r $(ODIR)
|
||||
|
||||
.subdirs:
|
||||
@set -e; $(foreach d, $(SUBDIRS), $(MAKE) -C $(d);)
|
||||
|
||||
#.subdirs:
|
||||
# $(foreach d, $(SUBDIRS), $(MAKE) -C $(d))
|
||||
|
||||
ifneq ($(MAKECMDGOALS),clean)
|
||||
ifneq ($(MAKECMDGOALS),clobber)
|
||||
ifdef DEPS
|
||||
sinclude $(DEPS)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
$(OBJODIR)/%.o: %.c
|
||||
@mkdir -p $(OBJODIR);
|
||||
$(CC) $(if $(findstring $<,$(DSRCS)),$(DFLAGS),$(CFLAGS)) $(COPTS_$(*F)) -o $@ -c $<
|
||||
|
||||
$(OBJODIR)/%.d: %.c
|
||||
@mkdir -p $(OBJODIR);
|
||||
@echo DEPEND: $(CC) -M $(CFLAGS) $<
|
||||
@set -e; rm -f $@; \
|
||||
$(CC) -M $(CFLAGS) $< > $@.$$$$; \
|
||||
sed 's,\($*\.o\)[ :]*,$(OBJODIR)/\1 $@ : ,g' < $@.$$$$ > $@; \
|
||||
rm -f $@.$$$$
|
||||
|
||||
$(OBJODIR)/%.o: %.cpp
|
||||
@mkdir -p $(OBJODIR);
|
||||
$(CPP) $(if $(findstring $<,$(DSRCS)),$(DFLAGS),$(CFLAGS)) $(COPTS_$(*F)) -o $@ -c $<
|
||||
|
||||
$(OBJODIR)/%.d: %.cpp
|
||||
@mkdir -p $(OBJODIR);
|
||||
@echo DEPEND: $(CPP) -M $(CFLAGS) $<
|
||||
@set -e; rm -f $@; \
|
||||
$(CPP) -M $(CFLAGS) $< > $@.$$$$; \
|
||||
sed 's,\($*\.o\)[ :]*,$(OBJODIR)/\1 $@ : ,g' < $@.$$$$ > $@; \
|
||||
rm -f $@.$$$$
|
||||
|
||||
$(OBJODIR)/%.o: %.s
|
||||
@mkdir -p $(OBJODIR);
|
||||
$(CC) $(CFLAGS) -o $@ -c $<
|
||||
|
||||
$(OBJODIR)/%.d: %.s
|
||||
@mkdir -p $(OBJODIR); \
|
||||
set -e; rm -f $@; \
|
||||
$(CC) -M $(CFLAGS) $< > $@.$$$$; \
|
||||
sed 's,\($*\.o\)[ :]*,$(OBJODIR)/\1 $@ : ,g' < $@.$$$$ > $@; \
|
||||
rm -f $@.$$$$
|
||||
|
||||
$(OBJODIR)/%.o: %.S
|
||||
@mkdir -p $(OBJODIR);
|
||||
$(CC) $(CFLAGS) -D__ASSEMBLER__ -o $@ -c $<
|
||||
|
||||
$(OBJODIR)/%.d: %.S
|
||||
@mkdir -p $(OBJODIR); \
|
||||
set -e; rm -f $@; \
|
||||
$(CC) -M $(CFLAGS) $< > $@.$$$$; \
|
||||
sed 's,\($*\.o\)[ :]*,$(OBJODIR)/\1 $@ : ,g' < $@.$$$$ > $@; \
|
||||
rm -f $@.$$$$
|
||||
|
||||
$(foreach lib,$(GEN_LIBS),$(eval $(call ShortcutRule,$(lib),$(LIBODIR))))
|
||||
|
||||
$(foreach image,$(GEN_IMAGES),$(eval $(call ShortcutRule,$(image),$(IMAGEODIR))))
|
||||
|
||||
$(foreach bin,$(GEN_BINS),$(eval $(call ShortcutRule,$(bin),$(BINODIR))))
|
||||
|
||||
$(foreach lib,$(GEN_LIBS),$(eval $(call MakeLibrary,$(basename $(lib)))))
|
||||
|
||||
$(foreach image,$(GEN_IMAGES),$(eval $(call MakeImage,$(basename $(image)))))
|
||||
|
||||
#############################################################
|
||||
# Recursion Magic - Don't touch this!!
|
||||
#
|
||||
# Each subtree potentially has an include directory
|
||||
# corresponding to the common APIs applicable to modules
|
||||
# rooted at that subtree. Accordingly, the INCLUDE PATH
|
||||
# of a module can only contain the include directories up
|
||||
# its parent path, and not its siblings
|
||||
#
|
||||
# Required for each makefile to inherit from the parent
|
||||
#
|
||||
|
||||
INCLUDES := $(INCLUDES) -I $(SDK_PATH)/include -I $(SDK_PATH)/extra_include
|
||||
INCLUDES += -I $(SDK_PATH)/driver_lib/include
|
||||
INCLUDES += -I $(SDK_PATH)/include/espressif
|
||||
INCLUDES += -I $(SDK_PATH)/include/lwip
|
||||
INCLUDES += -I $(SDK_PATH)/include/lwip/ipv4
|
||||
INCLUDES += -I $(SDK_PATH)/include/lwip/ipv6
|
||||
INCLUDES += -I $(SDK_PATH)/include/nopoll
|
||||
INCLUDES += -I $(SDK_PATH)/include/spiffs
|
||||
INCLUDES += -I $(SDK_PATH)/include/ssl
|
||||
INCLUDES += -I $(SDK_PATH)/include/json
|
||||
# copyright (c) 2010 Espressif System
|
||||
#
|
||||
ifndef PDIR
|
||||
|
||||
endif
|
||||
|
||||
ifeq ($(COMPILE), xcc)
|
||||
AR = xt-ar
|
||||
CC = xt-xcc
|
||||
NM = xt-nm
|
||||
CPP = xt-xt++
|
||||
OBJCOPY = xt-objcopy
|
||||
OBJDUMP = xt-objdump
|
||||
else
|
||||
AR = xtensa-lx106-elf-ar
|
||||
CC = xtensa-lx106-elf-gcc
|
||||
NM = xtensa-lx106-elf-nm
|
||||
CPP = xtensa-lx106-elf-g++
|
||||
OBJCOPY = xtensa-lx106-elf-objcopy
|
||||
OBJDUMP = xtensa-lx106-elf-objdump
|
||||
endif
|
||||
|
||||
BOOT?=none
|
||||
APP?=0
|
||||
SPI_SPEED?=40
|
||||
SPI_MODE?=QIO
|
||||
SPI_SIZE_MAP?=0
|
||||
|
||||
ifeq ($(BOOT), new)
|
||||
boot = new
|
||||
else
|
||||
ifeq ($(BOOT), old)
|
||||
boot = old
|
||||
else
|
||||
boot = none
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(APP), 1)
|
||||
app = 1
|
||||
else
|
||||
ifeq ($(APP), 2)
|
||||
app = 2
|
||||
else
|
||||
app = 0
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(SPI_SPEED), 26.7)
|
||||
freqdiv = 1
|
||||
else
|
||||
ifeq ($(SPI_SPEED), 20)
|
||||
freqdiv = 2
|
||||
else
|
||||
ifeq ($(SPI_SPEED), 80)
|
||||
freqdiv = 15
|
||||
else
|
||||
freqdiv = 0
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
ifeq ($(SPI_MODE), QOUT)
|
||||
mode = 1
|
||||
else
|
||||
ifeq ($(SPI_MODE), DIO)
|
||||
mode = 2
|
||||
else
|
||||
ifeq ($(SPI_MODE), DOUT)
|
||||
mode = 3
|
||||
else
|
||||
mode = 0
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
addr = 0x01000
|
||||
|
||||
ifeq ($(SPI_SIZE_MAP), 1)
|
||||
size_map = 1
|
||||
flash = 256
|
||||
else
|
||||
ifeq ($(SPI_SIZE_MAP), 2)
|
||||
size_map = 2
|
||||
flash = 1024
|
||||
ifeq ($(app), 2)
|
||||
addr = 0x81000
|
||||
endif
|
||||
else
|
||||
ifeq ($(SPI_SIZE_MAP), 3)
|
||||
size_map = 3
|
||||
flash = 2048
|
||||
ifeq ($(app), 2)
|
||||
addr = 0x81000
|
||||
endif
|
||||
else
|
||||
ifeq ($(SPI_SIZE_MAP), 4)
|
||||
size_map = 4
|
||||
flash = 4096
|
||||
ifeq ($(app), 2)
|
||||
addr = 0x81000
|
||||
endif
|
||||
else
|
||||
ifeq ($(SPI_SIZE_MAP), 5)
|
||||
size_map = 5
|
||||
flash = 2048
|
||||
ifeq ($(app), 2)
|
||||
addr = 0x101000
|
||||
endif
|
||||
else
|
||||
ifeq ($(SPI_SIZE_MAP), 6)
|
||||
size_map = 6
|
||||
flash = 4096
|
||||
ifeq ($(app), 2)
|
||||
addr = 0x101000
|
||||
endif
|
||||
else
|
||||
size_map = 0
|
||||
flash = 512
|
||||
ifeq ($(app), 2)
|
||||
addr = 0x41000
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
LD_FILE = $(LDDIR)/eagle.app.v6.ld
|
||||
|
||||
ifneq ($(boot), none)
|
||||
ifneq ($(app),0)
|
||||
ifeq ($(size_map), 6)
|
||||
LD_FILE = $(LDDIR)/eagle.app.v6.$(boot).2048.ld
|
||||
else
|
||||
ifeq ($(size_map), 5)
|
||||
LD_FILE = $(LDDIR)/eagle.app.v6.$(boot).2048.ld
|
||||
else
|
||||
ifeq ($(size_map), 4)
|
||||
LD_FILE = $(LDDIR)/eagle.app.v6.$(boot).1024.app$(app).ld
|
||||
else
|
||||
ifeq ($(size_map), 3)
|
||||
LD_FILE = $(LDDIR)/eagle.app.v6.$(boot).1024.app$(app).ld
|
||||
else
|
||||
ifeq ($(size_map), 2)
|
||||
LD_FILE = $(LDDIR)/eagle.app.v6.$(boot).1024.app$(app).ld
|
||||
else
|
||||
ifeq ($(size_map), 0)
|
||||
LD_FILE = $(LDDIR)/eagle.app.v6.$(boot).512.app$(app).ld
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
BIN_NAME = user$(app).$(flash).$(boot).$(size_map)
|
||||
endif
|
||||
else
|
||||
app = 0
|
||||
endif
|
||||
|
||||
CSRCS ?= $(wildcard *.c)
|
||||
CPPSRCS ?= $(wildcard *.cpp)
|
||||
ASRCs ?= $(wildcard *.s)
|
||||
ASRCS ?= $(wildcard *.S)
|
||||
SUBDIRS ?= $(patsubst %/,%,$(dir $(wildcard */Makefile)))
|
||||
|
||||
ODIR := .output
|
||||
OBJODIR := $(ODIR)/$(TARGET)/$(FLAVOR)/obj
|
||||
|
||||
OBJS := $(CSRCS:%.c=$(OBJODIR)/%.o) \
|
||||
$(CPPSRCS:%.cpp=$(OBJODIR)/%.o) \
|
||||
$(ASRCs:%.s=$(OBJODIR)/%.o) \
|
||||
$(ASRCS:%.S=$(OBJODIR)/%.o)
|
||||
|
||||
DEPS := $(CSRCS:%.c=$(OBJODIR)/%.d) \
|
||||
$(CPPSRCS:%.cpp=$(OBJODIR)/%.d) \
|
||||
$(ASRCs:%.s=$(OBJODIR)/%.d) \
|
||||
$(ASRCS:%.S=$(OBJODIR)/%.d)
|
||||
|
||||
LIBODIR := $(ODIR)/$(TARGET)/$(FLAVOR)/lib
|
||||
OLIBS := $(GEN_LIBS:%=$(LIBODIR)/%)
|
||||
|
||||
IMAGEODIR := $(ODIR)/$(TARGET)/$(FLAVOR)/image
|
||||
OIMAGES := $(GEN_IMAGES:%=$(IMAGEODIR)/%)
|
||||
|
||||
BINODIR := $(ODIR)/$(TARGET)/$(FLAVOR)/bin
|
||||
OBINS := $(GEN_BINS:%=$(BINODIR)/%)
|
||||
|
||||
CCFLAGS += \
|
||||
-g \
|
||||
-Wpointer-arith \
|
||||
-Wundef \
|
||||
-Werror \
|
||||
-Wl,-EL \
|
||||
-fno-inline-functions \
|
||||
-nostdlib \
|
||||
-mlongcalls \
|
||||
-mtext-section-literals \
|
||||
-ffunction-sections \
|
||||
-fdata-sections \
|
||||
-fno-builtin-printf \
|
||||
-fno-jump-tables
|
||||
# -Wall
|
||||
|
||||
CFLAGS = $(CCFLAGS) $(DEFINES) $(EXTRA_CCFLAGS) $(INCLUDES)
|
||||
DFLAGS = $(CCFLAGS) $(DDEFINES) $(EXTRA_CCFLAGS) $(INCLUDES)
|
||||
|
||||
|
||||
#############################################################
|
||||
# Functions
|
||||
#
|
||||
|
||||
define ShortcutRule
|
||||
$(1): .subdirs $(2)/$(1)
|
||||
endef
|
||||
|
||||
define MakeLibrary
|
||||
DEP_LIBS_$(1) = $$(foreach lib,$$(filter %.a,$$(COMPONENTS_$(1))),$$(dir $$(lib))$$(LIBODIR)/$$(notdir $$(lib)))
|
||||
DEP_OBJS_$(1) = $$(foreach obj,$$(filter %.o,$$(COMPONENTS_$(1))),$$(dir $$(obj))$$(OBJODIR)/$$(notdir $$(obj)))
|
||||
$$(LIBODIR)/$(1).a: $$(OBJS) $$(DEP_OBJS_$(1)) $$(DEP_LIBS_$(1)) $$(DEPENDS_$(1))
|
||||
@mkdir -p $$(LIBODIR)
|
||||
$$(if $$(filter %.a,$$?),mkdir -p $$(EXTRACT_DIR)_$(1))
|
||||
$$(if $$(filter %.a,$$?),cd $$(EXTRACT_DIR)_$(1); $$(foreach lib,$$(filter %.a,$$?),$$(AR) xo $$(UP_EXTRACT_DIR)/$$(lib);))
|
||||
$$(AR) ru $$@ $$(filter %.o,$$?) $$(if $$(filter %.a,$$?),$$(EXTRACT_DIR)_$(1)/*.o)
|
||||
$$(if $$(filter %.a,$$?),$$(RM) -r $$(EXTRACT_DIR)_$(1))
|
||||
endef
|
||||
|
||||
define MakeImage
|
||||
DEP_LIBS_$(1) = $$(foreach lib,$$(filter %.a,$$(COMPONENTS_$(1))),$$(dir $$(lib))$$(LIBODIR)/$$(notdir $$(lib)))
|
||||
DEP_OBJS_$(1) = $$(foreach obj,$$(filter %.o,$$(COMPONENTS_$(1))),$$(dir $$(obj))$$(OBJODIR)/$$(notdir $$(obj)))
|
||||
$$(IMAGEODIR)/$(1).out: $$(OBJS) $$(DEP_OBJS_$(1)) $$(DEP_LIBS_$(1)) $$(DEPENDS_$(1))
|
||||
@mkdir -p $$(IMAGEODIR)
|
||||
$$(CC) $$(LDFLAGS) $$(if $$(LINKFLAGS_$(1)),$$(LINKFLAGS_$(1)),$$(LINKFLAGS_DEFAULT) $$(OBJS) $$(DEP_OBJS_$(1)) $$(DEP_LIBS_$(1))) -o $$@
|
||||
endef
|
||||
|
||||
$(BINODIR)/%.bin: $(IMAGEODIR)/%.out
|
||||
@mkdir -p $(BIN_PATH)
|
||||
@mkdir -p $(BINODIR)
|
||||
|
||||
ifeq ($(APP), 0)
|
||||
@$(RM) -r $(BIN_PATH)/eagle.S $(BIN_PATH)/eagle.dump
|
||||
@$(OBJDUMP) -x -s $< > $(BIN_PATH)/eagle.dump
|
||||
@$(OBJDUMP) -S $< > $(BIN_PATH)/eagle.S
|
||||
else
|
||||
@mkdir -p $(BIN_PATH)/upgrade
|
||||
@$(RM) -r $(BIN_PATH)/upgrade/$(BIN_NAME).S $(BIN_PATH)/upgrade/$(BIN_NAME).dump
|
||||
@$(OBJDUMP) -x -s $< > $(BIN_PATH)/upgrade/$(BIN_NAME).dump
|
||||
@$(OBJDUMP) -S $< > $(BIN_PATH)/upgrade/$(BIN_NAME).S
|
||||
endif
|
||||
|
||||
@$(OBJCOPY) --only-section .text -O binary $< eagle.app.v6.text.bin
|
||||
@$(OBJCOPY) --only-section .data -O binary $< eagle.app.v6.data.bin
|
||||
@$(OBJCOPY) --only-section .rodata -O binary $< eagle.app.v6.rodata.bin
|
||||
@$(OBJCOPY) --only-section .irom0.text -O binary $< eagle.app.v6.irom0text.bin
|
||||
|
||||
@echo ""
|
||||
@echo "!!!"
|
||||
@echo "SDK_PATH: $(SDK_PATH)"
|
||||
|
||||
ifeq ($(app), 0)
|
||||
@python $(SDK_PATH)/tools/gen_appbin.py $< 0 $(mode) $(freqdiv) $(size_map)
|
||||
@mv eagle.app.flash.bin $(BIN_PATH)/eagle.flash.bin
|
||||
@mv eagle.app.v6.irom0text.bin $(BIN_PATH)/eagle.irom0text.bin
|
||||
@rm eagle.app.v6.*
|
||||
@echo "BIN_PATH: $(BIN_PATH)"
|
||||
@echo ""
|
||||
@echo "No boot needed."
|
||||
@echo "Generate eagle.flash.bin and eagle.irom0text.bin successully in BIN_PATH"
|
||||
@echo "eagle.flash.bin-------->0x00000"
|
||||
@echo "eagle.irom0text.bin---->0x20000"
|
||||
else
|
||||
@echo "BIN_PATH: $(BIN_PATH)/upgrade"
|
||||
@echo ""
|
||||
|
||||
ifneq ($(boot), new)
|
||||
@python $(SDK_PATH)/tools/gen_appbin.py $< 1 $(mode) $(freqdiv) $(size_map)
|
||||
@echo "Support boot_v1.1 and +"
|
||||
else
|
||||
@python $(SDK_PATH)/tools/gen_appbin.py $< 2 $(mode) $(freqdiv) $(size_map)
|
||||
|
||||
ifeq ($(size_map), 6)
|
||||
@echo "Support boot_v1.4 and +"
|
||||
else
|
||||
ifeq ($(size_map), 5)
|
||||
@echo "Support boot_v1.4 and +"
|
||||
else
|
||||
@echo "Support boot_v1.2 and +"
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
@mv eagle.app.flash.bin $(BIN_PATH)/upgrade/$(BIN_NAME).bin
|
||||
@rm eagle.app.v6.*
|
||||
@echo "Generate $(BIN_NAME).bin successully in BIN_PATH"
|
||||
@echo "boot.bin------------>0x00000"
|
||||
@echo "$(BIN_NAME).bin--->$(addr)"
|
||||
endif
|
||||
|
||||
@echo "!!!"
|
||||
|
||||
#############################################################
|
||||
# Rules base
|
||||
# Should be done in top-level makefile only
|
||||
#
|
||||
|
||||
all: .subdirs $(OBJS) $(OLIBS) $(OIMAGES) $(OBINS) $(SPECIAL_MKTARGETS)
|
||||
|
||||
clean:
|
||||
$(foreach d, $(SUBDIRS), $(MAKE) -C $(d) clean;)
|
||||
$(RM) -r $(ODIR)/$(TARGET)/$(FLAVOR)
|
||||
|
||||
clobber: $(SPECIAL_CLOBBER)
|
||||
$(foreach d, $(SUBDIRS), $(MAKE) -C $(d) clobber;)
|
||||
$(RM) -r $(ODIR)
|
||||
|
||||
.subdirs:
|
||||
@set -e; $(foreach d, $(SUBDIRS), $(MAKE) -C $(d);)
|
||||
|
||||
#.subdirs:
|
||||
# $(foreach d, $(SUBDIRS), $(MAKE) -C $(d))
|
||||
|
||||
ifneq ($(MAKECMDGOALS),clean)
|
||||
ifneq ($(MAKECMDGOALS),clobber)
|
||||
ifdef DEPS
|
||||
sinclude $(DEPS)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
$(OBJODIR)/%.o: %.c
|
||||
@mkdir -p $(OBJODIR);
|
||||
$(CC) $(if $(findstring $<,$(DSRCS)),$(DFLAGS),$(CFLAGS)) $(COPTS_$(*F)) -o $@ -c $<
|
||||
|
||||
$(OBJODIR)/%.d: %.c
|
||||
@mkdir -p $(OBJODIR);
|
||||
@echo DEPEND: $(CC) -M $(CFLAGS) $<
|
||||
@set -e; rm -f $@; \
|
||||
$(CC) -M $(CFLAGS) $< > $@.$$$$; \
|
||||
sed 's,\($*\.o\)[ :]*,$(OBJODIR)/\1 $@ : ,g' < $@.$$$$ > $@; \
|
||||
rm -f $@.$$$$
|
||||
|
||||
$(OBJODIR)/%.o: %.cpp
|
||||
@mkdir -p $(OBJODIR);
|
||||
$(CPP) $(if $(findstring $<,$(DSRCS)),$(DFLAGS),$(CFLAGS)) $(COPTS_$(*F)) -o $@ -c $<
|
||||
|
||||
$(OBJODIR)/%.d: %.cpp
|
||||
@mkdir -p $(OBJODIR);
|
||||
@echo DEPEND: $(CPP) -M $(CFLAGS) $<
|
||||
@set -e; rm -f $@; \
|
||||
$(CPP) -M $(CFLAGS) $< > $@.$$$$; \
|
||||
sed 's,\($*\.o\)[ :]*,$(OBJODIR)/\1 $@ : ,g' < $@.$$$$ > $@; \
|
||||
rm -f $@.$$$$
|
||||
|
||||
$(OBJODIR)/%.o: %.s
|
||||
@mkdir -p $(OBJODIR);
|
||||
$(CC) $(CFLAGS) -o $@ -c $<
|
||||
|
||||
$(OBJODIR)/%.d: %.s
|
||||
@mkdir -p $(OBJODIR); \
|
||||
set -e; rm -f $@; \
|
||||
$(CC) -M $(CFLAGS) $< > $@.$$$$; \
|
||||
sed 's,\($*\.o\)[ :]*,$(OBJODIR)/\1 $@ : ,g' < $@.$$$$ > $@; \
|
||||
rm -f $@.$$$$
|
||||
|
||||
$(OBJODIR)/%.o: %.S
|
||||
@mkdir -p $(OBJODIR);
|
||||
$(CC) $(CFLAGS) -D__ASSEMBLER__ -o $@ -c $<
|
||||
|
||||
$(OBJODIR)/%.d: %.S
|
||||
@mkdir -p $(OBJODIR); \
|
||||
set -e; rm -f $@; \
|
||||
$(CC) -M $(CFLAGS) $< > $@.$$$$; \
|
||||
sed 's,\($*\.o\)[ :]*,$(OBJODIR)/\1 $@ : ,g' < $@.$$$$ > $@; \
|
||||
rm -f $@.$$$$
|
||||
|
||||
$(foreach lib,$(GEN_LIBS),$(eval $(call ShortcutRule,$(lib),$(LIBODIR))))
|
||||
|
||||
$(foreach image,$(GEN_IMAGES),$(eval $(call ShortcutRule,$(image),$(IMAGEODIR))))
|
||||
|
||||
$(foreach bin,$(GEN_BINS),$(eval $(call ShortcutRule,$(bin),$(BINODIR))))
|
||||
|
||||
$(foreach lib,$(GEN_LIBS),$(eval $(call MakeLibrary,$(basename $(lib)))))
|
||||
|
||||
$(foreach image,$(GEN_IMAGES),$(eval $(call MakeImage,$(basename $(image)))))
|
||||
|
||||
#############################################################
|
||||
# Recursion Magic - Don't touch this!!
|
||||
#
|
||||
# Each subtree potentially has an include directory
|
||||
# corresponding to the common APIs applicable to modules
|
||||
# rooted at that subtree. Accordingly, the INCLUDE PATH
|
||||
# of a module can only contain the include directories up
|
||||
# its parent path, and not its siblings
|
||||
#
|
||||
# Required for each makefile to inherit from the parent
|
||||
#
|
||||
|
||||
INCLUDES := $(INCLUDES) -I $(SDK_PATH)/include -I $(SDK_PATH)/extra_include
|
||||
INCLUDES += -I $(SDK_PATH)/driver_lib/include
|
||||
INCLUDES += -I $(SDK_PATH)/include/espressif
|
||||
INCLUDES += -I $(SDK_PATH)/include/lwip
|
||||
INCLUDES += -I $(SDK_PATH)/include/lwip/ipv4
|
||||
INCLUDES += -I $(SDK_PATH)/include/lwip/ipv6
|
||||
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
|
||||
|
||||
|
@ -1,213 +1,219 @@
|
||||
/* This linker script generated from xt-genldscripts.tpp for LSP . */
|
||||
/* Linker Script for ld -N */
|
||||
|
||||
PHDRS
|
||||
{
|
||||
dport0_0_phdr PT_LOAD;
|
||||
dram0_0_phdr PT_LOAD;
|
||||
dram0_0_bss_phdr PT_LOAD;
|
||||
iram1_0_phdr PT_LOAD;
|
||||
irom0_0_phdr PT_LOAD;
|
||||
}
|
||||
|
||||
/* Default entry point: */
|
||||
ENTRY(call_user_start)
|
||||
EXTERN(_DebugExceptionVector)
|
||||
EXTERN(_DoubleExceptionVector)
|
||||
EXTERN(_KernelExceptionVector)
|
||||
EXTERN(_NMIExceptionVector)
|
||||
EXTERN(_UserExceptionVector)
|
||||
PROVIDE(_memmap_vecbase_reset = 0x40000000);
|
||||
/* Various memory-map dependent cache attribute settings: */
|
||||
_memmap_cacheattr_wb_base = 0x00000110;
|
||||
_memmap_cacheattr_wt_base = 0x00000110;
|
||||
_memmap_cacheattr_bp_base = 0x00000220;
|
||||
_memmap_cacheattr_unused_mask = 0xFFFFF00F;
|
||||
_memmap_cacheattr_wb_trapnull = 0x2222211F;
|
||||
_memmap_cacheattr_wba_trapnull = 0x2222211F;
|
||||
_memmap_cacheattr_wbna_trapnull = 0x2222211F;
|
||||
_memmap_cacheattr_wt_trapnull = 0x2222211F;
|
||||
_memmap_cacheattr_bp_trapnull = 0x2222222F;
|
||||
_memmap_cacheattr_wb_strict = 0xFFFFF11F;
|
||||
_memmap_cacheattr_wt_strict = 0xFFFFF11F;
|
||||
_memmap_cacheattr_bp_strict = 0xFFFFF22F;
|
||||
_memmap_cacheattr_wb_allvalid = 0x22222112;
|
||||
_memmap_cacheattr_wt_allvalid = 0x22222112;
|
||||
_memmap_cacheattr_bp_allvalid = 0x22222222;
|
||||
PROVIDE(_memmap_cacheattr_reset = _memmap_cacheattr_wb_trapnull);
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.dport0.rodata : ALIGN(4)
|
||||
{
|
||||
_dport0_rodata_start = ABSOLUTE(.);
|
||||
*(.dport0.rodata)
|
||||
*(.dport.rodata)
|
||||
_dport0_rodata_end = ABSOLUTE(.);
|
||||
} >dport0_0_seg :dport0_0_phdr
|
||||
|
||||
.dport0.literal : ALIGN(4)
|
||||
{
|
||||
_dport0_literal_start = ABSOLUTE(.);
|
||||
*(.dport0.literal)
|
||||
*(.dport.literal)
|
||||
_dport0_literal_end = ABSOLUTE(.);
|
||||
} >dport0_0_seg :dport0_0_phdr
|
||||
|
||||
.dport0.data : ALIGN(4)
|
||||
{
|
||||
_dport0_data_start = ABSOLUTE(.);
|
||||
*(.dport0.data)
|
||||
*(.dport.data)
|
||||
_dport0_data_end = ABSOLUTE(.);
|
||||
} >dport0_0_seg :dport0_0_phdr
|
||||
|
||||
.data : ALIGN(4)
|
||||
{
|
||||
_data_start = ABSOLUTE(.);
|
||||
*(.data)
|
||||
*(.data.*)
|
||||
*(.gnu.linkonce.d.*)
|
||||
*(.data1)
|
||||
*(.sdata)
|
||||
*(.sdata.*)
|
||||
*(.gnu.linkonce.s.*)
|
||||
*(.sdata2)
|
||||
*(.sdata2.*)
|
||||
*(.gnu.linkonce.s2.*)
|
||||
*(.jcr)
|
||||
_data_end = ABSOLUTE(.);
|
||||
} >dram0_0_seg :dram0_0_phdr
|
||||
|
||||
.rodata : ALIGN(4)
|
||||
{
|
||||
_rodata_start = ABSOLUTE(.);
|
||||
*(.rodata)
|
||||
*(.rodata.*)
|
||||
*(.gnu.linkonce.r.*)
|
||||
*(.rodata1)
|
||||
__XT_EXCEPTION_TABLE__ = ABSOLUTE(.);
|
||||
*(.xt_except_table)
|
||||
*(.gcc_except_table)
|
||||
*(.gnu.linkonce.e.*)
|
||||
*(.gnu.version_r)
|
||||
*(.eh_frame)
|
||||
. = (. + 3) & ~ 3;
|
||||
/* C++ constructor and destructor tables, properly ordered: */
|
||||
__init_array_start = ABSOLUTE(.);
|
||||
KEEP (*crtbegin.o(.ctors))
|
||||
KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
|
||||
KEEP (*(SORT(.ctors.*)))
|
||||
KEEP (*(.ctors))
|
||||
__init_array_end = ABSOLUTE(.);
|
||||
KEEP (*crtbegin.o(.dtors))
|
||||
KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
|
||||
KEEP (*(SORT(.dtors.*)))
|
||||
KEEP (*(.dtors))
|
||||
/* C++ exception handlers table: */
|
||||
__XT_EXCEPTION_DESCS__ = ABSOLUTE(.);
|
||||
*(.xt_except_desc)
|
||||
*(.gnu.linkonce.h.*)
|
||||
__XT_EXCEPTION_DESCS_END__ = ABSOLUTE(.);
|
||||
*(.xt_except_desc_end)
|
||||
*(.dynamic)
|
||||
*(.gnu.version_d)
|
||||
. = ALIGN(4); /* this table MUST be 4-byte aligned */
|
||||
_bss_table_start = ABSOLUTE(.);
|
||||
LONG(_bss_start)
|
||||
LONG(_bss_end)
|
||||
_bss_table_end = ABSOLUTE(.);
|
||||
_rodata_end = ABSOLUTE(.);
|
||||
} >dram0_0_seg :dram0_0_phdr
|
||||
|
||||
.UserExceptionVector.literal : AT(LOADADDR(.rodata) + (ADDR(.UserExceptionVector.literal) - ADDR(.rodata))) ALIGN(4)
|
||||
{
|
||||
_UserExceptionVector_literal_start = ABSOLUTE(.);
|
||||
*(.UserExceptionVector.literal)
|
||||
_UserExceptionVector_literal_end = ABSOLUTE(.);
|
||||
} >dram0_0_seg :dram0_0_phdr
|
||||
|
||||
.bss ALIGN(8) (NOLOAD) : ALIGN(4)
|
||||
{
|
||||
. = ALIGN (8);
|
||||
_bss_start = ABSOLUTE(.);
|
||||
*(.dynsbss)
|
||||
*(.sbss)
|
||||
*(.sbss.*)
|
||||
*(.gnu.linkonce.sb.*)
|
||||
*(.scommon)
|
||||
*(.sbss2)
|
||||
*(.sbss2.*)
|
||||
*(.gnu.linkonce.sb2.*)
|
||||
*(.dynbss)
|
||||
*(.bss)
|
||||
*(.bss.*)
|
||||
*(.gnu.linkonce.b.*)
|
||||
*(COMMON)
|
||||
. = ALIGN (8);
|
||||
_bss_end = ABSOLUTE(.);
|
||||
_heap_start = ABSOLUTE(.);
|
||||
/* _stack_sentry = ALIGN(0x8); */
|
||||
} >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(.);
|
||||
*(*.lit4)
|
||||
*(.lit4.*)
|
||||
*(.gnu.linkonce.lit4.*)
|
||||
_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 */
|
||||
INCLUDE "../ld/eagle.rom.addr.v6.ld"
|
||||
/* This linker script generated from xt-genldscripts.tpp for LSP . */
|
||||
/* Linker Script for ld -N */
|
||||
|
||||
PHDRS
|
||||
{
|
||||
dport0_0_phdr PT_LOAD;
|
||||
dram0_0_phdr PT_LOAD;
|
||||
dram0_0_bss_phdr PT_LOAD;
|
||||
iram1_0_phdr PT_LOAD;
|
||||
irom0_0_phdr PT_LOAD;
|
||||
}
|
||||
|
||||
/* Default entry point: */
|
||||
ENTRY(call_user_start)
|
||||
EXTERN(_DebugExceptionVector)
|
||||
EXTERN(_DoubleExceptionVector)
|
||||
EXTERN(_KernelExceptionVector)
|
||||
EXTERN(_NMIExceptionVector)
|
||||
EXTERN(_UserExceptionVector)
|
||||
PROVIDE(_memmap_vecbase_reset = 0x40000000);
|
||||
/* Various memory-map dependent cache attribute settings: */
|
||||
_memmap_cacheattr_wb_base = 0x00000110;
|
||||
_memmap_cacheattr_wt_base = 0x00000110;
|
||||
_memmap_cacheattr_bp_base = 0x00000220;
|
||||
_memmap_cacheattr_unused_mask = 0xFFFFF00F;
|
||||
_memmap_cacheattr_wb_trapnull = 0x2222211F;
|
||||
_memmap_cacheattr_wba_trapnull = 0x2222211F;
|
||||
_memmap_cacheattr_wbna_trapnull = 0x2222211F;
|
||||
_memmap_cacheattr_wt_trapnull = 0x2222211F;
|
||||
_memmap_cacheattr_bp_trapnull = 0x2222222F;
|
||||
_memmap_cacheattr_wb_strict = 0xFFFFF11F;
|
||||
_memmap_cacheattr_wt_strict = 0xFFFFF11F;
|
||||
_memmap_cacheattr_bp_strict = 0xFFFFF22F;
|
||||
_memmap_cacheattr_wb_allvalid = 0x22222112;
|
||||
_memmap_cacheattr_wt_allvalid = 0x22222112;
|
||||
_memmap_cacheattr_bp_allvalid = 0x22222222;
|
||||
PROVIDE(_memmap_cacheattr_reset = _memmap_cacheattr_wb_trapnull);
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.dport0.rodata : ALIGN(4)
|
||||
{
|
||||
_dport0_rodata_start = ABSOLUTE(.);
|
||||
*(.dport0.rodata)
|
||||
*(.dport.rodata)
|
||||
_dport0_rodata_end = ABSOLUTE(.);
|
||||
} >dport0_0_seg :dport0_0_phdr
|
||||
|
||||
.dport0.literal : ALIGN(4)
|
||||
{
|
||||
_dport0_literal_start = ABSOLUTE(.);
|
||||
*(.dport0.literal)
|
||||
*(.dport.literal)
|
||||
_dport0_literal_end = ABSOLUTE(.);
|
||||
} >dport0_0_seg :dport0_0_phdr
|
||||
|
||||
.dport0.data : ALIGN(4)
|
||||
{
|
||||
_dport0_data_start = ABSOLUTE(.);
|
||||
*(.dport0.data)
|
||||
*(.dport.data)
|
||||
_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(.);
|
||||
*(.data)
|
||||
*(.data.*)
|
||||
*(.gnu.linkonce.d.*)
|
||||
*(.data1)
|
||||
*(.sdata)
|
||||
*(.sdata.*)
|
||||
*(.gnu.linkonce.s.*)
|
||||
*(.sdata2)
|
||||
*(.sdata2.*)
|
||||
*(.gnu.linkonce.s2.*)
|
||||
*(.jcr)
|
||||
_data_end = ABSOLUTE(.);
|
||||
} >dram0_0_seg :dram0_0_phdr
|
||||
|
||||
.rodata : ALIGN(4)
|
||||
{
|
||||
_rodata_start = ABSOLUTE(.);
|
||||
*(.rodata)
|
||||
*(.rodata.*)
|
||||
*(.gnu.linkonce.r.*)
|
||||
*(.rodata1)
|
||||
__XT_EXCEPTION_TABLE__ = ABSOLUTE(.);
|
||||
*(.xt_except_table)
|
||||
*(.gcc_except_table)
|
||||
*(.gnu.linkonce.e.*)
|
||||
*(.gnu.version_r)
|
||||
*(.eh_frame)
|
||||
. = (. + 3) & ~ 3;
|
||||
/* C++ constructor and destructor tables, properly ordered: */
|
||||
__init_array_start = ABSOLUTE(.);
|
||||
KEEP (*crtbegin.o(.ctors))
|
||||
KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
|
||||
KEEP (*(SORT(.ctors.*)))
|
||||
KEEP (*(.ctors))
|
||||
__init_array_end = ABSOLUTE(.);
|
||||
KEEP (*crtbegin.o(.dtors))
|
||||
KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
|
||||
KEEP (*(SORT(.dtors.*)))
|
||||
KEEP (*(.dtors))
|
||||
/* C++ exception handlers table: */
|
||||
__XT_EXCEPTION_DESCS__ = ABSOLUTE(.);
|
||||
*(.xt_except_desc)
|
||||
*(.gnu.linkonce.h.*)
|
||||
__XT_EXCEPTION_DESCS_END__ = ABSOLUTE(.);
|
||||
*(.xt_except_desc_end)
|
||||
*(.dynamic)
|
||||
*(.gnu.version_d)
|
||||
. = ALIGN(4); /* this table MUST be 4-byte aligned */
|
||||
_bss_table_start = ABSOLUTE(.);
|
||||
LONG(_bss_start)
|
||||
LONG(_bss_end)
|
||||
_bss_table_end = ABSOLUTE(.);
|
||||
_rodata_end = ABSOLUTE(.);
|
||||
} >dram0_0_seg :dram0_0_phdr
|
||||
|
||||
.UserExceptionVector.literal : AT(LOADADDR(.rodata) + (ADDR(.UserExceptionVector.literal) - ADDR(.rodata))) ALIGN(4)
|
||||
{
|
||||
_UserExceptionVector_literal_start = ABSOLUTE(.);
|
||||
*(.UserExceptionVector.literal)
|
||||
_UserExceptionVector_literal_end = ABSOLUTE(.);
|
||||
} >dram0_0_seg :dram0_0_phdr
|
||||
|
||||
.bss ALIGN(8) (NOLOAD) : ALIGN(4)
|
||||
{
|
||||
. = ALIGN (8);
|
||||
_bss_start = ABSOLUTE(.);
|
||||
*(.dynsbss)
|
||||
*(.sbss)
|
||||
*(.sbss.*)
|
||||
*(.gnu.linkonce.sb.*)
|
||||
*(.scommon)
|
||||
*(.sbss2)
|
||||
*(.sbss2.*)
|
||||
*(.gnu.linkonce.sb2.*)
|
||||
*(.dynbss)
|
||||
*(.bss)
|
||||
*(.bss.*)
|
||||
*(.gnu.linkonce.b.*)
|
||||
*(COMMON)
|
||||
. = ALIGN (8);
|
||||
_bss_end = ABSOLUTE(.);
|
||||
_heap_start = ABSOLUTE(.);
|
||||
/* _stack_sentry = ALIGN(0x8); */
|
||||
} >dram0_0_seg :dram0_0_bss_phdr
|
||||
/* __stack = 0x3ffc8000; */
|
||||
|
||||
.lit4 : ALIGN(4)
|
||||
{
|
||||
_lit4_start = ABSOLUTE(.);
|
||||
*(*.lit4)
|
||||
*(.lit4.*)
|
||||
*(.gnu.linkonce.lit4.*)
|
||||
_lit4_end = ABSOLUTE(.);
|
||||
} >iram1_0_seg :iram1_0_phdr
|
||||
|
||||
}
|
||||
|
||||
/* get ROM code address */
|
||||
INCLUDE "../ld/eagle.rom.addr.v6.ld"
|
||||
|
@ -1,32 +1,32 @@
|
||||
/* eagle.flash.bin @ 0x00000 */
|
||||
/* eagle.irom0text.bin @ 0x20000 */
|
||||
|
||||
/* Flash Map, support 512KB/1MB/2MB/4MB SPI Flash */
|
||||
/* |......|..............................|..........................|.....|....| */
|
||||
/* ^ ^ ^ ^ ^ */
|
||||
/* |_flash.bin start(0x0000) |_irom0text.bin start(0x20000) | */
|
||||
/* |_flash.bin end |_irom0text.bin end */
|
||||
/* |_system param area(0x7b000) */
|
||||
|
||||
/* NOTICE: */
|
||||
/* 1. You can change irom0 org, but MUST make sure irom0text.bin start not overlap flash.bin end. */
|
||||
/* 2. You can change irom0 len, but MUST make sure irom0text.bin end not overlap system param area. */
|
||||
/* 3. Space between flash.bin end and irom0text.bin start can be used as user param area. */
|
||||
/* 4. Space between irom0text.bin end and system param area can be used as user param area. */
|
||||
/* 5. Make sure irom0text.bin end < 0x100000 */
|
||||
/* 6. system param area: */
|
||||
/* 1>. 512KB--->0x07b000 */
|
||||
/* 2>. 1MB----->0x0fb000 */
|
||||
/* 3>. 2MB----->0x1fb000 */
|
||||
/* 4>. 4MB----->0x3fb000 */
|
||||
/* 7. Don't change any other seg. */
|
||||
|
||||
MEMORY
|
||||
{
|
||||
dport0_0_seg : org = 0x3FF00000, len = 0x10
|
||||
dram0_0_seg : org = 0x3FFE8000, len = 0x18000
|
||||
iram1_0_seg : org = 0x40100000, len = 0x8000
|
||||
irom0_0_seg : org = 0x40220000, len = 0x5C000
|
||||
}
|
||||
|
||||
/* eagle.flash.bin @ 0x00000 */
|
||||
/* eagle.irom0text.bin @ 0x20000 */
|
||||
|
||||
/* Flash Map, support 512KB/1MB/2MB/4MB SPI Flash */
|
||||
/* |......|..............................|..........................|.....|....| */
|
||||
/* ^ ^ ^ ^ ^ */
|
||||
/* |_flash.bin start(0x0000) |_irom0text.bin start(0x20000) | */
|
||||
/* |_flash.bin end |_irom0text.bin end */
|
||||
/* |_system param area(0x7b000) */
|
||||
|
||||
/* NOTICE: */
|
||||
/* 1. You can change irom0 org, but MUST make sure irom0text.bin start not overlap flash.bin end. */
|
||||
/* 2. You can change irom0 len, but MUST make sure irom0text.bin end not overlap system param area. */
|
||||
/* 3. Space between flash.bin end and irom0text.bin start can be used as user param area. */
|
||||
/* 4. Space between irom0text.bin end and system param area can be used as user param area. */
|
||||
/* 5. Make sure irom0text.bin end < 0x100000 */
|
||||
/* 6. system param area: */
|
||||
/* 1>. 512KB--->0x07b000 */
|
||||
/* 2>. 1MB----->0x0fb000 */
|
||||
/* 3>. 2MB----->0x1fb000 */
|
||||
/* 4>. 4MB----->0x3fb000 */
|
||||
/* 7. Don't change any other seg. */
|
||||
|
||||
MEMORY
|
||||
{
|
||||
dport0_0_seg : org = 0x3FF00000, len = 0x10
|
||||
dram0_0_seg : org = 0x3FFE8000, len = 0x18000
|
||||
iram1_0_seg : org = 0x40100000, len = 0x8000
|
||||
irom0_0_seg : org = 0x40220000, len = 0x5C000
|
||||
}
|
||||
|
||||
INCLUDE "../ld/eagle.app.v6.common.ld"
|
@ -1,23 +1,23 @@
|
||||
/* user1.bin @ 0x1000 */
|
||||
|
||||
/* Flash Map (512KB + 512KB), support 1MB/2MB/4MB SPI Flash */
|
||||
/* |..|........................|.....|.....|..|........................|.....|....| */
|
||||
/* ^ ^ ^ ^ ^ ^ ^ ^ */
|
||||
/* |_boot start(0x0000) | | |_pad start(0x80000) | | */
|
||||
/* |_user1 start(0x1000) |_user1 end |_user2 start(0x81000) |_user2 end */
|
||||
/* |_system param symmetric area(0x7b000) |_system param area(0xfb000) */
|
||||
|
||||
/* NOTICE: */
|
||||
/* 1. You can change irom0 len, but MUST make sure user1 end not overlap system param symmetric area. */
|
||||
/* 2. Space between user1 end and pad start can be used as user param area. */
|
||||
/* 3. Don't change any other seg. */
|
||||
|
||||
MEMORY
|
||||
{
|
||||
dport0_0_seg : org = 0x3FF00000, len = 0x10
|
||||
dram0_0_seg : org = 0x3FFE8000, len = 0x18000
|
||||
iram1_0_seg : org = 0x40100000, len = 0x8000
|
||||
irom0_0_seg : org = 0x40201010, len = 0x6B000
|
||||
}
|
||||
|
||||
INCLUDE "../ld/eagle.app.v6.common.ld"
|
||||
/* user1.bin @ 0x1000 */
|
||||
|
||||
/* Flash Map (512KB + 512KB), support 1MB/2MB/4MB SPI Flash */
|
||||
/* |..|........................|.....|.....|..|........................|.....|....| */
|
||||
/* ^ ^ ^ ^ ^ ^ ^ ^ */
|
||||
/* |_boot start(0x0000) | | |_pad start(0x80000) | | */
|
||||
/* |_user1 start(0x1000) |_user1 end |_user2 start(0x81000) |_user2 end */
|
||||
/* |_system param symmetric area(0x7b000) |_system param area(0xfb000) */
|
||||
|
||||
/* NOTICE: */
|
||||
/* 1. You can change irom0 len, but MUST make sure user1 end not overlap system param symmetric area. */
|
||||
/* 2. Space between user1 end and pad start can be used as user param area. */
|
||||
/* 3. Don't change any other seg. */
|
||||
|
||||
MEMORY
|
||||
{
|
||||
dport0_0_seg : org = 0x3FF00000, len = 0x10
|
||||
dram0_0_seg : org = 0x3FFE8000, len = 0x18000
|
||||
iram1_0_seg : org = 0x40100000, len = 0x8000
|
||||
irom0_0_seg : org = 0x40201010, len = 0x6B000
|
||||
}
|
||||
|
||||
INCLUDE "../ld/eagle.app.v6.common.ld"
|
||||
|
@ -1,23 +1,23 @@
|
||||
/* user2.bin @ 0x81000 */
|
||||
|
||||
/* Flash Map (512KB + 512KB), support 1MB/2MB/4MB SPI Flash */
|
||||
/* |..|........................|.....|.....|..|........................|.....|....| */
|
||||
/* ^ ^ ^ ^ ^ ^ ^ ^ */
|
||||
/* |_boot start(0x0000) | | |_pad start(0x80000) | | */
|
||||
/* |_user1 start(0x1000) |_user1 end |_user2 start(0x81000) |_user2 end */
|
||||
/* |_system param symmetric area(0x7b000) |_system param area(0xfb000) */
|
||||
|
||||
/* NOTICE: */
|
||||
/* 1. You can change irom0 len, but MUST make sure user2 end not overlap system param area. */
|
||||
/* 2. Space between user2 end and system param area can be used as user param area. */
|
||||
/* 3. Don't change any other seg. */
|
||||
|
||||
MEMORY
|
||||
{
|
||||
dport0_0_seg : org = 0x3FF00000, len = 0x10
|
||||
dram0_0_seg : org = 0x3FFE8000, len = 0x18000
|
||||
iram1_0_seg : org = 0x40100000, len = 0x8000
|
||||
irom0_0_seg : org = 0x40281010, len = 0x6B000
|
||||
}
|
||||
|
||||
INCLUDE "../ld/eagle.app.v6.common.ld"
|
||||
/* user2.bin @ 0x81000 */
|
||||
|
||||
/* Flash Map (512KB + 512KB), support 1MB/2MB/4MB SPI Flash */
|
||||
/* |..|........................|.....|.....|..|........................|.....|....| */
|
||||
/* ^ ^ ^ ^ ^ ^ ^ ^ */
|
||||
/* |_boot start(0x0000) | | |_pad start(0x80000) | | */
|
||||
/* |_user1 start(0x1000) |_user1 end |_user2 start(0x81000) |_user2 end */
|
||||
/* |_system param symmetric area(0x7b000) |_system param area(0xfb000) */
|
||||
|
||||
/* NOTICE: */
|
||||
/* 1. You can change irom0 len, but MUST make sure user2 end not overlap system param area. */
|
||||
/* 2. Space between user2 end and system param area can be used as user param area. */
|
||||
/* 3. Don't change any other seg. */
|
||||
|
||||
MEMORY
|
||||
{
|
||||
dport0_0_seg : org = 0x3FF00000, len = 0x10
|
||||
dram0_0_seg : org = 0x3FFE8000, len = 0x18000
|
||||
iram1_0_seg : org = 0x40100000, len = 0x8000
|
||||
irom0_0_seg : org = 0x40281010, len = 0x6B000
|
||||
}
|
||||
|
||||
INCLUDE "../ld/eagle.app.v6.common.ld"
|
||||
|
@ -1,25 +1,25 @@
|
||||
/* user1.bin @ 0x1000, user2.bin @ 0x10000 */
|
||||
|
||||
/* Flash Map (1024KB + 1024KB), support 2MB/4MB SPI Flash */
|
||||
/* |..|........................|.....|.....|..|........................|.....|....| */
|
||||
/* ^ ^ ^ ^ ^ ^ ^ ^ */
|
||||
/* |_boot start(0x0000) | | |_pad start(0x100000) | | */
|
||||
/* |_user1 start(0x1000) |_user1 end |_user2 start(0x101000) |_user2 end */
|
||||
/* |_system param symmetric area(0xfb000) |_system param area(0x1fb000) */
|
||||
|
||||
/* NOTICE: */
|
||||
/* 1. You can change irom0 len, but MUST make sure user1 end not overlap system param symmetric area. */
|
||||
/* 2. Space between user1 end and pad start can be used as user param area. */
|
||||
/* 3. Space between user2 end and system param area can be used as user param area. */
|
||||
/* 4. Don't change any other seg. */
|
||||
/* 5. user1.bin and user2.bin are same in this mode, so upgrade only need one of them. */
|
||||
|
||||
MEMORY
|
||||
{
|
||||
dport0_0_seg : org = 0x3FF00000, len = 0x10
|
||||
dram0_0_seg : org = 0x3FFE8000, len = 0x18000
|
||||
iram1_0_seg : org = 0x40100000, len = 0x8000
|
||||
irom0_0_seg : org = 0x40201010, len = 0xE0000
|
||||
}
|
||||
|
||||
INCLUDE "../ld/eagle.app.v6.common.ld"
|
||||
/* user1.bin @ 0x1000, user2.bin @ 0x10000 */
|
||||
|
||||
/* Flash Map (1024KB + 1024KB), support 2MB/4MB SPI Flash */
|
||||
/* |..|........................|.....|.....|..|........................|.....|....| */
|
||||
/* ^ ^ ^ ^ ^ ^ ^ ^ */
|
||||
/* |_boot start(0x0000) | | |_pad start(0x100000) | | */
|
||||
/* |_user1 start(0x1000) |_user1 end |_user2 start(0x101000) |_user2 end */
|
||||
/* |_system param symmetric area(0xfb000) |_system param area(0x1fb000) */
|
||||
|
||||
/* NOTICE: */
|
||||
/* 1. You can change irom0 len, but MUST make sure user1 end not overlap system param symmetric area. */
|
||||
/* 2. Space between user1 end and pad start can be used as user param area. */
|
||||
/* 3. Space between user2 end and system param area can be used as user param area. */
|
||||
/* 4. Don't change any other seg. */
|
||||
/* 5. user1.bin and user2.bin are same in this mode, so upgrade only need one of them. */
|
||||
|
||||
MEMORY
|
||||
{
|
||||
dport0_0_seg : org = 0x3FF00000, len = 0x10
|
||||
dram0_0_seg : org = 0x3FFE8000, len = 0x18000
|
||||
iram1_0_seg : org = 0x40100000, len = 0x8000
|
||||
irom0_0_seg : org = 0x40201010, len = 0xE0000
|
||||
}
|
||||
|
||||
INCLUDE "../ld/eagle.app.v6.common.ld"
|
||||
|
@ -1,23 +1,23 @@
|
||||
/* user1.bin @ 0x1000 */
|
||||
|
||||
/* Flash Map (256KB + 256KB), support 512KB SPI Flash */
|
||||
/* |..|........................|.....|.....|..|........................|.....|....| */
|
||||
/* ^ ^ ^ ^ ^ ^ ^ ^ */
|
||||
/* |_boot start(0x0000) | | |_pad start(0x40000) | | */
|
||||
/* |_user1 start(0x1000) |_user1 end |_user2 start(0x41000) |_user2 end */
|
||||
/* |_system param symmetric area(0x3b000) |_system param area(0x7b000) */
|
||||
|
||||
/* NOTICE: */
|
||||
/* 1. You can change irom0 len, but MUST make sure user1 end not overlap system param symmetric area. */
|
||||
/* 2. Space between user1 end and pad start can be used as user param area. */
|
||||
/* 3. Don't change any other seg. */
|
||||
|
||||
MEMORY
|
||||
{
|
||||
dport0_0_seg : org = 0x3FF00000, len = 0x10
|
||||
dram0_0_seg : org = 0x3FFE8000, len = 0x18000
|
||||
iram1_0_seg : org = 0x40100000, len = 0x8000
|
||||
irom0_0_seg : org = 0x40201010, len = 0x2B000
|
||||
}
|
||||
|
||||
INCLUDE "../ld/eagle.app.v6.common.ld"
|
||||
/* user1.bin @ 0x1000 */
|
||||
|
||||
/* Flash Map (256KB + 256KB), support 512KB SPI Flash */
|
||||
/* |..|........................|.....|.....|..|........................|.....|....| */
|
||||
/* ^ ^ ^ ^ ^ ^ ^ ^ */
|
||||
/* |_boot start(0x0000) | | |_pad start(0x40000) | | */
|
||||
/* |_user1 start(0x1000) |_user1 end |_user2 start(0x41000) |_user2 end */
|
||||
/* |_system param symmetric area(0x3b000) |_system param area(0x7b000) */
|
||||
|
||||
/* NOTICE: */
|
||||
/* 1. You can change irom0 len, but MUST make sure user1 end not overlap system param symmetric area. */
|
||||
/* 2. Space between user1 end and pad start can be used as user param area. */
|
||||
/* 3. Don't change any other seg. */
|
||||
|
||||
MEMORY
|
||||
{
|
||||
dport0_0_seg : org = 0x3FF00000, len = 0x10
|
||||
dram0_0_seg : org = 0x3FFE8000, len = 0x18000
|
||||
iram1_0_seg : org = 0x40100000, len = 0x8000
|
||||
irom0_0_seg : org = 0x40201010, len = 0x2B000
|
||||
}
|
||||
|
||||
INCLUDE "../ld/eagle.app.v6.common.ld"
|
||||
|
@ -1,23 +1,23 @@
|
||||
/* user2.bin @ 0x41000 */
|
||||
|
||||
/* Flash Map (256KB + 256KB), support 512KB SPI Flash */
|
||||
/* |..|........................|.....|.....|..|........................|.....|....| */
|
||||
/* ^ ^ ^ ^ ^ ^ ^ ^ */
|
||||
/* |_boot start(0x0000) | | |_pad start(0x40000) | | */
|
||||
/* |_user1 start(0x1000) |_user1 end |_user2 start(0x41000) |_user2 end */
|
||||
/* |_system param symmetric area(0x3b000) |_system param area(0x7b000) */
|
||||
|
||||
/* NOTICE: */
|
||||
/* 1. You can change irom0 len, but MUST make sure user2 end not overlap system param area. */
|
||||
/* 2. Space between user2 end and system param area can be used as user param area. */
|
||||
/* 3. Don't change any other seg. */
|
||||
|
||||
MEMORY
|
||||
{
|
||||
dport0_0_seg : org = 0x3FF00000, len = 0x10
|
||||
dram0_0_seg : org = 0x3FFE8000, len = 0x18000
|
||||
iram1_0_seg : org = 0x40100000, len = 0x8000
|
||||
irom0_0_seg : org = 0x40241010, len = 0x2B000
|
||||
}
|
||||
|
||||
INCLUDE "../ld/eagle.app.v6.common.ld"
|
||||
/* user2.bin @ 0x41000 */
|
||||
|
||||
/* Flash Map (256KB + 256KB), support 512KB SPI Flash */
|
||||
/* |..|........................|.....|.....|..|........................|.....|....| */
|
||||
/* ^ ^ ^ ^ ^ ^ ^ ^ */
|
||||
/* |_boot start(0x0000) | | |_pad start(0x40000) | | */
|
||||
/* |_user1 start(0x1000) |_user1 end |_user2 start(0x41000) |_user2 end */
|
||||
/* |_system param symmetric area(0x3b000) |_system param area(0x7b000) */
|
||||
|
||||
/* NOTICE: */
|
||||
/* 1. You can change irom0 len, but MUST make sure user2 end not overlap system param area. */
|
||||
/* 2. Space between user2 end and system param area can be used as user param area. */
|
||||
/* 3. Don't change any other seg. */
|
||||
|
||||
MEMORY
|
||||
{
|
||||
dport0_0_seg : org = 0x3FF00000, len = 0x10
|
||||
dram0_0_seg : org = 0x3FFE8000, len = 0x18000
|
||||
iram1_0_seg : org = 0x40100000, len = 0x8000
|
||||
irom0_0_seg : org = 0x40241010, len = 0x2B000
|
||||
}
|
||||
|
||||
INCLUDE "../ld/eagle.app.v6.common.ld"
|
||||
|
@ -1,58 +1,58 @@
|
||||
PROVIDE ( SPI_sector_erase = 0x400040c0 );
|
||||
PROVIDE ( SPI_page_program = 0x40004174 );
|
||||
PROVIDE ( SPI_read_data = 0x400042ac );
|
||||
PROVIDE ( SPI_read_status = 0x400043c8 );
|
||||
PROVIDE ( SPI_write_status = 0x40004400 );
|
||||
PROVIDE ( SPI_write_enable = 0x4000443c );
|
||||
PROVIDE ( Wait_SPI_Idle = 0x4000448c );
|
||||
PROVIDE ( Enable_QMode = 0x400044c0 );
|
||||
PROVIDE ( Disable_QMode = 0x40004508 );
|
||||
|
||||
PROVIDE ( Cache_Read_Enable = 0x40004678 );
|
||||
PROVIDE ( Cache_Read_Disable = 0x400047f0 );
|
||||
|
||||
PROVIDE ( lldesc_build_chain = 0x40004f40 );
|
||||
PROVIDE ( lldesc_num2link = 0x40005050 );
|
||||
PROVIDE ( lldesc_set_owner = 0x4000507c );
|
||||
|
||||
PROVIDE ( __adddf3 = 0x4000c538 );
|
||||
PROVIDE ( __addsf3 = 0x4000c180 );
|
||||
PROVIDE ( __divdf3 = 0x4000cb94 );
|
||||
PROVIDE ( __divdi3 = 0x4000ce60 );
|
||||
PROVIDE ( __divsi3 = 0x4000dc88 );
|
||||
PROVIDE ( __extendsfdf2 = 0x4000cdfc );
|
||||
PROVIDE ( __fixdfsi = 0x4000ccb8 );
|
||||
PROVIDE ( __fixunsdfsi = 0x4000cd00 );
|
||||
PROVIDE ( __fixunssfsi = 0x4000c4c4 );
|
||||
PROVIDE ( __floatsidf = 0x4000e2f0 );
|
||||
PROVIDE ( __floatsisf = 0x4000e2ac );
|
||||
PROVIDE ( __floatunsidf = 0x4000e2e8 );
|
||||
PROVIDE ( __floatunsisf = 0x4000e2a4 );
|
||||
PROVIDE ( __muldf3 = 0x4000c8f0 );
|
||||
PROVIDE ( __muldi3 = 0x40000650 );
|
||||
PROVIDE ( __mulsf3 = 0x4000c3dc );
|
||||
PROVIDE ( __subdf3 = 0x4000c688 );
|
||||
PROVIDE ( __subsf3 = 0x4000c268 );
|
||||
PROVIDE ( __truncdfsf2 = 0x4000cd5c );
|
||||
PROVIDE ( __udivdi3 = 0x4000d310 );
|
||||
PROVIDE ( __udivsi3 = 0x4000e21c );
|
||||
PROVIDE ( __umoddi3 = 0x4000d770 );
|
||||
PROVIDE ( __umodsi3 = 0x4000e268 );
|
||||
PROVIDE ( __umulsidi3 = 0x4000dcf0 );
|
||||
|
||||
PROVIDE ( bzero = 0x40002ae8 );
|
||||
PROVIDE ( memcmp = 0x400018d4 );
|
||||
PROVIDE ( memcpy = 0x400018b4 );
|
||||
PROVIDE ( memmove = 0x400018c4 );
|
||||
PROVIDE ( memset = 0x400018a4 );
|
||||
|
||||
PROVIDE ( strcmp = 0x40002aa8 );
|
||||
PROVIDE ( strcpy = 0x40002a88 );
|
||||
PROVIDE ( strlen = 0x40002ac8 );
|
||||
PROVIDE ( strncmp = 0x40002ab8 );
|
||||
PROVIDE ( strncpy = 0x40002a98 );
|
||||
PROVIDE ( strstr = 0x40002ad8 );
|
||||
|
||||
PROVIDE ( gpio_input_get = 0x40004cf0 );
|
||||
PROVIDE ( gpio_pin_wakeup_disable = 0x40004ed4 );
|
||||
PROVIDE ( SPI_sector_erase = 0x400040c0 );
|
||||
PROVIDE ( SPI_page_program = 0x40004174 );
|
||||
PROVIDE ( SPI_read_data = 0x400042ac );
|
||||
PROVIDE ( SPI_read_status = 0x400043c8 );
|
||||
PROVIDE ( SPI_write_status = 0x40004400 );
|
||||
PROVIDE ( SPI_write_enable = 0x4000443c );
|
||||
PROVIDE ( Wait_SPI_Idle = 0x4000448c );
|
||||
PROVIDE ( Enable_QMode = 0x400044c0 );
|
||||
PROVIDE ( Disable_QMode = 0x40004508 );
|
||||
|
||||
PROVIDE ( Cache_Read_Enable = 0x40004678 );
|
||||
PROVIDE ( Cache_Read_Disable = 0x400047f0 );
|
||||
|
||||
PROVIDE ( lldesc_build_chain = 0x40004f40 );
|
||||
PROVIDE ( lldesc_num2link = 0x40005050 );
|
||||
PROVIDE ( lldesc_set_owner = 0x4000507c );
|
||||
|
||||
PROVIDE ( __adddf3 = 0x4000c538 );
|
||||
PROVIDE ( __addsf3 = 0x4000c180 );
|
||||
PROVIDE ( __divdf3 = 0x4000cb94 );
|
||||
PROVIDE ( __divdi3 = 0x4000ce60 );
|
||||
PROVIDE ( __divsi3 = 0x4000dc88 );
|
||||
PROVIDE ( __extendsfdf2 = 0x4000cdfc );
|
||||
PROVIDE ( __fixdfsi = 0x4000ccb8 );
|
||||
PROVIDE ( __fixunsdfsi = 0x4000cd00 );
|
||||
PROVIDE ( __fixunssfsi = 0x4000c4c4 );
|
||||
PROVIDE ( __floatsidf = 0x4000e2f0 );
|
||||
PROVIDE ( __floatsisf = 0x4000e2ac );
|
||||
PROVIDE ( __floatunsidf = 0x4000e2e8 );
|
||||
PROVIDE ( __floatunsisf = 0x4000e2a4 );
|
||||
PROVIDE ( __muldf3 = 0x4000c8f0 );
|
||||
PROVIDE ( __muldi3 = 0x40000650 );
|
||||
PROVIDE ( __mulsf3 = 0x4000c3dc );
|
||||
PROVIDE ( __subdf3 = 0x4000c688 );
|
||||
PROVIDE ( __subsf3 = 0x4000c268 );
|
||||
PROVIDE ( __truncdfsf2 = 0x4000cd5c );
|
||||
PROVIDE ( __udivdi3 = 0x4000d310 );
|
||||
PROVIDE ( __udivsi3 = 0x4000e21c );
|
||||
PROVIDE ( __umoddi3 = 0x4000d770 );
|
||||
PROVIDE ( __umodsi3 = 0x4000e268 );
|
||||
PROVIDE ( __umulsidi3 = 0x4000dcf0 );
|
||||
|
||||
PROVIDE ( bzero = 0x40002ae8 );
|
||||
PROVIDE ( memcmp = 0x400018d4 );
|
||||
PROVIDE ( memcpy = 0x400018b4 );
|
||||
PROVIDE ( memmove = 0x400018c4 );
|
||||
PROVIDE ( memset = 0x400018a4 );
|
||||
|
||||
PROVIDE ( strcmp = 0x40002aa8 );
|
||||
PROVIDE ( strcpy = 0x40002a88 );
|
||||
PROVIDE ( strlen = 0x40002ac8 );
|
||||
PROVIDE ( strncmp = 0x40002ab8 );
|
||||
PROVIDE ( strncpy = 0x40002a98 );
|
||||
PROVIDE ( strstr = 0x40002ad8 );
|
||||
|
||||
PROVIDE ( gpio_input_get = 0x40004cf0 );
|
||||
PROVIDE ( gpio_pin_wakeup_disable = 0x40004ed4 );
|
||||
PROVIDE ( gpio_pin_wakeup_enable = 0x40004e90 );
|
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);
|
||||
|
45
third_party/lwip/netif/ethernetif.c
vendored
Normal file → Executable file
45
third_party/lwip/netif/ethernetif.c
vendored
Normal file → Executable file
@ -69,12 +69,10 @@ bool default_hostname = 1;
|
||||
*/
|
||||
static void
|
||||
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) {
|
||||
@ -255,7 +263,10 @@ err_t ethernetif_init(struct netif *netif)
|
||||
netif->output_ip6 = ethip6_output;
|
||||
#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