6 #include "RtosInterrupt.hpp"
9 extern "C" void entryPoint(
void);
10 extern "C" void __libc_init_array(
void);
11 extern int main(
void);
13 #ifndef RTOS_CFG_MAIN_STACK_SIZE
14 #define RTOS_CFG_MAIN_STACK_SIZE 128
16 volatile static unsigned long mainStack[RTOS_CFG_MAIN_STACK_SIZE] __attribute__ ((section(
".stack")));
18 __attribute__ ((section(
".isr_vector"), used)) uint32_t vectorsTable[] = {
20 ((uint32_t) mainStack) +
sizeof(mainStack),
21 (uint32_t) entryPoint,
22 (uint32_t) RtosInterrupt::IRQ_NonMaskableInt,
23 (uint32_t) RtosInterrupt::IRQ_HardFault,
24 (uint32_t) RtosInterrupt::IRQ_MemoryManagement,
25 (uint32_t) RtosInterrupt::IRQ_BusFault,
26 (uint32_t) RtosInterrupt::IRQ_UsageFault,
31 (uint32_t) RtosInterrupt::IRQ_SVCall,
32 (uint32_t) RtosInterrupt::IRQ_DebugMonitor,
34 (uint32_t) RtosInterrupt::IRQ_PendSV,
35 (uint32_t) RtosInterrupt::IRQ_SysTick,
38 (uint32_t) RtosInterrupt::IRQ_WWDG,
39 (uint32_t) RtosInterrupt::IRQ_PVD,
40 (uint32_t) RtosInterrupt::IRQ_TAMPER,
41 (uint32_t) RtosInterrupt::IRQ_RTC,
42 (uint32_t) RtosInterrupt::IRQ_FLASH,
43 (uint32_t) RtosInterrupt::IRQ_RCC,
44 (uint32_t) RtosInterrupt::IRQ_EXTI0,
45 (uint32_t) RtosInterrupt::IRQ_EXTI1,
46 (uint32_t) RtosInterrupt::IRQ_EXTI2,
47 (uint32_t) RtosInterrupt::IRQ_EXTI3,
48 (uint32_t) RtosInterrupt::IRQ_EXTI4,
49 (uint32_t) RtosInterrupt::IRQ_DMA1_Channel1,
50 (uint32_t) RtosInterrupt::IRQ_DMA1_Channel2,
51 (uint32_t) RtosInterrupt::IRQ_DMA1_Channel3,
52 (uint32_t) RtosInterrupt::IRQ_DMA1_Channel4,
53 (uint32_t) RtosInterrupt::IRQ_DMA1_Channel5,
54 (uint32_t) RtosInterrupt::IRQ_DMA1_Channel6,
55 (uint32_t) RtosInterrupt::IRQ_DMA1_Channel7,
58 (uint32_t) RtosInterrupt::IRQ_ADC1_2,
59 (uint32_t) RtosInterrupt::IRQ_USB_HP_CAN1_TX,
60 (uint32_t) RtosInterrupt::IRQ_USB_LP_CAN1_RX0,
61 (uint32_t) RtosInterrupt::IRQ_CAN1_RX1,
62 (uint32_t) RtosInterrupt::IRQ_CAN1_SCE,
63 (uint32_t) RtosInterrupt::IRQ_EXTI9_5,
64 (uint32_t) RtosInterrupt::IRQ_TIM1_BRK,
65 (uint32_t) RtosInterrupt::IRQ_TIM1_UP,
66 (uint32_t) RtosInterrupt::IRQ_TIM1_TRG_COM,
67 (uint32_t) RtosInterrupt::IRQ_TIM1_CC,
68 (uint32_t) RtosInterrupt::IRQ_TIM2,
69 (uint32_t) RtosInterrupt::IRQ_TIM3,
70 (uint32_t) RtosInterrupt::IRQ_I2C1_EV,
71 (uint32_t) RtosInterrupt::IRQ_I2C1_ER,
72 (uint32_t) RtosInterrupt::IRQ_SPI1,
73 (uint32_t) RtosInterrupt::IRQ_USART1,
74 (uint32_t) RtosInterrupt::IRQ_USART2,
75 (uint32_t) RtosInterrupt::IRQ_EXTI15_10,
76 (uint32_t) RtosInterrupt::IRQ_RTCAlarm,
77 (uint32_t) RtosInterrupt::IRQ_USBWakeUp,
79 #ifdef STM32F10X_LD_VL
80 (uint32_t) RtosInterrupt::IRQ_ADC1,
81 (uint32_t) RtosInterrupt::IRQ_EXTI9_5,
82 (uint32_t) RtosInterrupt::IRQ_TIM1_BRK_TIM15,
83 (uint32_t) RtosInterrupt::IRQ_TIM1_UP_TIM16,
84 (uint32_t) RtosInterrupt::IRQ_TIM1_TRG_COM_TIM17,
85 (uint32_t) RtosInterrupt::IRQ_TIM1_CC,
86 (uint32_t) RtosInterrupt::IRQ_TIM2,
87 (uint32_t) RtosInterrupt::IRQ_TIM3,
88 (uint32_t) RtosInterrupt::IRQ_I2C1_EV,
89 (uint32_t) RtosInterrupt::IRQ_I2C1_ER,
90 (uint32_t) RtosInterrupt::IRQ_SPI1,
91 (uint32_t) RtosInterrupt::IRQ_USART1,
92 (uint32_t) RtosInterrupt::IRQ_USART2,
93 (uint32_t) RtosInterrupt::IRQ_EXTI15_10,
94 (uint32_t) RtosInterrupt::IRQ_RTCAlarm,
95 (uint32_t) RtosInterrupt::IRQ_CEC,
96 (uint32_t) RtosInterrupt::IRQ_TIM6_DAC,
97 (uint32_t) RtosInterrupt::IRQ_TIM7,
98 #endif //STM32F10X_LD_VL
100 (uint32_t) RtosInterrupt::IRQ_ADC1_2,
101 (uint32_t) RtosInterrupt::IRQ_USB_HP_CAN1_TX,
102 (uint32_t) RtosInterrupt::IRQ_USB_LP_CAN1_RX0,
103 (uint32_t) RtosInterrupt::IRQ_CAN1_RX1,
104 (uint32_t) RtosInterrupt::IRQ_CAN1_SCE,
105 (uint32_t) RtosInterrupt::IRQ_EXTI9_5,
106 (uint32_t) RtosInterrupt::IRQ_TIM1_BRK,
107 (uint32_t) RtosInterrupt::IRQ_TIM1_UP,
108 (uint32_t) RtosInterrupt::IRQ_TIM1_TRG_COM,
109 (uint32_t) RtosInterrupt::IRQ_TIM1_CC,
110 (uint32_t) RtosInterrupt::IRQ_TIM2,
111 (uint32_t) RtosInterrupt::IRQ_TIM3,
112 (uint32_t) RtosInterrupt::IRQ_TIM4,
113 (uint32_t) RtosInterrupt::IRQ_I2C1_EV,
114 (uint32_t) RtosInterrupt::IRQ_I2C1_ER,
115 (uint32_t) RtosInterrupt::IRQ_I2C2_EV,
116 (uint32_t) RtosInterrupt::IRQ_I2C2_ER,
117 (uint32_t) RtosInterrupt::IRQ_SPI1,
118 (uint32_t) RtosInterrupt::IRQ_SPI2,
119 (uint32_t) RtosInterrupt::IRQ_USART1,
120 (uint32_t) RtosInterrupt::IRQ_USART2,
121 (uint32_t) RtosInterrupt::IRQ_USART3,
122 (uint32_t) RtosInterrupt::IRQ_EXTI15_10,
123 (uint32_t) RtosInterrupt::IRQ_RTCAlarm,
124 (uint32_t) RtosInterrupt::IRQ_USBWakeUp,
125 #endif //STM32F10X_MD
126 #ifdef STM32F10X_MD_VL
127 (uint32_t) RtosInterrupt::IRQ_ADC1,
128 (uint32_t) RtosInterrupt::IRQ_EXTI9_5,
129 (uint32_t) RtosInterrupt::IRQ_TIM1_BRK_TIM15,
130 (uint32_t) RtosInterrupt::IRQ_TIM1_UP_TIM16,
131 (uint32_t) RtosInterrupt::IRQ_TIM1_TRG_COM_TIM17,
132 (uint32_t) RtosInterrupt::IRQ_TIM1_CC,
133 (uint32_t) RtosInterrupt::IRQ_TIM2,
134 (uint32_t) RtosInterrupt::IRQ_TIM3,
135 (uint32_t) RtosInterrupt::IRQ_TIM4,
136 (uint32_t) RtosInterrupt::IRQ_I2C1_EV,
137 (uint32_t) RtosInterrupt::IRQ_I2C1_ER,
138 (uint32_t) RtosInterrupt::IRQ_I2C2_EV,
139 (uint32_t) RtosInterrupt::IRQ_I2C2_ER,
140 (uint32_t) RtosInterrupt::IRQ_SPI1,
141 (uint32_t) RtosInterrupt::IRQ_SPI2,
142 (uint32_t) RtosInterrupt::IRQ_USART1,
143 (uint32_t) RtosInterrupt::IRQ_USART2,
144 (uint32_t) RtosInterrupt::IRQ_USART3,
145 (uint32_t) RtosInterrupt::IRQ_EXTI15_10,
146 (uint32_t) RtosInterrupt::IRQ_RTCAlarm,
147 (uint32_t) RtosInterrupt::IRQ_CEC,
148 (uint32_t) RtosInterrupt::IRQ_TIM6_DAC,
149 (uint32_t) RtosInterrupt::IRQ_TIM7,
150 #endif //STM32F10X_MD_VL
152 (uint32_t) RtosInterrupt::IRQ_ADC1_2,
153 (uint32_t) RtosInterrupt::IRQ_USB_HP_CAN1_TX,
154 (uint32_t) RtosInterrupt::IRQ_USB_LP_CAN1_RX0,
155 (uint32_t) RtosInterrupt::IRQ_CAN1_RX1,
156 (uint32_t) RtosInterrupt::IRQ_CAN1_SCE,
157 (uint32_t) RtosInterrupt::IRQ_EXTI9_5,
158 (uint32_t) RtosInterrupt::IRQ_TIM1_BRK,
159 (uint32_t) RtosInterrupt::IRQ_TIM1_UP,
160 (uint32_t) RtosInterrupt::IRQ_TIM1_TRG_COM,
161 (uint32_t) RtosInterrupt::IRQ_TIM1_CC,
162 (uint32_t) RtosInterrupt::IRQ_TIM2,
163 (uint32_t) RtosInterrupt::IRQ_TIM3,
164 (uint32_t) RtosInterrupt::IRQ_TIM4,
165 (uint32_t) RtosInterrupt::IRQ_I2C1_EV,
166 (uint32_t) RtosInterrupt::IRQ_I2C1_ER,
167 (uint32_t) RtosInterrupt::IRQ_I2C2_EV,
168 (uint32_t) RtosInterrupt::IRQ_I2C2_ER,
169 (uint32_t) RtosInterrupt::IRQ_SPI1,
170 (uint32_t) RtosInterrupt::IRQ_SPI2,
171 (uint32_t) RtosInterrupt::IRQ_USART1,
172 (uint32_t) RtosInterrupt::IRQ_USART2,
173 (uint32_t) RtosInterrupt::IRQ_USART3,
174 (uint32_t) RtosInterrupt::IRQ_EXTI15_10,
175 (uint32_t) RtosInterrupt::IRQ_RTCAlarm,
176 (uint32_t) RtosInterrupt::IRQ_USBWakeUp,
177 (uint32_t) RtosInterrupt::IRQ_TIM8_BRK,
178 (uint32_t) RtosInterrupt::IRQ_TIM8_UP,
179 (uint32_t) RtosInterrupt::IRQ_TIM8_TRG_COM,
180 (uint32_t) RtosInterrupt::IRQ_TIM8_CC,
181 (uint32_t) RtosInterrupt::IRQ_ADC3,
182 (uint32_t) RtosInterrupt::IRQ_FSMC,
183 (uint32_t) RtosInterrupt::IRQ_SDIO,
184 (uint32_t) RtosInterrupt::IRQ_TIM5,
185 (uint32_t) RtosInterrupt::IRQ_SPI3,
186 (uint32_t) RtosInterrupt::IRQ_UART4,
187 (uint32_t) RtosInterrupt::IRQ_UART5,
188 (uint32_t) RtosInterrupt::IRQ_TIM6,
189 (uint32_t) RtosInterrupt::IRQ_TIM7,
190 (uint32_t) RtosInterrupt::IRQ_DMA2_Channel1,
191 (uint32_t) RtosInterrupt::IRQ_DMA2_Channel2,
192 (uint32_t) RtosInterrupt::IRQ_DMA2_Channel3,
193 (uint32_t) RtosInterrupt::IRQ_DMA2_Channel4_5,
194 #endif //STM32F10X_HD
195 #ifdef STM32F10X_HD_VL
196 (uint32_t) RtosInterrupt::IRQ_ADC1,
197 (uint32_t) RtosInterrupt::IRQ_EXTI9_5,
198 (uint32_t) RtosInterrupt::IRQ_TIM1_BRK_TIM15,
199 (uint32_t) RtosInterrupt::IRQ_TIM1_UP_TIM16,
200 (uint32_t) RtosInterrupt::IRQ_TIM1_TRG_COM_TIM17,
201 (uint32_t) RtosInterrupt::IRQ_TIM1_CC,
202 (uint32_t) RtosInterrupt::IRQ_TIM2,
203 (uint32_t) RtosInterrupt::IRQ_TIM3,
204 (uint32_t) RtosInterrupt::IRQ_TIM4,
205 (uint32_t) RtosInterrupt::IRQ_I2C1_EV,
206 (uint32_t) RtosInterrupt::IRQ_I2C1_ER,
207 (uint32_t) RtosInterrupt::IRQ_I2C2_EV,
208 (uint32_t) RtosInterrupt::IRQ_I2C2_ER,
209 (uint32_t) RtosInterrupt::IRQ_SPI1,
210 (uint32_t) RtosInterrupt::IRQ_SPI2,
211 (uint32_t) RtosInterrupt::IRQ_USART1,
212 (uint32_t) RtosInterrupt::IRQ_USART2,
213 (uint32_t) RtosInterrupt::IRQ_USART3,
214 (uint32_t) RtosInterrupt::IRQ_EXTI15_10,
215 (uint32_t) RtosInterrupt::IRQ_RTCAlarm,
216 (uint32_t) RtosInterrupt::IRQ_CEC,
217 (uint32_t) RtosInterrupt::IRQ_TIM12,
218 (uint32_t) RtosInterrupt::IRQ_TIM13,
219 (uint32_t) RtosInterrupt::IRQ_TIM14,
220 (uint32_t) RtosInterrupt::IRQ_TIM5,
221 (uint32_t) RtosInterrupt::IRQ_SPI3,
222 (uint32_t) RtosInterrupt::IRQ_UART4,
223 (uint32_t) RtosInterrupt::IRQ_UART5,
224 (uint32_t) RtosInterrupt::IRQ_TIM6_DAC,
225 (uint32_t) RtosInterrupt::IRQ_TIM7,
226 (uint32_t) RtosInterrupt::IRQ_DMA2_Channel1,
227 (uint32_t) RtosInterrupt::IRQ_DMA2_Channel2,
228 (uint32_t) RtosInterrupt::IRQ_DMA2_Channel3,
229 (uint32_t) RtosInterrupt::IRQ_DMA2_Channel4_5,
230 (uint32_t) RtosInterrupt::IRQ_DMA2_Channel5,
231 #endif //STM32F10X_HD_VL
233 (uint32_t) RtosInterrupt::IRQ_ADC1_2,
234 (uint32_t) RtosInterrupt::IRQ_USB_HP_CAN1_TX,
235 (uint32_t) RtosInterrupt::IRQ_USB_LP_CAN1_RX0,
236 (uint32_t) RtosInterrupt::IRQ_CAN1_RX1,
237 (uint32_t) RtosInterrupt::IRQ_CAN1_SCE,
238 (uint32_t) RtosInterrupt::IRQ_EXTI9_5,
239 (uint32_t) RtosInterrupt::IRQ_TIM1_BRK_TIM9,
240 (uint32_t) RtosInterrupt::IRQ_TIM1_UP_TIM10,
241 (uint32_t) RtosInterrupt::IRQ_TIM1_TRG_COM_TIM11,
242 (uint32_t) RtosInterrupt::IRQ_TIM1_CC,
243 (uint32_t) RtosInterrupt::IRQ_TIM2,
244 (uint32_t) RtosInterrupt::IRQ_TIM3,
245 (uint32_t) RtosInterrupt::IRQ_TIM4,
246 (uint32_t) RtosInterrupt::IRQ_I2C1_EV,
247 (uint32_t) RtosInterrupt::IRQ_I2C1_ER,
248 (uint32_t) RtosInterrupt::IRQ_I2C2_EV,
249 (uint32_t) RtosInterrupt::IRQ_I2C2_ER,
250 (uint32_t) RtosInterrupt::IRQ_SPI1,
251 (uint32_t) RtosInterrupt::IRQ_SPI2,
252 (uint32_t) RtosInterrupt::IRQ_USART1,
253 (uint32_t) RtosInterrupt::IRQ_USART2,
254 (uint32_t) RtosInterrupt::IRQ_USART3,
255 (uint32_t) RtosInterrupt::IRQ_EXTI15_10,
256 (uint32_t) RtosInterrupt::IRQ_RTCAlarm,
257 (uint32_t) RtosInterrupt::IRQ_USBWakeUp,
258 (uint32_t) RtosInterrupt::IRQ_TIM8_BRK_TIM12,
259 (uint32_t) RtosInterrupt::IRQ_TIM8_UP_TIM13,
260 (uint32_t) RtosInterrupt::IRQ_TIM8_TRG_COM_TIM14,
261 (uint32_t) RtosInterrupt::IRQ_TIM8_CC,
262 (uint32_t) RtosInterrupt::IRQ_ADC3,
263 (uint32_t) RtosInterrupt::IRQ_FSMC,
264 (uint32_t) RtosInterrupt::IRQ_SDIO,
265 (uint32_t) RtosInterrupt::IRQ_TIM5,
266 (uint32_t) RtosInterrupt::IRQ_SPI3,
267 (uint32_t) RtosInterrupt::IRQ_UART4,
268 (uint32_t) RtosInterrupt::IRQ_UART5,
269 (uint32_t) RtosInterrupt::IRQ_TIM6,
270 (uint32_t) RtosInterrupt::IRQ_TIM7,
271 (uint32_t) RtosInterrupt::IRQ_DMA2_Channel1,
272 (uint32_t) RtosInterrupt::IRQ_DMA2_Channel2,
273 (uint32_t) RtosInterrupt::IRQ_DMA2_Channel3,
274 (uint32_t) RtosInterrupt::IRQ_DMA2_Channel4_5,
275 #endif //STM32F10X_XL
277 (uint32_t) RtosInterrupt::IRQ_ADC1_2,
278 (uint32_t) RtosInterrupt::IRQ_CAN1_TX,
279 (uint32_t) RtosInterrupt::IRQ_CAN1_RX0,
280 (uint32_t) RtosInterrupt::IRQ_CAN1_RX1,
281 (uint32_t) RtosInterrupt::IRQ_CAN1_SCE,
282 (uint32_t) RtosInterrupt::IRQ_EXTI9_5,
283 (uint32_t) RtosInterrupt::IRQ_TIM1_BRK,
284 (uint32_t) RtosInterrupt::IRQ_TIM1_UP,
285 (uint32_t) RtosInterrupt::IRQ_TIM1_TRG_COM,
286 (uint32_t) RtosInterrupt::IRQ_TIM1_CC,
287 (uint32_t) RtosInterrupt::IRQ_TIM2,
288 (uint32_t) RtosInterrupt::IRQ_TIM3,
289 (uint32_t) RtosInterrupt::IRQ_TIM4,
290 (uint32_t) RtosInterrupt::IRQ_I2C1_EV,
291 (uint32_t) RtosInterrupt::IRQ_I2C1_ER,
292 (uint32_t) RtosInterrupt::IRQ_I2C2_EV,
293 (uint32_t) RtosInterrupt::IRQ_I2C2_ER,
294 (uint32_t) RtosInterrupt::IRQ_SPI1,
295 (uint32_t) RtosInterrupt::IRQ_SPI2,
296 (uint32_t) RtosInterrupt::IRQ_USART1,
297 (uint32_t) RtosInterrupt::IRQ_USART2,
298 (uint32_t) RtosInterrupt::IRQ_USART3,
299 (uint32_t) RtosInterrupt::IRQ_EXTI15_10,
300 (uint32_t) RtosInterrupt::IRQ_RTCAlarm,
301 (uint32_t) RtosInterrupt::IRQ_OTG_FS_WKUP,
302 (uint32_t) RtosInterrupt::IRQ_TIM5,
303 (uint32_t) RtosInterrupt::IRQ_SPI3,
304 (uint32_t) RtosInterrupt::IRQ_UART4,
305 (uint32_t) RtosInterrupt::IRQ_UART5,
306 (uint32_t) RtosInterrupt::IRQ_TIM6,
307 (uint32_t) RtosInterrupt::IRQ_TIM7,
308 (uint32_t) RtosInterrupt::IRQ_DMA2_Channel1,
309 (uint32_t) RtosInterrupt::IRQ_DMA2_Channel2,
310 (uint32_t) RtosInterrupt::IRQ_DMA2_Channel3,
311 (uint32_t) RtosInterrupt::IRQ_DMA2_Channel4,
312 (uint32_t) RtosInterrupt::IRQ_DMA2_Channel5,
313 (uint32_t) RtosInterrupt::IRQ_ETH,
314 (uint32_t) RtosInterrupt::IRQ_ETH_WKUP,
315 (uint32_t) RtosInterrupt::IRQ_CAN2_TX,
316 (uint32_t) RtosInterrupt::IRQ_CAN2_RX0,
317 (uint32_t) RtosInterrupt::IRQ_CAN2_RX1,
318 (uint32_t) RtosInterrupt::IRQ_CAN2_SCE,
319 (uint32_t) RtosInterrupt::IRQ_OTG_FS
320 #endif //STM32F10X_CL
323 extern unsigned long _flash_data;
324 extern unsigned long _data;
325 extern unsigned long _edata;
326 extern unsigned long _bss;
327 extern unsigned long _ebss;
329 __attribute__ ((naked,used)) void entryPoint(
void) {
341 " ldr r0, =_flash_data \n"
343 " ldr r2, =_edata \n"
348 " ldr r3, [r0], #4 \n"
349 " str r3, [r1], #4 \n"
352 :::
"r0",
"r1",
"r2",
"r3");
363 " strlt r2, [r0], #4 \n"
370 " ldr r13, =vectorsTable \n"