⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 samboot.lst

📁 BK7S64开发板的uC/OS-II移植源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:



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  stack
   25 00000000 00000080 
                       SysStkSz
                               EQU     128         ; size of  SYS  stack
   26 00000000 00000008 
                       SvcStkSz
                               EQU     8           ; size of  SVC  stack
   27 00000000 00000008 
                       UdfStkSz
                               EQU     8           ; size of  UDF  stack
   28 00000000 00000008 
                       AbtStkSz



ARM Macro Assembler    Page 2 


                               EQU     8           ; size of  ABT  stack
   29 00000000 00000080 
                       IrqStkSz
                               EQU     128         ; size of  IRQ  stack
   30 00000000 00000010 
                       FiqStkSz
                               EQU     16          ; size of  FIQ  stack
   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 EAFFFFFE        B       SYSINIT     ; Reset
   40 00000004 EAFFFFFE        B       UDFHANDLER  ; UNDEFINED
   41 00000008 EAFFFFFE        B       SWIHANDLER  ; SWI
   42 0000000C EAFFFFFE        B       PABTHANDLER ; PREFETCH ABORT
   43 00000010 EAFFFFFE        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]
   68 00000038 E2844001        ADD     r4,r4,#1
   69 0000003C E5C34000        STRB    r4,[r3]
   70 00000040         
   71 00000040 E32FF09F        MSR     CPSR_cxsf,#0x9f ;  Sys Mode , IRQ disabl
                                                   e ,FIQ enable
   72 00000044         ;  关闭IRQ,保存被中断任务的上下文到任务堆栈,SP_SYS
   73 00000044         ;-------------------------------------------------------
                       --------------------------------------------------
   74 00000044         ;******************** 其余代码运行于SYS模式 ************



ARM Macro Assembler    Page 3 


                       **************************************************
   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堆栈中的R0--
                                                   -R4
   81 00000054 E92D03E0        STMFD   sp!,{r5-r9} ;  r4---r0
   82 00000058 E92D0004        STMFD   sp!,{r2}    ;  cpsr
   83 0000005C E92D0004        STMFD   sp!,{r2}    ;  spsr
   84 00000060         
   85 00000060 E59F012C        LDR     r0,=0xFFFFF108 ;  AT91C_AIC_ISR
   86 00000064 E5900000        LDR     r0,[r0]
   87 00000068         ;LDR    lr,=ISR_RETURN1
   88 00000068 E28FE004        ADD     lr,PC,#4
   89 0000006C         
   90 0000006C E32FF01F        MSR     CPSR_cxsf,#0x1f ;  Sys Mode , IRQ enable
                                                    ,FIQ enable
   91 00000070         
   92 00000070 E59FF120        LDR     PC,=SAMIsr
   93 00000074         ;BL     SAMIsr 
   94 00000074         
   95 00000074         ISR_RETURN1
   96 00000074         ;LDR    lr,=ISR_RETURN2
   97 00000074 E1A0E00F        MOV     lr,PC
   98 00000078 E59FF11C        LDR     PC,=OSIntExit
   99 0000007C         ;BL     OSIntExit
  100 0000007C         
  101 0000007C         ISR_RETURN2
  102 0000007C E8BD0001        LDMFD   sp!,{r0}    ;  spsr
  103 00000080 E8BD0001        LDMFD   sp!,{r0}    ;  cpsr
  104 00000084         
  105 00000084 E12FF000        MSR     CPSR_cxsf,r0
  106 00000088 E8BDDFFF        LDMFD   sp!,{r0-r12,lr,pc} ;  任务返回  
  107 0000008C         
  108 0000008C         ;-------------------------------------------------------
                       --------------------------------------------------
  109 0000008C         ;******************** reentrant 代码 *******************
                       **************************************************
  110 0000008C         ;-------------------------------------------------------
                       --------------------------------------------------      
                            
  111 0000008C         
  112 0000008C         ;-------------------------------------------------------
                       --------------------------------------------------
  113 0000008C         ;******************** 其余的处理器异常 *****************
                       **************************************************
  114 0000008C         ;-------------------------------------------------------
                       --------------------------------------------------
  115 0000008C         
  116 0000008C         UDFHANDLER
  117 0000008C EAFFFFFE        B       .
  118 00000090         
  119 00000090         SWIHANDLER
  120 00000090 EAFFFFFE        B       .
  121 00000094         



