📄 startup.lst
字号:
240
241
242
243
00080000 244 AREA STARTUPCODE, CODE, AT 0x00080000
245 PUBLIC __startup
246
247 EXTERN CODE32 (?C?INIT)
248
249 __startup PROC CODE32
250
251
252
253 EXTERN CODE32 (Undef_Handler?A)
254 EXTERN CODE32 (SWI_Handler?A)
255 EXTERN CODE32 (PAbt_Handler?A)
256 EXTERN CODE32 (DAbt_Handler?A)
AA MACRO ASSEMBLER RSTARTUP 16/05/06 14:55:44 PAGE 5
257 EXTERN CODE32 (IRQ_Handler?A)
258 EXTERN CODE32 (FIQ_Handler?A)
259
260
261
262
263
00080000 E59FF000 264 Vectors: LDR PC,Reset_Addr
00080004 E59FF000 265 LDR PC,Undef_Addr
00080008 E59FF000 266 LDR PC,SWI_Addr
0008000C E59FF000 267 LDR PC,PAbt_Addr
00080010 E59FF000 268 LDR PC,DAbt_Addr
00080014 E1A00000 269 NOP
00080018 E59FF000 270 LDR PC,IRQ_Addr
0008001C E59FF000 271 LDR PC,FIQ_Addr
272
00080020 00080040 R 273 Reset_Addr: DD Reset_Handler
00080024 00000000 E 274 Undef_Addr: DD Undef_Handler?A
00080028 00000000 E 275 SWI_Addr: DD SWI_Handler?A
0008002C 00000000 E 276 PAbt_Addr: DD PAbt_Handler?A
00080030 00000000 E 277 DAbt_Addr: DD DAbt_Handler?A
00080034 00000000 278 DD 0
00080038 00000000 E 279 IRQ_Addr: DD IRQ_Handler?A
0008003C 00000000 E 280 FIQ_Addr: DD FIQ_Handler?A
281
282
283
284
00080040 285 Reset_Handler:
286
287
288
289 IF (PLL_SETUP != 0)
LDR R0, =MMR_BASE
MOV R1, #0x01
STR R1, [R0,#POWKEY1_OFFSET]
MOV R1, #PLLCFG_Val
STR R1, [R0,#POWCON_OFFSET]
MOV R1, #0xF4
STR R1, [R0,#POWKEY2_OFFSET]
ENDIF ; PLL_SETUP
298
299
300
301 IF (GPIO_SETUP != 0)
ADR R10, GPIO_CFG
LDMIA R10, {R0-R5}
STMIA R0, {R1-R5}
B GPIO_END
GPIO_CFG: DD GPIOBASE
DD GP0CON_Val
DD GP1CON_Val
DD GP2CON_Val
DD GP3CON_Val
DD GP4CON_Val
GPIO_END:
ENDIF ; GPIO_SETUP
317
318
319
320 IF (XM_SETUP != 0)
ADR R10, XM_CFG
AA MACRO ASSEMBLER RSTARTUP 16/05/06 14:55:44 PAGE 6
LDMIA R10, {R0-R9}
STR R1, [R0],#0x10
STMIA R0, {R2-R9}
B XM_END
XM_CFG: DD XMBASE
DD XMCFG_Val
DD XM0CON_Val
DD XM1CON_Val
DD XM2CON_Val
DD XM3CON_Val
DD XM0PAR_Val
DD XM1PAR_Val
DD XM2PAR_Val
DD XM3PAR_Val
XM_END:
ENDIF ; XM_SETUP
341
342
343
344
345
346 $if (RAM_INTVEC)
ADR R8, Vectors ; Source
LDR R9, =0x00010000 ; Destination
LDMIA R8!, {R0-R7} ; Load Vectors
STMIA R9!, {R0-R7} ; Store Vectors
LDMIA R8!, {R0-R7} ; Load Handler Addresses
STMIA R9!, {R0-R7} ; Store Handler Addresses
LDR R0, =MMR_BASE
MOV R1, #1
STR R1, [R0,#PREMAP_OFFSET]
STR R1, [R0,#REMAP_OFFSET]
$endif
358
359
360
00080040 E59F0034 361 LDR R0, =Top_Stack
362
363
00080044 E321F0DB 364 MSR CPSR_c, #Mode_UND|I_Bit|F_Bit
00080048 E1A0D000 365 MOV SP, R0
0008004C E2400004 366 SUB R0, R0, #UND_Stack_Size
367
368
00080050 E321F0D7 369 MSR CPSR_c, #Mode_ABT|I_Bit|F_Bit
00080054 E1A0D000 370 MOV SP, R0
00080058 E2400004 371 SUB R0, R0, #ABT_Stack_Size
372
373
0008005C E321F0D1 374 MSR CPSR_c, #Mode_FIQ|I_Bit|F_Bit
00080060 E1A0D000 375 MOV SP, R0
00080064 E2400080 376 SUB R0, R0, #FIQ_Stack_Size
377
378
00080068 E321F0D2 379 MSR CPSR_c, #Mode_IRQ|I_Bit|F_Bit
0008006C E1A0D000 380 MOV SP, R0
00080070 E2400080 381 SUB R0, R0, #IRQ_Stack_Size
382
383
00080074 E321F0D3 384 MSR CPSR_c, #Mode_SVC|I_Bit|F_Bit
00080078 E1A0D000 385 MOV SP, R0
0008007C E2400040 386 SUB R0, R0, #SVC_Stack_Size
387
388
AA MACRO ASSEMBLER RSTARTUP 16/05/06 14:55:44 PAGE 7
00080080 E321F010 389 MSR CPSR_c, #Mode_USR
00080084 E1A0D000 390 MOV SP, R0
391
392
00080088 E59F0034 393 LDR R0,=?C?INIT
0008008C E3100001 394 TST R0,#1 ; Bit-0 set: main is Thumb
00080090 E3AFE034 395 LDREQ LR,=exit?A ; ARM Mode
00080094 E3AFE034 396 LDRNE LR,=exit?T ; Thumb Mode
00080098 E12FFF10 397 BX R0
398 ENDP
399
400 PUBLIC exit?A
401 exit?A PROC CODE32
0008009C EAFFFFFE 402 B exit?A
403 ENDP
404
405 PUBLIC exit?T
406 exit?T PROC CODE16
000800A0 E7FE 407 B exit?T
408 ENDP
409
410 END
AA MACRO ASSEMBLER RSTARTUP 16/05/06 14:55:44 PAGE 8
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
?C?INIT. . . . . . C ADDR ------- EXT
ABT_Stack_Size . . -- ---- 0004H A
DAbt_Addr. . . . . C ADDR 080030H R SEG=STARTUPCODE
DAbt_Handler?A . . C ADDR ------- EXT
FIQ_Addr . . . . . C ADDR 08003CH R SEG=STARTUPCODE
FIQ_Handler?A. . . C ADDR ------- EXT
FIQ_Stack_Size . . -- ---- 0080H A
F_Bit. . . . . . . -- ---- 0040H A
GP0CON_Val . . . . -- ---- 0000H A
GP1CON_Val . . . . -- ---- 0000H A
GP2CON_Val . . . . -- ---- 0000H A
GP3CON_Val . . . . -- ---- 0000H A
GP4CON_Val . . . . -- ---- 0000H A
GPIOBASE . . . . . -- ---- FFFFF400H A
GPIO_SETUP . . . . -- ---- 0000H A
IRQ_Addr . . . . . C ADDR 080038H R SEG=STARTUPCODE
IRQ_Handler?A. . . C ADDR ------- EXT
IRQ_Stack_Size . . -- ---- 0080H A
I_Bit. . . . . . . -- ---- 0080H A
MMR_BASE . . . . . -- ---- FFFF0000H A
Mode_ABT . . . . . -- ---- 0017H A
Mode_FIQ . . . . . -- ---- 0011H A
Mode_IRQ . . . . . -- ---- 0012H A
Mode_SVC . . . . . -- ---- 0013H A
Mode_SYS . . . . . -- ---- 001FH A
Mode_UND . . . . . -- ---- 001BH A
Mode_USR . . . . . -- ---- 0010H A
PAbt_Addr. . . . . C ADDR 08002CH R SEG=STARTUPCODE
PAbt_Handler?A . . C ADDR ------- EXT
PLLCFG_Val . . . . -- ---- 0001H A
PLL_SETUP. . . . . -- ---- 0000H A
POWCON_OFFSET. . . -- ---- 0408H A
POWKEY1_OFFSET . . -- ---- 0404H A
POWKEY2_OFFSET . . -- ---- 040CH A
PREMAP_OFFSET. . . -- ---- 0224H A
REMAP_OFFSET . . . -- ---- 0220H A
Reset_Addr . . . . C ADDR 080020H R SEG=STARTUPCODE
Reset_Handler. . . C ADDR 080040H R SEG=STARTUPCODE
STACK. . . . . . . D SEG 0248H REL=UNIT, ALN=BYTE
STARTUPCODE. . . . C SEG 0800A2H REL=ABS, ALN=BYTE
SVC_Stack_Size . . -- ---- 0040H A
SWI_Addr . . . . . C ADDR 080028H R SEG=STARTUPCODE
SWI_Handler?A. . . C ADDR ------- EXT
Top_Stack. . . . . D ADDR 0248H R SEG=STACK
UND_Stack_Size . . -- ---- 0004H A
USR_Stack_Size . . -- ---- 0100H A
Undef_Addr . . . . C ADDR 080024H R SEG=STARTUPCODE
Undef_Handler?A. . C ADDR ------- EXT
Vectors. . . . . . C ADDR 080000H R SEG=STARTUPCODE
XM0CON_Val . . . . -- ---- 0000H A
XM0PAR_Val . . . . -- ---- 70FFH A
XM1CON_Val . . . . -- ---- 0000H A
XM1PAR_Val . . . . -- ---- 70FFH A
XM2CON_Val . . . . -- ---- 0000H A
XM2PAR_Val . . . . -- ---- 70FFH A
XM3CON_Val . . . . -- ---- 0000H A
XM3PAR_Val . . . . -- ---- 70FFH A
XMBASE . . . . . . -- ---- FFFFF000H A
XMCFG_Val. . . . . -- ---- 0001H A
XM_SETUP . . . . . -- ---- 0000H A
AA MACRO ASSEMBLER RSTARTUP 16/05/06 14:55:44 PAGE 9
__startup. . . . . C ADDR 080000H R SEG=STARTUPCODE
exit?A . . . . . . C ADDR 08009CH R SEG=STARTUPCODE
exit?T . . . . . . C ADDR 0800A0H R SEG=STARTUPCODE
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S).
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -