Skip to content

Commit ecd051c

Browse files
committed
LPC43xx port from Micromint
1 parent b4bed9f commit ecd051c

38 files changed

+9352
-1
lines changed

libraries/mbed/targets/cmsis/NXP/TARGET_LPC43XX/LPC43xx.h

Lines changed: 1987 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
2+
LR_IROM1 0x14000000 0x00400000 { ; load region size_region
3+
ER_IROM1 0x14000000 0x00400000 { ; load address = execution address
4+
*.o (RESET, +First)
5+
*(InRoot$$Sections)
6+
.ANY (+RO)
7+
}
8+
; 8_byte_aligned(69 vect * 4 bytes) = 8_byte_aligned(0x0114) = 0x0118
9+
; 128KB - 0x0118 = 0x0001FEE8
10+
RW_IRAM1 0x10000118 0x1FEE8 {
11+
.ANY (+RW +ZI)
12+
}
13+
RW_IRAM2 0x10080000 0x12000 { ; RW data
14+
.ANY (IRAM2)
15+
}
16+
RW_IRAM3 0x20000000 0x8000 { ; RW data
17+
.ANY (AHBSRAM0)
18+
}
19+
RW_IRAM4 0x20008000 0x4000 { ; RW data
20+
.ANY (AHBSRAM1)
21+
}
22+
RW_IRAM5 0x2000C000 0x4000 { ; RW data
23+
.ANY (AHBSRAM2)
24+
}
25+
}
Lines changed: 291 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,291 @@
1+
;/***********************************************************************
2+
; * @brief: LPC18xx/43xx M3/M4 startup code
3+
; *
4+
; * @note
5+
; * Copyright(C) NXP Semiconductors, 2012
6+
; * All rights reserved.
7+
; *
8+
; * @par
9+
; * Software that is described herein is for illustrative purposes only
10+
; * which provides customers with programming information regarding the
11+
; * LPC products. This software is supplied "AS IS" without any warranties of
12+
; * any kind, and NXP Semiconductors and its licensor disclaim any and
13+
; * all warranties, express or implied, including all implied warranties of
14+
; * merchantability, fitness for a particular purpose and non-infringement of
15+
; * intellectual property rights. NXP Semiconductors assumes no responsibility
16+
; * or liability for the use of the software, conveys no license or rights under any
17+
; * patent, copyright, mask work right, or any other intellectual property rights in
18+
; * or to any products. NXP Semiconductors reserves the right to make changes
19+
; * in the software without notification. NXP Semiconductors also makes no
20+
; * representation or warranty that such application will be suitable for the
21+
; * specified use without further testing or modification.
22+
; *
23+
; * @par
24+
; * Permission to use, copy, modify, and distribute this software and its
25+
; * documentation is hereby granted, under NXP Semiconductors' and its
26+
; * licensor's relevant copyrights in the software, without fee, provided that it
27+
; * is used in conjunction with NXP Semiconductors microcontrollers. This
28+
; * copyright, permission, and disclaimer notice must appear in all copies of
29+
; * this code.
30+
; */
31+
32+
__initial_sp EQU 0x10020000 ; Top of first RAM segment for LPC43XX
33+
34+
PRESERVE8
35+
THUMB
36+
37+
; Vector Table Mapped to Address 0 at Reset
38+
39+
AREA RESET, DATA, READONLY
40+
EXPORT __Vectors
41+
42+
Sign_Value EQU 0x5A5A5A5A
43+
44+
__Vectors DCD __initial_sp ; 0 Top of Stack
45+
DCD Reset_Handler ; 1 Reset Handler
46+
DCD NMI_Handler ; 2 NMI Handler
47+
DCD HardFault_Handler ; 3 Hard Fault Handler
48+
DCD MemManage_Handler ; 4 MPU Fault Handler
49+
DCD BusFault_Handler ; 5 Bus Fault Handler
50+
DCD UsageFault_Handler ; 6 Usage Fault Handler
51+
DCD Sign_Value ; 7 Reserved
52+
DCD UnHandled_Vector ; 8 Reserved
53+
DCD UnHandled_Vector ; 9 Reserved
54+
DCD UnHandled_Vector ; 10 Reserved
55+
DCD SVC_Handler ; 11 SVCall Handler
56+
DCD DebugMon_Handler ; 12 Debug Monitor Handler
57+
DCD UnHandled_Vector ; 13 Reserved
58+
DCD PendSV_Handler ; 14 PendSV Handler
59+
DCD SysTick_Handler ; 15 SysTick Handler
60+
61+
; External Interrupts
62+
DCD DAC_IRQHandler ; 16 D/A Converter
63+
DCD MX_CORE_IRQHandler ; 17 M0/M4 IRQ handler (LPC43XX ONLY)
64+
DCD DMA_IRQHandler ; 18 General Purpose DMA
65+
DCD UnHandled_Vector ; 19 Reserved
66+
DCD FLASHEEPROM_IRQHandler ; 20 ORed flash bank A, flash bank B, EEPROM interrupts
67+
DCD ETH_IRQHandler ; 21 Ethernet
68+
DCD SDIO_IRQHandler ; 22 SD/MMC
69+
DCD LCD_IRQHandler ; 23 LCD
70+
DCD USB0_IRQHandler ; 24 USB0
71+
DCD USB1_IRQHandler ; 25 USB1
72+
DCD SCT_IRQHandler ; 26 State Configurable Timer
73+
DCD RIT_IRQHandler ; 27 Repetitive Interrupt Timer
74+
DCD TIMER0_IRQHandler ; 28 Timer0
75+
DCD TIMER1_IRQHandler ; 29 Timer1
76+
DCD TIMER2_IRQHandler ; 30 Timer2
77+
DCD TIMER3_IRQHandler ; 31 Timer3
78+
DCD MCPWM_IRQHandler ; 32 Motor Control PWM
79+
DCD ADC0_IRQHandler ; 33 A/D Converter 0
80+
DCD I2C0_IRQHandler ; 34 I2C0
81+
DCD I2C1_IRQHandler ; 35 I2C1
82+
DCD SPI_IRQHandler ; 36 SPI (LPC43XX ONLY)
83+
DCD ADC1_IRQHandler ; 37 A/D Converter 1
84+
DCD SSP0_IRQHandler ; 38 SSP0
85+
DCD SSP1_IRQHandler ; 39 SSP1
86+
DCD UART0_IRQHandler ; 40 UART0
87+
DCD UART1_IRQHandler ; 41 UART1
88+
DCD UART2_IRQHandler ; 42 UART2
89+
DCD UART3_IRQHandler ; 43 UART3
90+
DCD I2S0_IRQHandler ; 44 I2S0
91+
DCD I2S1_IRQHandler ; 45 I2S1
92+
DCD SPIFI_IRQHandler ; 46 SPI Flash Interface
93+
DCD SGPIO_IRQHandler ; 47 SGPIO (LPC43XX ONLY)
94+
DCD GPIO0_IRQHandler ; 48 GPIO0
95+
DCD GPIO1_IRQHandler ; 49 GPIO1
96+
DCD GPIO2_IRQHandler ; 50 GPIO2
97+
DCD GPIO3_IRQHandler ; 51 GPIO3
98+
DCD GPIO4_IRQHandler ; 52 GPIO4
99+
DCD GPIO5_IRQHandler ; 53 GPIO5
100+
DCD GPIO6_IRQHandler ; 54 GPIO6
101+
DCD GPIO7_IRQHandler ; 55 GPIO7
102+
DCD GINT0_IRQHandler ; 56 GINT0
103+
DCD GINT1_IRQHandler ; 57 GINT1
104+
DCD EVRT_IRQHandler ; 58 Event Router
105+
DCD CAN1_IRQHandler ; 59 C_CAN1
106+
DCD UnHandled_Vector ; 60 Reserved
107+
DCD VADC_IRQHandler ; 61 VADC
108+
DCD ATIMER_IRQHandler ; 62 ATIMER
109+
DCD RTC_IRQHandler ; 63 RTC
110+
DCD UnHandled_Vector ; 64 Reserved
111+
DCD WDT_IRQHandler ; 65 WDT
112+
DCD UnHandled_Vector ; 66 M0s
113+
DCD CAN0_IRQHandler ; 67 C_CAN0
114+
DCD QEI_IRQHandler ; 68 QEI
115+
116+
117+
; IF :LNOT::DEF:NO_CRP
118+
; AREA |.ARM.__at_0x02FC|, CODE, READONLY
119+
;CRP_Key DCD 0xFFFFFFFF
120+
; ENDIF
121+
122+
AREA |.text|, CODE, READONLY
123+
124+
; Reset Handler
125+
126+
Reset_Handler PROC
127+
EXPORT Reset_Handler [WEAK]
128+
IMPORT __main
129+
IMPORT SystemInit
130+
LDR R0, =SystemInit
131+
BLX R0
132+
LDR R0, =__main
133+
BX R0
134+
ENDP
135+
136+
; Dummy Exception Handlers (infinite loops which can be modified)
137+
138+
NMI_Handler PROC
139+
EXPORT NMI_Handler [WEAK]
140+
B .
141+
ENDP
142+
HardFault_Handler\
143+
PROC
144+
EXPORT HardFault_Handler [WEAK]
145+
B .
146+
ENDP
147+
MemManage_Handler\
148+
PROC
149+
EXPORT MemManage_Handler [WEAK]
150+
B .
151+
ENDP
152+
BusFault_Handler\
153+
PROC
154+
EXPORT BusFault_Handler [WEAK]
155+
B .
156+
ENDP
157+
UsageFault_Handler\
158+
PROC
159+
EXPORT UsageFault_Handler [WEAK]
160+
B .
161+
ENDP
162+
SVC_Handler PROC
163+
EXPORT SVC_Handler [WEAK]
164+
B .
165+
ENDP
166+
DebugMon_Handler\
167+
PROC
168+
EXPORT DebugMon_Handler [WEAK]
169+
B .
170+
ENDP
171+
PendSV_Handler PROC
172+
EXPORT PendSV_Handler [WEAK]
173+
B .
174+
ENDP
175+
SysTick_Handler PROC
176+
EXPORT SysTick_Handler [WEAK]
177+
B .
178+
ENDP
179+
UnHandled_Vector PROC
180+
EXPORT UnHandled_Vector [WEAK]
181+
B .
182+
ENDP
183+
184+
Default_Handler PROC
185+
186+
EXPORT DAC_IRQHandler [WEAK]
187+
EXPORT MX_CORE_IRQHandler [WEAK]
188+
EXPORT DMA_IRQHandler [WEAK]
189+
EXPORT FLASHEEPROM_IRQHandler [WEAK]
190+
EXPORT ETH_IRQHandler [WEAK]
191+
EXPORT SDIO_IRQHandler [WEAK]
192+
EXPORT LCD_IRQHandler [WEAK]
193+
EXPORT USB0_IRQHandler [WEAK]
194+
EXPORT USB1_IRQHandler [WEAK]
195+
EXPORT SCT_IRQHandler [WEAK]
196+
EXPORT RIT_IRQHandler [WEAK]
197+
EXPORT TIMER0_IRQHandler [WEAK]
198+
EXPORT TIMER1_IRQHandler [WEAK]
199+
EXPORT TIMER2_IRQHandler [WEAK]
200+
EXPORT TIMER3_IRQHandler [WEAK]
201+
EXPORT MCPWM_IRQHandler [WEAK]
202+
EXPORT ADC0_IRQHandler [WEAK]
203+
EXPORT I2C0_IRQHandler [WEAK]
204+
EXPORT I2C1_IRQHandler [WEAK]
205+
EXPORT SPI_IRQHandler [WEAK]
206+
EXPORT ADC1_IRQHandler [WEAK]
207+
EXPORT SSP0_IRQHandler [WEAK]
208+
EXPORT SSP1_IRQHandler [WEAK]
209+
EXPORT UART0_IRQHandler [WEAK]
210+
EXPORT UART1_IRQHandler [WEAK]
211+
EXPORT UART2_IRQHandler [WEAK]
212+
EXPORT UART3_IRQHandler [WEAK]
213+
EXPORT I2S0_IRQHandler [WEAK]
214+
EXPORT I2S1_IRQHandler [WEAK]
215+
EXPORT SPIFI_IRQHandler [WEAK]
216+
EXPORT SGPIO_IRQHandler [WEAK]
217+
EXPORT GPIO0_IRQHandler [WEAK]
218+
EXPORT GPIO1_IRQHandler [WEAK]
219+
EXPORT GPIO2_IRQHandler [WEAK]
220+
EXPORT GPIO3_IRQHandler [WEAK]
221+
EXPORT GPIO4_IRQHandler [WEAK]
222+
EXPORT GPIO5_IRQHandler [WEAK]
223+
EXPORT GPIO6_IRQHandler [WEAK]
224+
EXPORT GPIO7_IRQHandler [WEAK]
225+
EXPORT GINT0_IRQHandler [WEAK]
226+
EXPORT GINT1_IRQHandler [WEAK]
227+
EXPORT EVRT_IRQHandler [WEAK]
228+
EXPORT CAN1_IRQHandler [WEAK]
229+
EXPORT VADC_IRQHandler [WEAK]
230+
EXPORT ATIMER_IRQHandler [WEAK]
231+
EXPORT RTC_IRQHandler [WEAK]
232+
EXPORT WDT_IRQHandler [WEAK]
233+
EXPORT CAN0_IRQHandler [WEAK]
234+
EXPORT QEI_IRQHandler [WEAK]
235+
236+
DAC_IRQHandler
237+
MX_CORE_IRQHandler
238+
DMA_IRQHandler
239+
FLASHEEPROM_IRQHandler
240+
ETH_IRQHandler
241+
SDIO_IRQHandler
242+
LCD_IRQHandler
243+
USB0_IRQHandler
244+
USB1_IRQHandler
245+
SCT_IRQHandler
246+
RIT_IRQHandler
247+
TIMER0_IRQHandler
248+
TIMER1_IRQHandler
249+
TIMER2_IRQHandler
250+
TIMER3_IRQHandler
251+
MCPWM_IRQHandler
252+
ADC0_IRQHandler
253+
I2C0_IRQHandler
254+
I2C1_IRQHandler
255+
SPI_IRQHandler
256+
ADC1_IRQHandler
257+
SSP0_IRQHandler
258+
SSP1_IRQHandler
259+
UART0_IRQHandler
260+
UART1_IRQHandler
261+
UART2_IRQHandler
262+
UART3_IRQHandler
263+
I2S0_IRQHandler
264+
I2S1_IRQHandler
265+
SPIFI_IRQHandler
266+
SGPIO_IRQHandler
267+
GPIO0_IRQHandler
268+
GPIO1_IRQHandler
269+
GPIO2_IRQHandler
270+
GPIO3_IRQHandler
271+
GPIO4_IRQHandler
272+
GPIO5_IRQHandler
273+
GPIO6_IRQHandler
274+
GPIO7_IRQHandler
275+
GINT0_IRQHandler
276+
GINT1_IRQHandler
277+
EVRT_IRQHandler
278+
CAN1_IRQHandler
279+
VADC_IRQHandler
280+
ATIMER_IRQHandler
281+
RTC_IRQHandler
282+
WDT_IRQHandler
283+
CAN0_IRQHandler
284+
QEI_IRQHandler
285+
286+
B .
287+
288+
ENDP
289+
290+
ALIGN
291+
END
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/* mbed Microcontroller Library - stackheap
2+
* Copyright (C) 2009-2011 ARM Limited. All rights reserved.
3+
*
4+
* Setup a fixed single stack/heap memory model,
5+
* between the top of the RW/ZI region and the stackpointer
6+
*/
7+
8+
#ifdef __cplusplus
9+
extern "C" {
10+
#endif
11+
12+
#include <rt_misc.h>
13+
#include <stdint.h>
14+
15+
extern char Image$$RW_IRAM1$$ZI$$Limit[];
16+
17+
extern __value_in_regs struct __initial_stackheap __user_setup_stackheap(uint32_t R0, uint32_t R1, uint32_t R2, uint32_t R3) {
18+
uint32_t zi_limit = (uint32_t)Image$$RW_IRAM1$$ZI$$Limit;
19+
uint32_t sp_limit = __current_sp();
20+
21+
zi_limit = (zi_limit + 7) & ~0x7; // ensure zi_limit is 8-byte aligned
22+
23+
struct __initial_stackheap r;
24+
r.heap_base = zi_limit;
25+
r.heap_limit = sp_limit;
26+
return r;
27+
}
28+
29+
#ifdef __cplusplus
30+
}
31+
#endif
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/*
2+
* LPC43XX Dual core Blinky stand-alone Cortex-M4 LD script
3+
*/
4+
5+
MEMORY
6+
{
7+
/* Define each memory region */
8+
RO_MEM (rx) : ORIGIN = 0x14000000, LENGTH = 0x40000 /* 256K */
9+
RW_MEM (rwx) : ORIGIN = 0x10000000, LENGTH = 0x8000 /* 32k */
10+
RW_MEM1 (rwx) : ORIGIN = 0x20004000, LENGTH = 0x4000 /* 16K */
11+
SH_MEM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x2000 /* 8k */
12+
FAT12_MEM (rwx) : ORIGIN = 0x20002000, LENGTH = 0x2000 /* 8k */
13+
14+
}
15+
16+
__top_RW_MEM = 0x10000000 + 0x8000;
17+
18+
INCLUDE "lpc43xx_dualcore_lib.ld"
19+
INCLUDE "lpc43xx_dualcore.ld"

0 commit comments

Comments
 (0)