--- /dev/null
+/**\r
+ * \file\r
+ *\r
+ * Copyright (c) 2015 Atmel Corporation. All rights reserved.\r
+ *\r
+ * \asf_license_start\r
+ *\r
+ * \page License\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions are met:\r
+ *\r
+ * 1. Redistributions of source code must retain the above copyright notice,\r
+ * this list of conditions and the following disclaimer.\r
+ *\r
+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r
+ * this list of conditions and the following disclaimer in the documentation\r
+ * and/or other materials provided with the distribution.\r
+ *\r
+ * 3. The name of Atmel may not be used to endorse or promote products derived\r
+ * from this software without specific prior written permission.\r
+ *\r
+ * 4. This software may only be redistributed and used in connection with an\r
+ * Atmel microcontroller product.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED\r
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\r
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\r
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\r
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\r
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
+ * POSSIBILITY OF SUCH DAMAGE.\r
+ *\r
+ * \asf_license_stop\r
+ *\r
+ */\r
+/*\r
+ * Support and FAQ: visit <a href="http://www.atmel.com/design-support/">Atmel Support</a>\r
+ */\r
+\r
+#include "same70.h"\r
+\r
+#if __FPU_USED /* CMSIS defined value to indicate usage of FPU */\r
+#include "fpu.h"\r
+#endif\r
+\r
+/* Initialize segments */\r
+extern uint32_t _sfixed;\r
+extern uint32_t _efixed;\r
+extern uint32_t _etext;\r
+extern uint32_t _srelocate;\r
+extern uint32_t _erelocate;\r
+extern uint32_t _szero;\r
+extern uint32_t _ezero;\r
+extern uint32_t _sstack;\r
+extern uint32_t _estack;\r
+\r
+/** \cond DOXYGEN_SHOULD_SKIP_THIS */\r
+int main(void);\r
+/** \endcond */\r
+\r
+void __libc_init_array(void);\r
+\r
+/* Default empty handler */\r
+void Dummy_Handler(void);\r
+\r
+/* Cortex-M7 core handlers */\r
+void NMI_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void MemManage_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void BusFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void UsageFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void SVC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void DebugMon_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+\r
+/* Peripherals handlers */\r
+void SUPC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void RSTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void RTT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PMC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void EFC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void UART0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void UART1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PIOA_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PIOB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#ifdef _SAME70_PIOC_INSTANCE_\r
+void PIOC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#endif /* _SAME70_PIOC_INSTANCE_ */\r
+void USART0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void USART1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void USART2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PIOD_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#ifdef _SAME70_PIOE_INSTANCE_\r
+void PIOE_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#endif /* _SAME70_PIOE_INSTANCE_ */\r
+#ifdef _SAME70_HSMCI_INSTANCE_\r
+void HSMCI_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#endif /* _SAME70_HSMCI_INSTANCE_ */\r
+void TWIHS0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void TWIHS1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void SPI0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void SSC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void TC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void TC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void TC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#ifdef _SAME70_TC1_INSTANCE_\r
+void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#endif /* _SAME70_TC1_INSTANCE_ */\r
+#ifdef _SAME70_TC1_INSTANCE_\r
+void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#endif /* _SAME70_TC1_INSTANCE_ */\r
+#ifdef _SAME70_TC1_INSTANCE_\r
+void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#endif /* _SAME70_TC1_INSTANCE_ */\r
+void AFEC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#ifdef _SAME70_DACC_INSTANCE_\r
+void DACC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#endif /* _SAME70_DACC_INSTANCE_ */\r
+void PWM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void ICM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void ACC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void USBHS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void MCAN0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void MCAN1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void GMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void AFEC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#ifdef _SAME70_TWIHS2_INSTANCE_\r
+void TWIHS2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#endif /* _SAME70_TWIHS2_INSTANCE_ */\r
+void SPI1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void QSPI_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void UART2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void UART3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void UART4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#ifdef _SAME70_TC2_INSTANCE_\r
+void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#endif /* _SAME70_TC2_INSTANCE_ */\r
+#ifdef _SAME70_TC2_INSTANCE_\r
+void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#endif /* _SAME70_TC2_INSTANCE_ */\r
+#ifdef _SAME70_TC2_INSTANCE_\r
+void TC8_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#endif /* _SAME70_TC2_INSTANCE_ */\r
+void TC9_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void TC10_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void TC11_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void AES_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void TRNG_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void XDMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void ISI_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+void PWM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#ifdef _SAME70_SDRAMC_INSTANCE_\r
+void SDRAMC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+#endif /* _SAME70_SDRAMC_INSTANCE_ */\r
+void RSWDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler")));\r
+\r
+/* Exception Table */\r
+__attribute__ ((section(".vectors")))\r
+const DeviceVectors exception_table = {\r
+\r
+ /* Configure Initial Stack Pointer, using linker-generated symbols */\r
+ .pvStack = (void*) (&_estack),\r
+\r
+ .pfnReset_Handler = (void*) Reset_Handler,\r
+ .pfnNMI_Handler = (void*) NMI_Handler,\r
+ .pfnHardFault_Handler = (void*) HardFault_Handler,\r
+ .pfnMemManage_Handler = (void*) MemManage_Handler,\r
+ .pfnBusFault_Handler = (void*) BusFault_Handler,\r
+ .pfnUsageFault_Handler = (void*) UsageFault_Handler,\r
+ .pfnReserved1_Handler = (void*) (0UL), /* Reserved */\r
+ .pfnReserved2_Handler = (void*) (0UL), /* Reserved */\r
+ .pfnReserved3_Handler = (void*) (0UL), /* Reserved */\r
+ .pfnReserved4_Handler = (void*) (0UL), /* Reserved */\r
+ .pfnSVC_Handler = (void*) SVC_Handler,\r
+ .pfnDebugMon_Handler = (void*) DebugMon_Handler,\r
+ .pfnReserved5_Handler = (void*) (0UL), /* Reserved */\r
+ .pfnPendSV_Handler = (void*) PendSV_Handler,\r
+ .pfnSysTick_Handler = (void*) SysTick_Handler,\r
+\r
+ /* Configurable interrupts */\r
+ .pfnSUPC_Handler = (void*) SUPC_Handler, /* 0 Supply Controller */\r
+ .pfnRSTC_Handler = (void*) RSTC_Handler, /* 1 Reset Controller */\r
+ .pfnRTC_Handler = (void*) RTC_Handler, /* 2 Real Time Clock */\r
+ .pfnRTT_Handler = (void*) RTT_Handler, /* 3 Real Time Timer */\r
+ .pfnWDT_Handler = (void*) WDT_Handler, /* 4 Watchdog Timer */\r
+ .pfnPMC_Handler = (void*) PMC_Handler, /* 5 Power Management Controller */\r
+ .pfnEFC_Handler = (void*) EFC_Handler, /* 6 Enhanced Embedded Flash Controller */\r
+ .pfnUART0_Handler = (void*) UART0_Handler, /* 7 UART 0 */\r
+ .pfnUART1_Handler = (void*) UART1_Handler, /* 8 UART 1 */\r
+ .pvReserved9 = (void*) (0UL), /* 9 Reserved */\r
+ .pfnPIOA_Handler = (void*) PIOA_Handler, /* 10 Parallel I/O Controller A */\r
+ .pfnPIOB_Handler = (void*) PIOB_Handler, /* 11 Parallel I/O Controller B */\r
+#ifdef _SAME70_PIOC_INSTANCE_\r
+ .pfnPIOC_Handler = (void*) PIOC_Handler, /* 12 Parallel I/O Controller C */\r
+#else\r
+ .pvReserved12 = (void*) (0UL), /* 12 Reserved */\r
+#endif /* _SAME70_PIOC_INSTANCE_ */\r
+ .pfnUSART0_Handler = (void*) USART0_Handler, /* 13 USART 0 */\r
+ .pfnUSART1_Handler = (void*) USART1_Handler, /* 14 USART 1 */\r
+ .pfnUSART2_Handler = (void*) USART2_Handler, /* 15 USART 2 */\r
+ .pfnPIOD_Handler = (void*) PIOD_Handler, /* 16 Parallel I/O Controller D */\r
+#ifdef _SAME70_PIOE_INSTANCE_\r
+ .pfnPIOE_Handler = (void*) PIOE_Handler, /* 17 Parallel I/O Controller E */\r
+#else\r
+ .pvReserved17 = (void*) (0UL), /* 17 Reserved */\r
+#endif /* _SAME70_PIOE_INSTANCE_ */\r
+#ifdef _SAME70_HSMCI_INSTANCE_\r
+ .pfnHSMCI_Handler = (void*) HSMCI_Handler, /* 18 Multimedia Card Interface */\r
+#else\r
+ .pvReserved18 = (void*) (0UL), /* 18 Reserved */\r
+#endif /* _SAME70_HSMCI_INSTANCE_ */\r
+ .pfnTWIHS0_Handler = (void*) TWIHS0_Handler, /* 19 Two Wire Interface 0 HS */\r
+ .pfnTWIHS1_Handler = (void*) TWIHS1_Handler, /* 20 Two Wire Interface 1 HS */\r
+ .pfnSPI0_Handler = (void*) SPI0_Handler, /* 21 Serial Peripheral Interface 0 */\r
+ .pfnSSC_Handler = (void*) SSC_Handler, /* 22 Synchronous Serial Controller */\r
+ .pfnTC0_Handler = (void*) TC0_Handler, /* 23 Timer/Counter 0 */\r
+ .pfnTC1_Handler = (void*) TC1_Handler, /* 24 Timer/Counter 1 */\r
+ .pfnTC2_Handler = (void*) TC2_Handler, /* 25 Timer/Counter 2 */\r
+#ifdef _SAME70_TC1_INSTANCE_\r
+ .pfnTC3_Handler = (void*) TC3_Handler, /* 26 Timer/Counter 3 */\r
+#else\r
+ .pvReserved26 = (void*) (0UL), /* 26 Reserved */\r
+#endif /* _SAME70_TC1_INSTANCE_ */\r
+#ifdef _SAME70_TC1_INSTANCE_\r
+ .pfnTC4_Handler = (void*) TC4_Handler, /* 27 Timer/Counter 4 */\r
+#else\r
+ .pvReserved27 = (void*) (0UL), /* 27 Reserved */\r
+#endif /* _SAME70_TC1_INSTANCE_ */\r
+#ifdef _SAME70_TC1_INSTANCE_\r
+ .pfnTC5_Handler = (void*) TC5_Handler, /* 28 Timer/Counter 5 */\r
+#else\r
+ .pvReserved28 = (void*) (0UL), /* 28 Reserved */\r
+#endif /* _SAME70_TC1_INSTANCE_ */\r
+ .pfnAFEC0_Handler = (void*) AFEC0_Handler, /* 29 Analog Front End 0 */\r
+#ifdef _SAME70_DACC_INSTANCE_\r
+ .pfnDACC_Handler = (void*) DACC_Handler, /* 30 Digital To Analog Converter */\r
+#else\r
+ .pvReserved30 = (void*) (0UL), /* 30 Reserved */\r
+#endif /* _SAME70_DACC_INSTANCE_ */\r
+ .pfnPWM0_Handler = (void*) PWM0_Handler, /* 31 Pulse Width Modulation 0 */\r
+ .pfnICM_Handler = (void*) ICM_Handler, /* 32 Integrity Check Monitor */\r
+ .pfnACC_Handler = (void*) ACC_Handler, /* 33 Analog Comparator */\r
+ .pfnUSBHS_Handler = (void*) USBHS_Handler, /* 34 USB Host / Device Controller */\r
+ .pfnMCAN0_Handler = (void*) MCAN0_Handler, /* 35 MCAN Controller 0 */\r
+ .pvReserved36 = (void*) (0UL), /* 36 Reserved */\r
+ .pfnMCAN1_Handler = (void*) MCAN1_Handler, /* 37 MCAN Controller 1 */\r
+ .pvReserved38 = (void*) (0UL), /* 38 Reserved */\r
+ .pfnGMAC_Handler = (void*) GMAC_Handler, /* 39 Ethernet MAC */\r
+ .pfnAFEC1_Handler = (void*) AFEC1_Handler, /* 40 Analog Front End 1 */\r
+#ifdef _SAME70_TWIHS2_INSTANCE_\r
+ .pfnTWIHS2_Handler = (void*) TWIHS2_Handler, /* 41 Two Wire Interface 2 HS */\r
+#else\r
+ .pvReserved41 = (void*) (0UL), /* 41 Reserved */\r
+#endif /* _SAME70_TWIHS2_INSTANCE_ */\r
+ .pfnSPI1_Handler = (void*) SPI1_Handler, /* 42 Serial Peripheral Interface 1 */\r
+ .pfnQSPI_Handler = (void*) QSPI_Handler, /* 43 Quad I/O Serial Peripheral Interface */\r
+ .pfnUART2_Handler = (void*) UART2_Handler, /* 44 UART 2 */\r
+ .pfnUART3_Handler = (void*) UART3_Handler, /* 45 UART 3 */\r
+ .pfnUART4_Handler = (void*) UART4_Handler, /* 46 UART 4 */\r
+#ifdef _SAME70_TC2_INSTANCE_\r
+ .pfnTC6_Handler = (void*) TC6_Handler, /* 47 Timer/Counter 6 */\r
+#else\r
+ .pvReserved47 = (void*) (0UL), /* 47 Reserved */\r
+#endif /* _SAME70_TC2_INSTANCE_ */\r
+#ifdef _SAME70_TC2_INSTANCE_\r
+ .pfnTC7_Handler = (void*) TC7_Handler, /* 48 Timer/Counter 7 */\r
+#else\r
+ .pvReserved48 = (void*) (0UL), /* 48 Reserved */\r
+#endif /* _SAME70_TC2_INSTANCE_ */\r
+#ifdef _SAME70_TC2_INSTANCE_\r
+ .pfnTC8_Handler = (void*) TC8_Handler, /* 49 Timer/Counter 8 */\r
+#else\r
+ .pvReserved49 = (void*) (0UL), /* 49 Reserved */\r
+#endif /* _SAME70_TC2_INSTANCE_ */\r
+ .pfnTC9_Handler = (void*) TC9_Handler, /* 50 Timer/Counter 9 */\r
+ .pfnTC10_Handler = (void*) TC10_Handler, /* 51 Timer/Counter 10 */\r
+ .pfnTC11_Handler = (void*) TC11_Handler, /* 52 Timer/Counter 11 */\r
+ .pvReserved53 = (void*) (0UL), /* 53 Reserved */\r
+ .pvReserved54 = (void*) (0UL), /* 54 Reserved */\r
+ .pvReserved55 = (void*) (0UL), /* 55 Reserved */\r
+ .pfnAES_Handler = (void*) AES_Handler, /* 56 AES */\r
+ .pfnTRNG_Handler = (void*) TRNG_Handler, /* 57 True Random Generator */\r
+ .pfnXDMAC_Handler = (void*) XDMAC_Handler, /* 58 DMA */\r
+ .pfnISI_Handler = (void*) ISI_Handler, /* 59 Camera Interface */\r
+ .pfnPWM1_Handler = (void*) PWM1_Handler, /* 60 Pulse Width Modulation 1 */\r
+ .pvReserved61 = (void*) (0UL), /* 61 Reserved */\r
+#ifdef _SAME70_SDRAMC_INSTANCE_\r
+ .pfnSDRAMC_Handler = (void*) SDRAMC_Handler, /* 62 SDRAM Controller */\r
+#else\r
+ .pvReserved62 = (void*) (0UL), /* 62 Reserved */\r
+#endif /* _SAME70_SDRAMC_INSTANCE_ */\r
+ .pfnRSWDT_Handler = (void*) RSWDT_Handler /* 63 Reinforced Secure Watchdog Timer */\r
+};\r
+\r
+/**\r
+ * \brief This is the code that gets called on processor reset.\r
+ * To initialize the device, and call the main() routine.\r
+ */\r
+void Reset_Handler(void)\r
+{\r
+ uint32_t *pSrc, *pDest;\r
+\r
+ /* Initialize the relocate segment */\r
+ pSrc = &_etext;\r
+ pDest = &_srelocate;\r
+\r
+ if (pSrc != pDest) {\r
+ for (; pDest < &_erelocate;) {\r
+ *pDest++ = *pSrc++;\r
+ }\r
+ }\r
+\r
+ /* Clear the zero segment */\r
+ for (pDest = &_szero; pDest < &_ezero;) {\r
+ *pDest++ = 0;\r
+ }\r
+\r
+ /* Set the vector table base address */\r
+ pSrc = (uint32_t *) & _sfixed;\r
+ SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk);\r
+\r
+#if __FPU_USED\r
+ fpu_enable();\r
+#endif\r
+\r
+ /* Initialize the C library */\r
+ __libc_init_array();\r
+\r
+ /* Branch to main function */\r
+ main();\r
+\r
+ /* Infinite loop */\r
+ while (1);\r
+}\r
+\r
+/**\r
+ * \brief Default interrupt handler for unused IRQs.\r
+ */\r
+void Dummy_Handler(void)\r
+{\r
+ while (1) {\r
+ }\r
+}\r