[PATCH rtems 2/2] bsps/imxrt: Simplify linkcmds and make it flexible

Gedare Bloom gedare at rtems.org
Fri Jun 4 17:45:48 UTC 2021


does this one need doco update for the option changes?

On Fri, Jun 4, 2021 at 1:48 AM Christian Mauderer
<christian.mauderer at embedded-brains.de> wrote:
>
> 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
> ---
>  bsps/arm/imxrt/include/imxrt/memory.h         | 34 ++++++--------
>  bsps/arm/imxrt/start/flash-boot-data.c        |  4 +-
>  ...{flash-config.c => flash-flexspi-config.c} |  2 +-
>  bsps/arm/imxrt/start/linkcmds.flexspi         | 38 +++++++--------
>  bsps/arm/imxrt/start/linkcmds.sdram           | 34 +++++++-------
>  bsps/arm/imxrt/start/mpu-config.c             | 12 ++---
>  spec/build/bsps/arm/imxrt/bspimxrt.yml        | 20 ++++----
>  spec/build/bsps/arm/imxrt/linkcmdsmemory.yml  | 47 +++++++++----------
>  ...ocachesz.yml => optmemextramnocachesz.yml} |  5 +-
>  ...emsdrambase.yml => optmemextramorigin.yml} |  5 +-
>  spec/build/bsps/arm/imxrt/optmemextramsz.yml  | 19 ++++++++
>  ...ptmemsdramsz.yml => optmemflashorigin.yml} |  9 ++--
>  spec/build/bsps/arm/imxrt/optmemflashsz.yml   | 20 ++++++++
>  spec/build/bsps/arm/imxrt/optmemflexspisz.yml | 17 -------
>  spec/build/bsps/arm/imxrt/optmemitcmsz.yml    |  7 +--
>  spec/build/bsps/arm/imxrt/optmemnullsz.yml    |  5 +-
>  .../bsps/arm/imxrt/optmemocramnocachesz.yml   |  3 +-
>  spec/build/bsps/arm/imxrt/optmemocramsz.yml   |  6 ++-
>  18 files changed, 156 insertions(+), 131 deletions(-)
>  rename bsps/arm/imxrt/start/{flash-config.c => flash-flexspi-config.c} (98%)
>  rename spec/build/bsps/arm/imxrt/{optmemsdramnocachesz.yml => optmemextramnocachesz.yml} (66%)
>  rename spec/build/bsps/arm/imxrt/{optmemsdrambase.yml => optmemextramorigin.yml} (65%)
>  create mode 100644 spec/build/bsps/arm/imxrt/optmemextramsz.yml
>  rename spec/build/bsps/arm/imxrt/{optmemsdramsz.yml => optmemflashorigin.yml} (53%)
>  create mode 100644 spec/build/bsps/arm/imxrt/optmemflashsz.yml
>  delete mode 100644 spec/build/bsps/arm/imxrt/optmemflexspisz.yml
>
> diff --git a/bsps/arm/imxrt/include/imxrt/memory.h b/bsps/arm/imxrt/include/imxrt/memory.h
> index 8185f713cc..47bb10f41e 100644
> --- a/bsps/arm/imxrt/include/imxrt/memory.h
> +++ b/bsps/arm/imxrt/include/imxrt/memory.h
> @@ -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
>  }
> diff --git a/bsps/arm/imxrt/start/flash-boot-data.c b/bsps/arm/imxrt/start/flash-boot-data.c
> index cf0430af72..a1877f4d26 100644
> --- a/bsps/arm/imxrt/start/flash-boot-data.c
> +++ b/bsps/arm/imxrt/start/flash-boot-data.c
> @@ -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,
>  };
> diff --git a/bsps/arm/imxrt/start/flash-config.c b/bsps/arm/imxrt/start/flash-flexspi-config.c
> similarity index 98%
> rename from bsps/arm/imxrt/start/flash-config.c
> rename to bsps/arm/imxrt/start/flash-flexspi-config.c
> index 07324f1330..50eca19b20 100644
> --- a/bsps/arm/imxrt/start/flash-config.c
> +++ b/bsps/arm/imxrt/start/flash-flexspi-config.c
> @@ -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),
> diff --git a/bsps/arm/imxrt/start/linkcmds.flexspi b/bsps/arm/imxrt/start/linkcmds.flexspi
> index 4196bb33e5..ceed164894 100644
> --- a/bsps/arm/imxrt/start/linkcmds.flexspi
> +++ b/bsps/arm/imxrt/start/linkcmds.flexspi
> @@ -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
> diff --git a/bsps/arm/imxrt/start/linkcmds.sdram b/bsps/arm/imxrt/start/linkcmds.sdram
> index 87d1dffa53..b1b90e32d6 100644
> --- a/bsps/arm/imxrt/start/linkcmds.sdram
> +++ b/bsps/arm/imxrt/start/linkcmds.sdram
> @@ -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;
>
> diff --git a/bsps/arm/imxrt/start/mpu-config.c b/bsps/arm/imxrt/start/mpu-config.c
> index 683b26d45b..79800ac431 100644
> --- a/bsps/arm/imxrt/start/mpu-config.c
> +++ b/bsps/arm/imxrt/start/mpu-config.c
> @@ -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,
> diff --git a/spec/build/bsps/arm/imxrt/bspimxrt.yml b/spec/build/bsps/arm/imxrt/bspimxrt.yml
> index c6ea904754..30d690e0e2 100644
> --- a/spec/build/bsps/arm/imxrt/bspimxrt.yml
> +++ b/spec/build/bsps/arm/imxrt/bspimxrt.yml
> @@ -126,26 +126,28 @@ links:
>    uid: optlinkcmds
>  - role: build-dependency
>    uid: optmemdtcmsz
> +- role: build-dependency
> +  uid: optmemextramnocachesz
> +- role: build-dependency
> +  uid: optmemextramorigin
> +- role: build-dependency
> +  uid: optmemextramsz
>  - role: build-dependency
>    uid: optmemflashcfgsz
>  - role: build-dependency
>    uid: optmemflashivtsz
>  - role: build-dependency
> -  uid: optmemflexspisz
> +  uid: optmemflashorigin
> +- role: build-dependency
> +  uid: optmemflashsz
>  - role: build-dependency
>    uid: optmemitcmsz
>  - role: build-dependency
>    uid: optmemnullsz
> -- role: build-dependency
> -  uid: optmemocramsz
>  - role: build-dependency
>    uid: optmemocramnocachesz
>  - role: build-dependency
> -  uid: optmemsdrambase
> -- role: build-dependency
> -  uid: optmemsdramsz
> -- role: build-dependency
> -  uid: optmemsdramnocachesz
> +  uid: optmemocramsz
>  - role: build-dependency
>    uid: ../start
>  - role: build-dependency
> @@ -240,8 +242,8 @@ source:
>  - bsps/arm/imxrt/start/bspstarthooks.c
>  - bsps/arm/imxrt/start/clock-arm-pll-config.c
>  - bsps/arm/imxrt/start/flash-boot-data.c
> -- bsps/arm/imxrt/start/flash-config.c
>  - bsps/arm/imxrt/start/flash-dcd.c
> +- bsps/arm/imxrt/start/flash-flexspi-config.c
>  - bsps/arm/imxrt/start/flash-ivt.c
>  - bsps/arm/imxrt/start/imxrt-ffec-init.c
>  - bsps/arm/imxrt/start/mpu-config.c
> diff --git a/spec/build/bsps/arm/imxrt/linkcmdsmemory.yml b/spec/build/bsps/arm/imxrt/linkcmdsmemory.yml
> index 3f7885c589..6b4a36955a 100644
> --- a/spec/build/bsps/arm/imxrt/linkcmdsmemory.yml
> +++ b/spec/build/bsps/arm/imxrt/linkcmdsmemory.yml
> @@ -2,17 +2,16 @@ build-type: config-file
>  content: |
>    MEMORY {
>      NULL           : ORIGIN = 0x00000000, LENGTH = ${IMXRT_MEMORY_NULL_SIZE:#010x}
> -    ITCM           : ORIGIN = ${IMXRT_MEMORY_NULL_SIZE:#010x}, LENGTH = ${IMXRT_MEMORY_ITCM_SIZE:#010x} - ${IMXRT_MEMORY_NULL_SIZE:#010x}
> +    ITCM           : ORIGIN = ${IMXRT_MEMORY_NULL_SIZE:#010x}, LENGTH = ${IMXRT_MEMORY_ITCM_SIZE:#010x}
>      DTCM           : ORIGIN = 0x20000000, LENGTH = ${IMXRT_MEMORY_DTCM_SIZE:#010x}
>      OCRAM          : ORIGIN = 0x20200000, LENGTH = ${IMXRT_MEMORY_OCRAM_SIZE:#010x} - ${IMXRT_MEMORY_OCRAM_NOCACHE_SIZE:#010x}
>      OCRAM_NOCACHE  : ORIGIN = 0x20200000 + ${IMXRT_MEMORY_OCRAM_SIZE:#010x} - ${IMXRT_MEMORY_OCRAM_NOCACHE_SIZE:#010x}, LENGTH = ${IMXRT_MEMORY_OCRAM_NOCACHE_SIZE:#010x}
>      PERIPHERAL     : ORIGIN = 0x40000000, LENGTH = 0x20000000
> -    FLEXSPI_CONFIG : ORIGIN = 0x60000000, LENGTH = ${IMXRT_MEMORY_FLASH_CFG_SIZE:#010x}
> -    FLEXSPI_IVT    : ORIGIN = 0x60000000 + ${IMXRT_MEMORY_FLASH_CFG_SIZE:#010x}, LENGTH = ${IMXRT_MEMORY_FLASH_IVT_SIZE:#010x}
> -    FLEXSPI        : ORIGIN = 0x60000000 + ${IMXRT_MEMORY_FLASH_CFG_SIZE:#010x} + ${IMXRT_MEMORY_FLASH_IVT_SIZE:#010x}, LENGTH = ${IMXRT_MEMORY_FLEXSPI_FLASH_SIZE:#010x} - ${IMXRT_MEMORY_FLASH_CFG_SIZE:#010x} - ${IMXRT_MEMORY_FLASH_IVT_SIZE:#010x}
> -    FLEXSPI_FIFO   : ORIGIN = 0x7F800000, LENGTH = 8M
> -    SDRAM          : ORIGIN = ${IMXRT_MEMORY_SDRAM_BASE:#010x}, LENGTH = ${IMXRT_MEMORY_SDRAM_SIZE:#010x} - ${IMXRT_MEMORY_SDRAM_NOCACHE_SIZE:#010x}
> -    SDRAM_NOCACHE  : ORIGIN = ${IMXRT_MEMORY_SDRAM_BASE:#010x} + ${IMXRT_MEMORY_SDRAM_SIZE:#010x} - ${IMXRT_MEMORY_SDRAM_NOCACHE_SIZE:#010x}, LENGTH = ${IMXRT_MEMORY_SDRAM_NOCACHE_SIZE:#010x}
> +    FLASH_CONFIG   : ORIGIN = ${IMXRT_MEMORY_FLASH_ORIGIN:#010x}, LENGTH = ${IMXRT_MEMORY_FLASH_CFG_SIZE:#010x}
> +    FLASH_IVT      : ORIGIN = ${IMXRT_MEMORY_FLASH_ORIGIN:#010x} + ${IMXRT_MEMORY_FLASH_CFG_SIZE:#010x}, LENGTH = ${IMXRT_MEMORY_FLASH_IVT_SIZE:#010x}
> +    FLASH          : ORIGIN = ${IMXRT_MEMORY_FLASH_ORIGIN:#010x} + ${IMXRT_MEMORY_FLASH_CFG_SIZE:#010x} + ${IMXRT_MEMORY_FLASH_IVT_SIZE:#010x}, LENGTH = ${IMXRT_MEMORY_FLASH_SIZE:#010x} - ${IMXRT_MEMORY_FLASH_CFG_SIZE:#010x} - ${IMXRT_MEMORY_FLASH_IVT_SIZE:#010x}
> +    EXTRAM         : ORIGIN = ${IMXRT_MEMORY_EXTRAM_ORIGIN:#010x}, LENGTH = ${IMXRT_MEMORY_EXTRAM_SIZE:#010x} - ${IMXRT_MEMORY_EXTRAM_NOCACHE_SIZE:#010x}
> +    EXTRAM_NOCACHE : ORIGIN = ${IMXRT_MEMORY_EXTRAM_ORIGIN:#010x} + ${IMXRT_MEMORY_EXTRAM_SIZE:#010x} - ${IMXRT_MEMORY_EXTRAM_NOCACHE_SIZE:#010x}, LENGTH = ${IMXRT_MEMORY_EXTRAM_NOCACHE_SIZE:#010x}
>    }
>
>    imxrt_memory_null_begin = ORIGIN (NULL);
> @@ -39,29 +38,25 @@ content: |
>    imxrt_memory_peripheral_end = ORIGIN (PERIPHERAL) + LENGTH (PERIPHERAL);
>    imxrt_memory_peripheral_size = LENGTH (PERIPHERAL);
>
> -  imxrt_memory_flexspi_config_begin = ORIGIN (FLEXSPI_CONFIG);
> -  imxrt_memory_flexspi_config_end = ORIGIN (FLEXSPI_CONFIG) + LENGTH (FLEXSPI_CONFIG);
> -  imxrt_memory_flexspi_config_size = LENGTH (FLEXSPI_CONFIG);
> +  imxrt_memory_flash_config_begin = ORIGIN (FLASH_CONFIG);
> +  imxrt_memory_flash_config_end = ORIGIN (FLASH_CONFIG) + LENGTH (FLASH_CONFIG);
> +  imxrt_memory_flash_config_size = LENGTH (FLASH_CONFIG);
>
> -  imxrt_memory_flexspi_ivt_begin = ORIGIN (FLEXSPI_IVT);
> -  imxrt_memory_flexspi_ivt_end = ORIGIN (FLEXSPI_IVT) + LENGTH (FLEXSPI_IVT);
> -  imxrt_memory_flexspi_ivt_size = LENGTH (FLEXSPI_IVT);
> +  imxrt_memory_flash_ivt_begin = ORIGIN (FLASH_IVT);
> +  imxrt_memory_flash_ivt_end = ORIGIN (FLASH_IVT) + LENGTH (FLASH_IVT);
> +  imxrt_memory_flash_ivt_size = LENGTH (FLASH_IVT);
>
> -  imxrt_memory_flexspi_begin = ORIGIN (FLEXSPI);
> -  imxrt_memory_flexspi_end = ORIGIN (FLEXSPI) + LENGTH (FLEXSPI);
> -  imxrt_memory_flexspi_size = LENGTH (FLEXSPI);
> +  imxrt_memory_flash_begin = ORIGIN (FLASH);
> +  imxrt_memory_flash_end = ORIGIN (FLASH) + LENGTH (FLASH);
> +  imxrt_memory_flash_size = LENGTH (FLASH);
>
> -  imxrt_memory_flexspi_fifo_begin = ORIGIN (FLEXSPI_FIFO);
> -  imxrt_memory_flexspi_fifo_end = ORIGIN (FLEXSPI_FIFO) + LENGTH (FLEXSPI_FIFO);
> -  imxrt_memory_flexspi_fifo_size = LENGTH (FLEXSPI_FIFO);
> +  imxrt_memory_extram_begin = ORIGIN (EXTRAM);
> +  imxrt_memory_extram_end = ORIGIN (EXTRAM) + LENGTH (EXTRAM);
> +  imxrt_memory_extram_size = LENGTH (EXTRAM);
>
> -  imxrt_memory_sdram_begin = ORIGIN (SDRAM);
> -  imxrt_memory_sdram_end = ORIGIN (SDRAM) + LENGTH (SDRAM);
> -  imxrt_memory_sdram_size = LENGTH (SDRAM);
> -
> -  imxrt_memory_sdram_nocache_begin = ORIGIN (SDRAM_NOCACHE);
> -  imxrt_memory_sdram_nocache_end = ORIGIN (SDRAM_NOCACHE) + LENGTH (SDRAM_NOCACHE);
> -  imxrt_memory_sdram_nocache_size = LENGTH (SDRAM_NOCACHE);
> +  imxrt_memory_extram_nocache_begin = ORIGIN (EXTRAM_NOCACHE);
> +  imxrt_memory_extram_nocache_end = ORIGIN (EXTRAM_NOCACHE) + LENGTH (EXTRAM_NOCACHE);
> +  imxrt_memory_extram_nocache_size = LENGTH (EXTRAM_NOCACHE);
>  enabled-by: true
>  install-path: ${BSP_LIBDIR}
>  links: []
> diff --git a/spec/build/bsps/arm/imxrt/optmemsdramnocachesz.yml b/spec/build/bsps/arm/imxrt/optmemextramnocachesz.yml
> similarity index 66%
> rename from spec/build/bsps/arm/imxrt/optmemsdramnocachesz.yml
> rename to spec/build/bsps/arm/imxrt/optmemextramnocachesz.yml
> index 113387d039..8b6dba859a 100644
> --- a/spec/build/bsps/arm/imxrt/optmemsdramnocachesz.yml
> +++ b/spec/build/bsps/arm/imxrt/optmemextramnocachesz.yml
> @@ -7,9 +7,10 @@ default-by-variant: []
>  enabled-by: true
>  format: '{:#010x}'
>  links: []
> -name: IMXRT_MEMORY_SDRAM_NOCACHE_SIZE
> +name: IMXRT_MEMORY_EXTRAM_NOCACHE_SIZE
>  description: |
> -  Size of the nocache area at the end of the SDRAM in bytes.
> +  Size of the nocache area at the end of the external RAM in bytes.  Must not be
> +  bigger than IMXRT_MEMORY_EXTRAM_SIZE.
>  type: build
>  SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
>  copyrights:
> diff --git a/spec/build/bsps/arm/imxrt/optmemsdrambase.yml b/spec/build/bsps/arm/imxrt/optmemextramorigin.yml
> similarity index 65%
> rename from spec/build/bsps/arm/imxrt/optmemsdrambase.yml
> rename to spec/build/bsps/arm/imxrt/optmemextramorigin.yml
> index 567ceab07c..98350d2e2f 100644
> --- a/spec/build/bsps/arm/imxrt/optmemsdrambase.yml
> +++ b/spec/build/bsps/arm/imxrt/optmemextramorigin.yml
> @@ -7,9 +7,10 @@ default-by-variant: []
>  enabled-by: true
>  format: '{:#010x}'
>  links: []
> -name: IMXRT_MEMORY_SDRAM_BASE
> +name: IMXRT_MEMORY_EXTRAM_ORIGIN
>  description: |
> -  Base address of the SDRAM.
> +  Base address of the external RAM.  An external ram can be for example be a
> +  SDRAM connected to SEMC or a HyperRAM connected to FlexSPI.
>  type: build
>  SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
>  copyrights:
> diff --git a/spec/build/bsps/arm/imxrt/optmemextramsz.yml b/spec/build/bsps/arm/imxrt/optmemextramsz.yml
> new file mode 100644
> index 0000000000..6999add5cc
> --- /dev/null
> +++ b/spec/build/bsps/arm/imxrt/optmemextramsz.yml
> @@ -0,0 +1,19 @@
> +actions:
> +- get-integer: null
> +- env-assign: null
> +build-type: option
> +default: 0x2000000
> +default-by-variant: []
> +enabled-by: true
> +format: '{:#010x}'
> +links: []
> +name: IMXRT_MEMORY_EXTRAM_SIZE
> +description: |
> +  Size of the external RAM in bytes.  An external ram can be for example be a
> +  SDRAM connected to SEMC or a HyperRAM connected to FlexSPI.  The size has to
> +  be at least big enough to hold the non cached section with size
> +  IMXRT_MEMORY_EXTRAM_NOCACHE_SIZE at the end of the RAM.
> +type: build
> +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
> +copyrights:
> +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
> diff --git a/spec/build/bsps/arm/imxrt/optmemsdramsz.yml b/spec/build/bsps/arm/imxrt/optmemflashorigin.yml
> similarity index 53%
> rename from spec/build/bsps/arm/imxrt/optmemsdramsz.yml
> rename to spec/build/bsps/arm/imxrt/optmemflashorigin.yml
> index 315b5271dc..882ade680c 100644
> --- a/spec/build/bsps/arm/imxrt/optmemsdramsz.yml
> +++ b/spec/build/bsps/arm/imxrt/optmemflashorigin.yml
> @@ -1,15 +1,18 @@
>  actions:
>  - get-integer: null
>  - env-assign: null
> +- define-unquoted: IMXRT_MEMORY_FLASH_ORIGIN
>  build-type: option
> -default: 33554432
> +default: 0x60000000
>  default-by-variant: []
>  enabled-by: true
>  format: '{:#010x}'
>  links: []
> -name: IMXRT_MEMORY_SDRAM_SIZE
> +name: IMXRT_MEMORY_FLASH_ORIGIN
>  description: |
> -  Size of the SDRAM in bytes.
> +  Origin of the external flash memory.  That can be for example a flash
> +  connected to FlexSPI or to SEMC.  The default value is for a HyperFlash
> +  connected to FlexSPI.
>  type: build
>  SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
>  copyrights:
> diff --git a/spec/build/bsps/arm/imxrt/optmemflashsz.yml b/spec/build/bsps/arm/imxrt/optmemflashsz.yml
> new file mode 100644
> index 0000000000..c474dd256e
> --- /dev/null
> +++ b/spec/build/bsps/arm/imxrt/optmemflashsz.yml
> @@ -0,0 +1,20 @@
> +actions:
> +- get-integer: null
> +- env-assign: null
> +- define-unquoted: IMXRT_MEMORY_FLASH_SIZE
> +build-type: option
> +default: 0x4000000
> +default-by-variant: []
> +enabled-by: true
> +format: '{:#010x}'
> +links: []
> +name: IMXRT_MEMORY_FLASH_SIZE
> +description: |
> +  Size of the external flash area in bytes.  Has to be big enough to hold the
> +  i.MXRT initial vector table (IVT) and configuration information.  The sizes of
> +  these are defined with IMXRT_MEMORY_FLASH_IVT_SIZE and
> +  IMXRT_MEMORY_FLASH_CFG_SIZE.
> +type: build
> +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
> +copyrights:
> +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
> diff --git a/spec/build/bsps/arm/imxrt/optmemflexspisz.yml b/spec/build/bsps/arm/imxrt/optmemflexspisz.yml
> deleted file mode 100644
> index 3750c2c683..0000000000
> --- a/spec/build/bsps/arm/imxrt/optmemflexspisz.yml
> +++ /dev/null
> @@ -1,17 +0,0 @@
> -actions:
> -- get-integer: null
> -- env-assign: null
> -- define-unquoted: IMXRT_MEMORY_FLEXSPI_FLASH_SIZE
> -build-type: option
> -default: 67108864
> -default-by-variant: []
> -enabled-by: true
> -format: '{:#010x}'
> -links: []
> -name: IMXRT_MEMORY_FLEXSPI_FLASH_SIZE
> -description: |
> -  Size of the FlexSPI Flash area in bytes.
> -type: build
> -SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
> -copyrights:
> -- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
> diff --git a/spec/build/bsps/arm/imxrt/optmemitcmsz.yml b/spec/build/bsps/arm/imxrt/optmemitcmsz.yml
> index 195d519889..7795b2becb 100644
> --- a/spec/build/bsps/arm/imxrt/optmemitcmsz.yml
> +++ b/spec/build/bsps/arm/imxrt/optmemitcmsz.yml
> @@ -2,15 +2,16 @@ actions:
>  - get-integer: null
>  - env-assign: null
>  build-type: option
> -default: 0x20000
> +default: 0x1ff00
>  default-by-variant: []
>  enabled-by: true
>  format: '{:#010x}'
>  links: []
>  name: IMXRT_MEMORY_ITCM_SIZE
>  description: |
> -  Size of the ITCM in bytes. Note that these sizes depend on fuses or software
> -  settings done by a bootloader (together with DTCM and OCRAM).
> +  Size of the ITCM in bytes.  Note that these sizes depend on fuses or software
> +  settings done by a bootloader (together with DTCM and OCRAM).  The ITCM size
> +  has to take the IMXRT_MEMORY_NULL_SIZE into account!
>  type: build
>  SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
>  copyrights:
> diff --git a/spec/build/bsps/arm/imxrt/optmemnullsz.yml b/spec/build/bsps/arm/imxrt/optmemnullsz.yml
> index a298f8192f..d737ef0e60 100644
> --- a/spec/build/bsps/arm/imxrt/optmemnullsz.yml
> +++ b/spec/build/bsps/arm/imxrt/optmemnullsz.yml
> @@ -2,7 +2,7 @@ actions:
>  - get-integer: null
>  - env-assign: null
>  build-type: option
> -default: 0x400
> +default: 0x100
>  default-by-variant: []
>  enabled-by: true
>  format: '{:#010x}'
> @@ -10,7 +10,8 @@ links: []
>  name: IMXRT_MEMORY_NULL_SIZE
>  description: |
>    Size of the NULL pointer protection area in bytes.  This memory area reduces
> -  the size of the ITCM available to the application.
> +  the size of the ITCM available to the application.  If you adapt this, you
> +  have to adapt IMXRT_MEMORY_ITCM_SIZE too.
>  type: build
>  SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
>  copyrights:
> diff --git a/spec/build/bsps/arm/imxrt/optmemocramnocachesz.yml b/spec/build/bsps/arm/imxrt/optmemocramnocachesz.yml
> index 8e68a08708..942dd60de2 100644
> --- a/spec/build/bsps/arm/imxrt/optmemocramnocachesz.yml
> +++ b/spec/build/bsps/arm/imxrt/optmemocramnocachesz.yml
> @@ -9,7 +9,8 @@ format: '{:#010x}'
>  links: []
>  name: IMXRT_MEMORY_OCRAM_NOCACHE_SIZE
>  description: |
> -  Size of the nocache area at the end of the OCRAM in bytes.
> +  Size of the nocache area at the end of the OCRAM in bytes.  Must not be bigger
> +  than IMXRT_MEMORY_OCRAM_SIZE.
>  type: build
>  SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
>  copyrights:
> diff --git a/spec/build/bsps/arm/imxrt/optmemocramsz.yml b/spec/build/bsps/arm/imxrt/optmemocramsz.yml
> index 4498435aa6..9e264f69be 100644
> --- a/spec/build/bsps/arm/imxrt/optmemocramsz.yml
> +++ b/spec/build/bsps/arm/imxrt/optmemocramsz.yml
> @@ -9,8 +9,10 @@ format: '{:#010x}'
>  links: []
>  name: IMXRT_MEMORY_OCRAM_SIZE
>  description: |
> -  Size of the OCRAM in bytes. Note that these sizes depend on fuses or software
> -  settings done by a bootloader (together with ITCM and DTCM).
> +  Size of the OCRAM in bytes.  Note that these sizes depend on fuses or software
> +  settings done by a bootloader (together with ITCM and DTCM).  The size has to
> +  be at least big enough to hold the non cached section with size
> +  IMXRT_MEMORY_OCRAM_NOCACHE_SIZE at the end of the RAM.
>  type: build
>  SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
>  copyrights:
> --
> 2.26.2
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel


More information about the devel mailing list