|
16 | 16 |
|
17 | 17 | #include <autoconf.h> |
18 | 18 | #include <linker/sections.h> |
| 19 | +#include <linker/devicetree_regions.h> |
19 | 20 |
|
20 | 21 | #include <linker/linker-defs.h> |
21 | 22 | #include <linker/linker-tool.h> |
@@ -79,6 +80,11 @@ MEMORY |
79 | 80 | ROM (rx) : ORIGIN = ROM_BASE, LENGTH = ROM_SIZE |
80 | 81 | #endif |
81 | 82 | RAM (rwx) : ORIGIN = RAM_BASE, LENGTH = RAM_SIZE |
| 83 | + |
| 84 | + /* Data & Instruction Tightly Coupled Memory */ |
| 85 | + LINKER_DT_REGION_FROM_NODE(ITCM, rw, DT_CHOSEN(zephyr_itcm)) |
| 86 | + LINKER_DT_REGION_FROM_NODE(DTCM, rw, DT_CHOSEN(zephyr_dtcm)) |
| 87 | + |
82 | 88 | /* Used by and documented in include/linker/intlist.ld */ |
83 | 89 | IDT_LIST (wx) : ORIGIN = 0xFFFFF7FF, LENGTH = 2K |
84 | 90 | } |
@@ -268,6 +274,58 @@ SECTIONS |
268 | 274 | __kernel_ram_end = .; |
269 | 275 | __kernel_ram_size = __kernel_ram_end - __kernel_ram_start; |
270 | 276 |
|
| 277 | +#if DT_NODE_HAS_STATUS(DT_CHOSEN(zephyr_itcm), okay) |
| 278 | +GROUP_START(ITCM) |
| 279 | + |
| 280 | + SECTION_PROLOGUE(_ITCM_SECTION_NAME,,SUBALIGN(8)) |
| 281 | + { |
| 282 | + __itcm_start = .; |
| 283 | + *(.itcm) |
| 284 | + *(".itcm.*") |
| 285 | + __itcm_end = .; |
| 286 | + } GROUP_LINK_IN(ITCM AT> ROMABLE_REGION) |
| 287 | + |
| 288 | + __itcm_size = __itcm_end - __itcm_start; |
| 289 | + __itcm_rom_start = LOADADDR(_ITCM_SECTION_NAME); |
| 290 | + |
| 291 | +GROUP_END(ITCM) |
| 292 | +#endif |
| 293 | + |
| 294 | +#if DT_NODE_HAS_STATUS(DT_CHOSEN(zephyr_dtcm), okay) |
| 295 | +GROUP_START(DTCM) |
| 296 | + |
| 297 | + SECTION_PROLOGUE(_DTCM_BSS_SECTION_NAME, (NOLOAD),SUBALIGN(8)) |
| 298 | + { |
| 299 | + __dtcm_start = .; |
| 300 | + __dtcm_bss_start = .; |
| 301 | + *(.dtcm_bss) |
| 302 | + *(".dtcm_bss.*") |
| 303 | + __dtcm_bss_end = .; |
| 304 | + } GROUP_LINK_IN(DTCM) |
| 305 | + |
| 306 | + SECTION_PROLOGUE(_DTCM_NOINIT_SECTION_NAME, (NOLOAD),SUBALIGN(8)) |
| 307 | + { |
| 308 | + __dtcm_noinit_start = .; |
| 309 | + *(.dtcm_noinit) |
| 310 | + *(".dtcm_noinit.*") |
| 311 | + __dtcm_noinit_end = .; |
| 312 | + } GROUP_LINK_IN(DTCM) |
| 313 | + |
| 314 | + SECTION_PROLOGUE(_DTCM_DATA_SECTION_NAME,,SUBALIGN(8)) |
| 315 | + { |
| 316 | + __dtcm_data_start = .; |
| 317 | + *(.dtcm_data) |
| 318 | + *(".dtcm_data.*") |
| 319 | + __dtcm_data_end = .; |
| 320 | + } GROUP_LINK_IN(DTCM AT> ROMABLE_REGION) |
| 321 | + |
| 322 | + __dtcm_end = .; |
| 323 | + |
| 324 | + __dtcm_data_rom_start = LOADADDR(_DTCM_DATA_SECTION_NAME); |
| 325 | + |
| 326 | +GROUP_END(DTCM) |
| 327 | +#endif |
| 328 | + |
271 | 329 | /* Located in generated directory. This file is populated by the |
272 | 330 | * zephyr_linker_sources() Cmake function. |
273 | 331 | */ |
|
0 commit comments