summaryrefslogtreecommitdiffstats
path: root/spec/build/bsps/arm/imxrt
diff options
context:
space:
mode:
authorChristian Mauderer <christian.mauderer@embedded-brains.de>2021-05-11 13:46:56 +0200
committerChristian Mauderer <christian.mauderer@embedded-brains.de>2021-05-17 09:06:41 +0200
commit691fec407a0faae379cab23679ec8456ace9fb06 (patch)
treed557e4a15157126bcb2e8c6fb54c33f7769b4218 /spec/build/bsps/arm/imxrt
parentbsps/imxrt: Add addresses and interrupts to dts (diff)
downloadrtems-691fec407a0faae379cab23679ec8456ace9fb06.tar.bz2
bsps/imxrt: Fix OCRAM, ITCM and DTCM sizes
The sizes are configurable via fuses or per software via some registers. At the moment the registers are not changed. Changing the registers destroys data stored in the RAM areas (like application code or data). So either the fuses or some bootloader should be used to set them before the application starts. This also adds an OCRAM only linker command file. Update #4180
Diffstat (limited to 'spec/build/bsps/arm/imxrt')
-rw-r--r--spec/build/bsps/arm/imxrt/bspimxrt.yml9
-rw-r--r--spec/build/bsps/arm/imxrt/linkcmdsmemory.yml11
-rw-r--r--spec/build/bsps/arm/imxrt/optlinkcmds.yml3
-rw-r--r--spec/build/bsps/arm/imxrt/optmemdtcmsz.yml17
-rw-r--r--spec/build/bsps/arm/imxrt/optmemitcmsz.yml17
-rw-r--r--spec/build/bsps/arm/imxrt/optmemocramnocachesz.yml16
-rw-r--r--spec/build/bsps/arm/imxrt/optmemocramsz.yml17
7 files changed, 86 insertions, 4 deletions
diff --git a/spec/build/bsps/arm/imxrt/bspimxrt.yml b/spec/build/bsps/arm/imxrt/bspimxrt.yml
index 07f6bcef39..f543a14394 100644
--- a/spec/build/bsps/arm/imxrt/bspimxrt.yml
+++ b/spec/build/bsps/arm/imxrt/bspimxrt.yml
@@ -109,6 +109,7 @@ install:
- destination: ${BSP_LIBDIR}
source:
- bsps/arm/imxrt/start/linkcmds.flexspi
+ - bsps/arm/imxrt/start/linkcmds.ocram
- bsps/arm/imxrt/start/linkcmds.sdram
links:
- role: build-dependency
@@ -124,14 +125,22 @@ links:
- role: build-dependency
uid: optlinkcmds
- role: build-dependency
+ uid: optmemdtcmsz
+- role: build-dependency
uid: optmemflashcfgsz
- role: build-dependency
uid: optmemflashivtsz
- role: build-dependency
uid: optmemflexspisz
- 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
diff --git a/spec/build/bsps/arm/imxrt/linkcmdsmemory.yml b/spec/build/bsps/arm/imxrt/linkcmdsmemory.yml
index 86dc37c3bd..3f7885c589 100644
--- a/spec/build/bsps/arm/imxrt/linkcmdsmemory.yml
+++ b/spec/build/bsps/arm/imxrt/linkcmdsmemory.yml
@@ -2,9 +2,10 @@ build-type: config-file
content: |
MEMORY {
NULL : ORIGIN = 0x00000000, LENGTH = ${IMXRT_MEMORY_NULL_SIZE:#010x}
- ITCM : ORIGIN = ${IMXRT_MEMORY_NULL_SIZE:#010x}, LENGTH = 512k - ${IMXRT_MEMORY_NULL_SIZE:#010x}
- DTCM : ORIGIN = 0x20000000, LENGTH = 512k
- OCRAM : ORIGIN = 0x20200000, LENGTH = 512k
+ ITCM : ORIGIN = ${IMXRT_MEMORY_NULL_SIZE:#010x}, LENGTH = ${IMXRT_MEMORY_ITCM_SIZE:#010x} - ${IMXRT_MEMORY_NULL_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}
@@ -30,6 +31,10 @@ content: |
imxrt_memory_ocram_end = ORIGIN (OCRAM) + LENGTH (OCRAM);
imxrt_memory_ocram_size = LENGTH (OCRAM);
+ imxrt_memory_ocram_nocache_begin = ORIGIN (OCRAM_NOCACHE);
+ imxrt_memory_ocram_nocache_end = ORIGIN (OCRAM_NOCACHE) + LENGTH (OCRAM_NOCACHE);
+ imxrt_memory_ocram_nocache_size = LENGTH (OCRAM_NOCACHE);
+
imxrt_memory_peripheral_begin = ORIGIN (PERIPHERAL);
imxrt_memory_peripheral_end = ORIGIN (PERIPHERAL) + LENGTH (PERIPHERAL);
imxrt_memory_peripheral_size = LENGTH (PERIPHERAL);
diff --git a/spec/build/bsps/arm/imxrt/optlinkcmds.yml b/spec/build/bsps/arm/imxrt/optlinkcmds.yml
index ba20c3838f..4349ad332e 100644
--- a/spec/build/bsps/arm/imxrt/optlinkcmds.yml
+++ b/spec/build/bsps/arm/imxrt/optlinkcmds.yml
@@ -9,7 +9,8 @@ format: '{}'
links: []
name: IMXRT_DEFAULT_LINKCMDS
description: |
- The default linker command file. Must be linkcmds.sdram or linkcmds.flexspi.
+ The default linker command file. Must be linkcmds.sdram, linkcmds.ocram or
+ linkcmds.flexspi.
type: build
SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
copyrights:
diff --git a/spec/build/bsps/arm/imxrt/optmemdtcmsz.yml b/spec/build/bsps/arm/imxrt/optmemdtcmsz.yml
new file mode 100644
index 0000000000..1bd57fac08
--- /dev/null
+++ b/spec/build/bsps/arm/imxrt/optmemdtcmsz.yml
@@ -0,0 +1,17 @@
+actions:
+- get-integer: null
+- env-assign: null
+build-type: option
+default: 0x20000
+default-by-variant: []
+enabled-by: true
+format: '{:#010x}'
+links: []
+name: IMXRT_MEMORY_DTCM_SIZE
+description: |
+ Size of the DTCM in bytes. Note that these sizes depend on fuses or software
+ settings done by a bootloader (together with ITCM and OCRAM).
+type: build
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2021 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
new file mode 100644
index 0000000000..195d519889
--- /dev/null
+++ b/spec/build/bsps/arm/imxrt/optmemitcmsz.yml
@@ -0,0 +1,17 @@
+actions:
+- get-integer: null
+- env-assign: null
+build-type: option
+default: 0x20000
+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).
+type: build
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
diff --git a/spec/build/bsps/arm/imxrt/optmemocramnocachesz.yml b/spec/build/bsps/arm/imxrt/optmemocramnocachesz.yml
new file mode 100644
index 0000000000..8e68a08708
--- /dev/null
+++ b/spec/build/bsps/arm/imxrt/optmemocramnocachesz.yml
@@ -0,0 +1,16 @@
+actions:
+- get-integer: null
+- env-assign: null
+build-type: option
+default: 0
+default-by-variant: []
+enabled-by: true
+format: '{:#010x}'
+links: []
+name: IMXRT_MEMORY_OCRAM_NOCACHE_SIZE
+description: |
+ Size of the nocache area at the end of the OCRAM in bytes.
+type: build
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
diff --git a/spec/build/bsps/arm/imxrt/optmemocramsz.yml b/spec/build/bsps/arm/imxrt/optmemocramsz.yml
new file mode 100644
index 0000000000..4498435aa6
--- /dev/null
+++ b/spec/build/bsps/arm/imxrt/optmemocramsz.yml
@@ -0,0 +1,17 @@
+actions:
+- get-integer: null
+- env-assign: null
+build-type: option
+default: 0x40000
+default-by-variant: []
+enabled-by: true
+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).
+type: build
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)