ARM Macro Assembler    Page 4 


  122 00000094         PABTHANDLER
  123 00000094 EAFFFFFE        B       .
  124 00000098         
  125 00000098         DABTHANDLER
  126 00000098 EAFFFFFE        B       .
  127 0000009C         
  128 0000009C         
  129 0000009C         ;/******************************************************
                       ********************************************************
                       **/
  130 0000009C         SYSINIT
  131 0000009C         ;设置各模式堆栈,关闭IRQ,FIQ
  132 0000009C E10F0000        MRS     R0,CPSR
  133 000000A0 E3C0001F        BIC     R0,R0,#0x1F
  134 000000A4         
  135 000000A4 E3A02981        MOV     R2,#RAMEND
  136 000000A8 E38010D3        ORR     R1,R0,#(MODSVC :OR: IRQBIT :OR: FIQBIT)
  137 000000AC E12FF001        MSR     cpsr_cxsf,R1 ; ENTER SVC MODE
  138 000000B0 E1A0D002        MOV     sp,R2
  139 000000B4 E2422008        SUB     R2,R2,#SvcStkSz
  140 000000B8         
  141 000000B8 E38010D1        ORR     R1,R0,#(MODFIQ :OR: IRQBIT :OR: FIQBIT)
  142 000000BC E12FF001        MSR     CPSR_cxsf,R1 ; ENTER FIQ MODE
  143 000000C0 E1A0D002        MOV     sp,R2
  144 000000C4 E2422010        SUB     R2,R2,#FiqStkSz
  145 000000C8         
  146 000000C8 E38010D2        ORR     R1,R0,#(MODIRQ :OR: IRQBIT :OR: FIQBIT)
  147 000000CC E12FF001        MSR     CPSR_cxsf,R1 ; ENTER IRQ MODE
  148 000000D0 E1A0D002        MOV     sp,R2
  149 000000D4 E2422080        SUB     R2,R2,#IrqStkSz
  150 000000D8         
  151 000000D8 E38010DB        ORR     R1,R0,#(MODUDF :OR: IRQBIT :OR: FIQBIT)
  152 000000DC E12FF001        MSR     CPSR_cxsf,R1 ; ENTER UDF MODE
  153 000000E0 E1A0D002        MOV     sp,R2
  154 000000E4 E2422008        SUB     R2,R2,#UdfStkSz
  155 000000E8         
  156 000000E8 E38010D7        ORR     R1,R0,#(MODABT :OR: IRQBIT :OR: FIQBIT)
  157 000000EC E12FF001        MSR     CPSR_cxsf,R1 ; ENTER ABT MODE
  158 000000F0 E1A0D002        MOV     sp,R2
  159 000000F4 E2422008        SUB     R2,R2,#AbtStkSz
  160 000000F8         
  161 000000F8         ;ORR    R1,R0,#(MODUSR :OR: IRQBIT :OR: FIQBIT)
  162 000000F8         ;MSR    CPSR_cxsf,R1    ; ENTER USR MODE
  163 000000F8         ;MOV    sp,R2
  164 000000F8         ;SUB    R2,R2,#UsrStkSz
  165 000000F8         
  166 000000F8 E38010DF        ORR     R1,R0,#(MODSYS :OR: IRQBIT :OR: FIQBIT)
  167 000000FC E12FF001        MSR     CPSR_cxsf,R1 ; ENTER SYS MODE
  168 00000100 E1A0D002        MOV     sp,R2       ; 于SYS模式运行代码       
  169 00000104         
  170 00000104         ;/******************************************************
                       ********************************************************
                       **/
  171 00000104         ; 复位后有16sec的时间禁止WDT
  172 00000104         
  173 00000104         ;/******************************************************
                       ********************************************************
                       **/
  174 00000104                 IMPORT  |Image$$RO$$Base|



