mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Wed Feb 20 22:31:08 2019 +0000
Revision:
189:f392fc9709a3
Parent:
149:156823d33999
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
<> 144:ef7eb2e8f9f7 1 extern "C" {
<> 144:ef7eb2e8f9f7 2
<> 144:ef7eb2e8f9f7 3 #include "LPC17xx.h"
<> 144:ef7eb2e8f9f7 4
<> 144:ef7eb2e8f9f7 5 #define WEAK __attribute__ ((weak))
<> 144:ef7eb2e8f9f7 6 #define ALIAS(f) __attribute__ ((weak, alias (#f)))
<> 144:ef7eb2e8f9f7 7 #define AFTER_VECTORS __attribute__ ((section(".after_vectors")))
<> 144:ef7eb2e8f9f7 8
<> 144:ef7eb2e8f9f7 9 extern unsigned int __data_section_table;
<> 144:ef7eb2e8f9f7 10 extern unsigned int __data_section_table_end;
<> 144:ef7eb2e8f9f7 11 extern unsigned int __bss_section_table;
<> 144:ef7eb2e8f9f7 12 extern unsigned int __bss_section_table_end;
<> 144:ef7eb2e8f9f7 13
<> 144:ef7eb2e8f9f7 14 extern void __libc_init_array(void);
<> 144:ef7eb2e8f9f7 15 extern int main(void);
<> 144:ef7eb2e8f9f7 16 extern void _vStackTop(void);
<> 144:ef7eb2e8f9f7 17 extern void (* const g_pfnVectors[])(void);
<> 144:ef7eb2e8f9f7 18
<> 144:ef7eb2e8f9f7 19 void ResetISR (void);
<> 144:ef7eb2e8f9f7 20 WEAK void NMI_Handler (void);
<> 144:ef7eb2e8f9f7 21 WEAK void HardFault_Handler (void);
<> 144:ef7eb2e8f9f7 22 WEAK void MemManage_Handler (void);
<> 144:ef7eb2e8f9f7 23 WEAK void BusFault_Handler (void);
<> 144:ef7eb2e8f9f7 24 WEAK void UsageFault_Handler(void);
<> 144:ef7eb2e8f9f7 25 WEAK void SVC_Handler (void);
<> 144:ef7eb2e8f9f7 26 WEAK void DebugMon_Handler (void);
<> 144:ef7eb2e8f9f7 27 WEAK void PendSV_Handler (void);
<> 144:ef7eb2e8f9f7 28 WEAK void SysTick_Handler (void);
<> 144:ef7eb2e8f9f7 29 WEAK void IntDefaultHandler (void);
<> 144:ef7eb2e8f9f7 30
<> 144:ef7eb2e8f9f7 31 void WDT_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 32 void TIMER0_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 33 void TIMER1_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 34 void TIMER2_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 35 void TIMER3_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 36 void UART0_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 37 void UART1_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 38 void UART2_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 39 void UART3_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 40 void PWM1_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 41 void I2C0_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 42 void I2C1_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 43 void I2C2_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 44 void SPI_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 45 void SSP0_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 46 void SSP1_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 47 void PLL0_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 48 void RTC_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 49 void EINT0_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 50 void EINT1_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 51 void EINT2_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 52 void EINT3_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 53 void ADC_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 54 void BOD_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 55 void USB_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 56 void CAN_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 57 void DMA_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 58 void I2S_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 59 void ENET_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 60 void RIT_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 61 void MCPWM_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 62 void QEI_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 63 void PLL1_IRQHandler (void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 64 void USBActivity_IRQHandler(void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 65 void CANActivity_IRQHandler(void) ALIAS(IntDefaultHandler);
<> 144:ef7eb2e8f9f7 66
<> 144:ef7eb2e8f9f7 67 __attribute__ ((section(".isr_vector")))
<> 144:ef7eb2e8f9f7 68 void (* const g_pfnVectors[])(void) = {
<> 144:ef7eb2e8f9f7 69 &_vStackTop, ResetISR, NMI_Handler,
<> 144:ef7eb2e8f9f7 70 HardFault_Handler,
<> 144:ef7eb2e8f9f7 71 MemManage_Handler,
<> 144:ef7eb2e8f9f7 72 BusFault_Handler,
<> 144:ef7eb2e8f9f7 73 UsageFault_Handler,
<> 144:ef7eb2e8f9f7 74 0,
<> 144:ef7eb2e8f9f7 75 0,
<> 144:ef7eb2e8f9f7 76 0,
<> 144:ef7eb2e8f9f7 77 0,
<> 144:ef7eb2e8f9f7 78 SVC_Handler,
<> 144:ef7eb2e8f9f7 79 DebugMon_Handler,
<> 144:ef7eb2e8f9f7 80 0,
<> 144:ef7eb2e8f9f7 81 PendSV_Handler,
<> 144:ef7eb2e8f9f7 82 SysTick_Handler,
<> 144:ef7eb2e8f9f7 83 WDT_IRQHandler,
<> 144:ef7eb2e8f9f7 84 TIMER0_IRQHandler,
<> 144:ef7eb2e8f9f7 85 TIMER1_IRQHandler,
<> 144:ef7eb2e8f9f7 86 TIMER2_IRQHandler,
<> 144:ef7eb2e8f9f7 87 TIMER3_IRQHandler,
<> 144:ef7eb2e8f9f7 88 UART0_IRQHandler,
<> 144:ef7eb2e8f9f7 89 UART1_IRQHandler,
<> 144:ef7eb2e8f9f7 90 UART2_IRQHandler,
<> 144:ef7eb2e8f9f7 91 UART3_IRQHandler,
<> 144:ef7eb2e8f9f7 92 PWM1_IRQHandler,
<> 144:ef7eb2e8f9f7 93 I2C0_IRQHandler,
<> 144:ef7eb2e8f9f7 94 I2C1_IRQHandler,
<> 144:ef7eb2e8f9f7 95 I2C2_IRQHandler,
<> 144:ef7eb2e8f9f7 96 SPI_IRQHandler,
<> 144:ef7eb2e8f9f7 97 SSP0_IRQHandler,
<> 144:ef7eb2e8f9f7 98 SSP1_IRQHandler,
<> 144:ef7eb2e8f9f7 99 PLL0_IRQHandler,
<> 144:ef7eb2e8f9f7 100 RTC_IRQHandler,
<> 144:ef7eb2e8f9f7 101 EINT0_IRQHandler,
<> 144:ef7eb2e8f9f7 102 EINT1_IRQHandler,
<> 144:ef7eb2e8f9f7 103 EINT2_IRQHandler,
<> 144:ef7eb2e8f9f7 104 EINT3_IRQHandler,
<> 144:ef7eb2e8f9f7 105 ADC_IRQHandler,
<> 144:ef7eb2e8f9f7 106 BOD_IRQHandler,
<> 144:ef7eb2e8f9f7 107 USB_IRQHandler,
<> 144:ef7eb2e8f9f7 108 CAN_IRQHandler,
<> 144:ef7eb2e8f9f7 109 DMA_IRQHandler,
<> 144:ef7eb2e8f9f7 110 I2S_IRQHandler,
<> 144:ef7eb2e8f9f7 111 ENET_IRQHandler,
<> 144:ef7eb2e8f9f7 112 RIT_IRQHandler,
<> 144:ef7eb2e8f9f7 113 MCPWM_IRQHandler,
<> 144:ef7eb2e8f9f7 114 QEI_IRQHandler,
<> 144:ef7eb2e8f9f7 115 PLL1_IRQHandler,
<> 144:ef7eb2e8f9f7 116 USBActivity_IRQHandler,
<> 144:ef7eb2e8f9f7 117 CANActivity_IRQHandler,
<> 144:ef7eb2e8f9f7 118 };
<> 144:ef7eb2e8f9f7 119
<> 144:ef7eb2e8f9f7 120 AFTER_VECTORS void data_init(unsigned int romstart, unsigned int start, unsigned int len) {
<> 144:ef7eb2e8f9f7 121 unsigned int *pulDest = (unsigned int*) start;
<> 144:ef7eb2e8f9f7 122 unsigned int *pulSrc = (unsigned int*) romstart;
<> 144:ef7eb2e8f9f7 123 unsigned int loop;
<> 144:ef7eb2e8f9f7 124 for (loop = 0; loop < len; loop = loop + 4) *pulDest++ = *pulSrc++;
<> 144:ef7eb2e8f9f7 125 }
<> 144:ef7eb2e8f9f7 126
<> 144:ef7eb2e8f9f7 127 AFTER_VECTORS void bss_init(unsigned int start, unsigned int len) {
<> 144:ef7eb2e8f9f7 128 unsigned int *pulDest = (unsigned int*) start;
<> 144:ef7eb2e8f9f7 129 unsigned int loop;
<> 144:ef7eb2e8f9f7 130 for (loop = 0; loop < len; loop = loop + 4) *pulDest++ = 0;
<> 144:ef7eb2e8f9f7 131 }
<> 144:ef7eb2e8f9f7 132
<> 147:30b64687e01f 133 extern "C" void software_init_hook(void);
<> 147:30b64687e01f 134 extern "C" void pre_main(void) __attribute__((weak));
<> 144:ef7eb2e8f9f7 135
<> 144:ef7eb2e8f9f7 136 AFTER_VECTORS void ResetISR(void) {
<> 144:ef7eb2e8f9f7 137 unsigned int LoadAddr, ExeAddr, SectionLen;
<> 144:ef7eb2e8f9f7 138 unsigned int *SectionTableAddr;
<> 144:ef7eb2e8f9f7 139
<> 144:ef7eb2e8f9f7 140 SectionTableAddr = &__data_section_table;
<> 144:ef7eb2e8f9f7 141
<> 144:ef7eb2e8f9f7 142 while (SectionTableAddr < &__data_section_table_end) {
<> 144:ef7eb2e8f9f7 143 LoadAddr = *SectionTableAddr++;
<> 144:ef7eb2e8f9f7 144 ExeAddr = *SectionTableAddr++;
<> 144:ef7eb2e8f9f7 145 SectionLen = *SectionTableAddr++;
<> 144:ef7eb2e8f9f7 146 data_init(LoadAddr, ExeAddr, SectionLen);
<> 144:ef7eb2e8f9f7 147 }
<> 144:ef7eb2e8f9f7 148 while (SectionTableAddr < &__bss_section_table_end) {
<> 144:ef7eb2e8f9f7 149 ExeAddr = *SectionTableAddr++;
<> 144:ef7eb2e8f9f7 150 SectionLen = *SectionTableAddr++;
<> 144:ef7eb2e8f9f7 151 bss_init(ExeAddr, SectionLen);
<> 144:ef7eb2e8f9f7 152 }
<> 144:ef7eb2e8f9f7 153
<> 144:ef7eb2e8f9f7 154 SystemInit();
<> 147:30b64687e01f 155 if (pre_main) { // give control to the RTOS
<> 144:ef7eb2e8f9f7 156 software_init_hook(); // this will also call __libc_init_array
<> 147:30b64687e01f 157 }
<> 147:30b64687e01f 158 else { // for BareMetal (non-RTOS) build
<> 144:ef7eb2e8f9f7 159 __libc_init_array();
<> 144:ef7eb2e8f9f7 160 main();
<> 144:ef7eb2e8f9f7 161 }
<> 144:ef7eb2e8f9f7 162 while (1) {;}
<> 144:ef7eb2e8f9f7 163 }
<> 144:ef7eb2e8f9f7 164
<> 144:ef7eb2e8f9f7 165 AFTER_VECTORS void NMI_Handler (void) {}
<> 144:ef7eb2e8f9f7 166 AFTER_VECTORS void HardFault_Handler (void) {}
<> 144:ef7eb2e8f9f7 167 AFTER_VECTORS void MemManage_Handler (void) {}
<> 144:ef7eb2e8f9f7 168 AFTER_VECTORS void BusFault_Handler (void) {}
<> 144:ef7eb2e8f9f7 169 AFTER_VECTORS void UsageFault_Handler(void) {}
<> 144:ef7eb2e8f9f7 170 AFTER_VECTORS void SVC_Handler (void) {}
<> 144:ef7eb2e8f9f7 171 AFTER_VECTORS void DebugMon_Handler (void) {}
<> 144:ef7eb2e8f9f7 172 AFTER_VECTORS void PendSV_Handler (void) {}
<> 144:ef7eb2e8f9f7 173 AFTER_VECTORS void SysTick_Handler (void) {}
<> 144:ef7eb2e8f9f7 174 AFTER_VECTORS void IntDefaultHandler (void) {}
<> 144:ef7eb2e8f9f7 175
<> 144:ef7eb2e8f9f7 176 int __aeabi_atexit(void *object, void (*destructor)(void *), void *dso_handle) {return 0;}
<> 144:ef7eb2e8f9f7 177 }