added prescaler for 16 bit pwm in LPC1347 target

Fork of mbed-dev by mbed official

Committer:
JojoS
Date:
Sat Sep 10 15:32:04 2016 +0000
Revision:
147:ba84b7dc41a7
Parent:
121:7f86b4238bec
added prescaler for 16 bit timers (solution as in LPC11xx), default prescaler 31 for max 28 ms period time

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: MK22FN512CAP12
mbed_official 121:7f86b4238bec 4 ** MK22FN512VDC12
mbed_official 121:7f86b4238bec 5 ** MK22FN512VLH12
mbed_official 121:7f86b4238bec 6 ** MK22FN512VLL12
mbed_official 121:7f86b4238bec 7 ** MK22FN512VMP12
mbed_official 121:7f86b4238bec 8 **
mbed_official 121:7f86b4238bec 9 ** Compiler: GNU C Compiler
mbed_official 121:7f86b4238bec 10 ** Reference manual: K22P121M120SF7RM, Rev. 1, March 24, 2014
mbed_official 121:7f86b4238bec 11 ** Version: rev. 2.8, 2015-02-19
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__ = 0x4000;
mbed_official 121:7f86b4238bec 58 __heap_size__ = 0x8000;
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__) ? 0x0400 : 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 = 0x00000400
mbed_official 121:7f86b4238bec 68 m_flash_config (RX) : ORIGIN = 0x00000400, LENGTH = 0x00000010
mbed_official 121:7f86b4238bec 69 m_text (RX) : ORIGIN = 0x00000410, LENGTH = 0x0007FBF0
mbed_official 121:7f86b4238bec 70 m_data (RW) : ORIGIN = 0x1FFF0000, LENGTH = 0x00010000
mbed_official 121:7f86b4238bec 71 m_data_2 (RW) : ORIGIN = 0x20000000, LENGTH = 0x00010000
mbed_official 121:7f86b4238bec 72 }
mbed_official 121:7f86b4238bec 73
mbed_official 121:7f86b4238bec 74 /* Define output sections */
mbed_official 121:7f86b4238bec 75 SECTIONS
mbed_official 121:7f86b4238bec 76 {
mbed_official 121:7f86b4238bec 77 /* The startup code goes first into internal flash */
mbed_official 121:7f86b4238bec 78 .interrupts :
mbed_official 121:7f86b4238bec 79 {
mbed_official 121:7f86b4238bec 80 __VECTOR_TABLE = .;
mbed_official 121:7f86b4238bec 81 . = ALIGN(4);
mbed_official 121:7f86b4238bec 82 KEEP(*(.isr_vector)) /* Startup code */
mbed_official 121:7f86b4238bec 83 . = ALIGN(4);
mbed_official 121:7f86b4238bec 84 } > m_interrupts
mbed_official 121:7f86b4238bec 85
mbed_official 121:7f86b4238bec 86 .flash_config :
mbed_official 121:7f86b4238bec 87 {
mbed_official 121:7f86b4238bec 88 . = ALIGN(4);
mbed_official 121:7f86b4238bec 89 KEEP(*(.FlashConfig)) /* Flash Configuration Field (FCF) */
mbed_official 121:7f86b4238bec 90 . = ALIGN(4);
mbed_official 121:7f86b4238bec 91 } > m_flash_config
mbed_official 121:7f86b4238bec 92
mbed_official 121:7f86b4238bec 93 /* The program code and other data goes into internal flash */
mbed_official 121:7f86b4238bec 94 .text :
mbed_official 121:7f86b4238bec 95 {
mbed_official 121:7f86b4238bec 96 . = ALIGN(4);
mbed_official 121:7f86b4238bec 97 *(.text) /* .text sections (code) */
mbed_official 121:7f86b4238bec 98 *(.text*) /* .text* sections (code) */
mbed_official 121:7f86b4238bec 99 *(.rodata) /* .rodata sections (constants, strings, etc.) */
mbed_official 121:7f86b4238bec 100 *(.rodata*) /* .rodata* sections (constants, strings, etc.) */
mbed_official 121:7f86b4238bec 101 *(.glue_7) /* glue arm to thumb code */
mbed_official 121:7f86b4238bec 102 *(.glue_7t) /* glue thumb to arm code */
mbed_official 121:7f86b4238bec 103 *(.eh_frame)
mbed_official 121:7f86b4238bec 104 KEEP (*(.init))
mbed_official 121:7f86b4238bec 105 KEEP (*(.fini))
mbed_official 121:7f86b4238bec 106 . = ALIGN(4);
mbed_official 121:7f86b4238bec 107 } > m_text
mbed_official 121:7f86b4238bec 108
mbed_official 121:7f86b4238bec 109 .ARM.extab :
mbed_official 121:7f86b4238bec 110 {
mbed_official 121:7f86b4238bec 111 *(.ARM.extab* .gnu.linkonce.armextab.*)
mbed_official 121:7f86b4238bec 112 } > m_text
mbed_official 121:7f86b4238bec 113
mbed_official 121:7f86b4238bec 114 .ARM :
mbed_official 121:7f86b4238bec 115 {
mbed_official 121:7f86b4238bec 116 __exidx_start = .;
mbed_official 121:7f86b4238bec 117 *(.ARM.exidx*)
mbed_official 121:7f86b4238bec 118 __exidx_end = .;
mbed_official 121:7f86b4238bec 119 } > m_text
mbed_official 121:7f86b4238bec 120
mbed_official 121:7f86b4238bec 121 .ctors :
mbed_official 121:7f86b4238bec 122 {
mbed_official 121:7f86b4238bec 123 __CTOR_LIST__ = .;
mbed_official 121:7f86b4238bec 124 /* gcc uses crtbegin.o to find the start of
mbed_official 121:7f86b4238bec 125 the constructors, so we make sure it is
mbed_official 121:7f86b4238bec 126 first. Because this is a wildcard, it
mbed_official 121:7f86b4238bec 127 doesn't matter if the user does not
mbed_official 121:7f86b4238bec 128 actually link against crtbegin.o; the
mbed_official 121:7f86b4238bec 129 linker won't look for a file to match a
mbed_official 121:7f86b4238bec 130 wildcard. The wildcard also means that it
mbed_official 121:7f86b4238bec 131 doesn't matter which directory crtbegin.o
mbed_official 121:7f86b4238bec 132 is in. */
mbed_official 121:7f86b4238bec 133 KEEP (*crtbegin.o(.ctors))
mbed_official 121:7f86b4238bec 134 KEEP (*crtbegin?.o(.ctors))
mbed_official 121:7f86b4238bec 135 /* We don't want to include the .ctor section from
mbed_official 121:7f86b4238bec 136 from the crtend.o file until after the sorted ctors.
mbed_official 121:7f86b4238bec 137 The .ctor section from the crtend file contains the
mbed_official 121:7f86b4238bec 138 end of ctors marker and it must be last */
mbed_official 121:7f86b4238bec 139 KEEP (*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors))
mbed_official 121:7f86b4238bec 140 KEEP (*(SORT(.ctors.*)))
mbed_official 121:7f86b4238bec 141 KEEP (*(.ctors))
mbed_official 121:7f86b4238bec 142 __CTOR_END__ = .;
mbed_official 121:7f86b4238bec 143 } > m_text
mbed_official 121:7f86b4238bec 144
mbed_official 121:7f86b4238bec 145 .dtors :
mbed_official 121:7f86b4238bec 146 {
mbed_official 121:7f86b4238bec 147 __DTOR_LIST__ = .;
mbed_official 121:7f86b4238bec 148 KEEP (*crtbegin.o(.dtors))
mbed_official 121:7f86b4238bec 149 KEEP (*crtbegin?.o(.dtors))
mbed_official 121:7f86b4238bec 150 KEEP (*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors))
mbed_official 121:7f86b4238bec 151 KEEP (*(SORT(.dtors.*)))
mbed_official 121:7f86b4238bec 152 KEEP (*(.dtors))
mbed_official 121:7f86b4238bec 153 __DTOR_END__ = .;
mbed_official 121:7f86b4238bec 154 } > m_text
mbed_official 121:7f86b4238bec 155
mbed_official 121:7f86b4238bec 156 .preinit_array :
mbed_official 121:7f86b4238bec 157 {
mbed_official 121:7f86b4238bec 158 PROVIDE_HIDDEN (__preinit_array_start = .);
mbed_official 121:7f86b4238bec 159 KEEP (*(.preinit_array*))
mbed_official 121:7f86b4238bec 160 PROVIDE_HIDDEN (__preinit_array_end = .);
mbed_official 121:7f86b4238bec 161 } > m_text
mbed_official 121:7f86b4238bec 162
mbed_official 121:7f86b4238bec 163 .init_array :
mbed_official 121:7f86b4238bec 164 {
mbed_official 121:7f86b4238bec 165 PROVIDE_HIDDEN (__init_array_start = .);
mbed_official 121:7f86b4238bec 166 KEEP (*(SORT(.init_array.*)))
mbed_official 121:7f86b4238bec 167 KEEP (*(.init_array*))
mbed_official 121:7f86b4238bec 168 PROVIDE_HIDDEN (__init_array_end = .);
mbed_official 121:7f86b4238bec 169 } > m_text
mbed_official 121:7f86b4238bec 170
mbed_official 121:7f86b4238bec 171 .fini_array :
mbed_official 121:7f86b4238bec 172 {
mbed_official 121:7f86b4238bec 173 PROVIDE_HIDDEN (__fini_array_start = .);
mbed_official 121:7f86b4238bec 174 KEEP (*(SORT(.fini_array.*)))
mbed_official 121:7f86b4238bec 175 KEEP (*(.fini_array*))
mbed_official 121:7f86b4238bec 176 PROVIDE_HIDDEN (__fini_array_end = .);
mbed_official 121:7f86b4238bec 177 } > m_text
mbed_official 121:7f86b4238bec 178
mbed_official 121:7f86b4238bec 179 __etext = .; /* define a global symbol at end of code */
mbed_official 121:7f86b4238bec 180 __DATA_ROM = .; /* Symbol is used by startup for data initialization */
mbed_official 121:7f86b4238bec 181
mbed_official 121:7f86b4238bec 182 .interrupts_ram :
mbed_official 121:7f86b4238bec 183 {
mbed_official 121:7f86b4238bec 184 . = ALIGN(4);
mbed_official 121:7f86b4238bec 185 __VECTOR_RAM__ = .;
mbed_official 121:7f86b4238bec 186 __interrupts_ram_start__ = .; /* Create a global symbol at data start */
mbed_official 121:7f86b4238bec 187 *(.m_interrupts_ram) /* This is a user defined section */
mbed_official 121:7f86b4238bec 188 . += M_VECTOR_RAM_SIZE;
mbed_official 121:7f86b4238bec 189 . = ALIGN(4);
mbed_official 121:7f86b4238bec 190 __interrupts_ram_end__ = .; /* Define a global symbol at data end */
mbed_official 121:7f86b4238bec 191 } > m_data
mbed_official 121:7f86b4238bec 192
mbed_official 121:7f86b4238bec 193 __VECTOR_RAM = DEFINED(__ram_vector_table__) ? __VECTOR_RAM__ : ORIGIN(m_interrupts);
mbed_official 121:7f86b4238bec 194 __RAM_VECTOR_TABLE_SIZE_BYTES = DEFINED(__ram_vector_table__) ? (__interrupts_ram_end__ - __interrupts_ram_start__) : 0x0;
mbed_official 121:7f86b4238bec 195
mbed_official 121:7f86b4238bec 196 .data : AT(__DATA_ROM)
mbed_official 121:7f86b4238bec 197 {
mbed_official 121:7f86b4238bec 198 . = ALIGN(4);
mbed_official 121:7f86b4238bec 199 __DATA_RAM = .;
mbed_official 121:7f86b4238bec 200 __data_start__ = .; /* create a global symbol at data start */
mbed_official 121:7f86b4238bec 201 *(.data) /* .data sections */
mbed_official 121:7f86b4238bec 202 *(.data*) /* .data* sections */
mbed_official 121:7f86b4238bec 203 KEEP(*(.jcr*))
mbed_official 121:7f86b4238bec 204 . = ALIGN(4);
mbed_official 121:7f86b4238bec 205 __data_end__ = .; /* define a global symbol at data end */
mbed_official 121:7f86b4238bec 206 } > m_data
mbed_official 121:7f86b4238bec 207
mbed_official 121:7f86b4238bec 208 __DATA_END = __DATA_ROM + (__data_end__ - __data_start__);
mbed_official 121:7f86b4238bec 209 text_end = ORIGIN(m_text) + LENGTH(m_text);
mbed_official 121:7f86b4238bec 210 ASSERT(__DATA_END <= text_end, "region m_text overflowed with text and data")
mbed_official 121:7f86b4238bec 211
mbed_official 121:7f86b4238bec 212 USB_RAM_GAP = DEFINED(__usb_ram_size__) ? __usb_ram_size__ : 0x800;
mbed_official 121:7f86b4238bec 213 /* Uninitialized data section */
mbed_official 121:7f86b4238bec 214 .bss :
mbed_official 121:7f86b4238bec 215 {
mbed_official 121:7f86b4238bec 216 /* This is used by the startup in order to initialize the .bss section */
mbed_official 121:7f86b4238bec 217 . = ALIGN(4);
mbed_official 121:7f86b4238bec 218 __START_BSS = .;
mbed_official 121:7f86b4238bec 219 __bss_start__ = .;
mbed_official 121:7f86b4238bec 220 *(.bss)
mbed_official 121:7f86b4238bec 221 *(.bss*)
mbed_official 121:7f86b4238bec 222 . = ALIGN(512);
mbed_official 121:7f86b4238bec 223 USB_RAM_START = .;
mbed_official 121:7f86b4238bec 224 . += USB_RAM_GAP;
mbed_official 121:7f86b4238bec 225 *(COMMON)
mbed_official 121:7f86b4238bec 226 . = ALIGN(4);
mbed_official 121:7f86b4238bec 227 __bss_end__ = .;
mbed_official 121:7f86b4238bec 228 __END_BSS = .;
mbed_official 121:7f86b4238bec 229 } > m_data
mbed_official 121:7f86b4238bec 230
mbed_official 121:7f86b4238bec 231 .heap :
mbed_official 121:7f86b4238bec 232 {
mbed_official 121:7f86b4238bec 233 . = ALIGN(8);
mbed_official 121:7f86b4238bec 234 __end__ = .;
mbed_official 121:7f86b4238bec 235 PROVIDE(end = .);
mbed_official 121:7f86b4238bec 236 __HeapBase = .;
mbed_official 121:7f86b4238bec 237 . += HEAP_SIZE;
mbed_official 121:7f86b4238bec 238 __HeapLimit = .;
mbed_official 121:7f86b4238bec 239 __heap_limit = .; /* Add for _sbrk */
mbed_official 121:7f86b4238bec 240 } > m_data_2
mbed_official 121:7f86b4238bec 241
mbed_official 121:7f86b4238bec 242 .stack :
mbed_official 121:7f86b4238bec 243 {
mbed_official 121:7f86b4238bec 244 . = ALIGN(8);
mbed_official 121:7f86b4238bec 245 . += STACK_SIZE;
mbed_official 121:7f86b4238bec 246 } > m_data_2
mbed_official 121:7f86b4238bec 247
mbed_official 121:7f86b4238bec 248 m_usb_bdt USB_RAM_START (NOLOAD) :
mbed_official 121:7f86b4238bec 249 {
mbed_official 121:7f86b4238bec 250 *(m_usb_bdt)
mbed_official 121:7f86b4238bec 251 USB_RAM_BDT_END = .;
mbed_official 121:7f86b4238bec 252 }
mbed_official 121:7f86b4238bec 253
mbed_official 121:7f86b4238bec 254 m_usb_global USB_RAM_BDT_END (NOLOAD) :
mbed_official 121:7f86b4238bec 255 {
mbed_official 121:7f86b4238bec 256 *(m_usb_global)
mbed_official 121:7f86b4238bec 257 }
mbed_official 121:7f86b4238bec 258
mbed_official 121:7f86b4238bec 259 /* Initializes stack on the end of block */
mbed_official 121:7f86b4238bec 260 __StackTop = ORIGIN(m_data_2) + LENGTH(m_data_2);
mbed_official 121:7f86b4238bec 261 __StackLimit = __StackTop - STACK_SIZE;
mbed_official 121:7f86b4238bec 262 PROVIDE(__stack = __StackTop);
mbed_official 121:7f86b4238bec 263
mbed_official 121:7f86b4238bec 264 .ARM.attributes 0 : { *(.ARM.attributes) }
mbed_official 121:7f86b4238bec 265
mbed_official 121:7f86b4238bec 266 ASSERT(__StackLimit >= __HeapLimit, "region m_data_2 overflowed with stack and heap")
mbed_official 121:7f86b4238bec 267 }
mbed_official 121:7f86b4238bec 268