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_TAMP_STAMP,
41 (uint32_t) RtosInterrupt::IRQ_RTC_WKUP,
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_Stream0,
50 (uint32_t) RtosInterrupt::IRQ_DMA1_Stream1,
51 (uint32_t) RtosInterrupt::IRQ_DMA1_Stream2,
52 (uint32_t) RtosInterrupt::IRQ_DMA1_Stream3,
53 (uint32_t) RtosInterrupt::IRQ_DMA1_Stream4,
54 (uint32_t) RtosInterrupt::IRQ_DMA1_Stream5,
55 (uint32_t) RtosInterrupt::IRQ_DMA1_Stream6,
56 (uint32_t) RtosInterrupt::IRQ_ADC,
57 (uint32_t) RtosInterrupt::IRQ_CAN1_TX,
58 (uint32_t) RtosInterrupt::IRQ_CAN1_RX0,
59 (uint32_t) RtosInterrupt::IRQ_CAN1_RX1,
60 (uint32_t) RtosInterrupt::IRQ_CAN1_SCE,
61 (uint32_t) RtosInterrupt::IRQ_EXTI9_5,
62 (uint32_t) RtosInterrupt::IRQ_TIM1_BRK_TIM9,
63 (uint32_t) RtosInterrupt::IRQ_TIM1_UP_TIM10,
64 (uint32_t) RtosInterrupt::IRQ_TIM1_TRG_COM_TIM11,
65 (uint32_t) RtosInterrupt::IRQ_TIM1_CC,
66 (uint32_t) RtosInterrupt::IRQ_TIM2,
67 (uint32_t) RtosInterrupt::IRQ_TIM3,
68 (uint32_t) RtosInterrupt::IRQ_TIM4,
69 (uint32_t) RtosInterrupt::IRQ_I2C1_EV,
70 (uint32_t) RtosInterrupt::IRQ_I2C1_ER,
71 (uint32_t) RtosInterrupt::IRQ_I2C2_EV,
72 (uint32_t) RtosInterrupt::IRQ_I2C2_ER,
73 (uint32_t) RtosInterrupt::IRQ_SPI1,
74 (uint32_t) RtosInterrupt::IRQ_SPI2,
75 (uint32_t) RtosInterrupt::IRQ_USART1,
76 (uint32_t) RtosInterrupt::IRQ_USART2,
77 (uint32_t) RtosInterrupt::IRQ_USART3,
78 (uint32_t) RtosInterrupt::IRQ_EXTI15_10,
79 (uint32_t) RtosInterrupt::IRQ_RTC_Alarm,
80 (uint32_t) RtosInterrupt::IRQ_OTG_FS_WKUP,
81 (uint32_t) RtosInterrupt::IRQ_TIM8_BRK_TIM12,
82 (uint32_t) RtosInterrupt::IRQ_TIM8_UP_TIM13,
83 (uint32_t) RtosInterrupt::IRQ_TIM8_TRG_COM_TIM14,
84 (uint32_t) RtosInterrupt::IRQ_TIM8_CC,
85 (uint32_t) RtosInterrupt::IRQ_DMA1_Stream7,
86 (uint32_t) RtosInterrupt::IRQ_FSMC,
87 (uint32_t) RtosInterrupt::IRQ_SDIO,
88 (uint32_t) RtosInterrupt::IRQ_TIM5,
89 (uint32_t) RtosInterrupt::IRQ_SPI3,
90 (uint32_t) RtosInterrupt::IRQ_UART4,
91 (uint32_t) RtosInterrupt::IRQ_UART5,
92 (uint32_t) RtosInterrupt::IRQ_TIM6_DAC,
93 (uint32_t) RtosInterrupt::IRQ_TIM7,
94 (uint32_t) RtosInterrupt::IRQ_DMA2_Stream0,
95 (uint32_t) RtosInterrupt::IRQ_DMA2_Stream1,
96 (uint32_t) RtosInterrupt::IRQ_DMA2_Stream2,
97 (uint32_t) RtosInterrupt::IRQ_DMA2_Stream3,
98 (uint32_t) RtosInterrupt::IRQ_DMA2_Stream4,
99 (uint32_t) RtosInterrupt::IRQ_ETH,
100 (uint32_t) RtosInterrupt::IRQ_ETH_WKUP,
101 (uint32_t) RtosInterrupt::IRQ_CAN2_TX,
102 (uint32_t) RtosInterrupt::IRQ_CAN2_RX0,
103 (uint32_t) RtosInterrupt::IRQ_CAN2_RX1,
104 (uint32_t) RtosInterrupt::IRQ_CAN2_SCE,
105 (uint32_t) RtosInterrupt::IRQ_OTG_FS,
106 (uint32_t) RtosInterrupt::IRQ_DMA2_Stream5,
107 (uint32_t) RtosInterrupt::IRQ_DMA2_Stream6,
108 (uint32_t) RtosInterrupt::IRQ_DMA2_Stream7,
109 (uint32_t) RtosInterrupt::IRQ_USART6,
110 (uint32_t) RtosInterrupt::IRQ_I2C3_EV,
111 (uint32_t) RtosInterrupt::IRQ_I2C3_ER,
112 (uint32_t) RtosInterrupt::IRQ_OTG_HS_EP1_OUT,
113 (uint32_t) RtosInterrupt::IRQ_OTG_HS_EP1_IN,
114 (uint32_t) RtosInterrupt::IRQ_OTG_HS_WKUP,
115 (uint32_t) RtosInterrupt::IRQ_OTG_HS,
116 (uint32_t) RtosInterrupt::IRQ_DCMI,
117 (uint32_t) RtosInterrupt::IRQ_CRYP,
118 (uint32_t) RtosInterrupt::IRQ_HASH_RNG,
119 (uint32_t) RtosInterrupt::IRQ_FPU
122 extern
unsigned long _flash_data;
123 extern
unsigned long _data;
124 extern
unsigned long _edata;
125 extern
unsigned long _bss;
126 extern
unsigned long _ebss;
128 __attribute__ ((naked,used))
void entryPoint(
void) {
140 " ldr r0, =_flash_data \n"
142 " ldr r2, =_edata \n"
147 " ldr r3, [r0], #4 \n"
148 " str r3, [r1], #4 \n"
151 :::
"r0",
"r1",
"r2",
"r3");
162 " strlt r2, [r0], #4 \n"
169 " ldr r13, =vectorsTable \n"