Skip to content

Commit 2544cc4

Browse files
committed
espressif: reorganize iram_loader.text section to reduce its size
Signed-off-by: Almir Okato <[email protected]>
1 parent 147abe7 commit 2544cc4

File tree

7 files changed

+281
-7
lines changed

7 files changed

+281
-7
lines changed

boot/espressif/port/esp32/ld/bootloader.ld

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,59 @@ SECTIONS
3333
_loader_text_start = ABSOLUTE(.);
3434
*(.stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
3535
*(.iram1 .iram1.*) /* catch stray IRAM_ATTR */
36-
*libhal.a:*.*(.literal .text .literal.* .text.*)
3736
*esp_mcuboot.*(.literal .text .literal.* .text.*)
3837
*esp_loader.*(.literal .text .literal.* .text.*)
3938
*main.*(.literal .text .literal.* .text.*)
39+
40+
/* iram_loader section must not be overlapped by application IRAM/DRAM
41+
* mapping, therefore the following were added based on the dependencies
42+
* from esp_loader as its from where the application RAM parts will be
43+
* loaded into memory and ultimately boot. The cross reference table
44+
* were used to map the reachable dependencies
45+
*/
46+
*libhal.a:app_cpu_start.*(.literal .text .literal.* .text.*)
47+
*libhal.a:bootloader_banner.*(.literal .text .literal.* .text.*)
48+
*libhal.a:bootloader_clock_init.*(.literal .text .literal.* .text.*)
49+
*libhal.a:bootloader_clock_loader.*(.literal .text .literal.* .text.*)
50+
*libhal.a:bootloader_common.*(.literal .text .literal.* .text.*)
51+
*libhal.a:bootloader_common_loader.*(.literal .text .literal.* .text.*)
52+
*libhal.a:bootloader_console.*(.literal .text .literal.* .text.*)
53+
*libhal.a:bootloader_console_loader.*(.literal .text .literal.* .text.*)
54+
*libhal.a:bootloader_efuse.*(.literal .text .literal.* .text.*)
55+
*libhal.a:bootloader_esp32.*(.literal .text .literal.* .text.*)
56+
*libhal.a:bootloader_flash.*(.literal .text .literal.* .text.*)
57+
*libhal.a:bootloader_flash_config_esp32.*(.literal .text .literal.* .text.*)
58+
*libhal.a:bootloader_init.*(.literal .text .literal.* .text.*)
59+
*libhal.a:bootloader_mem.*(.literal .text .literal.* .text.*)
60+
*libhal.a:bootloader_panic.*(.literal .text .literal.* .text.*)
61+
*libhal.a:bootloader_random.*(.literal .text .literal.* .text.*)
62+
*libhal.a:bootloader_random_esp32.*(.literal .text .literal.* .text.*)
63+
*libhal.a:bootloader_sha.*(.literal .text .literal.* .text.*)
64+
*libhal.a:bootloader_soc.*(.literal .text .literal.* .text.*)
65+
*libhal.a:bootloader_utility.*(.literal .text .literal.* .text.*)
66+
*libhal.a:bootloader_wdt.*(.literal .text .literal.* .text.*)
67+
*libhal.a:cpu.*(.literal .text .literal.* .text.*)
68+
*libhal.a:efuse_hal.*(.literal .text .literal.* .text.*)
69+
*libhal.a:esp_efuse_api.*(.literal .text .literal.* .text.*)
70+
*libhal.a:esp_efuse_api_key.*(.literal .text .literal.* .text.*)
71+
*libhal.a:esp_efuse_table.*(.literal .text .literal.* .text.*)
72+
*libhal.a:esp_efuse_utility.*(.literal .text .literal.* .text.*)
73+
*libhal.a:esp_image_format.*(.literal .text .literal.* .text.*)
74+
*libhal.a:esp_rom_spiflash.*(.literal .text .literal.* .text.*)
75+
*libhal.a:esp_rom_sys.*(.literal .text .literal.* .text.*)
76+
*libhal.a:esp_rom_uart.*(.literal .text .literal.* .text.*)
77+
*libhal.a:flash_encrypt.*(.literal .text .literal.* .text.*)
78+
*libhal.a:flash_encryption_secure_features.*(.literal .text .literal.* .text.*)
79+
*libhal.a:gpio_periph.*(.literal .text .literal.* .text.*)
80+
*libhal.a:log_noos.*(.literal .text .literal.* .text.*)
81+
*libhal.a:mmu_hal.*(.literal .text .literal.* .text.*)
82+
*libhal.a:rtc_clk.*(.literal .text .literal.* .text.*)
83+
*libhal.a:rtc_clk_init.*(.literal .text .literal.* .text.*)
84+
*libhal.a:rtc_time.*(.literal .text .literal.* .text.*)
85+
*libhal.a:secure_boot_signatures_bootloader.*(.literal .text .literal.* .text.*)
86+
*libhal.a:wdt_hal_iram.*(.literal .text .literal.* .text.*)
87+
*libgcc.a:*.*(.literal .text .literal.* .text.*)
88+
4089
*(.fini.literal)
4190
*(.fini)
4291
*(.gnu.version)

boot/espressif/port/esp32c2/ld/bootloader.ld

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,44 @@ SECTIONS
6262
_loader_text_start = ABSOLUTE(.);
6363
*(.stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
6464
*(.iram1 .iram1.*) /* catch stray IRAM_ATTR */
65-
*libhal.a:*.*(.literal .text .literal.* .text.*)
6665
*esp_mcuboot.*(.literal .text .literal.* .text.*)
6766
*esp_loader.*(.literal .text .literal.* .text.*)
6867
*main.*(.literal .text .literal.* .text.*)
68+
69+
/* iram_loader section must not be overlapped by application IRAM/DRAM
70+
* mapping, therefore the following were added based on the dependencies
71+
* from esp_loader as its from where the application RAM parts will be
72+
* loaded into memory and ultimately boot. The cross reference table
73+
* were used to map the reachable dependencies */
74+
*libhal.a:bootloader_banner.*(.literal .text .literal.* .text.*)
75+
*libhal.a:bootloader_common_loader.*(.literal .text .literal.* .text.*)
76+
*libhal.a:bootloader_console_loader.*(.literal .text .literal.* .text.*)
77+
*libhal.a:bootloader_flash.*(.literal .text .literal.* .text.*)
78+
*libhal.a:bootloader_flash_config_esp32c2.*(.literal .text .literal.* .text.*)
79+
*libhal.a:bootloader_init.*(.literal .text .literal.* .text.*)
80+
*libhal.a:bootloader_panic.*(.literal .text .literal.* .text.*)
81+
*libhal.a:bootloader_random.*(.literal .text .literal.* .text.*)
82+
*libhal.a:bootloader_random_esp32c2.*(.literal .text .literal.* .text.*)
83+
*libhal.a:bootloader_sha.*(.literal .text .literal.* .text.*)
84+
*libhal.a:bootloader_soc.*(.literal .text .literal.* .text.*)
85+
*libhal.a:bootloader_utility.*(.literal .text .literal.* .text.*)
86+
*libhal.a:bootloader_wdt.*(.literal .text .literal.* .text.*)
87+
*libhal.a:cache_hal.*(.literal .text .literal.* .text.*)
88+
*libhal.a:efuse_hal.*(.literal .text .literal.* .text.*)
89+
*libhal.a:esp_efuse_api.*(.literal .text .literal.* .text.*)
90+
*libhal.a:esp_efuse_api_key.*(.literal .text .literal.* .text.*)
91+
*libhal.a:esp_efuse_table.*(.literal .text .literal.* .text.*)
92+
*libhal.a:esp_efuse_utility.*(.literal .text .literal.* .text.*)
93+
*libhal.a:esp_image_format.*(.literal .text .literal.* .text.*)
94+
*libhal.a:flash_encrypt.*(.literal .text .literal.* .text.*)
95+
*libhal.a:flash_encryption_secure_features.*(.literal .text .literal.* .text.*)
96+
*libhal.a:mmu_hal.*(.literal .text .literal.* .text.*)
97+
*libhal.a:rtc_clk.*(.literal .text .literal.* .text.*)
98+
*libhal.a:rtc_clk_init.*(.literal .text .literal.* .text.*)
99+
*libhal.a:secure_boot_signatures_bootloader.*(.literal .text .literal.* .text.*)
100+
*libhal.a:wdt_hal_iram.*(.literal .text .literal.* .text.*)
101+
*libgcc.a:*.*(.literal .text .literal.* .text.*)
102+
69103
*(.fini.literal)
70104
*(.fini)
71105
*(.gnu.version)

boot/espressif/port/esp32c3/ld/bootloader.ld

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,43 @@ SECTIONS
2828
_loader_text_start = ABSOLUTE(.);
2929
*(.stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
3030
*(.iram1 .iram1.*) /* catch stray IRAM_ATTR */
31-
*libhal.a:*.*(.literal .text .literal.* .text.*)
3231
*esp_mcuboot.*(.literal .text .literal.* .text.*)
3332
*esp_loader.*(.literal .text .literal.* .text.*)
3433
*main.*(.literal .text .literal.* .text.*)
34+
35+
/* iram_loader section must not be overlapped by application IRAM/DRAM
36+
* mapping, therefore the following were added based on the dependencies
37+
* from esp_loader as its from where the application RAM parts will be
38+
* loaded into memory and ultimately boot. The cross reference table
39+
* were used to map the reachable dependencies
40+
*/
41+
*libhal.a:bootloader_common_loader.*(.literal .text .literal.* .text.*)
42+
*libhal.a:bootloader_console_loader.*(.literal .text .literal.* .text.*)
43+
*libhal.a:bootloader_flash.*(.literal .text .literal.* .text.*)
44+
*libhal.a:bootloader_flash_config_esp32c3.*(.literal .text .literal.* .text.*)
45+
*libhal.a:bootloader_init.*(.literal .text .literal.* .text.*)
46+
*libhal.a:bootloader_panic.*(.literal .text .literal.* .text.*)
47+
*libhal.a:bootloader_random.*(.literal .text .literal.* .text.*)
48+
*libhal.a:bootloader_random_esp32c3.*(.literal .text .literal.* .text.*)
49+
*libhal.a:bootloader_sha.*(.literal .text .literal.* .text.*)
50+
*libhal.a:bootloader_soc.*(.literal .text .literal.* .text.*)
51+
*libhal.a:bootloader_utility.*(.literal .text .literal.* .text.*)
52+
*libhal.a:cache_hal.*(.literal .text .literal.* .text.*)
53+
*libhal.a:efuse_hal.*(.literal .text .literal.* .text.*)
54+
*libhal.a:esp_efuse_api.*(.literal .text .literal.* .text.*)
55+
*libhal.a:esp_efuse_api_key.*(.literal .text .literal.* .text.*)
56+
*libhal.a:esp_efuse_table.*(.literal .text .literal.* .text.*)
57+
*libhal.a:esp_efuse_utility.*(.literal .text .literal.* .text.*)
58+
*libhal.a:esp_image_format.*(.literal .text .literal.* .text.*)
59+
*libhal.a:flash_encrypt.*(.literal .text .literal.* .text.*)
60+
*libhal.a:flash_encryption_secure_features.*(.literal .text .literal.* .text.*)
61+
*libhal.a:mmu_hal.*(.literal .text .literal.* .text.*)
62+
*libhal.a:rtc_clk.*(.literal .text .literal.* .text.*)
63+
*libhal.a:rtc_clk_init.*(.literal .text .literal.* .text.*)
64+
*libhal.a:secure_boot_signatures_bootloader.*(.literal .text .literal.* .text.*)
65+
*libhal.a:wdt_hal_iram.*(.literal .text .literal.* .text.*)
66+
*libgcc.a:*.*(.literal .text .literal.* .text.*)
67+
3568
*(.fini.literal)
3669
*(.fini)
3770
*(.gnu.version)

boot/espressif/port/esp32c6/ld/bootloader.ld

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,48 @@ SECTIONS
5959
_loader_text_start = ABSOLUTE(.);
6060
*(.stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
6161
*(.iram1 .iram1.*) /* catch stray IRAM_ATTR */
62-
*libhal.a:*.*(.literal .text .literal.* .text.*)
6362
*esp_mcuboot.*(.literal .text .literal.* .text.*)
6463
*esp_loader.*(.literal .text .literal.* .text.*)
6564
*main.*(.literal .text .literal.* .text.*)
65+
66+
/* iram_loader section must not be overlapped by application IRAM/DRAM
67+
* mapping, therefore the following were added based on the dependencies
68+
* from esp_loader as its from where the application RAM parts will be
69+
* loaded into memory and ultimately boot. The cross reference table
70+
* were used to map the reachable dependencies */
71+
*libhal.a:bootloader_banner.*(.literal .text .literal.* .text.*)
72+
*libhal.a:bootloader_common_loader.*(.literal .text .literal.* .text.*)
73+
*libhal.a:bootloader_console_loader.*(.literal .text .literal.* .text.*)
74+
*libhal.a:bootloader_flash.*(.literal .text .literal.* .text.*)
75+
*libhal.a:bootloader_flash_config_esp32c6.*(.literal .text .literal.* .text.*)
76+
*libhal.a:bootloader_init.*(.literal .text .literal.* .text.*)
77+
*libhal.a:bootloader_panic.*(.literal .text .literal.* .text.*)
78+
*libhal.a:bootloader_random.*(.literal .text .literal.* .text.*)
79+
*libhal.a:bootloader_random_esp32c6.*(.literal .text .literal.* .text.*)
80+
*libhal.a:bootloader_sha.*(.literal .text .literal.* .text.*)
81+
*libhal.a:bootloader_soc.*(.literal .text .literal.* .text.*)
82+
*libhal.a:bootloader_utility.*(.literal .text .literal.* .text.*)
83+
*libhal.a:bootloader_wdt.*(.literal .text .literal.* .text.*)
84+
*libhal.a:cache_hal.*(.literal .text .literal.* .text.*)
85+
*libhal.a:efuse_hal.*(.literal .text .literal.* .text.*)
86+
*libhal.a:esp_efuse_api.*(.literal .text .literal.* .text.*)
87+
*libhal.a:esp_efuse_api_key.*(.literal .text .literal.* .text.*)
88+
*libhal.a:esp_efuse_table.*(.literal .text .literal.* .text.*)
89+
*libhal.a:esp_efuse_utility.*(.literal .text .literal.* .text.*)
90+
*libhal.a:esp_image_format.*(.literal .text .literal.* .text.*)
91+
*libhal.a:esp_rom_hp_regi2c_esp32c6.*(.literal .text .literal.* .text.*)
92+
*libhal.a:esp_rom_uart.*(.literal .text .literal.* .text.*)
93+
*libhal.a:flash_encrypt.*(.literal .text .literal.* .text.*)
94+
*libhal.a:flash_encryption_secure_features.*(.literal .text .literal.* .text.*)
95+
*libhal.a:lp_timer_hal.*(.literal .text .literal.* .text.*)
96+
*libhal.a:mmu_hal.*(.literal .text .literal.* .text.*)
97+
*libhal.a:pmu_param.*(.literal .text .literal.* .text.*)
98+
*libhal.a:rtc_clk.*(.literal .text .literal.* .text.*)
99+
*libhal.a:rtc_clk_init.*(.literal .text .literal.* .text.*)
100+
*libhal.a:secure_boot_signatures_bootloader.*(.literal .text .literal.* .text.*)
101+
*libhal.a:wdt_hal_iram.*(.literal .text .literal.* .text.*)
102+
*libgcc.a:*.*(.literal .text .literal.* .text.*)
103+
66104
*(.fini.literal)
67105
*(.fini)
68106
*(.gnu.version)

boot/espressif/port/esp32h2/ld/bootloader.ld

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,50 @@ SECTIONS
6060
_loader_text_start = ABSOLUTE(.);
6161
*(.stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
6262
*(.iram1 .iram1.*) /* catch stray IRAM_ATTR */
63-
*libhal.a:*.*(.literal .text .literal.* .text.*)
6463
*esp_mcuboot.*(.literal .text .literal.* .text.*)
6564
*esp_loader.*(.literal .text .literal.* .text.*)
6665
*main.*(.literal .text .literal.* .text.*)
66+
67+
/* iram_loader section must not be overlapped by application IRAM/DRAM
68+
* mapping, therefore the following were added based on the dependencies
69+
* from esp_loader as its from where the application RAM parts will be
70+
* loaded into memory and ultimately boot. The cross reference table
71+
* were used to map the reachable dependencies */
72+
*libhal.a:bootloader_banner.*(.literal .text .literal.* .text.*)
73+
*libhal.a:bootloader_common_loader.*(.literal .text .literal.* .text.*)
74+
*libhal.a:bootloader_console_loader.*(.literal .text .literal.* .text.*)
75+
*libhal.a:bootloader_flash.*(.literal .text .literal.* .text.*)
76+
*libhal.a:bootloader_flash_config_esp32h2.*(.literal .text .literal.* .text.*)
77+
*libhal.a:bootloader_init.*(.literal .text .literal.* .text.*)
78+
*libhal.a:bootloader_panic.*(.literal .text .literal.* .text.*)
79+
*libhal.a:bootloader_random.*(.literal .text .literal.* .text.*)
80+
*libhal.a:bootloader_random_esp32h2.*(.literal .text .literal.* .text.*)
81+
*libhal.a:bootloader_sha.*(.literal .text .literal.* .text.*)
82+
*libhal.a:bootloader_soc.*(.literal .text .literal.* .text.*)
83+
*libhal.a:bootloader_utility.*(.literal .text .literal.* .text.*)
84+
*libhal.a:bootloader_wdt.*(.literal .text .literal.* .text.*)
85+
*libhal.a:cache_hal.*(.literal .text .literal.* .text.*)
86+
*libhal.a:efuse_hal.*(.literal .text .literal.* .text.*)
87+
*libhal.a:esp_efuse_api.*(.literal .text .literal.* .text.*)
88+
*libhal.a:esp_efuse_api_key.*(.literal .text .literal.* .text.*)
89+
*libhal.a:esp_efuse_table.*(.literal .text .literal.* .text.*)
90+
*libhal.a:esp_efuse_table_v0.0_v1.1.*(.literal .text .literal.* .text.*)
91+
*libhal.a:esp_efuse_utility.*(.literal .text .literal.* .text.*)
92+
*libhal.a:esp_image_format.*(.literal .text .literal.* .text.*)
93+
*libhal.a:esp_rom_regi2c_esp32h2.*(.literal .text .literal.* .text.*)
94+
*libhal.a:esp_rom_uart.*(.literal .text .literal.* .text.*)
95+
*libhal.a:flash_encrypt.*(.literal .text .literal.* .text.*)
96+
*libhal.a:flash_encryption_secure_features.*(.literal .text .literal.* .text.*)
97+
*libhal.a:lp_timer_hal.*(.literal .text .literal.* .text.*)
98+
*libhal.a:mmu_hal.*(.literal .text .literal.* .text.*)
99+
*libhal.a:pmu_param.*(.literal .text .literal.* .text.*)
100+
*libhal.a:rtc_clk.*(.literal .text .literal.* .text.*)
101+
*libhal.a:rtc_clk_init.*(.literal .text .literal.* .text.*)
102+
*libhal.a:secure_boot_secure_features.*(.literal .text .literal.* .text.*)
103+
*libhal.a:secure_boot_signatures_bootloader.*(.literal .text .literal.* .text.*)
104+
*libhal.a:wdt_hal_iram.*(.literal .text .literal.* .text.*)
105+
*libgcc.a:*.*(.literal .text .literal.* .text.*)
106+
67107
*(.fini.literal)
68108
*(.fini)
69109
*(.gnu.version)

boot/espressif/port/esp32s2/ld/bootloader.ld

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,46 @@ SECTIONS
2828
_loader_text_start = ABSOLUTE(.);
2929
*(.stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
3030
*(.iram1 .iram1.*) /* catch stray IRAM_ATTR */
31-
*libhal.a:*.*(.literal .text .literal.* .text.*)
3231
*esp_mcuboot.*(.literal .text .literal.* .text.*)
3332
*esp_loader.*(.literal .text .literal.* .text.*)
3433
*main.*(.literal .text .literal.* .text.*)
34+
35+
/* iram_loader section must not be overlapped by application IRAM/DRAM
36+
* mapping, therefore the following were added based on the dependencies
37+
* from esp_loader as its from where the application RAM parts will be
38+
* loaded into memory and ultimately boot. The cross reference table
39+
* were used to map the reachable dependencies */
40+
*libhal.a:bootloader_banner.*(.literal .text .literal.* .text.*)
41+
*libhal.a:bootloader_clock_loader.*(.literal .text .literal.* .text.*)
42+
*libhal.a:bootloader_common_loader.*(.literal .text .literal.* .text.*)
43+
*libhal.a:bootloader_console_loader.*(.literal .text .literal.* .text.*)
44+
*libhal.a:bootloader_flash.*(.literal .text .literal.* .text.*)
45+
*libhal.a:bootloader_flash_config_esp32s2.*(.literal .text .literal.* .text.*)
46+
*libhal.a:bootloader_init.*(.literal .text .literal.* .text.*)
47+
*libhal.a:bootloader_panic.*(.literal .text .literal.* .text.*)
48+
*libhal.a:bootloader_random.*(.literal .text .literal.* .text.*)
49+
*libhal.a:bootloader_random_esp32s2.*(.literal .text .literal.* .text.*)
50+
*libhal.a:bootloader_sha.*(.literal .text .literal.* .text.*)
51+
*libhal.a:bootloader_soc.*(.literal .text .literal.* .text.*)
52+
*libhal.a:bootloader_utility.*(.literal .text .literal.* .text.*)
53+
*libhal.a:bootloader_wdt.*(.literal .text .literal.* .text.*)
54+
*libhal.a:cache_hal.*(.literal .text .literal.* .text.*)
55+
*libhal.a:efuse_hal.*(.literal .text .literal.* .text.*)
56+
*libhal.a:esp_efuse_api.*(.literal .text .literal.* .text.*)
57+
*libhal.a:esp_efuse_api_key.*(.literal .text .literal.* .text.*)
58+
*libhal.a:esp_efuse_table.*(.literal .text .literal.* .text.*)
59+
*libhal.a:esp_efuse_utility.*(.literal .text .literal.* .text.*)
60+
*libhal.a:esp_image_format.*(.literal .text .literal.* .text.*)
61+
*libhal.a:esp_rom_regi2c_esp32s2.*(.literal .text .literal.* .text.*)
62+
*libhal.a:flash_encrypt.*(.literal .text .literal.* .text.*)
63+
*libhal.a:flash_encryption_secure_features.*(.literal .text .literal.* .text.*)
64+
*libhal.a:mmu_hal.*(.literal .text .literal.* .text.*)
65+
*libhal.a:rtc_clk.*(.literal .text .literal.* .text.*)
66+
*libhal.a:rtc_clk_init.*(.literal .text .literal.* .text.*)
67+
*libhal.a:secure_boot_signatures_bootloader.*(.literal .text .literal.* .text.*)
68+
*libhal.a:wdt_hal_iram.*(.literal .text .literal.* .text.*)
69+
*libgcc.a:*.*(.literal .text .literal.* .text.*)
70+
3571
*(.fini.literal)
3672
*(.fini)
3773
*(.gnu.version)

0 commit comments

Comments
 (0)