diff options
author | Christian Mauderer <christian.mauderer@embedded-brains.de> | 2021-05-11 13:46:56 +0200 |
---|---|---|
committer | Christian Mauderer <christian.mauderer@embedded-brains.de> | 2021-05-17 09:06:41 +0200 |
commit | 691fec407a0faae379cab23679ec8456ace9fb06 (patch) | |
tree | d557e4a15157126bcb2e8c6fb54c33f7769b4218 /bsps/arm | |
parent | bsps/imxrt: Add addresses and interrupts to dts (diff) | |
download | rtems-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 'bsps/arm')
-rw-r--r-- | bsps/arm/imxrt/include/imxrt/memory.h | 4 | ||||
-rw-r--r-- | bsps/arm/imxrt/start/linkcmds.ocram | 23 | ||||
-rw-r--r-- | bsps/arm/imxrt/start/mpu-config.c | 6 |
3 files changed, 33 insertions, 0 deletions
diff --git a/bsps/arm/imxrt/include/imxrt/memory.h b/bsps/arm/imxrt/include/imxrt/memory.h index 5a6b457aa6..8185f713cc 100644 --- a/bsps/arm/imxrt/include/imxrt/memory.h +++ b/bsps/arm/imxrt/include/imxrt/memory.h @@ -48,6 +48,10 @@ extern char imxrt_memory_ocram_begin[]; extern char imxrt_memory_ocram_end[]; extern char imxrt_memory_ocram_size[]; +extern char imxrt_memory_ocram_nocache_begin[]; +extern char imxrt_memory_ocram_nocache_end[]; +extern char imxrt_memory_ocram_nocache_size[]; + extern char imxrt_memory_peripheral_begin[]; extern char imxrt_memory_peripheral_end[]; extern char imxrt_memory_peripheral_size[]; diff --git a/bsps/arm/imxrt/start/linkcmds.ocram b/bsps/arm/imxrt/start/linkcmds.ocram new file mode 100644 index 0000000000..6df3c917b1 --- /dev/null +++ b/bsps/arm/imxrt/start/linkcmds.ocram @@ -0,0 +1,23 @@ +INCLUDE linkcmds.memory + +REGION_ALIAS ("REGION_START", OCRAM); +REGION_ALIAS ("REGION_VECTOR", OCRAM); +REGION_ALIAS ("REGION_TEXT", OCRAM); +REGION_ALIAS ("REGION_TEXT_LOAD", OCRAM); +REGION_ALIAS ("REGION_RODATA", OCRAM); +REGION_ALIAS ("REGION_RODATA_LOAD", OCRAM); +REGION_ALIAS ("REGION_DATA", OCRAM); +REGION_ALIAS ("REGION_DATA_LOAD", OCRAM); +REGION_ALIAS ("REGION_FAST_TEXT", OCRAM); +REGION_ALIAS ("REGION_FAST_TEXT_LOAD", OCRAM); +REGION_ALIAS ("REGION_FAST_DATA", OCRAM); +REGION_ALIAS ("REGION_FAST_DATA_LOAD", OCRAM); +REGION_ALIAS ("REGION_BSS", OCRAM); +REGION_ALIAS ("REGION_WORK", OCRAM); +REGION_ALIAS ("REGION_STACK", OCRAM); +REGION_ALIAS ("REGION_NOCACHE", OCRAM_NOCACHE); +REGION_ALIAS ("REGION_NOCACHE_LOAD", OCRAM); + +bsp_vector_table_in_start_section = 1; + +INCLUDE linkcmds.armv7m diff --git a/bsps/arm/imxrt/start/mpu-config.c b/bsps/arm/imxrt/start/mpu-config.c index 31c39bc16f..683b26d45b 100644 --- a/bsps/arm/imxrt/start/mpu-config.c +++ b/bsps/arm/imxrt/start/mpu-config.c @@ -56,6 +56,12 @@ BSP_START_DATA_SECTION const ARMV7M_MPU_Region_config | ARMV7M_MPU_RASR_TEX(0x2) | ARMV7M_MPU_RASR_ENABLE, }, { + .begin = imxrt_memory_ocram_nocache_begin, + .end = imxrt_memory_ocram_nocache_end, + .rasr = ARMV7M_MPU_RASR_AP(0x3) + | ARMV7M_MPU_RASR_TEX(0x2) + | ARMV7M_MPU_RASR_ENABLE, + }, { .begin = imxrt_memory_peripheral_begin, .end = imxrt_memory_peripheral_end, .rasr = ARMV7M_MPU_RASR_XN |