1/* 2** ################################################################### 3** Processors: LPC55S16JBD100 4** LPC55S16JBD64 5** LPC55S16JEV59 6** LPC55S16JEV98 7** 8** Compiler: IAR ANSI C/C++ Compiler for ARM 9** Reference manual: LPC55S1x/LPC551x User manual Rev.0.6 15 November 2019 10** Version: rev. 1.1, 2019-12-03 11** Build: b220622 12** 13** Abstract: 14** Linker file for the IAR ANSI C/C++ Compiler for ARM 15** 16** Copyright 2016 Freescale Semiconductor, Inc. 17** Copyright 2016-2022 NXP 18** All rights reserved. 19** 20** SPDX-License-Identifier: BSD-3-Clause 21** 22** http: www.nxp.com 23** mail: support@nxp.com 24** 25** ################################################################### 26*/ 27 28 29/* USB BDT size */ 30define symbol usb_bdt_size = 0x0; 31/* Stack and Heap Sizes */ 32if (isdefinedsymbol(__stack_size__)) { 33 define symbol __size_cstack__ = __stack_size__; 34} else { 35 define symbol __size_cstack__ = 0x0400; 36} 37 38if (isdefinedsymbol(__heap_size__)) { 39 define symbol __size_heap__ = __heap_size__; 40} else { 41 define symbol __size_heap__ = 0x0400; 42} 43 44define symbol m_interrupts_start = 0x00000000; 45define symbol m_interrupts_end = 0x000001FF; 46 47define symbol m_text_start = 0x00000200; 48define symbol m_text_end = 0x0003CFFF; 49 50define symbol m_data_start = 0x20000000; 51define symbol m_data_end = 0x2000FFFF; 52 53define symbol m_sramx_start = 0x04000000; 54define symbol m_sramx_end = 0x04003FFF; 55 56define symbol m_usb_sram_start = 0x20010000; 57define symbol m_usb_sram_end = 0x20013FFF; 58 59define memory mem with size = 4G; 60 61define region TEXT_region = mem:[from m_interrupts_start to m_interrupts_end] 62 | mem:[from m_text_start to m_text_end]; 63define region DATA_region = mem:[from m_data_start to m_data_end-__size_cstack__]; 64define region CSTACK_region = mem:[from m_data_end-__size_cstack__+1 to m_data_end]; 65if (isdefinedsymbol(__use_shmem__)) { 66 define region rpmsg_sh_mem_region = mem:[from rpmsg_sh_mem_start to rpmsg_sh_mem_end]; 67} 68 69define block CSTACK with alignment = 8, size = __size_cstack__ { }; 70define block HEAP with alignment = 8, size = __size_heap__ { }; 71define block RW { readwrite }; 72define block ZI { zi }; 73 74/* regions for USB */ 75define region USB_BDT_region = mem:[from m_usb_sram_start to m_usb_sram_start + usb_bdt_size - 1]; 76define region USB_SRAM_region = mem:[from m_usb_sram_start + usb_bdt_size to m_usb_sram_end]; 77place in USB_BDT_region { section m_usb_bdt }; 78place in USB_SRAM_region { section m_usb_global }; 79 80initialize by copy { readwrite, section .textrw }; 81 82if (isdefinedsymbol(__USE_DLIB_PERTHREAD)) 83{ 84 /* Required in a multi-threaded application */ 85 initialize by copy with packing = none { section __DLIB_PERTHREAD }; 86} 87 88do not initialize { section .noinit, section m_usb_bdt, section m_usb_global }; 89if (isdefinedsymbol(__use_shmem__)) { 90 do not initialize { section rpmsg_sh_mem_section }; 91} 92 93place at address mem: m_interrupts_start { readonly section .intvec }; 94place in TEXT_region { readonly }; 95place in DATA_region { block RW }; 96place in DATA_region { block ZI }; 97place in DATA_region { last block HEAP }; 98place in CSTACK_region { block CSTACK }; 99 100 101 102