Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
159 changes: 159 additions & 0 deletions boards/xtensa/esp32/common/scripts/kernel-space.ld
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
*
****************************************************************************/

#include <nuttx/config.h>

/* Provide these so there is no need for using config files for this */

__uirom_start = ORIGIN(UIROM);
Expand Down Expand Up @@ -159,6 +161,85 @@ SECTIONS
*libkarch.a:interrupt.*(.literal.intr_get_item .text.intr_get_item)
*libkarch.a:interrupt.*(.literal.intr_handler_get_arg .text.intr_handler_get_arg)

#ifdef CONFIG_ESPRESSIF_SIMPLE_BOOT
/* Simple boot has no second-stage bootloader. __start() runs
* bootloader_init() and map_rom_segments() before any flash mapping
* exists, so everything they reach must be resident in RAM.
*/

/* __start() itself runs before the mapping it creates, so it cannot
* live in the flash it is about to map.
*/

esp32_start.*(.literal .text .literal.* .text.*)

*libkarch.a:*esp_loader.*(.literal .text .literal.* .text.*)
*libkarch.a:*bootloader_init.*(.text .text.* .literal .literal.*)
*libkarch.a:*bootloader_common.*(.text .text.* .literal .literal.*)
*libkarch.a:*bootloader_common_loader.*(.text .text.* .literal .literal.*)
*libkarch.a:*bootloader_console.*(.text .text.* .literal .literal.*)
*libkarch.a:*bootloader_console_loader.*(.text .text.* .literal .literal.*)
*libkarch.a:*bootloader_banner_wrap.*(.text .text.* .literal .literal.*)
*libkarch.a:*bootloader_clock_init.*(.text .text.* .literal .literal.*)
*libkarch.a:*bootloader_clock_loader.*(.text .text.* .literal .literal.*)
*libkarch.a:*bootloader_efuse.*(.text .text.* .literal .literal.*)
*libkarch.a:*bootloader_esp32.*(.text .text.* .literal .literal.*)
*libkarch.a:*bootloader_flash.*(.text .text.* .literal .literal.*)
*libkarch.a:*bootloader_flash_config_esp32.*(.text .text.* .literal .literal.*)
*libkarch.a:*bootloader_mem.*(.text .text.* .literal .literal.*)
*libkarch.a:*bootloader_panic.*(.text .text.* .literal .literal.*)
*libkarch.a:*bootloader_random.*(.text .text.* .literal .literal.*)
*libkarch.a:*bootloader_random_esp32.*(.text .text.* .literal .literal.*)
*libkarch.a:*bootloader_sha.*(.text .text.* .literal .literal.*)
*libkarch.a:*bootloader_soc.*(.text .text.* .literal .literal.*)
*libkarch.a:*esp_image_format.*(.text .text.* .literal .literal.*)
*libkarch.a:*flash_encrypt.*(.text .text.* .literal .literal.*)
*libkarch.a:*flash_qio_mode.*(.text .text.* .literal .literal.*)
*libkarch.a:*brownout_hal.*(.text .text.* .literal .literal.*)
*libkarch.a:*cpu.*(.text .text.* .literal .literal.*)
*libkarch.a:*cpu_region_protect.*(.text .text.* .literal .literal.*)
*libkarch.a:*gpio_hal.*(.text .text.* .literal .literal.*)
*libkarch.a:*periph_ctrl.*(.text .text.* .literal .literal.*)
*libkarch.a:*clk.*(.text .text.* .literal .literal.*)
*libkarch.a:*clk_tree_hal.*(.text .text.* .literal .literal.*)
*libkarch.a:*esp_clk_tree.*(.text .text.* .literal .literal.*)
*libkarch.a:*esp_clk_tree_common.*(.text .text.* .literal .literal.*)
*libkarch.a:*rtc_init.*(.text .text.* .literal .literal.*)
*libkarch.a:*rtc_clk.*(.text .text.* .literal .literal.*)
*libkarch.a:*rtc_clk_init.*(.text .text.* .literal .literal.*)
*libkarch.a:*rtc_sleep.*(.text .text.* .literal .literal.*)
*libkarch.a:*rtc_time.*(.text .text.* .literal .literal.*)
*libkarch.a:*regi2c_ctrl.*(.text .text.* .literal .literal.*)
*libkarch.a:*efuse_hal.*(.text .text.* .literal .literal.*)
*libkarch.a:*efuse_utility.*(.text .text.* .literal .literal.*)
*libkarch.a:*mmu_hal.*(.text .text.* .literal .literal.*)
*libkarch.a:*mpu_hal.*(.text .text.* .literal .literal.*)
*libkarch.a:*cache_esp32.*(.text .text.* .literal .literal.*)
*libkarch.a:*cache_hal_esp32.*(.text .text.* .literal .literal.*)
*libkarch.a:*uart_hal.*(.text .text.* .literal .literal.*)
*libkarch.a:*uart_hal_iram.*(.text .text.* .literal .literal.*)
*libkarch.a:*uart_periph.*(.text .text.* .literal .literal.*)
*libkarch.a:*wdt_hal_iram.*(.text .text.* .literal .literal.*)
*libkarch.a:*esp_rom_uart.*(.text .text.* .literal .literal.*)
*libkarch.a:*esp_rom_sys.*(.text .text.* .literal .literal.*)
*libkarch.a:*esp_rom_spiflash.*(.text .text.* .literal .literal.*)
*libkarch.a:*esp_rom_wdt.*(.text .text.* .literal .literal.*)
*libkarch.a:*log.*(.text .text.* .literal .literal.*)
*libkarch.a:*log_lock.*(.literal .literal.* .text .text.*)
*libkarch.a:*log_print.*(.literal .literal.* .text .text.*)
*libkarch.a:*log_timestamp.*(.literal .literal.* .text .text.*)
*libkarch.a:*log_timestamp_common.*(.literal .literal.* .text .text.*)
*libkarch.a:*log_write.*(.literal .literal.* .text .text.*)
*libkarch.a:esp_app_desc.*(.literal .literal.* .text .text.*)
*libkarch.a:esp_flash_api.*(.text .text.* .literal .literal.*)
*libkarch.a:esp_flash_spi_init.*(.text .text.* .literal .literal.*)
*libkarch.a:spi_flash_hal_gpspi.*(.literal .literal.* .text .text.*)
*libkarch.a:spi_flash_encrypt_hal_iram.*(.text .text.* .literal .literal.*)
*libkarch.a:spi_flash_os_func_noos.*(.literal .literal.* .text .text.*)
*libkarch.a:spi_flash_os_func_app.*(.literal .literal.* .text .text.*)
*libkarch.a:spi_flash_wrap.*(.literal .literal.* .text .text.*)
#endif

*(.wifirxiram .wifirxiram.*)
*(.wifi0iram .wifi0iram.*)
*(.wifislpiram .wifislpiram.*)
Expand Down Expand Up @@ -270,6 +351,67 @@ SECTIONS
*libkarch.a:os.*(.rodata.g_int_flags_count .rodata.g_int_flags)
*libkc.a:arch_atomic.*(.rodata .rodata.*)

#ifdef CONFIG_ESPRESSIF_SIMPLE_BOOT
/* The read-only data of everything pinned into IRAM above. */

esp32_start.*(.rodata .rodata.*)

*libkarch.a:*esp_loader.*(.rodata .rodata.*)
*libkarch.a:*bootloader_init.*(.rodata .rodata.*)
*libkarch.a:*bootloader_common.*(.rodata .rodata.*)
*libkarch.a:*bootloader_common_loader.*(.rodata .rodata.*)
*libkarch.a:*bootloader_console.*(.rodata .rodata.*)
*libkarch.a:*bootloader_console_loader.*(.rodata .rodata.*)
*libkarch.a:*bootloader_banner_wrap.*(.rodata .rodata.*)
*libkarch.a:*bootloader_clock_init.*(.rodata .rodata.*)
*libkarch.a:*bootloader_clock_loader.*(.rodata .rodata.*)
*libkarch.a:*bootloader_efuse.*(.rodata .rodata.*)
*libkarch.a:*bootloader_esp32.*(.rodata .rodata.*)
*libkarch.a:*bootloader_flash.*(.rodata .rodata.*)
*libkarch.a:*bootloader_flash_config_esp32.*(.rodata .rodata.*)
*libkarch.a:*bootloader_mem.*(.rodata .rodata.*)
*libkarch.a:*bootloader_panic.*(.rodata .rodata.*)
*libkarch.a:*bootloader_random.*(.rodata .rodata.*)
*libkarch.a:*bootloader_random_esp32.*(.rodata .rodata.*)
*libkarch.a:*bootloader_sha.*(.rodata .rodata.*)
*libkarch.a:*bootloader_soc.*(.rodata .rodata.*)
*libkarch.a:*esp_image_format.*(.rodata .rodata.*)
*libkarch.a:*flash_encrypt.*(.rodata .rodata.*)
*libkarch.a:*flash_qio_mode.*(.rodata .rodata.*)
*libkarch.a:*brownout_hal.*(.rodata .rodata.*)
*libkarch.a:*cpu.*(.rodata .rodata.*)
*libkarch.a:*cpu_region_protect.*(.rodata .rodata.*)
*libkarch.a:*gpio_hal.*(.rodata .rodata.*)
*libkarch.a:*periph_ctrl.*(.rodata .rodata.*)
*libkarch.a:*clk.*(.rodata .rodata.*)
*libkarch.a:*clk_tree_hal.*(.rodata .rodata.*)
*libkarch.a:*esp_clk_tree.*(.rodata .rodata.*)
*libkarch.a:*esp_clk_tree_common.*(.rodata .rodata.*)
*libkarch.a:*rtc_init.*(.rodata .rodata.*)
*libkarch.a:*rtc_clk.*(.rodata .rodata.*)
*libkarch.a:*rtc_clk_init.*(.rodata .rodata.*)
*libkarch.a:*rtc_time.*(.rodata .rodata.*)
*libkarch.a:*regi2c_ctrl.*(.rodata .rodata.*)
*libkarch.a:*efuse_hal.*(.rodata .rodata.*)
*libkarch.a:*efuse_utility.*(.rodata .rodata.*)
*libkarch.a:*mmu_hal.*(.rodata .rodata.*)
*libkarch.a:*mpu_hal.*(.rodata .rodata.*)
*libkarch.a:*cache_esp32.*(.rodata .rodata.*)
*libkarch.a:*cache_hal_esp32.*(.rodata .rodata.*)
*libkarch.a:*uart_hal.*(.rodata .rodata.*)
*libkarch.a:*uart_hal_iram.*(.rodata .rodata.*)
*libkarch.a:*uart_periph.*(.rodata .rodata.*)
*libkarch.a:*wdt_hal_iram.*(.rodata .rodata.*)
*libkarch.a:*esp_rom_uart.*(.rodata .rodata.*)
*libkarch.a:*esp_rom_sys.*(.rodata .rodata.*)
*libkarch.a:*esp_rom_spiflash.*(.rodata .rodata.*)
*libkarch.a:*esp_rom_wdt.*(.rodata .rodata.*)
*libkarch.a:*log.*(.rodata .rodata.*)
*libkarch.a:esp_app_desc.*(.rodata .rodata.*)
*libkarch.a:esp_flash_api.*(.rodata .rodata.*)
*libkarch.a:esp_flash_spi_init.*(.rodata .rodata.*)
#endif

*libsched.a:sched_suspendscheduler.*(.rodata .rodata.*)
*libsched.a:sched_thistask.*(.rodata .rodata.*)
*libsched.a:sched_note.*(.rodata .rodata.*)
Expand Down Expand Up @@ -367,6 +509,23 @@ SECTIONS
_etext = .;
} >KIROM

#ifdef CONFIG_ESPRESSIF_SIMPLE_BOOT
/* Simple boot has no second-stage bootloader to map the flash, so __start()
* does it. map_rom_segments() reads the segment table out of the image in
* flash, but the entry point still needs these to be defined.
*/

_image_irom_vma = ADDR(.flash.text);
_image_irom_lma = LOADADDR(.flash.text);
_image_irom_size = LOADADDR(.flash.text) + SIZEOF(.flash.text) -
_image_irom_lma;

_image_drom_vma = ADDR(.flash.rodata);
_image_drom_lma = LOADADDR(.flash.rodata);
_image_drom_size = LOADADDR(.flash.rodata) + SIZEOF(.flash.rodata) -
_image_drom_lma;
#endif

.rtc.text :
{
. = ALIGN(4);
Expand Down
Loading