From 96d6da4e252b06dcfdc041e7df23e86161c33007 Mon Sep 17 00:00:00 2001 From: rihab kouki Date: Tue, 28 Jul 2020 11:24:49 +0100 Subject: Official ARM version: v5.6.0 --- docs/Core/html/startup_c_pg.html | 319 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 319 insertions(+) create mode 100644 docs/Core/html/startup_c_pg.html (limited to 'docs/Core/html/startup_c_pg.html') diff --git a/docs/Core/html/startup_c_pg.html b/docs/Core/html/startup_c_pg.html new file mode 100644 index 0000000..c6fa7c9 --- /dev/null +++ b/docs/Core/html/startup_c_pg.html @@ -0,0 +1,319 @@ + + + + + +Startup File startup_<device>.c +CMSIS-Core (Cortex-M): Startup File startup_<device>.c + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
CMSIS-Core (Cortex-M) +  Version 5.3.0 +
+
CMSIS-Core support for Cortex-M processor-based devices
+
+
+ +
+
    + +
+
+ + + +
+
+ +
+
+
+ +
+ + + + +
+ +
+ +
+
+
Startup File startup_<device>.c
+
+
+

The Startup File startup_<device>.c contains:

+
    +
  • The reset handler which is executed after CPU reset and typically calls the SystemInit function.
  • +
  • The setup values for the Main Stack Pointer (MSP).
  • +
  • Exception vectors of the Cortex-M Processor with weak functions that implement default routines.
  • +
  • Interrupt vectors that are device specific with weak functions that implement default routines.
  • +
+

The file exists for each supported toolchain and is the only tool-chain specific CMSIS file.

+

To adapt the file to a new device only the interrupt vector table needs to be extended with the device-specific interrupt handlers. The naming convention for the interrupt handler names are <interrupt_name>_IRQHandler. This table needs to be consistent with IRQn_Type that defines all the IRQ numbers for each interrupt.

+

Example:

+

The following example shows the extension of the interrupt vector table for the LPC1100 device family.

+
/*----------------------------------------------------------------------------
+
Exception / Interrupt Handler
+
*----------------------------------------------------------------------------*/
+
/* Exceptions */
+
void WAKEUP0_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
+
void WAKEUP1_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
+
void WAKEUP2_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
+
// :
+
// :
+
void EINT1_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
+
void EINT2_IRQHandler (void) __attribute__ ((weak, alias("Default_Handler")));
+
// :
+
// :
+
+
/*----------------------------------------------------------------------------
+
Exception / Interrupt Vector table
+
*----------------------------------------------------------------------------*/
+
extern const pFunc __VECTOR_TABLE[240];
+
const pFunc __VECTOR_TABLE[240] __VECTOR_TABLE_ATTRIBUTE = {
+
(pFunc)(&__INITIAL_SP), /* Initial Stack Pointer */
+
Reset_Handler, /* Reset Handler */
+
NMI_Handler, /* -14 NMI Handler */
+
HardFault_Handler, /* -13 Hard Fault Handler */
+
MemManage_Handler, /* -12 MPU Fault Handler */
+
BusFault_Handler, /* -11 Bus Fault Handler */
+
UsageFault_Handler, /* -10 Usage Fault Handler */
+
0, /* Reserved */
+
0, /* Reserved */
+
0, /* Reserved */
+
0, /* Reserved */
+
SVC_Handler, /* -5 SVCall Handler */
+
DebugMon_Handler, /* -4 Debug Monitor Handler */
+
0, /* Reserved */
+
PendSV_Handler, /* -2 PendSV Handler */
+
SysTick_Handler, /* -1 SysTick Handler */
+
+
/* Interrupts */
+
WAKEUP0_IRQHandler, /* 0 Wakeup PIO0.0 */
+
WAKEUP1_IRQHandler, /* 1 Wakeup PIO0.1 */
+
WAKEUP2_IRQHandler, /* 2 Wakeup PIO0.2 */
+
// :
+
// :
+
EINT1_IRQHandler, /* 30 PIO INT1 */
+
EINT2_IRQHandler, /* 31 PIO INT2 */
+
// :
+
// :
+
};
+

+startup_Device.c Template File

+

A compiler agnostic startup_Device.c Template File for an Armv7-M processor like Cortex-M3 is shown below. The C startup file relys on certain compiler specific preprocessor defines specified in CMSIS compiler headers:

+ +
/******************************************************************************
+ * @file     startup_Device.c
+ * @brief    CMSIS-Core(M) Device Startup File for <Device>
+ * @version  V2.0.0
+ * @date     20. May 2019
+ ******************************************************************************/
+/*
+ * Copyright (c) 2009-2019 Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the License); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "<Device>.h"
+
+/*----------------------------------------------------------------------------
+  Exception / Interrupt Handler Function Prototype
+ *----------------------------------------------------------------------------*/
+typedef void( *pFunc )( void );
+
+/*----------------------------------------------------------------------------
+  External References
+ *----------------------------------------------------------------------------*/
+extern uint32_t __INITIAL_SP;
+
+extern __NO_RETURN void __PROGRAM_START(void);
+
+/*----------------------------------------------------------------------------
+  Internal References
+ *----------------------------------------------------------------------------*/
+void __NO_RETURN Default_Handler(void);
+void __NO_RETURN Reset_Handler  (void);
+
+/*----------------------------------------------------------------------------
+  Exception / Interrupt Handler
+ *----------------------------------------------------------------------------*/
+/* Exceptions */
+void NMI_Handler            (void) __attribute__ ((weak, alias("Default_Handler")));
+void HardFault_Handler      (void) __attribute__ ((weak, alias("Default_Handler")));
+void MemManage_Handler      (void) __attribute__ ((weak, alias("Default_Handler")));
+void BusFault_Handler       (void) __attribute__ ((weak, alias("Default_Handler")));
+void UsageFault_Handler     (void) __attribute__ ((weak, alias("Default_Handler")));
+void SVC_Handler            (void) __attribute__ ((weak, alias("Default_Handler")));
+void DebugMon_Handler       (void) __attribute__ ((weak, alias("Default_Handler")));
+void PendSV_Handler         (void) __attribute__ ((weak, alias("Default_Handler")));
+void SysTick_Handler        (void) __attribute__ ((weak, alias("Default_Handler")));
+
+void Interrupt0_Handler     (void) __attribute__ ((weak, alias("Default_Handler")));
+void Interrupt1_Handler     (void) __attribute__ ((weak, alias("Default_Handler")));
+void Interrupt2_Handler     (void) __attribute__ ((weak, alias("Default_Handler")));
+void Interrupt3_Handler     (void) __attribute__ ((weak, alias("Default_Handler")));
+void Interrupt4_Handler     (void) __attribute__ ((weak, alias("Default_Handler")));
+void Interrupt5_Handler     (void) __attribute__ ((weak, alias("Default_Handler")));
+void Interrupt6_Handler     (void) __attribute__ ((weak, alias("Default_Handler")));
+void Interrupt7_Handler     (void) __attribute__ ((weak, alias("Default_Handler")));
+void Interrupt8_Handler     (void) __attribute__ ((weak, alias("Default_Handler")));
+void Interrupt9_Handler     (void) __attribute__ ((weak, alias("Default_Handler")));
+
+
+/*----------------------------------------------------------------------------
+  Exception / Interrupt Vector table
+ *----------------------------------------------------------------------------*/
+extern const pFunc __VECTOR_TABLE[240];
+       const pFunc __VECTOR_TABLE[240] __VECTOR_TABLE_ATTRIBUTE = {
+  (pFunc)(&__INITIAL_SP),                   /*     Initial Stack Pointer */
+  Reset_Handler,                            /*     Reset Handler */
+  NMI_Handler,                              /* -14 NMI Handler */
+  HardFault_Handler,                        /* -13 Hard Fault Handler */
+  MemManage_Handler,                        /* -12 MPU Fault Handler */
+  BusFault_Handler,                         /* -11 Bus Fault Handler */
+  UsageFault_Handler,                       /* -10 Usage Fault Handler */
+  0,                                        /*     Reserved */
+  0,                                        /*     Reserved */
+  0,                                        /*     Reserved */
+  0,                                        /*     Reserved */
+  SVC_Handler,                              /*  -5 SVCall Handler */
+  DebugMon_Handler,                         /*  -4 Debug Monitor Handler */
+  0,                                        /*     Reserved */
+  PendSV_Handler,                           /*  -2 PendSV Handler */
+  SysTick_Handler,                          /*  -1 SysTick Handler */
+
+  /* Interrupts */
+  Interrupt0_Handler,                       /*   0 Interrupt 0 */
+  Interrupt1_Handler,                       /*   1 Interrupt 1 */
+  Interrupt2_Handler,                       /*   2 Interrupt 2 */
+  Interrupt3_Handler,                       /*   3 Interrupt 3 */
+  Interrupt4_Handler,                       /*   4 Interrupt 4 */
+  Interrupt5_Handler,                       /*   5 Interrupt 5 */
+  Interrupt6_Handler,                       /*   6 Interrupt 6 */
+  Interrupt7_Handler,                       /*   7 Interrupt 7 */
+  Interrupt8_Handler,                       /*   8 Interrupt 8 */
+  Interrupt9_Handler                        /*   9 Interrupt 9 */
+                                            /* Interrupts 10 .. 223 are left out */
+};
+
+/*----------------------------------------------------------------------------
+  Reset Handler called on controller reset
+ *----------------------------------------------------------------------------*/
+void Reset_Handler(void)
+{
+  SystemInit();                             /* CMSIS System Initialization */
+  __PROGRAM_START();                        /* Enter PreMain (C library entry point) */
+}
+
+/*----------------------------------------------------------------------------
+  Default Handler for Exceptions / Interrupts
+ *----------------------------------------------------------------------------*/
+void Default_Handler(void)
+{
+  while(1);
+}
+
+
+ + + + -- cgit