linker: esp32: fix linker to enable proper MMU usage
ESP32 flash_mmap() function requires `_rodata_reserved_start` address to be at the beginning of RODATA. This allows adding memory-mapped flash areas. Fixes #52764 Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
This commit is contained in:
parent
38f8a4db28
commit
3f5ea785f2
4 changed files with 7 additions and 6 deletions
|
@ -130,6 +130,7 @@ SECTIONS
|
||||||
|
|
||||||
SECTION_PROLOGUE(_RODATA_SECTION_NAME,,)
|
SECTION_PROLOGUE(_RODATA_SECTION_NAME,,)
|
||||||
{
|
{
|
||||||
|
_rodata_reserved_start = ABSOLUTE(.);
|
||||||
_rodata_start = ABSOLUTE(.);
|
_rodata_start = ABSOLUTE(.);
|
||||||
|
|
||||||
*(.rodata_desc .rodata_desc.*)
|
*(.rodata_desc .rodata_desc.*)
|
||||||
|
@ -186,7 +187,6 @@ SECTIONS
|
||||||
*(.rodata_wlog)
|
*(.rodata_wlog)
|
||||||
*(.rodata_wlog*)
|
*(.rodata_wlog*)
|
||||||
_thread_local_end = ABSOLUTE(.);
|
_thread_local_end = ABSOLUTE(.);
|
||||||
_rodata_reserved_end = ABSOLUTE(.);
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
} GROUP_DATA_LINK_IN(RODATA_REGION, ROMABLE_REGION)
|
} GROUP_DATA_LINK_IN(RODATA_REGION, ROMABLE_REGION)
|
||||||
|
|
||||||
|
@ -203,6 +203,7 @@ SECTIONS
|
||||||
* This is used to calculate the size of the _image_drom_size variable */
|
* This is used to calculate the size of the _image_drom_size variable */
|
||||||
SECTION_PROLOGUE(_RODATA_SECTION_END,,)
|
SECTION_PROLOGUE(_RODATA_SECTION_END,,)
|
||||||
{
|
{
|
||||||
|
_rodata_reserved_end = ABSOLUTE(.);
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
_image_rodata_end = ABSOLUTE(.);
|
_image_rodata_end = ABSOLUTE(.);
|
||||||
} GROUP_DATA_LINK_IN(RODATA_REGION, ROMABLE_REGION)
|
} GROUP_DATA_LINK_IN(RODATA_REGION, ROMABLE_REGION)
|
||||||
|
@ -402,7 +403,6 @@ SECTIONS
|
||||||
{
|
{
|
||||||
. = SIZEOF(_RODATA_SECTION_NAME);
|
. = SIZEOF(_RODATA_SECTION_NAME);
|
||||||
. = ALIGN(0x10000) + 0x20;
|
. = ALIGN(0x10000) + 0x20;
|
||||||
_rodata_reserved_start = .;
|
|
||||||
} GROUP_LINK_IN(FLASH_CODE_REGION)
|
} GROUP_LINK_IN(FLASH_CODE_REGION)
|
||||||
|
|
||||||
.flash.text : ALIGN(IROM_SEG_ALIGN)
|
.flash.text : ALIGN(IROM_SEG_ALIGN)
|
||||||
|
|
|
@ -135,6 +135,7 @@ SECTIONS
|
||||||
*/
|
*/
|
||||||
SECTION_PROLOGUE(_RODATA_SECTION_NAME,,ALIGN(4))
|
SECTION_PROLOGUE(_RODATA_SECTION_NAME,,ALIGN(4))
|
||||||
{
|
{
|
||||||
|
_rodata_reserved_start = ABSOLUTE(.);
|
||||||
__rodata_region_start = ABSOLUTE(.);
|
__rodata_region_start = ABSOLUTE(.);
|
||||||
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
|
@ -182,7 +183,6 @@ SECTIONS
|
||||||
*(.rodata_wlog)
|
*(.rodata_wlog)
|
||||||
*(.rodata_wlog*)
|
*(.rodata_wlog*)
|
||||||
_thread_local_end = ABSOLUTE(.);
|
_thread_local_end = ABSOLUTE(.);
|
||||||
_rodata_reserved_end = ABSOLUTE(.);
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
} GROUP_DATA_LINK_IN(RODATA_REGION, ROMABLE_REGION)
|
} GROUP_DATA_LINK_IN(RODATA_REGION, ROMABLE_REGION)
|
||||||
|
|
||||||
|
@ -198,6 +198,7 @@ SECTIONS
|
||||||
* This is used to calculate the size of the _image_drom_size variable */
|
* This is used to calculate the size of the _image_drom_size variable */
|
||||||
SECTION_PROLOGUE(_RODATA_SECTION_END,,ALIGN(0x10))
|
SECTION_PROLOGUE(_RODATA_SECTION_END,,ALIGN(0x10))
|
||||||
{
|
{
|
||||||
|
_rodata_reserved_end = ABSOLUTE(.);
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
_image_rodata_end = ABSOLUTE(.);
|
_image_rodata_end = ABSOLUTE(.);
|
||||||
} GROUP_DATA_LINK_IN(RODATA_REGION, ROMABLE_REGION)
|
} GROUP_DATA_LINK_IN(RODATA_REGION, ROMABLE_REGION)
|
||||||
|
|
|
@ -167,6 +167,7 @@ SECTIONS
|
||||||
*/
|
*/
|
||||||
SECTION_PROLOGUE(_RODATA_SECTION_NAME,,ALIGN(0x10))
|
SECTION_PROLOGUE(_RODATA_SECTION_NAME,,ALIGN(0x10))
|
||||||
{
|
{
|
||||||
|
_rodata_reserved_start = ABSOLUTE(.);
|
||||||
_rodata_start = ABSOLUTE(.);
|
_rodata_start = ABSOLUTE(.);
|
||||||
|
|
||||||
*(.rodata_desc .rodata_desc.*) /* Should be the first. App version info. DO NOT PUT ANYTHING BEFORE IT! */
|
*(.rodata_desc .rodata_desc.*) /* Should be the first. App version info. DO NOT PUT ANYTHING BEFORE IT! */
|
||||||
|
@ -218,7 +219,6 @@ SECTIONS
|
||||||
*(.rodata_wlog)
|
*(.rodata_wlog)
|
||||||
*(.rodata_wlog*)
|
*(.rodata_wlog*)
|
||||||
_thread_local_end = ABSOLUTE(.);
|
_thread_local_end = ABSOLUTE(.);
|
||||||
_rodata_reserved_end = ABSOLUTE(.);
|
|
||||||
. = ALIGN(4);
|
. = ALIGN(4);
|
||||||
} GROUP_DATA_LINK_IN(RODATA_REGION, ROMABLE_REGION)
|
} GROUP_DATA_LINK_IN(RODATA_REGION, ROMABLE_REGION)
|
||||||
|
|
||||||
|
@ -235,6 +235,7 @@ SECTIONS
|
||||||
* This is used to calculate the size of the _image_drom_size variable */
|
* This is used to calculate the size of the _image_drom_size variable */
|
||||||
SECTION_PROLOGUE(_RODATA_SECTION_END,,ALIGN(0x10))
|
SECTION_PROLOGUE(_RODATA_SECTION_END,,ALIGN(0x10))
|
||||||
{
|
{
|
||||||
|
_rodata_reserved_end = ABSOLUTE(.);
|
||||||
. = ALIGN(16);
|
. = ALIGN(16);
|
||||||
_image_rodata_end = ABSOLUTE(.);
|
_image_rodata_end = ABSOLUTE(.);
|
||||||
} GROUP_DATA_LINK_IN(RODATA_REGION, ROMABLE_REGION)
|
} GROUP_DATA_LINK_IN(RODATA_REGION, ROMABLE_REGION)
|
||||||
|
@ -494,7 +495,6 @@ SECTIONS
|
||||||
{
|
{
|
||||||
. = SIZEOF(_RODATA_SECTION_NAME);
|
. = SIZEOF(_RODATA_SECTION_NAME);
|
||||||
. = ALIGN(IROM_SEG_ALIGN) + 0x20;
|
. = ALIGN(IROM_SEG_ALIGN) + 0x20;
|
||||||
_rodata_reserved_start = .;
|
|
||||||
} GROUP_LINK_IN(FLASH_CODE_REGION)
|
} GROUP_LINK_IN(FLASH_CODE_REGION)
|
||||||
|
|
||||||
.flash.text : ALIGN(IROM_SEG_ALIGN)
|
.flash.text : ALIGN(IROM_SEG_ALIGN)
|
||||||
|
|
2
west.yml
2
west.yml
|
@ -155,7 +155,7 @@ manifest:
|
||||||
groups:
|
groups:
|
||||||
- hal
|
- hal
|
||||||
- name: hal_espressif
|
- name: hal_espressif
|
||||||
revision: 31fc5758f3507f8f0af00b1dea1a0df7af99bfc0
|
revision: b3cb13f06586543ae1d156dc3e84b2fd3dc2f1fb
|
||||||
path: modules/hal/espressif
|
path: modules/hal/espressif
|
||||||
west-commands: west/west-commands.yml
|
west-commands: west/west-commands.yml
|
||||||
groups:
|
groups:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue