mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-05-21 00:56:38 +08:00
feat(esp8266): Add configuration link function
Select to link "FreeRTOS", "LWIP", "libcore.a" and "TCPIP adapter" global data to IRAM.
This commit is contained in:
@ -35,6 +35,11 @@ config SOC_FULL_ICACHE
|
|||||||
Enable this option, full 32 KB iram instead of 16 KB iram will be used as icache, so the heap use can use
|
Enable this option, full 32 KB iram instead of 16 KB iram will be used as icache, so the heap use can use
|
||||||
may reduce a lot.
|
may reduce a lot.
|
||||||
|
|
||||||
|
config SOC_IRAM_SIZE
|
||||||
|
hex
|
||||||
|
default 0x8000 if SOC_FULL_ICACHE
|
||||||
|
default 0xC000 if !SOC_FULL_ICACHE
|
||||||
|
|
||||||
choice CONSOLE_UART_NUM
|
choice CONSOLE_UART_NUM
|
||||||
prompt "UART peripheral to use for console output (0-1)"
|
prompt "UART peripheral to use for console output (0-1)"
|
||||||
default CONSOLE_UART_CUSTOM_NUM_0
|
default CONSOLE_UART_CUSTOM_NUM_0
|
||||||
@ -119,6 +124,14 @@ config WIFI_PPT_TASKSTACK_SIZE
|
|||||||
which calls promiscuous callback function. So if user's function is
|
which calls promiscuous callback function. So if user's function is
|
||||||
complex, the stack must be set larger.
|
complex, the stack must be set larger.
|
||||||
|
|
||||||
|
config ESP8266_CORE_GLOBAL_DATA_LINK_IRAM
|
||||||
|
bool "Link libcore.a internal global data to IRAM"
|
||||||
|
default y
|
||||||
|
depends on !LWIP_HIGH_THROUGHPUT
|
||||||
|
depends on !SOC_FULL_ICACHE
|
||||||
|
help
|
||||||
|
Link libcore.a internal global data(.bss .data COMMON) from DRAM to IRAM.
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
menu WIFI
|
menu WIFI
|
||||||
|
@ -18,12 +18,13 @@ endif
|
|||||||
#Linker scripts used to link the final application.
|
#Linker scripts used to link the final application.
|
||||||
#Warning: These linker scripts are only used when the normal app is compiled; the bootloader
|
#Warning: These linker scripts are only used when the normal app is compiled; the bootloader
|
||||||
#specifies its own scripts.
|
#specifies its own scripts.
|
||||||
LINKER_SCRIPTS += esp8266.common.ld esp8266.rom.ld esp8266.peripherals.ld
|
LINKER_SCRIPTS += esp8266.rom.ld esp8266.peripherals.ld
|
||||||
|
|
||||||
COMPONENT_ADD_LDFLAGS += -L$(COMPONENT_PATH)/lib \
|
COMPONENT_ADD_LDFLAGS += -L$(COMPONENT_PATH)/lib \
|
||||||
$(addprefix -l,$(LIBS)) \
|
$(addprefix -l,$(LIBS)) \
|
||||||
-L $(COMPONENT_PATH)/ld \
|
-L $(COMPONENT_PATH)/ld \
|
||||||
-T esp8266_out.ld \
|
-T esp8266_out.ld \
|
||||||
|
-T esp8266_common_out.ld \
|
||||||
-Wl,--no-check-sections \
|
-Wl,--no-check-sections \
|
||||||
-u call_user_start \
|
-u call_user_start \
|
||||||
$(addprefix -T ,$(LINKER_SCRIPTS))
|
$(addprefix -T ,$(LINKER_SCRIPTS))
|
||||||
@ -38,11 +39,14 @@ COMPONENT_ADD_LINKER_DEPS := $(ALL_LIB_FILES) $(addprefix ld/,$(LINKER_SCRIPTS))
|
|||||||
#
|
#
|
||||||
# The library doesn't really depend on esp8266_out.ld, but it
|
# The library doesn't really depend on esp8266_out.ld, but it
|
||||||
# saves us from having to add the target to a Makefile.projbuild
|
# saves us from having to add the target to a Makefile.projbuild
|
||||||
$(COMPONENT_LIBRARY): esp8266_out.ld
|
$(COMPONENT_LIBRARY): esp8266_out.ld esp8266_common_out.ld
|
||||||
|
|
||||||
esp8266_out.ld: $(COMPONENT_PATH)/ld/esp8266.ld ../include/sdkconfig.h
|
esp8266_out.ld: $(COMPONENT_PATH)/ld/esp8266.ld ../include/sdkconfig.h
|
||||||
$(CC) -I ../include -C -P -x c -E $< -o $@
|
$(CC) -I ../include -C -P -x c -E $< -o $@
|
||||||
|
|
||||||
|
esp8266_common_out.ld: $(COMPONENT_PATH)/ld/esp8266.common.ld ../include/sdkconfig.h
|
||||||
|
$(CC) -I ../include -C -P -x c -E $< -o $@
|
||||||
|
|
||||||
COMPONENT_EXTRA_CLEAN := esp8266_out.ld
|
COMPONENT_EXTRA_CLEAN := esp8266_out.ld
|
||||||
|
|
||||||
endif
|
endif
|
@ -1,6 +1,8 @@
|
|||||||
/* This linker script generated from xt-genldscripts.tpp for LSP . */
|
/* This linker script generated from xt-genldscripts.tpp for LSP . */
|
||||||
/* Linker Script for ld -N */
|
/* Linker Script for ld -N */
|
||||||
|
|
||||||
|
#include "sdkconfig.h"
|
||||||
|
|
||||||
PHDRS
|
PHDRS
|
||||||
{
|
{
|
||||||
dport0_0_phdr PT_LOAD;
|
dport0_0_phdr PT_LOAD;
|
||||||
@ -108,6 +110,25 @@ SECTIONS
|
|||||||
*(.fini.literal)
|
*(.fini.literal)
|
||||||
*(.fini)
|
*(.fini)
|
||||||
*(.gnu.version)
|
*(.gnu.version)
|
||||||
|
|
||||||
|
#ifdef CONFIG_LWIP_GLOBAL_DATA_LINK_IRAM
|
||||||
|
*liblwip.a:(.bss .data .bss.* .data.* COMMON)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_TCPIP_ADAPTER_GLOBAL_DATA_LINK_IRAM
|
||||||
|
*libtcpip_adapter.a:(.bss .data .bss.* .data.* COMMON)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_ESP8266_CORE_GLOBAL_DATA_LINK_IRAM
|
||||||
|
*libcore.a:(.bss .data .bss.* .data.* COMMON)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_FREERTOS_GLOBAL_DATA_LINK_IRAM
|
||||||
|
*libfreertos.a:tasks.o(.bss .data .bss.* .data.* COMMON)
|
||||||
|
*libfreertos.a:timers.o(.bss .data .bss.* .data.* COMMON)
|
||||||
|
*libfreertos.a:freertos_hooks.o(.bss .data .bss.* .data.* COMMON)
|
||||||
|
#endif
|
||||||
|
|
||||||
_text_end = ABSOLUTE(.);
|
_text_end = ABSOLUTE(.);
|
||||||
_etext = .;
|
_etext = .;
|
||||||
} >iram1_0_seg :iram1_0_phdr
|
} >iram1_0_seg :iram1_0_phdr
|
||||||
|
@ -20,11 +20,11 @@ MEMORY
|
|||||||
{
|
{
|
||||||
dport0_0_seg : org = 0x3FF00000, len = 0x10
|
dport0_0_seg : org = 0x3FF00000, len = 0x10
|
||||||
|
|
||||||
/* All .data/.bss/heap are in this segment. 1024 bytes is for system start and interrupt*/
|
/* All .data/.bss/heap are in this segment. */
|
||||||
dram0_0_seg : org = 0x3FFE8000, len = 0x18000 - 1024
|
dram0_0_seg : org = 0x3FFE8000, len = 0x18000
|
||||||
|
|
||||||
/* Functions which are critical should be put in this segment. */
|
/* Functions which are critical should be put in this segment. */
|
||||||
iram1_0_seg : org = 0x40100000, len = 0x8000
|
iram1_0_seg : org = 0x40100000, len = CONFIG_SOC_IRAM_SIZE
|
||||||
|
|
||||||
/* It is actually mapped to flash. */
|
/* It is actually mapped to flash. */
|
||||||
irom0_0_seg : org = 0x40200010 + CONFIG_PARTITION_TABLE_CUSTOM_APP_BIN_OFFSET, len = 0x100000 - 0x10 - CONFIG_PARTITION_TABLE_CUSTOM_APP_BIN_OFFSET
|
irom0_0_seg : org = 0x40200010 + CONFIG_PARTITION_TABLE_CUSTOM_APP_BIN_OFFSET, len = 0x100000 - 0x10 - CONFIG_PARTITION_TABLE_CUSTOM_APP_BIN_OFFSET
|
||||||
|
@ -30,4 +30,12 @@ config FREERTOS_ISR_STACKSIZE
|
|||||||
help
|
help
|
||||||
The interrupt handlers have their own stack. The size of the stack can be defined here.
|
The interrupt handlers have their own stack. The size of the stack can be defined here.
|
||||||
|
|
||||||
|
config FREERTOS_GLOBAL_DATA_LINK_IRAM
|
||||||
|
bool "Link FreeRTOS global data to IRAM"
|
||||||
|
default y
|
||||||
|
depends on !LWIP_HIGH_THROUGHPUT
|
||||||
|
depends on !SOC_FULL_ICACHE
|
||||||
|
help
|
||||||
|
Link FreeRTOS global data(.bss .data COMMON) from DRAM to IRAM.
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
@ -17,6 +17,14 @@ config LWIP_HIGH_THROUGHPUT
|
|||||||
chip should full 32 KB IRAM as icache. For these 2 reasons, the global heap user can used
|
chip should full 32 KB IRAM as icache. For these 2 reasons, the global heap user can used
|
||||||
may reduce a lot.
|
may reduce a lot.
|
||||||
|
|
||||||
|
config LWIP_GLOBAL_DATA_LINK_IRAM
|
||||||
|
bool "Link LWIP global data to IRAM"
|
||||||
|
default y
|
||||||
|
depends on !LWIP_HIGH_THROUGHPUT
|
||||||
|
depends on !SOC_FULL_ICACHE
|
||||||
|
help
|
||||||
|
Link LWIP global data(.bss .data COMMON) from DRAM to IRAM.
|
||||||
|
|
||||||
menu "ARP"
|
menu "ARP"
|
||||||
|
|
||||||
config LWIP_ARP_TABLE_SIZE
|
config LWIP_ARP_TABLE_SIZE
|
||||||
|
@ -13,4 +13,12 @@ config IP_LOST_TIMER_INTERVAL
|
|||||||
the timer expires. The IP lost timer is stopped if the station get the IP again before
|
the timer expires. The IP lost timer is stopped if the station get the IP again before
|
||||||
the timer expires.
|
the timer expires.
|
||||||
|
|
||||||
|
config TCPIP_ADAPTER_GLOBAL_DATA_LINK_IRAM
|
||||||
|
bool "Link TCPIP adapter global data to IRAM"
|
||||||
|
default y
|
||||||
|
depends on !LWIP_HIGH_THROUGHPUT
|
||||||
|
depends on !SOC_FULL_ICACHE
|
||||||
|
help
|
||||||
|
Link TCPIP adapter global data(.bss .data COMMON) from DRAM to IRAM.
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
Reference in New Issue
Block a user