added prescaler for 16 bit pwm in LPC1347 target

Fork of mbed-dev by mbed official

Committer:
mbed_official
Date:
Tue May 03 00:15:16 2016 +0100
Revision:
121:7f86b4238bec
Synchronized with git revision 9cef243de23875778f461bbe9a8c1bc47e65212b

Full URL: https://github.com/mbedmicro/mbed/commit/9cef243de23875778f461bbe9a8c1bc47e65212b/

Switch to KSDK 2.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 121:7f86b4238bec 1 /*
mbed_official 121:7f86b4238bec 2 ** ###################################################################
mbed_official 121:7f86b4238bec 3 ** Processors: MKL27Z64VDA4
mbed_official 121:7f86b4238bec 4 ** MKL27Z64VFM4
mbed_official 121:7f86b4238bec 5 ** MKL27Z64VFT4
mbed_official 121:7f86b4238bec 6 ** MKL27Z64VLH4
mbed_official 121:7f86b4238bec 7 ** MKL27Z64VMP4
mbed_official 121:7f86b4238bec 8 **
mbed_official 121:7f86b4238bec 9 ** Compiler: GNU C Compiler
mbed_official 121:7f86b4238bec 10 ** Reference manual: KL27P64M48SF2RM, Rev. 1, Sep 2014
mbed_official 121:7f86b4238bec 11 ** Version: rev. 1.4, 2014-09-22
mbed_official 121:7f86b4238bec 12 ** Build: b151217
mbed_official 121:7f86b4238bec 13 **
mbed_official 121:7f86b4238bec 14 ** Abstract:
mbed_official 121:7f86b4238bec 15 ** Linker file for the GNU C Compiler
mbed_official 121:7f86b4238bec 16 **
mbed_official 121:7f86b4238bec 17 ** Copyright (c) 2015 Freescale Semiconductor, Inc.
mbed_official 121:7f86b4238bec 18 ** All rights reserved.
mbed_official 121:7f86b4238bec 19 **
mbed_official 121:7f86b4238bec 20 ** Redistribution and use in source and binary forms, with or without modification,
mbed_official 121:7f86b4238bec 21 ** are permitted provided that the following conditions are met:
mbed_official 121:7f86b4238bec 22 **
mbed_official 121:7f86b4238bec 23 ** o Redistributions of source code must retain the above copyright notice, this list
mbed_official 121:7f86b4238bec 24 ** of conditions and the following disclaimer.
mbed_official 121:7f86b4238bec 25 **
mbed_official 121:7f86b4238bec 26 ** o Redistributions in binary form must reproduce the above copyright notice, this
mbed_official 121:7f86b4238bec 27 ** list of conditions and the following disclaimer in the documentation and/or
mbed_official 121:7f86b4238bec 28 ** other materials provided with the distribution.
mbed_official 121:7f86b4238bec 29 **
mbed_official 121:7f86b4238bec 30 ** o Neither the name of Freescale Semiconductor, Inc. nor the names of its
mbed_official 121:7f86b4238bec 31 ** contributors may be used to endorse or promote products derived from this
mbed_official 121:7f86b4238bec 32 ** software without specific prior written permission.
mbed_official 121:7f86b4238bec 33 **
mbed_official 121:7f86b4238bec 34 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
mbed_official 121:7f86b4238bec 35 ** ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
mbed_official 121:7f86b4238bec 36 ** WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 121:7f86b4238bec 37 ** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
mbed_official 121:7f86b4238bec 38 ** ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
mbed_official 121:7f86b4238bec 39 ** (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
mbed_official 121:7f86b4238bec 40 ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
mbed_official 121:7f86b4238bec 41 ** ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
mbed_official 121:7f86b4238bec 42 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
mbed_official 121:7f86b4238bec 43 ** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 121:7f86b4238bec 44 **
mbed_official 121:7f86b4238bec 45 ** http: www.freescale.com
mbed_official 121:7f86b4238bec 46 ** mail: support@freescale.com
mbed_official 121:7f86b4238bec 47 **
mbed_official 121:7f86b4238bec 48 ** ###################################################################
mbed_official 121:7f86b4238bec 49 */
mbed_official 121:7f86b4238bec 50
mbed_official 121:7f86b4238bec 51 /* Entry Point */
mbed_official 121:7f86b4238bec 52 ENTRY(Reset_Handler)
mbed_official 121:7f86b4238bec 53
mbed_official 121:7f86b4238bec 54 __ram_vector_table__ = 1;
mbed_official 121:7f86b4238bec 55
mbed_official 121:7f86b4238bec 56 /* Heap 1/4 of ram and stack 1/8 */
mbed_official 121:7f86b4238bec 57 __stack_size__ = 0x800;
mbed_official 121:7f86b4238bec 58 __heap_size__ = 0x1000;
mbed_official 121:7f86b4238bec 59
mbed_official 121:7f86b4238bec 60 HEAP_SIZE = DEFINED(__heap_size__) ? __heap_size__ : 0x0400;
mbed_official 121:7f86b4238bec 61 STACK_SIZE = DEFINED(__stack_size__) ? __stack_size__ : 0x0400;
mbed_official 121:7f86b4238bec 62 M_VECTOR_RAM_SIZE = DEFINED(__ram_vector_table__) ? 0x0200 : 0x0;
mbed_official 121:7f86b4238bec 63
mbed_official 121:7f86b4238bec 64 /* Specify the memory areas */
mbed_official 121:7f86b4238bec 65 MEMORY
mbed_official 121:7f86b4238bec 66 {
mbed_official 121:7f86b4238bec 67 m_interrupts (RX) : ORIGIN = 0x00000000, LENGTH = 0x00000200
mbed_official 121:7f86b4238bec 68 m_flash_config (RX) : ORIGIN = 0x00000400, LENGTH = 0x00000010
mbed_official 121:7f86b4238bec 69 m_text (RX) : ORIGIN = 0x00000410, LENGTH = 0x0000FBF0
mbed_official 121:7f86b4238bec 70 m_data (RW) : ORIGIN = 0x1FFFF000, LENGTH = 0x00004000
mbed_official 121:7f86b4238bec 71 }
mbed_official 121:7f86b4238bec 72
mbed_official 121:7f86b4238bec 73 /* Define output sections */
mbed_official 121:7f86b4238bec 74 SECTIONS
mbed_official 121:7f86b4238bec 75 {
mbed_official 121:7f86b4238bec 76 /* The startup code goes first into internal flash */
mbed_official 121:7f86b4238bec 77 .interrupts :
mbed_official 121:7f86b4238bec 78 {
mbed_official 121:7f86b4238bec 79 __VECTOR_TABLE = .;
mbed_official 121:7f86b4238bec 80 . = ALIGN(4);
mbed_official 121:7f86b4238bec 81 KEEP(*(.isr_vector)) /* Startup code */
mbed_official 121:7f86b4238bec 82 . = ALIGN(4);
mbed_official 121:7f86b4238bec 83 } > m_interrupts
mbed_official 121:7f86b4238bec 84
mbed_official 121:7f86b4238bec 85 .flash_config :
mbed_official 121:7f86b4238bec 86 {
mbed_official 121:7f86b4238bec 87 . = ALIGN(4);
mbed_official 121:7f86b4238bec 88 KEEP(*(.FlashConfig)) /* Flash Configuration Field (FCF) */
mbed_official 121:7f86b4238bec 89 . = ALIGN(4);
mbed_official 121:7f86b4238bec 90 } > m_flash_config
mbed_official 121:7f86b4238bec 91
mbed_official 121:7f86b4238bec 92 /* The program code and other data goes into internal flash */
mbed_official 121:7f86b4238bec 93 .text :
mbed_official 121:7f86b4238bec 94 {
mbed_official 121:7f86b4238bec 95 . = ALIGN(4);
mbed_official 121:7f86b4238bec 96 *(.text) /* .text sections (code) */
mbed_official 121:7f86b4238bec 97 *(.text*) /* .text* sections (code) */
mbed_official 121:7f86b4238bec 98 *(.rodata) /* .rodata sections (constants, strings, etc.) */
mbed_official 121:7f86b4238bec 99 *(.rodata*) /* .rodata* sections (constants, strings, etc.) */
mbed_official 121:7f86b4238bec 100 *(.glue_7) /* glue arm to thumb code */
mbed_official 121:7f86b4238bec 101 *(.glue_7t) /* glue thumb to arm code */
mbed_official 121:7f86b4238bec 102 *(.eh_frame)
mbed_official 121:7f86b4238bec 103 KEEP (*(.init))
mbed_official 121:7f86b4238bec 104 KEEP (*(.fini))
mbed_official 121:7f86b4238bec 105 . = ALIGN(4);
mbed_official 121:7f86b4238bec 106 } > m_text
mbed_official 121:7f86b4238bec 107
mbed_official 121:7f86b4238bec 108 .ARM.extab :
mbed_official 121:7f86b4238bec 109 {
mbed_official 121:7f86b4238bec 110 *(.ARM.extab* .gnu.linkonce.armextab.*)
mbed_official 121:7f86b4238bec 111 } > m_text
mbed_official 121:7f86b4238bec 112
mbed_official 121:7f86b4238bec 113 .ARM :
mbed_official 121:7f86b4238bec 114 {
mbed_official 121:7f86b4238bec 115 __exidx_start = .;
mbed_official 121:7f86b4238bec 116 *(.ARM.exidx*)
mbed_official 121:7f86b4238bec 117 __exidx_end = .;
mbed_official 121:7f86b4238bec 118 } > m_text
mbed_official 121:7f86b4238bec 119
mbed_official 121:7f86b4238bec 120 .ctors :
mbed_official 121:7f86b4238bec 121 {
mbed_official 121:7f86b4238bec 122 __CTOR_LIST__ = .;
mbed_official 121:7f86b4238bec 123 /* gcc uses crtbegin.o to find the start of
mbed_official 121:7f86b4238bec 124 the constructors, so we make sure it is
mbed_official 121:7f86b4238bec 125 first. Because this is a wildcard, it
mbed_official 121:7f86b4238bec 126 doesn't matter if the user does not
mbed_official 121:7f86b4238bec 127 actually link against crtbegin.o; the
mbed_official 121:7f86b4238bec 128 linker won't look for a file to match a
mbed_official 121:7f86b4238bec 129 wildcard. The wildcard also means that it
mbed_official 121:7f86b4238bec 130 doesn't matter which directory crtbegin.o
mbed_official 121:7f86b4238bec 131 is in. */
mbed_official 121:7f86b4238bec 132 KEEP (*crtbegin.o(.ctors))
mbed_official 121:7f86b4238bec 133 KEEP (*crtbegin?.o(.ctors))
mbed_official 121:7f86b4238bec 134 /* We don't want to include the .ctor section from
mbed_official 121:7f86b4238bec 135 from the crtend.o file until after the sorted ctors.
mbed_official 121:7f86b4238bec 136 The .ctor section from the crtend file contains the
mbed_official 121:7f86b4238bec 137 end of ctors marker and it must be last */
mbed_official 121:7f86b4238bec 138 KEEP (*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors))
mbed_official 121:7f86b4238bec 139 KEEP (*(SORT(.ctors.*)))
mbed_official 121:7f86b4238bec 140 KEEP (*(.ctors))
mbed_official 121:7f86b4238bec 141 __CTOR_END__ = .;
mbed_official 121:7f86b4238bec 142 } > m_text
mbed_official 121:7f86b4238bec 143
mbed_official 121:7f86b4238bec 144 .dtors :
mbed_official 121:7f86b4238bec 145 {
mbed_official 121:7f86b4238bec 146 __DTOR_LIST__ = .;
mbed_official 121:7f86b4238bec 147 KEEP (*crtbegin.o(.dtors))
mbed_official 121:7f86b4238bec 148 KEEP (*crtbegin?.o(.dtors))
mbed_official 121:7f86b4238bec 149 KEEP (*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors))
mbed_official 121:7f86b4238bec 150 KEEP (*(SORT(.dtors.*)))
mbed_official 121:7f86b4238bec 151 KEEP (*(.dtors))
mbed_official 121:7f86b4238bec 152 __DTOR_END__ = .;
mbed_official 121:7f86b4238bec 153 } > m_text
mbed_official 121:7f86b4238bec 154
mbed_official 121:7f86b4238bec 155 .preinit_array :
mbed_official 121:7f86b4238bec 156 {
mbed_official 121:7f86b4238bec 157 PROVIDE_HIDDEN (__preinit_array_start = .);
mbed_official 121:7f86b4238bec 158 KEEP (*(.preinit_array*))
mbed_official 121:7f86b4238bec 159 PROVIDE_HIDDEN (__preinit_array_end = .);
mbed_official 121:7f86b4238bec 160 } > m_text
mbed_official 121:7f86b4238bec 161
mbed_official 121:7f86b4238bec 162 .init_array :
mbed_official 121:7f86b4238bec 163 {
mbed_official 121:7f86b4238bec 164 PROVIDE_HIDDEN (__init_array_start = .);
mbed_official 121:7f86b4238bec 165 KEEP (*(SORT(.init_array.*)))
mbed_official 121:7f86b4238bec 166 KEEP (*(.init_array*))
mbed_official 121:7f86b4238bec 167 PROVIDE_HIDDEN (__init_array_end = .);
mbed_official 121:7f86b4238bec 168 } > m_text
mbed_official 121:7f86b4238bec 169
mbed_official 121:7f86b4238bec 170 .fini_array :
mbed_official 121:7f86b4238bec 171 {
mbed_official 121:7f86b4238bec 172 PROVIDE_HIDDEN (__fini_array_start = .);
mbed_official 121:7f86b4238bec 173 KEEP (*(SORT(.fini_array.*)))
mbed_official 121:7f86b4238bec 174 KEEP (*(.fini_array*))
mbed_official 121:7f86b4238bec 175 PROVIDE_HIDDEN (__fini_array_end = .);
mbed_official 121:7f86b4238bec 176 } > m_text
mbed_official 121:7f86b4238bec 177
mbed_official 121:7f86b4238bec 178 __etext = .; /* define a global symbol at end of code */
mbed_official 121:7f86b4238bec 179 __DATA_ROM = .; /* Symbol is used by startup for data initialization */
mbed_official 121:7f86b4238bec 180
mbed_official 121:7f86b4238bec 181 /* reserve MTB memory at the beginning of m_data */
mbed_official 121:7f86b4238bec 182 .mtb : /* MTB buffer address as defined by the hardware */
mbed_official 121:7f86b4238bec 183 {
mbed_official 121:7f86b4238bec 184 . = ALIGN(8);
mbed_official 121:7f86b4238bec 185 _mtb_start = .;
mbed_official 121:7f86b4238bec 186 KEEP(*(.mtb_buf)) /* need to KEEP Micro Trace Buffer as not referenced by application */
mbed_official 121:7f86b4238bec 187 . = ALIGN(8);
mbed_official 121:7f86b4238bec 188 _mtb_end = .;
mbed_official 121:7f86b4238bec 189 } > m_data
mbed_official 121:7f86b4238bec 190
mbed_official 121:7f86b4238bec 191 .interrupts_ram :
mbed_official 121:7f86b4238bec 192 {
mbed_official 121:7f86b4238bec 193 . = ALIGN(4);
mbed_official 121:7f86b4238bec 194 __VECTOR_RAM__ = .;
mbed_official 121:7f86b4238bec 195 __interrupts_ram_start__ = .; /* Create a global symbol at data start */
mbed_official 121:7f86b4238bec 196 *(.m_interrupts_ram) /* This is a user defined section */
mbed_official 121:7f86b4238bec 197 . += M_VECTOR_RAM_SIZE;
mbed_official 121:7f86b4238bec 198 . = ALIGN(4);
mbed_official 121:7f86b4238bec 199 __interrupts_ram_end__ = .; /* Define a global symbol at data end */
mbed_official 121:7f86b4238bec 200 } > m_data
mbed_official 121:7f86b4238bec 201
mbed_official 121:7f86b4238bec 202 __VECTOR_RAM = DEFINED(__ram_vector_table__) ? __VECTOR_RAM__ : ORIGIN(m_interrupts);
mbed_official 121:7f86b4238bec 203 __RAM_VECTOR_TABLE_SIZE_BYTES = DEFINED(__ram_vector_table__) ? (__interrupts_ram_end__ - __interrupts_ram_start__) : 0x0;
mbed_official 121:7f86b4238bec 204
mbed_official 121:7f86b4238bec 205 .data : AT(__DATA_ROM)
mbed_official 121:7f86b4238bec 206 {
mbed_official 121:7f86b4238bec 207 . = ALIGN(4);
mbed_official 121:7f86b4238bec 208 __DATA_RAM = .;
mbed_official 121:7f86b4238bec 209 __data_start__ = .; /* create a global symbol at data start */
mbed_official 121:7f86b4238bec 210 *(.data) /* .data sections */
mbed_official 121:7f86b4238bec 211 *(.data*) /* .data* sections */
mbed_official 121:7f86b4238bec 212 KEEP(*(.jcr*))
mbed_official 121:7f86b4238bec 213 . = ALIGN(4);
mbed_official 121:7f86b4238bec 214 __data_end__ = .; /* define a global symbol at data end */
mbed_official 121:7f86b4238bec 215 } > m_data
mbed_official 121:7f86b4238bec 216
mbed_official 121:7f86b4238bec 217 __DATA_END = __DATA_ROM + (__data_end__ - __data_start__);
mbed_official 121:7f86b4238bec 218 text_end = ORIGIN(m_text) + LENGTH(m_text);
mbed_official 121:7f86b4238bec 219 ASSERT(__DATA_END <= text_end, "region m_text overflowed with text and data")
mbed_official 121:7f86b4238bec 220
mbed_official 121:7f86b4238bec 221 USB_RAM_GAP = DEFINED(__usb_ram_size__) ? __usb_ram_size__ : 0x800;
mbed_official 121:7f86b4238bec 222 /* Uninitialized data section */
mbed_official 121:7f86b4238bec 223 .bss :
mbed_official 121:7f86b4238bec 224 {
mbed_official 121:7f86b4238bec 225 /* This is used by the startup in order to initialize the .bss section */
mbed_official 121:7f86b4238bec 226 . = ALIGN(4);
mbed_official 121:7f86b4238bec 227 __START_BSS = .;
mbed_official 121:7f86b4238bec 228 __bss_start__ = .;
mbed_official 121:7f86b4238bec 229 *(.bss)
mbed_official 121:7f86b4238bec 230 *(.bss*)
mbed_official 121:7f86b4238bec 231 . = ALIGN(512);
mbed_official 121:7f86b4238bec 232 USB_RAM_START = .;
mbed_official 121:7f86b4238bec 233 . += USB_RAM_GAP;
mbed_official 121:7f86b4238bec 234 *(COMMON)
mbed_official 121:7f86b4238bec 235 . = ALIGN(4);
mbed_official 121:7f86b4238bec 236 __bss_end__ = .;
mbed_official 121:7f86b4238bec 237 __END_BSS = .;
mbed_official 121:7f86b4238bec 238 } > m_data
mbed_official 121:7f86b4238bec 239
mbed_official 121:7f86b4238bec 240 .heap :
mbed_official 121:7f86b4238bec 241 {
mbed_official 121:7f86b4238bec 242 . = ALIGN(8);
mbed_official 121:7f86b4238bec 243 __end__ = .;
mbed_official 121:7f86b4238bec 244 PROVIDE(end = .);
mbed_official 121:7f86b4238bec 245 __HeapBase = .;
mbed_official 121:7f86b4238bec 246 . += HEAP_SIZE;
mbed_official 121:7f86b4238bec 247 __HeapLimit = .;
mbed_official 121:7f86b4238bec 248 __heap_limit = .; /* Add for _sbrk */
mbed_official 121:7f86b4238bec 249 } > m_data
mbed_official 121:7f86b4238bec 250
mbed_official 121:7f86b4238bec 251 .stack :
mbed_official 121:7f86b4238bec 252 {
mbed_official 121:7f86b4238bec 253 . = ALIGN(8);
mbed_official 121:7f86b4238bec 254 . += STACK_SIZE;
mbed_official 121:7f86b4238bec 255 } > m_data
mbed_official 121:7f86b4238bec 256
mbed_official 121:7f86b4238bec 257 m_usb_bdt USB_RAM_START (NOLOAD) :
mbed_official 121:7f86b4238bec 258 {
mbed_official 121:7f86b4238bec 259 *(m_usb_bdt)
mbed_official 121:7f86b4238bec 260 USB_RAM_BDT_END = .;
mbed_official 121:7f86b4238bec 261 }
mbed_official 121:7f86b4238bec 262
mbed_official 121:7f86b4238bec 263 m_usb_global USB_RAM_BDT_END (NOLOAD) :
mbed_official 121:7f86b4238bec 264 {
mbed_official 121:7f86b4238bec 265 *(m_usb_global)
mbed_official 121:7f86b4238bec 266 }
mbed_official 121:7f86b4238bec 267
mbed_official 121:7f86b4238bec 268 /* Initializes stack on the end of block */
mbed_official 121:7f86b4238bec 269 __StackTop = ORIGIN(m_data) + LENGTH(m_data);
mbed_official 121:7f86b4238bec 270 __StackLimit = __StackTop - STACK_SIZE;
mbed_official 121:7f86b4238bec 271 PROVIDE(__stack = __StackTop);
mbed_official 121:7f86b4238bec 272
mbed_official 121:7f86b4238bec 273 .ARM.attributes 0 : { *(.ARM.attributes) }
mbed_official 121:7f86b4238bec 274
mbed_official 121:7f86b4238bec 275 ASSERT(__StackLimit >= __HeapLimit, "region m_data overflowed with stack and heap")
mbed_official 121:7f86b4238bec 276 }
mbed_official 121:7f86b4238bec 277