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

📄 os_cpu_a.lst

📁 ucos_ii在mini2440上的移植KEIL编译环境
💻 LST
📖 第 1 页 / 共 3 页
字号:



ARM Macro Assembler    Page 1 


    1 00000000         ;*******************************************************
                       **************************************************
    2 00000000         ;                                               uC/OS-II
                       
    3 00000000         ;                                         The Real-Time 
                       Kernel
    4 00000000         ;
    5 00000000         ;                          (c) Copyright 1992-2003, Jean
                        J. Labrosse, Weston, FL
    6 00000000         ;                                          All Rights Re
                       served
    7 00000000         ;
    8 00000000         ;                                               ARM920T 
                       Port
    9 00000000         ;                                            ADS v1.2 Co
                       mpiler
   10 00000000         ;                                             Samsung S3
                       C2440A
   11 00000000         ;
   12 00000000         ; File    : os_cpu_a.s refrence to ucos application note
                        for arm AN-1014
   13 00000000         ; Des   : S3C2440 uC/OS-II Port 
   14 00000000         ; by      : tangxiaofeng xidian 503
   15 00000000         ; History : 
   16 00000000         ;  OSCtxSw(), OSIntCtxSw()  OSStartHighRdy() OS_CPU_IRQ_
                       ISR() OSTickISR()
   17 00000000         ;*******************************************************
                       ************************************************* */
   18 00000000                 PRESERVE8
   19 00000000 4A000000 
                       SRCPND  EQU              0x4a000000  ; Source pending
   20 00000000 4A000010 
                       INTPND  EQU              0x4a000010  ; Interrupt request
                                                             status
   21 00000000         
   22 00000000 560000A8 
                       EINTPEND
                               EQU              0x560000a8
   23 00000000 4A000014 
                       INTOFFSET
                               EQU              0x4a000014
   24 00000000         
   25 00000000         
   26 00000000 00000010 
                       USERMODE
                               EQU              0x10
   27 00000000 00000011 
                       FIQMODE EQU              0x11
   28 00000000 00000012 
                       IRQMODE EQU              0x12
   29 00000000 00000013 
                       SVCMODE EQU              0x13
   30 00000000 00000017 
                       ABORTMODE
                               EQU              0x17
   31 00000000 0000001B 
                       UNDEFMODE
                               EQU              0x1b
   32 00000000 0000001F 



ARM Macro Assembler    Page 2 


                       MODEMASK
                               EQU              0x1f
   33 00000000 000000C0 
                       NOINT   EQU              0xc0
   34 00000000         
   35 00000000         ;*******************************************************
                       **************************************************
   36 00000000         ;                                    EXPORT and EXTERNAL
                        REFERENCES
   37 00000000         ;*******************************************************
                       **************************************************/
   38 00000000                 IMPORT           OSRunning
   39 00000000                 IMPORT           OSTCBCur
   40 00000000                 IMPORT           OSTCBHighRdy
   41 00000000                 IMPORT           OSPrioCur
   42 00000000                 IMPORT           OSPrioHighRdy
   43 00000000                 IMPORT           OSIntNesting
   44 00000000         
   45 00000000                 IMPORT           IRQ_Dispatch
   46 00000000                 IMPORT           OSIntEnter
   47 00000000                 IMPORT           OSIntExit
   48 00000000                 IMPORT           OSTaskSwHook
   49 00000000                 IMPORT           OSTimeTick
   50 00000000         
   51 00000000         ; IMPORT  HandleEINT0
   52 00000000         
   53 00000000         
   54 00000000                 EXPORT           OSStartHighRdy
   55 00000000                 EXPORT           OSCtxSw
   56 00000000                 EXPORT           OSTickISR
   57 00000000                 EXPORT           OSIntCtxSw
   58 00000000         
   59 00000000                 EXPORT           OSCPUSaveSR
   60 00000000                 EXPORT           OSCPURestoreSR
   61 00000000         
   62 00000000                 EXPORT           OS_CPU_IRQ_ISR
   63 00000000         
   64 00000000         
   65 00000000                 AREA             UCOS_ARM, CODE, READONLY
   66 00000000         
   67 00000000         ;*******************************************************
                       **************************************************
   68 00000000         ;                                          START MULTITA
                       SKING
   69 00000000         ;                                       void OSStartHigh
                       Rdy(void)
   70 00000000         ;
   71 00000000         ; The stack frame is assumed to look as follows:
   72 00000000         ;
   73 00000000         ;           Entry Point(Task Name)    (High memory)
   74 00000000         ;                               LR(R14)
   75 00000000         ;                               R12
   76 00000000         ;                               R11
   77 00000000         ;                               R10
   78 00000000         ;                               R9
   79 00000000         ;                               R8
   80 00000000         ;                               R7
   81 00000000         ;                               R6
   82 00000000         ;                               R5



ARM Macro Assembler    Page 3 


   83 00000000         ;                               R4
   84 00000000         ;                               R3
   85 00000000         ;                               R2
   86 00000000         ;                               R1
   87 00000000         ;                               R0 : argument
   88 00000000         ; OSTCBHighRdy->OSTCBStkPtr --> CPSR        (Low memory)
                       
   89 00000000         ;
   90 00000000         ; Note : OSStartHighRdy() MUST:
   91 00000000         ;           a) Call OSTaskSwHook() then,
   92 00000000         ;           b) Set OSRunning to TRUE,
   93 00000000         ;           c) Switch to the highest priority task.
   94 00000000         ;*******************************************************
                       *************************************************** */
   95 00000000         OSStartHighRdy
   96 00000000         ;-------------------------------------------------------
                       --------------------------- 
   97 00000000         ; OSRunning = TRUE;
   98 00000000         ;-------------------------------------------------------
                       --------------------------- 
   99 00000000         
  100 00000000 E32FF0D3        MSR              CPSR_cxsf,#SVCMODE|NOINT ;Switc
                                                            h to SVC mode with 
                                                            IRQ&FIQ disable
  101 00000004         
  102 00000004 EBFFFFFE        BL               OSTaskSwHook ;Call user define 
                                                            Task switch hook
  103 00000008         
  104 00000008 E59F0174        LDR              R0, =OSRunning 
                                                            ; OSRunning =TRUE
  105 0000000C E3A01001        MOV              R1, #1
  106 00000010 E5C01000        STRB             R1, [R0]
  107 00000014         
  108 00000014         ;-------------------------------------------------------
                       ---------------------------  
  109 00000014         ;   SP = OSTCBHighRdy->OSTCBStkPtr;
  110 00000014         ;-------------------------------------------------------
                       --------------------------- 
  111 00000014 E59F016C        LDR              R0, =OSTCBHighRdy
  112 00000018 E5900000        LDR              R0, [R0]
  113 0000001C E590D000        LDR              SP, [R0]
  114 00000020         
  115 00000020         ;-------------------------------------------------------
                       ---------------------------  
  116 00000020         ; Prepare to return to proper mode
  117 00000020         ;-------------------------------------------------------
                       --------------------------- 
  118 00000020 E8BD0001        LDMFD            SP!, {R0}
  119 00000024 E16FF000        MSR              SPSR_cxsf, R0
  120 00000028 E8FDDFFF        LDMFD            SP!, {R0-R12, LR, PC}^
  121 0000002C         
  122 0000002C         
  123 0000002C         ;*******************************************************
                       ***************************************************
  124 0000002C         ;                                PERFORM A CONTEXT SWITC
                       H (From task level)
  125 0000002C         ;                                           void OSCtxSw
                       (void)
  126 0000002C         ;



