forked from Imagelibrary/rtems
bsps/imxrt: Simplify linkcmds and make it flexible
Calling the memory FLASH and EXTRAM instead of FLEXSPI and SDRAM makes it simpler to support other types of external RAM. This patch also removes some of the calculations and improves names and documentation to avoid pitfalls. It removes a unnecessary memory definition. Update #4180
This commit is contained in:
@@ -56,29 +56,25 @@ extern char imxrt_memory_peripheral_begin[];
|
||||
extern char imxrt_memory_peripheral_end[];
|
||||
extern char imxrt_memory_peripheral_size[];
|
||||
|
||||
extern char imxrt_memory_flexspi_config_begin[];
|
||||
extern char imxrt_memory_flexspi_config_end[];
|
||||
extern char imxrt_memory_flexspi_config_size[];
|
||||
extern char imxrt_memory_flash_config_begin[];
|
||||
extern char imxrt_memory_flash_config_end[];
|
||||
extern char imxrt_memory_flash_config_size[];
|
||||
|
||||
extern char imxrt_memory_flexspi_ivt_begin[];
|
||||
extern char imxrt_memory_flexspi_ivt_end[];
|
||||
extern char imxrt_memory_flexspi_ivt_size[];
|
||||
extern char imxrt_memory_flash_ivt_begin[];
|
||||
extern char imxrt_memory_flash_ivt_end[];
|
||||
extern char imxrt_memory_flash_ivt_size[];
|
||||
|
||||
extern char imxrt_memory_flexspi_begin[];
|
||||
extern char imxrt_memory_flexspi_end[];
|
||||
extern char imxrt_memory_flexspi_size[];
|
||||
extern char imxrt_memory_flash_begin[];
|
||||
extern char imxrt_memory_flash_end[];
|
||||
extern char imxrt_memory_flash_size[];
|
||||
|
||||
extern char imxrt_memory_flexspi_fifo_begin[];
|
||||
extern char imxrt_memory_flexspi_fifo_end[];
|
||||
extern char imxrt_memory_flexspi_fifo_size[];
|
||||
extern char imxrt_memory_extram_begin[];
|
||||
extern char imxrt_memory_extram_end[];
|
||||
extern char imxrt_memory_extram_size[];
|
||||
|
||||
extern char imxrt_memory_sdram_begin[];
|
||||
extern char imxrt_memory_sdram_end[];
|
||||
extern char imxrt_memory_sdram_size[];
|
||||
|
||||
extern char imxrt_memory_sdram_nocache_begin[];
|
||||
extern char imxrt_memory_sdram_nocache_end[];
|
||||
extern char imxrt_memory_sdram_nocache_size[];
|
||||
extern char imxrt_memory_extram_nocache_begin[];
|
||||
extern char imxrt_memory_extram_nocache_end[];
|
||||
extern char imxrt_memory_extram_nocache_size[];
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -30,8 +30,8 @@
|
||||
#include <bspopts.h>
|
||||
|
||||
const BOOT_DATA_T imxrt_boot_data = {
|
||||
.start = (uint32_t) imxrt_memory_flexspi_config_begin,
|
||||
.size = IMXRT_MEMORY_FLEXSPI_FLASH_SIZE,
|
||||
.start = (uint32_t) imxrt_memory_flash_config_begin,
|
||||
.size = IMXRT_MEMORY_FLASH_SIZE,
|
||||
.plugin = PLUGIN_FLAG,
|
||||
.placeholder = 0xFFFFFFFF,
|
||||
};
|
||||
|
||||
@@ -43,7 +43,7 @@ const flexspi_nor_config_t imxrt_flexspi_config = {
|
||||
.deviceType = kFlexSpiDeviceType_SerialRAM,
|
||||
.sflashPadType = kSerialFlash_8Pads,
|
||||
.serialClkFreq = kFlexSpiSerialClk_133MHz,
|
||||
.sflashA1Size = IMXRT_MEMORY_FLEXSPI_FLASH_SIZE,
|
||||
.sflashA1Size = IMXRT_MEMORY_FLASH_SIZE,
|
||||
.dataValidTime = {16u, 16u},
|
||||
.lookupTable = {
|
||||
FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0xA0, RADDR_DDR, FLEXSPI_8PAD, 0x18),
|
||||
@@ -1,22 +1,22 @@
|
||||
INCLUDE linkcmds.memory
|
||||
|
||||
REGION_ALIAS ("REGION_START", FLEXSPI);
|
||||
REGION_ALIAS ("REGION_VECTOR", FLEXSPI);
|
||||
REGION_ALIAS ("REGION_TEXT", FLEXSPI);
|
||||
REGION_ALIAS ("REGION_TEXT_LOAD", FLEXSPI);
|
||||
REGION_ALIAS ("REGION_RODATA", FLEXSPI);
|
||||
REGION_ALIAS ("REGION_RODATA_LOAD", FLEXSPI);
|
||||
REGION_ALIAS ("REGION_DATA", SDRAM);
|
||||
REGION_ALIAS ("REGION_DATA_LOAD", FLEXSPI);
|
||||
REGION_ALIAS ("REGION_FAST_TEXT", FLEXSPI);
|
||||
REGION_ALIAS ("REGION_FAST_TEXT_LOAD", FLEXSPI);
|
||||
REGION_ALIAS ("REGION_FAST_DATA", SDRAM);
|
||||
REGION_ALIAS ("REGION_FAST_DATA_LOAD", FLEXSPI);
|
||||
REGION_ALIAS ("REGION_BSS", SDRAM);
|
||||
REGION_ALIAS ("REGION_WORK", SDRAM);
|
||||
REGION_ALIAS ("REGION_STACK", SDRAM);
|
||||
REGION_ALIAS ("REGION_NOCACHE", SDRAM_NOCACHE);
|
||||
REGION_ALIAS ("REGION_NOCACHE_LOAD", FLEXSPI);
|
||||
REGION_ALIAS ("REGION_START", FLASH);
|
||||
REGION_ALIAS ("REGION_VECTOR", FLASH);
|
||||
REGION_ALIAS ("REGION_TEXT", FLASH);
|
||||
REGION_ALIAS ("REGION_TEXT_LOAD", FLASH);
|
||||
REGION_ALIAS ("REGION_RODATA", FLASH);
|
||||
REGION_ALIAS ("REGION_RODATA_LOAD", FLASH);
|
||||
REGION_ALIAS ("REGION_DATA", EXTRAM);
|
||||
REGION_ALIAS ("REGION_DATA_LOAD", FLASH);
|
||||
REGION_ALIAS ("REGION_FAST_TEXT", FLASH);
|
||||
REGION_ALIAS ("REGION_FAST_TEXT_LOAD", FLASH);
|
||||
REGION_ALIAS ("REGION_FAST_DATA", EXTRAM);
|
||||
REGION_ALIAS ("REGION_FAST_DATA_LOAD", FLASH);
|
||||
REGION_ALIAS ("REGION_BSS", EXTRAM);
|
||||
REGION_ALIAS ("REGION_WORK", EXTRAM);
|
||||
REGION_ALIAS ("REGION_STACK", EXTRAM);
|
||||
REGION_ALIAS ("REGION_NOCACHE", EXTRAM_NOCACHE);
|
||||
REGION_ALIAS ("REGION_NOCACHE_LOAD", FLASH);
|
||||
|
||||
bsp_vector_table_in_start_section = 1;
|
||||
|
||||
@@ -24,12 +24,12 @@ SECTIONS {
|
||||
. = imxrt_memory_flexspi_begin;
|
||||
.flash_config : ALIGN_WITH_INPUT {
|
||||
KEEP(*(.boot_hdr.conf))
|
||||
} > FLEXSPI_CONFIG AT > FLEXSPI_CONFIG
|
||||
} > FLASH_CONFIG AT > FLASH_CONFIG
|
||||
.flash_ivt : ALIGN_WITH_INPUT {
|
||||
KEEP(*(.boot_hdr.ivt))
|
||||
KEEP(*(.boot_hdr.boot_data))
|
||||
KEEP(*(.boot_hdr.dcd_data))
|
||||
} > FLEXSPI_IVT AT > FLEXSPI_IVT
|
||||
} > FLASH_IVT AT > FLASH_IVT
|
||||
}
|
||||
|
||||
INCLUDE linkcmds.armv7m
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
INCLUDE linkcmds.memory
|
||||
|
||||
REGION_ALIAS ("REGION_START", SDRAM);
|
||||
REGION_ALIAS ("REGION_VECTOR", SDRAM);
|
||||
REGION_ALIAS ("REGION_TEXT", SDRAM);
|
||||
REGION_ALIAS ("REGION_TEXT_LOAD", SDRAM);
|
||||
REGION_ALIAS ("REGION_RODATA", SDRAM);
|
||||
REGION_ALIAS ("REGION_RODATA_LOAD", SDRAM);
|
||||
REGION_ALIAS ("REGION_DATA", SDRAM);
|
||||
REGION_ALIAS ("REGION_DATA_LOAD", SDRAM);
|
||||
REGION_ALIAS ("REGION_FAST_TEXT", SDRAM);
|
||||
REGION_ALIAS ("REGION_FAST_TEXT_LOAD", SDRAM);
|
||||
REGION_ALIAS ("REGION_FAST_DATA", SDRAM);
|
||||
REGION_ALIAS ("REGION_FAST_DATA_LOAD", SDRAM);
|
||||
REGION_ALIAS ("REGION_BSS", SDRAM);
|
||||
REGION_ALIAS ("REGION_WORK", SDRAM);
|
||||
REGION_ALIAS ("REGION_STACK", SDRAM);
|
||||
REGION_ALIAS ("REGION_NOCACHE", SDRAM_NOCACHE);
|
||||
REGION_ALIAS ("REGION_NOCACHE_LOAD", SDRAM);
|
||||
REGION_ALIAS ("REGION_START", EXTRAM);
|
||||
REGION_ALIAS ("REGION_VECTOR", EXTRAM);
|
||||
REGION_ALIAS ("REGION_TEXT", EXTRAM);
|
||||
REGION_ALIAS ("REGION_TEXT_LOAD", EXTRAM);
|
||||
REGION_ALIAS ("REGION_RODATA", EXTRAM);
|
||||
REGION_ALIAS ("REGION_RODATA_LOAD", EXTRAM);
|
||||
REGION_ALIAS ("REGION_DATA", EXTRAM);
|
||||
REGION_ALIAS ("REGION_DATA_LOAD", EXTRAM);
|
||||
REGION_ALIAS ("REGION_FAST_TEXT", EXTRAM);
|
||||
REGION_ALIAS ("REGION_FAST_TEXT_LOAD", EXTRAM);
|
||||
REGION_ALIAS ("REGION_FAST_DATA", EXTRAM);
|
||||
REGION_ALIAS ("REGION_FAST_DATA_LOAD", EXTRAM);
|
||||
REGION_ALIAS ("REGION_BSS", EXTRAM);
|
||||
REGION_ALIAS ("REGION_WORK", EXTRAM);
|
||||
REGION_ALIAS ("REGION_STACK", EXTRAM);
|
||||
REGION_ALIAS ("REGION_NOCACHE", EXTRAM_NOCACHE);
|
||||
REGION_ALIAS ("REGION_NOCACHE_LOAD", EXTRAM);
|
||||
|
||||
bsp_vector_table_in_start_section = 1;
|
||||
|
||||
|
||||
@@ -32,8 +32,8 @@
|
||||
BSP_START_DATA_SECTION const ARMV7M_MPU_Region_config
|
||||
imxrt_config_mpu_region [] = {
|
||||
{
|
||||
.begin = imxrt_memory_sdram_begin,
|
||||
.end = imxrt_memory_sdram_end,
|
||||
.begin = imxrt_memory_extram_begin,
|
||||
.end = imxrt_memory_extram_end,
|
||||
.rasr = ARMV7M_MPU_RASR_AP(0x3)
|
||||
| ARMV7M_MPU_RASR_TEX(0x1) | ARMV7M_MPU_RASR_C | ARMV7M_MPU_RASR_B
|
||||
| ARMV7M_MPU_RASR_ENABLE,
|
||||
@@ -44,14 +44,14 @@ BSP_START_DATA_SECTION const ARMV7M_MPU_Region_config
|
||||
| ARMV7M_MPU_RASR_TEX(0x1) | ARMV7M_MPU_RASR_C | ARMV7M_MPU_RASR_B
|
||||
| ARMV7M_MPU_RASR_ENABLE,
|
||||
}, {
|
||||
.begin = imxrt_memory_flexspi_config_begin,
|
||||
.end = imxrt_memory_flexspi_end,
|
||||
.begin = imxrt_memory_flash_config_begin,
|
||||
.end = imxrt_memory_flash_end,
|
||||
.rasr = ARMV7M_MPU_RASR_AP(0x3)
|
||||
| ARMV7M_MPU_RASR_TEX(0x1) | ARMV7M_MPU_RASR_C | ARMV7M_MPU_RASR_B
|
||||
| ARMV7M_MPU_RASR_ENABLE,
|
||||
}, {
|
||||
.begin = imxrt_memory_sdram_nocache_begin,
|
||||
.end = imxrt_memory_sdram_nocache_end,
|
||||
.begin = imxrt_memory_extram_nocache_begin,
|
||||
.end = imxrt_memory_extram_nocache_end,
|
||||
.rasr = ARMV7M_MPU_RASR_AP(0x3)
|
||||
| ARMV7M_MPU_RASR_TEX(0x2)
|
||||
| ARMV7M_MPU_RASR_ENABLE,
|
||||
|
||||
Reference in New Issue
Block a user