📄 startup.lst
字号:
162:startup.S **** PLL_Loop: LDR R3, [R0, #PLLSTAT_OFS]
163:startup.S **** ANDS R3, R3, #PLLSTAT_PLOCK
164:startup.S **** BEQ PLL_Loop
165
166 # Switch to PLL Clock
167:startup.S **** MOV R3, #(PLLCON_PLLE | PLLCON_PLLC)
168:startup.S **** STR R3, [R0, #PLLCON_OFS]
169:startup.S **** STR R1, [R0, #PLLFEED_OFS]
170:startup.S **** STR R2, [R0, #PLLFEED_OFS]
171 #endif
172
173
174 # Setup Stack for each mode
175:startup.S **** LDR R0, =stackTop
176
177 # Enter Undefined Instruction Mode and set its Stack Pointer
178:startup.S **** MSR CPSR_c, #Mode_UND|I_Bit|F_Bit
179:startup.S **** MOV SP, R0
180:startup.S **** SUB R0, R0, #stackSize_UND
181
182 # Enter Abort Mode and set its Stack Pointer
183:startup.S **** MSR CPSR_c, #Mode_ABT|I_Bit|F_Bit
184:startup.S **** MOV SP, R0
185:startup.S **** SUB R0, R0, #stackSize_ABT
186
187 # Enter FIQ Mode and set its Stack Pointer
188:startup.S **** MSR CPSR_c, #Mode_FIQ|I_Bit|F_Bit
189:startup.S **** MOV SP, R0
190:startup.S **** SUB R0, R0, #stackSize_FIQ
191
192 # Enter IRQ Mode and set its Stack Pointer
193:startup.S **** MSR CPSR_c, #Mode_IRQ|I_Bit|F_Bit
194:startup.S **** MOV SP, R0
195:startup.S **** SUB R0, R0, #stackSize_IRQ
196
197 # Enter Supervisor Mode and set its Stack Pointer
198:startup.S **** MSR CPSR_c, #Mode_SVC|I_Bit|F_Bit
199:startup.S **** MOV SP, R0
200:startup.S **** SUB R0, R0, #stackSize_SVC
201
202 # Enter System Mode and set its Stack Pointer
203:startup.S **** MSR CPSR_c, #Mode_SYS|I_Bit|F_Bit
204:startup.S **** MOV SP, R0
205
206 # Setup a default Stack Limit (when compiled with "-mapcs-stack-check")
207:startup.S **** SUB SL, SP, #stackSize_SYS
208
209 #if (MAM_MAP == 2)
210 # Copy exception vectors into SRAM
211 MOV R8, #SRAM_SADDR
212 LDR R9, =Vectors
213 # Move exception vectors (7 vectors + 1 reserved)
214 LDMIA R9!, {R0-R7}
215 STMIA R8!, {R0-R7}
216 # Move addresses belonging to exception vectors (7 addresses)
217 LDMIA R9!, {R0-R6}
ARM GAS /cygdrive/c/DOCUME~1/HOWARD~1/LOCALS~1/Temp/ccwLGWPA.s page 5 218 STMIA R8!, {R0-R6}
219 #endif
220
221 # Call low-level initialization
222:startup.S **** BL lowLevelInit
223
224 # Relocate .data section (Copy from ROM to RAM)
225:startup.S **** LDR R1, =_etext
226:startup.S **** LDR R2, =_data
227:startup.S **** LDR R3, =_edata
228:startup.S **** LoopRel: CMP R2, R3
229:startup.S **** LDRLO R0, [R1], #4
230:startup.S **** STRLO R0, [R2], #4
231:startup.S **** BLO LoopRel
232
233 # Clear .bss section (Zero init)
234:startup.S **** MOV R0, #0
235:startup.S **** LDR R1, =__bss_start__
236:startup.S **** LDR R2, =__bss_end__
237:startup.S **** LoopZI: CMP R1, R2
238:startup.S **** STRLO R0, [R1], #4
239:startup.S **** BLO LoopZI
240
241 # Initialize exception vectors
242:startup.S **** BL exceptionHandlerInit
243
244 # Enter the C code
245 Jump_To_Main:
246:startup.S **** ADR LR, __Return_from_Main
247:startup.S **** MOV R0, #0
248:startup.S **** MOV R1, #0
249:startup.S **** LDR R2, =main
250:startup.S **** BX R2
251
252 __Return_from_Main:
253:startup.S **** B __Return_from_Main
254
255 .size _startup, . - _startup
256 .endfunc
257
258
259 #
260 # Reserve memory for exception handlers
261 #
262 0188 24000040 .struct SRAM_SADDR + 0x20
262 28000040 262 2C000040 262 30000040 262 38000040 ARM GAS /cygdrive/c/DOCUME~1/HOWARD~1/LOCALS~1/Temp/ccwLGWPA.s page 6DEFINED SYMBOLS *ABS*:00000000 startup.S *ABS*:00000000 config.h *ABS*:00000000 startup.S *ABS*:00000000 <command line> *ABS*:00000000 <built-in> *ABS*:00000000 /cygdrive/c/tmp/basic/startup// *ABS*:00000000 startup.S startup.S:9 *ABS*:00000010 Mode_USR startup.S:10 *ABS*:00000011 Mode_FIQ startup.S:11 *ABS*:00000012 Mode_IRQ startup.S:12 *ABS*:00000013 Mode_SVC startup.S:13 *ABS*:00000017 Mode_ABT startup.S:14 *ABS*:0000001b Mode_UND startup.S:15 *ABS*:0000001f Mode_SYS startup.S:17 *ABS*:00000080 I_Bit startup.S:18 *ABS*:00000040 F_Bit startup.S:20 *ABS*:40000000 sram_bottom startup.S:21 *ABS*:4000ffc0 sram_top startup.S:22 *ABS*:4000ffc0 stackTop startup.S:38 *ABS*:e01fc080 PLL_BASE startup.S:39 *ABS*:00000000 PLLCON_OFS startup.S:40 *ABS*:00000004 PLLCFG_OFS startup.S:41 *ABS*:00000008 PLLSTAT_OFS startup.S:42 *ABS*:0000000c PLLFEED_OFS startup.S:43 *ABS*:00000001 PLLCON_PLLE startup.S:44 *ABS*:00000002 PLLCON_PLLC startup.S:45 *ABS*:00000400 PLLSTAT_PLOCK startup.S:59 .text:00000000 $a startup.S:68 .text:00000000 _startup startup.S:73 .text:00000000 Vectors startup.S:74 .text:00000000 _vectors startup.S:139 .text:00000098 handleReset startup.S:91 .text:00000020 HandlerUndef startup.S:92 .text:00000038 HandlerSWI startup.S:93 .text:00000050 HandlerPabort startup.S:94 .text:00000068 HandlerDabort startup.S:98 .text:00000080 HandlerFIQ *ABS*:40000024 HandleUndef *ABS*:40000028 HandleSWI *ABS*:4000002c HandlePabort *ABS*:40000030 HandleDabort *ABS*:40000038 HandleFIQ startup.S:162 .text:000000cc PLL_Loop startup.S:228 .text:00000144 LoopRel startup.S:237 .text:00000160 LoopZI startup.S:245 .text:00000170 Jump_To_Main startup.S:252 .text:00000184 __Return_from_Main *ABS*:40000020 HandleReset *ABS*:40000034 HandleIRQ *ABS*:4000f9c0 UserStack *ABS*:4000fdc0 SYSStack *ABS*:4000fe00 SVCStack *ABS*:4000fe40 UndefStack *ABS*:4000fe80 AbortStack *ABS*:4000ff80 IRQStack *ABS*:4000ffc0 FIQStackARM GAS /cygdrive/c/DOCUME~1/HOWARD~1/LOCALS~1/Temp/ccwLGWPA.s page 7 startup.S:262 .text:00000188 $dUNDEFINED SYMBOLSlowLevelInit_etext_data_edata__bss_start____bss_end__exceptionHandlerInitmain
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -