📄 samboot.lst
字号:
ARM Macro Assembler Page 1
1 00000000 ;/******************************************************
********************************************************
**/
2 00000000 ;/********************* Startup code for AT91SAM7S *****
********************************************************
**/
3 00000000 ;/ hotislandn@hotmail.com
/
4 00000000 ;/ WWW.MCUZONE.COM
5 00000000 ;/
6 00000000 ;/ Rev 0.1
/
7 00000000 ;/******************************************************
********************************************************
**/
8 00000000
9 00000000 00000010
MODUSR EQU 0x10
10 00000000 0000001F
MODSYS EQU 0x1F
11 00000000 00000013
MODSVC EQU 0x13
12 00000000 00000017
MODABT EQU 0x17
13 00000000 0000001B
MODUDF EQU 0x1B
14 00000000 00000012
MODIRQ EQU 0x12
15 00000000 00000011
MODFIQ EQU 0x11
16 00000000
17 00000000 00000080
IRQBIT EQU 0x80
18 00000000 00000040
FIQBIT EQU 0x40
19 00000000
20 00000000 00204000
RAMEND EQU 0x00204000 ; S64 : 16KB RAM
21 00000000
22 00000000 00000100
VECTSIZE
EQU 0x100 ; 驻留RAM的向量区域
定为256字节
23 00000000
24 00000000 00000008
UsrStkSz
EQU 8 ; size of USR sta
ck
25 00000000 00000080
SysStkSz
EQU 128 ; size of SYS sta
ck
26 00000000 00000008
SvcStkSz
EQU 8 ; size of SVC sta
ck
27 00000000 00000008
UdfStkSz
ARM Macro Assembler Page 2
EQU 8 ; size of UDF sta
ck
28 00000000 00000008
AbtStkSz
EQU 8 ; size of ABT sta
ck
29 00000000 00000080
IrqStkSz
EQU 128 ; size of IRQ sta
ck
30 00000000 00000010
FiqStkSz
EQU 16 ; size of FIQ sta
ck
31 00000000
32 00000000 PRESERVE8
33 00000000 AREA START, CODE, READONLY
34 00000000 CODE32
35 00000000
36 00000000 ENTRY
37 00000000 EXPORT RESET
38 00000000 RESET
39 00000000 EA000025 B SYSINIT ; Reset
40 00000004 EA000020 B UDFHANDLER ; UNDEFINED
41 00000008 EA000020 B SWIHANDLER ; SWI
42 0000000C EA000020 B PABTHANDLER ; PREFETCH ABORT
43 00000010 EA000020 B DABTHANDLER ; DATA ABORT
44 00000014 EAFFFFFE B . ; RESERVED
45 00000018 E51FFF20 LDR PC,[PC,#-0xF20]
46 0000001C EAFFFFFE B . ; ADD FIQ CODE HERE
47 00000020
48 00000020 ;-------------------------------------------------------
--------------------------------------------------
49 00000020 ;******************** 向量模式IRQ处理代码 **************
**************************************************
50 00000020 ;-------------------------------------------------------
--------------------------------------------------
51 00000020
52 00000020 IMPORT OSIntNesting
53 00000020 IMPORT OSIntExit
54 00000020
55 00000020 IMPORT SAMIsr
56 00000020 EXPORT VECTORED_IRQ_HANDLER
57 00000020 VECTORED_IRQ_HANDLER
58 00000020 ;-------------------------------------------------------
--------------------------------------------------
59 00000020 ;******************** 运行于IRQ模式的代码 **************
**************************************************
60 00000020 ;-------------------------------------------------------
--------------------------------------------------
61 00000020 E90D001F STMFD sp,{r0-r4} ; 不修改SP_IRQ的值
62 00000024 E24D0014 SUB r0,sp,#20 ; R0指向栈底
63 00000028 E24E1004 SUB r1,lr,#4 ; R1=返回地址
64 0000002C E14F2000 MRS r2,SPSR ; R2=SPSR
65 00000030
66 00000030 E59F3158 LDR r3,=OSIntNesting
; OSIntNesting++
67 00000034 E5D34000 LDRB r4,[r3]
ARM Macro Assembler Page 3
68 00000038 E2844001 ADD r4,r4,#1
69 0000003C E5C34000 STRB r4,[r3]
70 00000040
71 00000040 E32FF09F MSR CPSR_cxsf,#0x9f ; Sys Mode , I
RQ disable ,FIQ ena
ble
72 00000044 ; 关闭IRQ,保存被中断任务的上下文到任务堆栈,SP_SYS
73 00000044 ;-------------------------------------------------------
--------------------------------------------------
74 00000044 ;******************** 其余代码运行于SYS模式 ************
**************************************************
75 00000044 ;-------------------------------------------------------
--------------------------------------------------
76 00000044 E92D0002 STMFD sp!,{r1} ; PC
77 00000048 E92D4000 STMFD sp!,{lr} ; lr
78 0000004C
79 0000004C E92D1FE0 STMFD sp!,{r5-r12} ; r12---r5
80 00000050 E8B003E0 LDMIA r0!,{r5-r9} ; 取得保存在IRQ堆
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -