Skip to content

Commit 5c08a01

Browse files
committed
Intorduce NVIC_SetVector functionality for nRF5 port
# Conflicts: # hal/targets/hal/TARGET_NORDIC/TARGET_NRF5/serial_api.c # hal/targets/hal/TARGET_NORDIC/TARGET_NRF5/us_ticker.c
1 parent 864ff77 commit 5c08a01

File tree

30 files changed

+736
-474
lines changed

30 files changed

+736
-474
lines changed

targets/TARGET_NORDIC/TARGET_MCU_NRF51822/device/TOOLCHAIN_ARM_STD/TARGET_MCU_NORDIC_16K/startup_nRF51822.S

Lines changed: 42 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -45,28 +45,28 @@ __Vectors DCD __initial_sp ; Top of Stack
4545
; External Interrupts
4646
DCD POWER_CLOCK_IRQHandler ;POWER_CLOCK
4747
DCD RADIO_IRQHandler ;RADIO
48-
DCD UART0_IRQHandler ;UART0
49-
DCD SPI0_TWI0_IRQHandler ;SPI0_TWI0
50-
DCD SPI1_TWI1_IRQHandler ;SPI1_TWI1
48+
DCD UART0_IRQHandler_v ;UART0
49+
DCD SPI0_TWI0_IRQHandler_v ;SPI0_TWI0
50+
DCD SPI1_TWI1_IRQHandler_v ;SPI1_TWI1
5151
DCD 0 ;Reserved
52-
DCD GPIOTE_IRQHandler ;GPIOTE
53-
DCD ADC_IRQHandler ;ADC
52+
DCD GPIOTE_IRQHandler_v ;GPIOTE
53+
DCD ADC_IRQHandler_v ;ADC
5454
DCD TIMER0_IRQHandler ;TIMER0
55-
DCD TIMER1_IRQHandler ;TIMER1
56-
DCD TIMER2_IRQHandler ;TIMER2
55+
DCD TIMER1_IRQHandler_v ;TIMER1
56+
DCD TIMER2_IRQHandler_v ;TIMER2
5757
DCD RTC0_IRQHandler ;RTC0
5858
DCD TEMP_IRQHandler ;TEMP
5959
DCD RNG_IRQHandler ;RNG
6060
DCD ECB_IRQHandler ;ECB
6161
DCD CCM_AAR_IRQHandler ;CCM_AAR
62-
DCD WDT_IRQHandler ;WDT
63-
DCD RTC1_IRQHandler ;RTC1
64-
DCD QDEC_IRQHandler ;QDEC
65-
DCD LPCOMP_COMP_IRQHandler ;LPCOMP_COMP
66-
DCD SWI0_IRQHandler ;SWI0
62+
DCD WDT_IRQHandler_v ;WDT
63+
DCD RTC1_IRQHandler_v ;RTC1
64+
DCD QDEC_IRQHandler_v ;QDEC
65+
DCD LPCOMP_IRQHandler_v ;LPCOMP_COMP
66+
DCD SWI0_IRQHandler_v ;SWI0
6767
DCD SWI1_IRQHandler ;SWI1
6868
DCD SWI2_IRQHandler ;SWI2
69-
DCD SWI3_IRQHandler ;SWI3
69+
DCD SWI3_IRQHandler_v ;SWI3
7070
DCD SWI4_IRQHandler ;SWI4
7171
DCD SWI5_IRQHandler ;SWI5
7272
DCD 0 ;Reserved
@@ -92,13 +92,16 @@ Reset_Handler PROC
9292
EXPORT Reset_Handler [WEAK]
9393
IMPORT SystemInit
9494
IMPORT __main
95+
IMPORT nrf_reloc_vector_table
9596
LDR R0, =NRF_POWER_RAMON_ADDRESS
9697
LDR R2, [R0]
9798
MOVS R1, #NRF_POWER_RAMON_RAMxON_ONMODE_Msk
9899
ORRS R2, R2, R1
99100
STR R2, [R0]
100101
LDR R0, =SystemInit
101102
BLX R0
103+
LDR R0, =nrf_reloc_vector_table
104+
BLX R0
102105
LDR R0, =__main
103106
BX R0
104107
ENDP
@@ -131,52 +134,52 @@ Default_Handler PROC
131134

132135
EXPORT POWER_CLOCK_IRQHandler [WEAK]
133136
EXPORT RADIO_IRQHandler [WEAK]
134-
EXPORT UART0_IRQHandler [WEAK]
135-
EXPORT SPI0_TWI0_IRQHandler [WEAK]
136-
EXPORT SPI1_TWI1_IRQHandler [WEAK]
137-
EXPORT GPIOTE_IRQHandler [WEAK]
138-
EXPORT ADC_IRQHandler [WEAK]
137+
EXPORT UART0_IRQHandler_v [WEAK]
138+
EXPORT SPI0_TWI0_IRQHandler_v [WEAK]
139+
EXPORT SPI1_TWI1_IRQHandler_v [WEAK]
140+
EXPORT GPIOTE_IRQHandler_v [WEAK]
141+
EXPORT ADC_IRQHandler_v [WEAK]
139142
EXPORT TIMER0_IRQHandler [WEAK]
140-
EXPORT TIMER1_IRQHandler [WEAK]
141-
EXPORT TIMER2_IRQHandler [WEAK]
143+
EXPORT TIMER1_IRQHandler_v [WEAK]
144+
EXPORT TIMER2_IRQHandler_v [WEAK]
142145
EXPORT RTC0_IRQHandler [WEAK]
143146
EXPORT TEMP_IRQHandler [WEAK]
144147
EXPORT RNG_IRQHandler [WEAK]
145148
EXPORT ECB_IRQHandler [WEAK]
146149
EXPORT CCM_AAR_IRQHandler [WEAK]
147-
EXPORT WDT_IRQHandler [WEAK]
148-
EXPORT RTC1_IRQHandler [WEAK]
149-
EXPORT QDEC_IRQHandler [WEAK]
150-
EXPORT LPCOMP_COMP_IRQHandler [WEAK]
151-
EXPORT SWI0_IRQHandler [WEAK]
150+
EXPORT WDT_IRQHandler_v [WEAK]
151+
EXPORT RTC1_IRQHandler_v [WEAK]
152+
EXPORT QDEC_IRQHandler_v [WEAK]
153+
EXPORT LPCOMP_IRQHandler_v [WEAK]
154+
EXPORT SWI0_IRQHandler_v [WEAK]
152155
EXPORT SWI1_IRQHandler [WEAK]
153156
EXPORT SWI2_IRQHandler [WEAK]
154-
EXPORT SWI3_IRQHandler [WEAK]
157+
EXPORT SWI3_IRQHandler_v [WEAK]
155158
EXPORT SWI4_IRQHandler [WEAK]
156159
EXPORT SWI5_IRQHandler [WEAK]
157160
POWER_CLOCK_IRQHandler
158161
RADIO_IRQHandler
159-
UART0_IRQHandler
160-
SPI0_TWI0_IRQHandler
161-
SPI1_TWI1_IRQHandler
162-
GPIOTE_IRQHandler
163-
ADC_IRQHandler
162+
UART0_IRQHandler_v
163+
SPI0_TWI0_IRQHandler_v
164+
SPI1_TWI1_IRQHandler_v
165+
GPIOTE_IRQHandler_v
166+
ADC_IRQHandler_v
164167
TIMER0_IRQHandler
165-
TIMER1_IRQHandler
166-
TIMER2_IRQHandler
168+
TIMER1_IRQHandler_v
169+
TIMER2_IRQHandler_v
167170
RTC0_IRQHandler
168171
TEMP_IRQHandler
169172
RNG_IRQHandler
170173
ECB_IRQHandler
171174
CCM_AAR_IRQHandler
172-
WDT_IRQHandler
173-
RTC1_IRQHandler
174-
QDEC_IRQHandler
175-
LPCOMP_COMP_IRQHandler
176-
SWI0_IRQHandler
175+
WDT_IRQHandler_v
176+
RTC1_IRQHandler_v
177+
QDEC_IRQHandler_v
178+
LPCOMP_IRQHandler_v
179+
SWI0_IRQHandler_v
177180
SWI1_IRQHandler
178181
SWI2_IRQHandler
179-
SWI3_IRQHandler
182+
SWI3_IRQHandler_v
180183
SWI4_IRQHandler
181184
SWI5_IRQHandler
182185

targets/TARGET_NORDIC/TARGET_MCU_NRF51822/device/TOOLCHAIN_ARM_STD/TARGET_MCU_NORDIC_32K/nRF51822.sct

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@ LR_IROM1 0x1C000 0x0024000 {
1818
*(InRoot$$Sections)
1919
.ANY (+RO)
2020
}
21-
RW_IRAM1 0x20002800 0x00005800 {
21+
RW_IRAM0 0x20002800 UNINIT 0x000000c0 { ;no init section
22+
*(noinit)
23+
}
24+
RW_IRAM1 0x200028C0 0x00005740 {
2225
.ANY (+RW +ZI)
2326
}
2427
}

targets/TARGET_NORDIC/TARGET_MCU_NRF51822/device/TOOLCHAIN_ARM_STD/TARGET_MCU_NORDIC_32K/startup_nRF51822.S

Lines changed: 42 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -45,28 +45,28 @@ __Vectors DCD __initial_sp ; Top of Stack
4545
; External Interrupts
4646
DCD POWER_CLOCK_IRQHandler ;POWER_CLOCK
4747
DCD RADIO_IRQHandler ;RADIO
48-
DCD UART0_IRQHandler ;UART0
49-
DCD SPI0_TWI0_IRQHandler ;SPI0_TWI0
50-
DCD SPI1_TWI1_IRQHandler ;SPI1_TWI1
48+
DCD UART0_IRQHandler_v ;UART0
49+
DCD SPI0_TWI0_IRQHandler_v ;SPI0_TWI0
50+
DCD SPI1_TWI1_IRQHandler_v ;SPI1_TWI1
5151
DCD 0 ;Reserved
52-
DCD GPIOTE_IRQHandler ;GPIOTE
53-
DCD ADC_IRQHandler ;ADC
52+
DCD GPIOTE_IRQHandler_v ;GPIOTE
53+
DCD ADC_IRQHandler_v ;ADC
5454
DCD TIMER0_IRQHandler ;TIMER0
55-
DCD TIMER1_IRQHandler ;TIMER1
56-
DCD TIMER2_IRQHandler ;TIMER2
55+
DCD TIMER1_IRQHandler_v ;TIMER1
56+
DCD TIMER2_IRQHandler_v ;TIMER2
5757
DCD RTC0_IRQHandler ;RTC0
5858
DCD TEMP_IRQHandler ;TEMP
5959
DCD RNG_IRQHandler ;RNG
6060
DCD ECB_IRQHandler ;ECB
6161
DCD CCM_AAR_IRQHandler ;CCM_AAR
62-
DCD WDT_IRQHandler ;WDT
63-
DCD RTC1_IRQHandler ;RTC1
64-
DCD QDEC_IRQHandler ;QDEC
65-
DCD LPCOMP_IRQHandler ;LPCOMP
66-
DCD SWI0_IRQHandler ;SWI0
62+
DCD WDT_IRQHandler_v ;WDT
63+
DCD RTC1_IRQHandler_v ;RTC1
64+
DCD QDEC_IRQHandler_v ;QDEC
65+
DCD LPCOMP_COMP_IRQHandler_v ;LPCOMP_COMP
66+
DCD SWI0_IRQHandler_v ;SWI0
6767
DCD SWI1_IRQHandler ;SWI1
6868
DCD SWI2_IRQHandler ;SWI2
69-
DCD SWI3_IRQHandler ;SWI3
69+
DCD SWI3_IRQHandler_v ;SWI3
7070
DCD SWI4_IRQHandler ;SWI4
7171
DCD SWI5_IRQHandler ;SWI5
7272
DCD 0 ;Reserved
@@ -93,9 +93,7 @@ Reset_Handler PROC
9393
EXPORT Reset_Handler [WEAK]
9494
IMPORT SystemInit
9595
IMPORT __main
96-
97-
MOVS R1, #NRF_POWER_RAMONx_RAMxON_ONMODE_Msk
98-
96+
IMPORT nrf_reloc_vector_table
9997
LDR R0, =NRF_POWER_RAMON_ADDRESS
10098
LDR R2, [R0]
10199
ORRS R2, R2, R1
@@ -108,6 +106,8 @@ Reset_Handler PROC
108106
109107
LDR R0, =SystemInit
110108
BLX R0
109+
LDR R0, =nrf_reloc_vector_table
110+
BLX R0
111111
LDR R0, =__main
112112
BX R0
113113
ENDP
@@ -140,52 +140,52 @@ Default_Handler PROC
140140

141141
EXPORT POWER_CLOCK_IRQHandler [WEAK]
142142
EXPORT RADIO_IRQHandler [WEAK]
143-
EXPORT UART0_IRQHandler [WEAK]
144-
EXPORT SPI0_TWI0_IRQHandler [WEAK]
145-
EXPORT SPI1_TWI1_IRQHandler [WEAK]
146-
EXPORT GPIOTE_IRQHandler [WEAK]
147-
EXPORT ADC_IRQHandler [WEAK]
143+
EXPORT UART0_IRQHandler_v [WEAK]
144+
EXPORT SPI0_TWI0_IRQHandler_v [WEAK]
145+
EXPORT SPI1_TWI1_IRQHandler_v [WEAK]
146+
EXPORT GPIOTE_IRQHandler_v [WEAK]
147+
EXPORT ADC_IRQHandler_v [WEAK]
148148
EXPORT TIMER0_IRQHandler [WEAK]
149-
EXPORT TIMER1_IRQHandler [WEAK]
150-
EXPORT TIMER2_IRQHandler [WEAK]
149+
EXPORT TIMER1_IRQHandler_v [WEAK]
150+
EXPORT TIMER2_IRQHandler_v [WEAK]
151151
EXPORT RTC0_IRQHandler [WEAK]
152152
EXPORT TEMP_IRQHandler [WEAK]
153153
EXPORT RNG_IRQHandler [WEAK]
154154
EXPORT ECB_IRQHandler [WEAK]
155155
EXPORT CCM_AAR_IRQHandler [WEAK]
156-
EXPORT WDT_IRQHandler [WEAK]
157-
EXPORT RTC1_IRQHandler [WEAK]
158-
EXPORT QDEC_IRQHandler [WEAK]
159-
EXPORT LPCOMP_IRQHandler [WEAK]
160-
EXPORT SWI0_IRQHandler [WEAK]
156+
EXPORT WDT_IRQHandler_v [WEAK]
157+
EXPORT RTC1_IRQHandler_v [WEAK]
158+
EXPORT QDEC_IRQHandler_v [WEAK]
159+
EXPORT LPCOMP_COMP_IRQHandler_v [WEAK]
160+
EXPORT SWI0_IRQHandler_v [WEAK]
161161
EXPORT SWI1_IRQHandler [WEAK]
162162
EXPORT SWI2_IRQHandler [WEAK]
163-
EXPORT SWI3_IRQHandler [WEAK]
163+
EXPORT SWI3_IRQHandler_v [WEAK]
164164
EXPORT SWI4_IRQHandler [WEAK]
165165
EXPORT SWI5_IRQHandler [WEAK]
166166
POWER_CLOCK_IRQHandler
167167
RADIO_IRQHandler
168-
UART0_IRQHandler
169-
SPI0_TWI0_IRQHandler
170-
SPI1_TWI1_IRQHandler
171-
GPIOTE_IRQHandler
172-
ADC_IRQHandler
168+
UART0_IRQHandler_v
169+
SPI0_TWI0_IRQHandler_v
170+
SPI1_TWI1_IRQHandler_v
171+
GPIOTE_IRQHandler_v
172+
ADC_IRQHandler_v
173173
TIMER0_IRQHandler
174-
TIMER1_IRQHandler
175-
TIMER2_IRQHandler
174+
TIMER1_IRQHandler_v
175+
TIMER2_IRQHandler_v
176176
RTC0_IRQHandler
177177
TEMP_IRQHandler
178178
RNG_IRQHandler
179179
ECB_IRQHandler
180180
CCM_AAR_IRQHandler
181-
WDT_IRQHandler
182-
RTC1_IRQHandler
183-
QDEC_IRQHandler
184-
LPCOMP_IRQHandler
185-
SWI0_IRQHandler
181+
WDT_IRQHandler_v
182+
RTC1_IRQHandler_v
183+
QDEC_IRQHandler_v
184+
LPCOMP_COMP_IRQHandler_v
185+
SWI0_IRQHandler_v
186186
SWI1_IRQHandler
187187
SWI2_IRQHandler
188-
SWI3_IRQHandler
188+
SWI3_IRQHandler_v
189189
SWI4_IRQHandler
190190
SWI5_IRQHandler
191191

targets/TARGET_NORDIC/TARGET_MCU_NRF51822/device/TOOLCHAIN_ARM_STD/TARGET_MCU_NRF51_16K_S110/nRF51822.sct

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@ LR_IROM1 0x18000 0x0028000 {
1818
*(InRoot$$Sections)
1919
.ANY (+RO)
2020
}
21-
RW_IRAM1 0x20002000 0x00002000 {
21+
RW_IRAM0 0x20002000 UNINIT 0x000000c0 { ;no init section
22+
*(noinit)
23+
}
24+
RW_IRAM1 0x200020C0 0x00001F40 {
2225
.ANY (+RW +ZI)
2326
}
2427
}

targets/TARGET_NORDIC/TARGET_MCU_NRF51822/device/TOOLCHAIN_ARM_STD/TARGET_MCU_NRF51_16K_S130/nRF51822.sct

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@ LR_IROM1 0x1C000 0x0024000 {
1818
*(InRoot$$Sections)
1919
.ANY (+RO)
2020
}
21-
RW_IRAM1 0x20002800 0x00001800 {
21+
RW_IRAM0 0x20002800 UNINIT 0x000000c0 { ;no init section
22+
*(noinit)
23+
}
24+
RW_IRAM1 0x200028C0 0x00001740 {
2225
.ANY (+RW +ZI)
2326
}
2427
}

targets/TARGET_NORDIC/TARGET_MCU_NRF51822/device/TOOLCHAIN_GCC_ARM/TARGET_MCU_NRF51_16K_S110/NRF51822.ld

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,13 @@ SECTIONS
114114

115115
} > RAM
116116

117+
.noinit :
118+
{
119+
PROVIDE(__start_noinit = .);
120+
KEEP(*(.noinit))
121+
PROVIDE(__stop_noinit = .);
122+
} > RAM
123+
117124
.bss :
118125
{
119126
. = ALIGN(4);

0 commit comments

Comments
 (0)