ARM Macro Assembler    Page 4 


  127 0000002C         ; Note(s):     1) Upon entry: 
  128 0000002C         ;                 OSTCBCur      points to the OS_TCB of 
                       the task to suspend
  129 0000002C         ;                 OSTCBHighRdy  points to the OS_TCB of 
                       the task to resume
  130 0000002C         ;
  131 0000002C         ;              2) The stack frame of the task to suspend
                        looks as follows:
  132 0000002C         ;                                                   
  133 0000002C         ;                                                   PC  
                                         (High memory)
  134 0000002C         ;               LR(R14)     
  135 0000002C         ;                                    R12
  136 0000002C         ;                                     R11
  137 0000002C         ;                                    R10
  138 0000002C         ;                                     R9
  139 0000002C         ;                                    R8
  140 0000002C         ;                                    R7
  141 0000002C         ;                                    R6
  142 0000002C         ;                                    R5
  143 0000002C         ;                                    R4
  144 0000002C         ;                                    R3
  145 0000002C         ;                                    R2
  146 0000002C         ;                                    R1
  147 0000002C         ;                                    R0
  148 0000002C         ;       OSTCBCur->OSTCBStkPtr ----> CPSR     (Low memory
                       )
  149 0000002C         ;
  150 0000002C         ;
  151 0000002C         ;              3) The stack frame of the task to resume 
                       looks as follows:
  152 0000002C         ;
  153 0000002C         ;                 PC    (High memory)
  154 0000002C         ;                                                   LR(R
                       14) 
  155 0000002C         ;                                     R12
  156 0000002C         ;                                    R11
  157 0000002C         ;                                    R10
  158 0000002C         ;                                     R9
  159 0000002C         ;                                    R8
  160 0000002C         ;                                    R7
  161 0000002C         ;                                     R6
  162 0000002C         ;                                    R5
  163 0000002C         ;                                    R4
  164 0000002C         ;                                    R3
  165 0000002C         ;                                    R2
  166 0000002C         ;                                    R1
  167 0000002C         ;                                     R0
  168 0000002C         ;      OSTCBHighRdy->OSTCBStkPtr ----> CPSR     (Low mem
                       ory)
  169 0000002C         ;*******************************************************
                       **************************************************/
  170 0000002C         OSCtxSw
  171 0000002C         
  172 0000002C E92D4000        STMFD            SP!, {LR}   ;PC
  173 00000030 E92D5FFF        STMFD            SP!, {R0-R12, LR} ;R0-R12 LR
  174 00000034 E10F0000        MRS              R0,  CPSR   ;Push CPSR
  175 00000038 E92D0001        STMFD            SP!, {R0}
  176 0000003C         



ARM Macro Assembler    Page 5 


  177 0000003C         ;-------------------------------------------------------
                       ---------------------------
  178 0000003C         ;   OSTCBCur->OSTCBStkPtr = SP
  179 0000003C         ;-------------------------------------------------------
                       ---------------------------  
  180 0000003C E59F0148        LDR              R0, =OSTCBCur
  181 00000040 E5900000        LDR              R0, [R0]
  182 00000044 E580D000        STR              SP, [R0]
  183 00000048         
  184 00000048         ;-------------------------------------------------------
                       ---------------------------  
  185 00000048         ; OSTaskSwHook();
  186 00000048         ;-------------------------------------------------------
                       -------------------------- 
  187 00000048 EBFFFFFE        BL               OSTaskSwHook
  188 0000004C         
  189 0000004C         ;-------------------------------------------------------
                       ---------------------------   
  190 0000004C         ; OSTCBCur = OSTCBHighRdy;
  191 0000004C         ;-------------------------------------------------------
                       ---------------------------  
  192 0000004C E59F0134        LDR              R0, =OSTCBHighRdy
  193 00000050 E59F1134        LDR              R1, =OSTCBCur
  194 00000054 E5900000        LDR              R0, [R0]
  195 00000058 E5810000        STR              R0, [R1]
  196 0000005C         
  197 0000005C         ;-------------------------------------------------------
                       ---------------------------  
  198 0000005C         ; OSPrioCur = OSPrioHighRdy;
  199 0000005C         ;-------------------------------------------------------
                       ---------------------------  
  200 0000005C E59F012C        LDR              R0, =OSPrioHighRdy
  201 00000060 E59F112C        LDR              R1, =OSPrioCur
  202 00000064 E5D00000        LDRB             R0, [R0]
  203 00000068 E5C10000        STRB             R0, [R1]
  204 0000006C         
  205 0000006C         ;-------------------------------------------------------
                       ---------------------------  
  206 0000006C         ;  OSTCBHighRdy->OSTCBStkPtr;
  207 0000006C         ;-------------------------------------------------------
                       ---------------------------  
  208 0000006C E59F0114        LDR              R0, =OSTCBHighRdy
  209 00000070 E5900000        LDR              R0, [R0]
  210 00000074 E590D000        LDR              SP, [R0]
  211 00000078         
  212 00000078         ;-------------------------------------------------------
                       --------------------------- 
  213 00000078         ;Restore New task context
  214 00000078         ;-------------------------------------------------------
                       --------------------------- 
  215 00000078 E8BD0001        LDMFD            SP!, {R0}   ;POP CPSR
  216 0000007C E16FF000        MSR              SPSR_cxsf, R0
  217 00000080 E8FDDFFF        LDMFD            SP!, {R0-R12, LR, PC}^
  218 00000084         
  219 00000084         
  220 00000084         ;*******************************************************
                       **************************************************

⌨️ 快捷键说明

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