• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2022 FuZhou Lockzhiner Electronic Co., Ltd. All rights reserved.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16/*
17;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------
18*/
19
20  .syntax  unified
21  .arch    armv7e-m
22
23  .extern  _shdf_text
24  .extern  _hdf_text_start
25  .extern  _hdf_text_end
26
27  .extern  _sdata
28  .extern  _data_start
29  .extern  _data_end
30
31  .extern _bss_start
32  .extern _bss_end
33
34  .extern  IntDefaultHandler
35  .extern  SystemInit
36  .extern  Main
37
38  .section .isr_vector
39  .align   2
40  .globl   __Vectors
41  .globl   __Vectors_End
42  .globl   __Vectors_Size
43__Vectors:
44  .long    _StackTop                         /*     Top of Stack */
45  .long    Reset_Handler                      /*     Reset Handler */
46  .long    NMI_Handler                        /* -14 NMI Handler */
47  .long    HardFault_Handler                  /* -13 Hard Fault Handler */
48  .long    MemManage_Handler                  /* -12 MPU Fault Handler */
49  .long    BusFault_Handler                   /* -11 Bus Fault Handler */
50  .long    UsageFault_Handler                 /* -10 Usage Fault Handler */
51  .long    0                                  /*     Reserved */
52  .long    0                                  /*     Reserved */
53  .long    0                                  /*     Reserved */
54  .long    0                                  /*     Reserved */
55  .long    SVC_Handler                        /*  -5 SVCall Handler */
56  .long    DebugMon_Handler                   /*  -4 Debug Monitor Handler */
57  .long    0                                  /*     Reserved */
58  .long    PendSV_Handler                     /*  -2 PendSV Handler */
59  .long    SysTick_Handler                    /*  -1 SysTick Handler */
60
61  /* Interrupts */
62  .space   (64 * 4)                          /* Interrupts 0 .. 63 are left out */
63__Vectors_End:
64  .equ     __Vectors_Size, __Vectors_End - __Vectors
65  .size    __Vectors, . - __Vectors
66
67  .thumb
68  .section .text
69  .align   2
70
71  .thumb_func
72  .type    Reset_Handler, %function
73  .globl   Reset_Handler
74  .fnstart
75Reset_Handler:
76  ldr   sp, =_StackTop      /* set stack pointer */
77
78/* Single HDF_TEXT section scheme.
79 *
80 * All addresses must be aligned to 4 bytes boundary.
81 */
82  ldr      r1, =_shdf_text
83  ldr      r2, =_hdf_text_start
84  ldr      r3, =_hdf_text_end
85
86.L_loop_hdf:
87  cmp      r2, r3
88  ittt     lt
89  ldrlt    r0, [r1], #4
90  strlt    r0, [r2], #4
91  blt      .L_loop_hdf
92
93/* Single DATA section scheme.
94 *
95 * All addresses must be aligned to 4 bytes boundary.
96 */
97  ldr      r1, =_sdata
98  ldr      r2, =_data_start
99  ldr      r3, =_data_end
100
101.L_loop_data:
102  cmp      r2, r3
103  ittt     lt
104  ldrlt    r0, [r1], #4
105  strlt    r0, [r2], #4
106  blt      .L_loop_data
107
108/* Single BSS section scheme.
109 *
110 * Both addresses must be aligned to 4 bytes boundary.
111 */
112  ldr      r1, =_bss_start
113  ldr      r2, =_bss_end
114
115  movs     r0, 0
116.L_loop_bss:
117  cmp      r1, r2
118  itt      lt
119  strlt    r0, [r1], #4
120  blt      .L_loop_bss
121
122  bl       SystemInit
123  bl       Main
124
125  .fnend
126  .size    Reset_Handler, . - Reset_Handler
127
128
129  .thumb_func
130  .type    Default_Handler, %function
131  .weak    Default_Handler
132  .fnstart
133Default_Handler:
134  b        .
135  .fnend
136  .size    Default_Handler, . - Default_Handler
137
138/* Macro to define default exception/interrupt handlers.
139 * Default handler are weak symbols with an endless loop.
140 * They can be overwritten by real handlers.
141 */
142  .macro   Set_Default_Handler  Handler_Name
143  .weak    \Handler_Name
144  .set     \Handler_Name, Default_Handler
145  .endm
146
147/* Default exception/interrupt handler */
148
149   Set_Default_Handler  NMI_Handler
150   Set_Default_Handler  HardFault_Handler
151   Set_Default_Handler  MemManage_Handler
152   Set_Default_Handler  BusFault_Handler
153   Set_Default_Handler  UsageFault_Handler
154   Set_Default_Handler  SVC_Handler
155   Set_Default_Handler  DebugMon_Handler
156   Set_Default_Handler  PendSV_Handler
157   Set_Default_Handler  SysTick_Handler
158
159   .end
160