ARM Macro Assembler    Page 5 


  175 00000104                 IMPORT  |Image$$RO$$Limit|
  176 00000104                 IMPORT  |Image$$RW$$Base|
  177 00000104                 IMPORT  |Image$$RW$$Limit|
  178 00000104                 IMPORT  |Image$$ZI$$Base|
  179 00000104                 IMPORT  |Image$$ZI$$Limit|
  180 00000104         
  181 00000104         ; 复制向量          
  182 00000104         COPY_VECT_TO_RAM
  183 00000104 E59F0094        LDR     R0,=|Image$$RO$$Base|
  184 00000108 E59F1094        LDR     R1,=SYSINIT
  185 0000010C E3A02602        LDR     R2,=0x200000 ; RAM START  
  186 00000110         0
  187 00000110 E1500001        CMP     R0,R1
  188 00000114 34903004        LDRLO   R3,[R0],#4
  189 00000118 34823004        STRLO   R3,[R2],#4
  190 0000011C 3AFFFFFB        BLO     %B0
  191 00000120         ;/******************************************************
                       ********************************************************
                       **/
  192 00000120         ; RW , ZI 初始化
  193 00000120         
  194 00000120 E59F0080        LDR     R0,=|Image$$RO$$Limit|
  195 00000124 E59F1080        LDR     R1,=|Image$$RW$$Base|
  196 00000128 E59F2080        LDR     R2,=|Image$$ZI$$Base|
  197 0000012C         1
  198 0000012C E1510002        CMP     R1,R2
  199 00000130 34903004        LDRLO   R3,[R0],#4
  200 00000134 34813004        STRLO   R3,[R1],#4
  201 00000138 3AFFFFFB        BLO     %B1
  202 0000013C         
  203 0000013C E3A03000        MOV     R3,#0
  204 00000140 E59F106C        LDR     R1,=|Image$$ZI$$Limit|
  205 00000144         2
  206 00000144 E1520001        CMP     R2,R1
  207 00000148 34823004        STRLO   R3,[R2],#4
  208 0000014C 3AFFFFFC        BLO     %B2
  209 00000150         
  210 00000150         ;/******************************************************
                       ********************************************************
                       **/
  211 00000150         ; 如必要,复制代码到RAM中运行
  212 00000150         ; 适用于代码小,但对速度要求高的场合
  213 00000150         COPY_BEGIN
  214 00000150 E3A00602        LDR     R0,=0x200000
  215 00000154 E59F105C        LDR     R1,=RESET   ; =|Image$$RO$$Base|
  216 00000158 E1510000        CMP     R1,R0       ; 
  217 0000015C 3AFFFFFE        BLO     COPY_END    ; RO不在RAM中
  218 00000160         
  219 00000160 E24F0F5A        ADR     R0,RESET
  220 00000164 E28F201C        ADR     R2,COPY_END
  221 00000168 E0420000        SUB     R0,R2,R0
  222 0000016C E0811000        ADD     R1,R1,R0
  223 00000170         
  224 00000170 E59F3030        LDR     R3,=|Image$$RO$$Limit|
  225 00000174         3
  226 00000174 E1510003        CMP     R1,R3
  227 00000178 34924004        LDRLO   R4,[R2],#4
  228 0000017C 34814004        STRLO   R4,[R1],#4
  229 00000180 3AFFFFFB        BLO     %B3



ARM Macro Assembler    Page 6 


  230 00000184         
  231 00000184 E59FF030        LDR     PC,=COPY_END
  232 00000188         
  233 00000188         COPY_END
  234 00000188         ;/******************************************************
                       ********************************************************
                       **/
  235 00000188         ; 跳转到Main(!)
  236 00000188                 IMPORT  Main
  237 00000188         
  238 00000188 E59FF030        LDR     PC,=Main
  239 0000018C EAFFFFFE        B       .
  240 00000190         
  241 00000190         ;/******************************************************
                       ********************************************************
                       **/
  242 00000190                 END
              00000000 
              FFFFF108 
              00000000 
              00000000 
              00000000 
              0000009C 
              00000000 
              00000000 
              00000000 
              00000000 
              00000000 
              00000188 
              00000000 
Command Line: [D:\ARM\RealView\RVCT\Programs\2.0.1\277\win_32-pentium\ArmAsm -v
ia .\output\samboot._ia]



ARM Macro Assembler    Page 1 Alphabetic symbol ordering
Relocatable symbols

COPY_BEGIN 00000150

Symbol: COPY_BEGIN
   Definitions
      At line 213 in file SAMstart\SAMboot.s
   Uses
      None
Comment: COPY_BEGIN unused

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -