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

📄 off

📁 ucos2在at91sam64dk上的移植程序-mcuzone
💻
📖 第 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         
    7 00000000 00000010 
                       MODUSR  EQU     0x10
    8 00000000 0000001F 
                       MODSYS  EQU     0x1F
    9 00000000 00000013 
                       MODSVC  EQU     0x13
   10 00000000 00000017 
                       MODABT  EQU     0x17
   11 00000000 0000001B 
                       MODUDF  EQU     0x1B
   12 00000000 00000012 
                       MODIRQ  EQU     0x12
   13 00000000 00000011 
                       MODFIQ  EQU     0x11
   14 00000000         
   15 00000000 00000080 
                       IRQBIT  EQU     0x80
   16 00000000 00000040 
                       FIQBIT  EQU     0x40
   17 00000000         
   18 00000000 00204000 
                       RAMEND  EQU     0x00204000  ; S64 : 16KB RAM
   19 00000000         
   20 00000000 00000100 
                       VECTSIZE
                               EQU     0x100       ; 驻留RAM的向量区域定为256字
   21 00000000         
   22 00000000 00000008 
                       UsrStkSz
                               EQU     8           ; size of  USR  stack
   23 00000000 00000080 
                       SysStkSz
                               EQU     128         ; size of  SYS  stack
   24 00000000 00000008 
                       SvcStkSz
                               EQU     8           ; size of  SVC  stack
   25 00000000 00000008 
                       UdfStkSz
                               EQU     8           ; size of  UDF  stack
   26 00000000 00000008 
                       AbtStkSz
                               EQU     8           ; size of  ABT  stack



ARM Macro Assembler    Page 2 


   27 00000000 00000080 
                       IrqStkSz
                               EQU     128         ; size of  IRQ  stack
   28 00000000 00000010 
                       FiqStkSz
                               EQU     16          ; size of  FIQ  stack
   29 00000000         
   30 00000000                 PRESERVE8
   31 00000000                 AREA    START, CODE, READONLY
   32 00000000                 CODE32
   33 00000000         
   34 00000000                 ENTRY
   35 00000000         
   36 00000000         RESET
   37 00000000 EAFFFFFE        B       SYSINIT     ; Reset
   38 00000004 EAFFFFFE        B       UDFHANDLER  ; UNDEFINED
   39 00000008 EAFFFFFE        B       SWIHANDLER  ; SWI
   40 0000000C EAFFFFFE        B       PABTHANDLER ; PREFETCH ABORT
   41 00000010 EAFFFFFE        B       DABTHANDLER ; DATA ABORT
   42 00000014 EAFFFFFE        B       .           ; RESERVED 
   43 00000018 EAFFFFFE        B       VECTORED_IRQ_HANDLER
   44 0000001C EAFFFFFE        B       .           ; ADD FIQ CODE HERE
   45 00000020         
   46 00000020         VECTORED_IRQ_HANDLER
   47 00000020         ;-------------------------------------------------------
                       --------------------------------------------------
   48 00000020         ;******************** 运行于IRQ模式的代码 **************
                       **************************************************
   49 00000020         ;-------------------------------------------------------
                       --------------------------------------------------
   50 00000020 E90D001F        STMFD   sp,{r0-r4}  ; 不修改SP_IRQ的值
   51 00000024 E24D0014        SUB     r0,sp,#20   ; R0指向栈底
   52 00000028 E24E1004        SUB     r1,lr,#4    ; R1=返回地址
   53 0000002C E14F2000        MRS     r2,SPSR     ; R2=SPSR
   54 00000030         
   55 00000030         ;LDR    r3,=OSIntNesting    ; OSIntNesting++
   56 00000030         ;LDRB   r4,[r3]
   57 00000030         ;ADD    r4,r4,#1
   58 00000030         ;STRB   r4,[r3]
   59 00000030         
   60 00000030 E32FF09F        MSR     CPSR_cxsf,#0x9f ;  Sys Mode , IRQ disabl
                                                   e ,FIQ enable
   61 00000034         ;  关闭IRQ,保存被中断任务的上下文到任务堆栈,SP_SYS
   62 00000034         ;-------------------------------------------------------
                       --------------------------------------------------
   63 00000034         ;******************** 其余代码运行于SYS模式 ************
                       **************************************************
   64 00000034         ;-------------------------------------------------------
                       --------------------------------------------------      
                            
   65 00000034 E92D0002        STMFD   sp!,{r1}    ;  PC
   66 00000038 E92D4000        STMFD   sp!,{lr}    ;  lr
   67 0000003C         
   68 0000003C E92D1FE0        STMFD   sp!,{r5-r12} ;  r12---r5
   69 00000040 E8B003E0        LDMIA   r0!,{r5-r9} ;  取得保存在IRQ堆栈中的R0--
                                                   -R4
   70 00000044 E92D03E0        STMFD   sp!,{r5-r9} ;  r4---r0
   71 00000048 E92D0004        STMFD   sp!,{r2}    ;  cpsr
   72 0000004C E92D0004        STMFD   sp!,{r2}    ;  spsr



ARM Macro Assembler    Page 3 


   73 00000050         
   74 00000050 E59FE114        LDR     lr,=ISR_RETURN
   75 00000054         
   76 00000054 E32FF01F        MSR     CPSR_cxsf,#0x1f ;  Sys Mode , IRQ enable
                                                    ,FIQ enable
   77 00000058         
   78 00000058 E59FF110        LDR     PC,=0xFFFFF100 ; AIC_IVR
   79 0000005C         ISR_RETURN
   80 0000005C         
   81 0000005C         ;BL     OSIntExit
   82 0000005C         
   83 0000005C E8BD0001        LDMFD   sp!,{r0}    ;  spsr
   84 00000060 E8BD0001        LDMFD   sp!,{r0}    ;  cpsr
   85 00000064         
   86 00000064 E12FF000        MSR     CPSR_cxsf,r0
   87 00000068 E8BDDFFF        LDMFD   sp!,{r0-r12,lr,pc} ;  任务返回  
   88 0000006C         
   89 0000006C         ;-------------------------------------------------------
                       --------------------------------------------------
   90 0000006C         ;******************** reentrant 代码 *******************
                       **************************************************
   91 0000006C         ;-------------------------------------------------------
                       --------------------------------------------------      
                            
   92 0000006C         
   93 0000006C         
   94 0000006C         UDFHANDLER
   95 0000006C EAFFFFFE        B       .
   96 00000070         
   97 00000070         SWIHANDLER
   98 00000070 EAFFFFFE        B       .
   99 00000074         
  100 00000074         PABTHANDLER
  101 00000074 EAFFFFFE        B       .
  102 00000078         
  103 00000078         DABTHANDLER
  104 00000078 EAFFFFFE        B       .
  105 0000007C         
  106 0000007C         
  107 0000007C         ;/******************************************************
                       ********************************************************
                       **/
  108 0000007C         SYSINIT
  109 0000007C         ;设置各模式堆栈,关闭IRQ,FIQ
  110 0000007C E10F0000        MRS     R0,CPSR
  111 00000080 E3C0001F        BIC     R0,R0,#0x1F
  112 00000084         
  113 00000084 E3A02981        MOV     R2,#RAMEND
  114 00000088 E38010D3        ORR     R1,R0,#(MODSVC :OR: IRQBIT :OR: FIQBIT)
  115 0000008C E12FF001        MSR     cpsr_cxsf,R1 ; ENTER SVC MODE
  116 00000090 E1A0D002        MOV     sp,R2
  117 00000094 E2422008        SUB     R2,R2,#SvcStkSz
  118 00000098         
  119 00000098 E38010D1        ORR     R1,R0,#(MODFIQ :OR: IRQBIT :OR: FIQBIT)
  120 0000009C E12FF001        MSR     CPSR_cxsf,R1 ; ENTER FIQ MODE
  121 000000A0 E1A0D002        MOV     sp,R2
  122 000000A4 E2422010        SUB     R2,R2,#FiqStkSz
  123 000000A8         
  124 000000A8 E38010D2        ORR     R1,R0,#(MODIRQ :OR: IRQBIT :OR: FIQBIT)



ARM Macro Assembler    Page 4 


  125 000000AC E12FF001        MSR     CPSR_cxsf,R1 ; ENTER IRQ MODE
  126 000000B0 E1A0D002        MOV     sp,R2
  127 000000B4 E2422080        SUB     R2,R2,#IrqStkSz
  128 000000B8         
  129 000000B8 E38010DB        ORR     R1,R0,#(MODUDF :OR: IRQBIT :OR: FIQBIT)
  130 000000BC E12FF001        MSR     CPSR_cxsf,R1 ; ENTER UDF MODE
  131 000000C0 E1A0D002        MOV     sp,R2
  132 000000C4 E2422008        SUB     R2,R2,#UdfStkSz
  133 000000C8         
  134 000000C8 E38010D7        ORR     R1,R0,#(MODABT :OR: IRQBIT :OR: FIQBIT)
  135 000000CC E12FF001        MSR     CPSR_cxsf,R1 ; ENTER ABT MODE
  136 000000D0 E1A0D002        MOV     sp,R2
  137 000000D4 E2422008        SUB     R2,R2,#AbtStkSz
  138 000000D8         
  139 000000D8         ;ORR    R1,R0,#(MODUSR :OR: IRQBIT :OR: FIQBIT)
  140 000000D8         ;MSR    CPSR_cxsf,R1    ; ENTER USR MODE
  141 000000D8         ;MOV    sp,R2
  142 000000D8         ;SUB    R2,R2,#UsrStkSz
  143 000000D8         
  144 000000D8 E38010DF        ORR     R1,R0,#(MODSYS :OR: IRQBIT :OR: FIQBIT)
  145 000000DC E12FF001        MSR     CPSR_cxsf,R1 ; ENTER SYS MODE
  146 000000E0 E1A0D002        MOV     sp,R2       ; 于SYS模式运行代码       
  147 000000E4         
  148 000000E4         ;/******************************************************
                       ********************************************************
                       **/
  149 000000E4         ; 复位后有16sec的时间禁止WDT
  150 000000E4         
  151 000000E4         ;/******************************************************
                       ********************************************************
                       **/
  152 000000E4                 IMPORT  |Image$$RO$$Base|
  153 000000E4                 IMPORT  |Image$$RO$$Limit|
  154 000000E4                 IMPORT  |Image$$RW$$Base|
  155 000000E4                 IMPORT  |Image$$RW$$Limit|
  156 000000E4                 IMPORT  |Image$$ZI$$Base|
  157 000000E4                 IMPORT  |Image$$ZI$$Limit|
  158 000000E4         
  159 000000E4         ; 复制向量          
  160 000000E4         COPY_VECT_TO_RAM
  161 000000E4 E59F0088        LDR     R0,=|Image$$RO$$Base|
  162 000000E8 E59F1088        LDR     R1,=SYSINIT
  163 000000EC E3A02980        LDR     R2,=0x200000 ; RAM START  
  164 000000F0         0
  165 000000F0 E1500001        CMP     R0,R1
  166 000000F4 34903004        LDRLO   R3,[R0],#4
  167 000000F8 34823004        STRLO   R3,[R2],#4
  168 000000FC 3AFFFFFB        BLO     %B0
  169 00000100         ;/******************************************************
                       ********************************************************
                       **/
  170 00000100         ; RW , ZI 初始化
  171 00000100         
  172 00000100 E59F0074        LDR     R0,=|Image$$RO$$Limit|
  173 00000104 E59F1074        LDR     R1,=|Image$$RW$$Base|
  174 00000108 E59F2074        LDR     R2,=|Image$$ZI$$Base|
  175 0000010C         1
  176 0000010C E1510002        CMP     R1,R2
  177 00000110 34903004        LDRLO   R3,[R0],#4



ARM Macro Assembler    Page 5 


  178 00000114 34813004        STRLO   R3,[R1],#4
  179 00000118 3AFFFFFB        BLO     %B1
  180 0000011C         
  181 0000011C E3A03000        MOV     R3,#0
  182 00000120 E59F1060        LDR     R1,=|Image$$ZI$$Limit|
  183 00000124         2
  184 00000124 E1520001        CMP     R2,R1
  185 00000128 34823004        STRLO   R3,[R2],#4
  186 0000012C 3AFFFFFC        BLO     %B2
  187 00000130         
  188 00000130         ;/******************************************************
                       ********************************************************
                       **/
  189 00000130         ; 如必要,复制代码到RAM中运行
  190 00000130         ; 适用于代码小,但对速度要求高的场合
  191 00000130         COPY_BEGIN
  192 00000130 E24F0F4E        ADR     R0,RESET
  193 00000134 E59F1050        LDR     R1,=RESET   ; =|Image$$RO$$Base|
  194 00000138 E1500001        CMP     R0,R1
  195 0000013C 0AFFFFFE        BEQ     COPY_END
  196 00000140         
  197 00000140 E28F201C        ADR     R2,COPY_END
  198 00000144 E0420000        SUB     R0,R2,R0
  199 00000148 E0811000        ADD     R1,R1,R0
  200 0000014C         
  201 0000014C E59F3028        LDR     R3,=|Image$$RO$$Limit|
  202 00000150         3
  203 00000150 E1510003        CMP     R1,R3
  204 00000154 34924004        LDRLO   R4,[R2],#4
  205 00000158 34814004        STRLO   R4,[R1],#4
  206 0000015C 3AFFFFFB        BLO     %B3
  207 00000160         
  208 00000160 E59FF028        LDR     PC,=COPY_END
  209 00000164         
  210 00000164         COPY_END
  211 00000164         ;/******************************************************
                       ********************************************************
                       **/
  212 00000164         ; 跳转到Main(!)
  213 00000164                 IMPORT  Main
  214 00000164         
  215 00000164 E59FF028        LDR     PC,=Main
  216 00000168 EAFFFFFE        B       .
  217 0000016C         
  218 0000016C         ;/******************************************************
                       ********************************************************
                       **/
  219 0000016C                 END
              0000005C 
              FFFFF100 
              00000000 
              0000007C 
              00000000 
              00000000 
              00000000 
              00000000 
              00000000 
              00000164 
              00000000 



ARM Macro Assembler    Page 6 


Command Line: [D:\ARM\ADSV1_2\BIN\ArmAsm -via .\output\samboot._ia]



ARM Macro Assembler    Page 1 Alphabetic symbol ordering
Relocatable symbols

COPY_BEGIN 00000130

Symbol: COPY_BEGIN
   Definitions

⌨️ 快捷键说明

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