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

📄 os_cpu_a.lst

📁 移植的ucos
💻 LST
📖 第 1 页 / 共 4 页
字号:
###############################################################################
#                                                                             #
#     IAR Systems A90 Assembler V1.41B/386 05/Aug/2001  14:39:15              #
#     Copyright 1999 IAR Systems. All rights reserved.                        #
#                                                                             #
#           Target option =  Relative jumps reach entire addr space           #
#           Source file   =  os_cpu_a.s90                                     #
#           List file     =  ..\lst\os_cpu_a.lst                              #
#           Object file   =  ..\obj\os_cpu_a.r90                              #
#           Command line  =  -v1 -r -o ..\obj\os_cpu_a.r90 -l                 #
#                            ..\lst\os_cpu_a os_cpu_a.s90                     #
#                                                                             #
###############################################################################

      1    00000000              ;*********************************************
                                 **********************************************
                                 *************
      2    00000000              ;                                             
                                   uC/OS-II
      3    00000000              ;                                         The
                                  Real-Time Kernel
      4    00000000              ;
      5    00000000              ;                                          AVR
                                  Specific code
      6    00000000              ;                                      (IAR
                                  AA90 V1.30 or later)
      7    00000000              ;
      8    00000000              ;
      9    00000000              ; File     : OS_CPU_A.S90
     10    00000000              ; By       : Ole Saether
     11    00000000              ;
     12    00000000              ; $Modtime: 22.07.01 22:06 $
     13    00000000              ; $Revision: 3 $
     14    00000000              ;
     15    00000000              ;*********************************************
                                 **********************************************
                                 *************
     16    00000000              ;                                          
                                  I/O PORT ADDRESSES
     17    00000000              ;*********************************************
                                 **********************************************
                                 *************
     18    00000000              
     19    0000003F              SREG    = 0x3F
     20    0000003E              SPH     = 0x3E
     21    0000003D              SPL     = 0x3D
     22    00000032              TCNT0   = 0x32
     23    00000000              
     24    00000000              ;*********************************************
                                 **********************************************
                                 *************
     25    00000000              ;                                         
                                  PUBLIC DECLARATIONS
     26    00000000              ;*********************************************
                                 **********************************************
                                 *************
     27    00000000              
     28    00000000                              NAME    OS_CPU_A
     29    00000000                              PUBLIC  OSStartHighRdy
     30    00000000                              PUBLIC  OSCtxSw
     31    00000000                              PUBLIC  OSIntCtxSw
     32    00000000              
     33    00000000              ;*********************************************
                                 **********************************************
                                 *************
     34    00000000              ;                                        
                                  EXTERNAL DECLARATIONS
     35    00000000              ;*********************************************
                                 **********************************************
                                 *************
     36    00000000              
     37    00000000                              EXTERN  OSIntExit
     38    00000000                              EXTERN  OSIntNesting
     39    00000000                              EXTERN  OSPrioCur
     40    00000000                              EXTERN  OSPrioHighRdy
     41    00000000                              EXTERN  OSRunning
     42    00000000                              EXTERN  OSTaskSwHook
     43    00000000                              EXTERN  OSTCBCur
     44    00000000                              EXTERN  OSTCBHighRdy
     45    00000000                              EXTERN  OSTimeTick
     46    00000000              
     47    00000000              #include        "ATMACRO.S90"
     48    00000000              
     49    00000000                              RSEG    CODE
     50    00000000              
     51    00000000              ;*********************************************
                                 **********************************************
                                 *************
     52    00000000              ;                               START HIGHEST
                                  PRIORITY TASK READY-TO-RUN
     53    00000000              ;
     54    00000000              ; Description : This function is called by
                                  OSStart() to start the highest priority task
                                  that was created
     55    00000000              ;               by your application before
                                  calling OSStart().
     56    00000000              ;
     57    00000000              ; Note(s)     : 1) The (data)stack frame is
                                  assumed to look as follows:
     58    00000000              ;
     59    00000000              ;                  OSTCBHighRdy->OSTCBStkPtr
                                  --> LSB of (return) stack pointer          
                                  (Low memory)
     60    00000000              ;                                             
                                    SPH of (return) stack pointer
     61    00000000              ;                                             
                                    Flags to load in status register
     62    00000000              ;                                             
                                    R31
     63    00000000              ;                                             
                                    R30
     64    00000000              ;                                             
                                    R27
     65    00000000              ;                                             
                                    .
     66    00000000              ;                                             
                                    .
     67    00000000              ;                                             
                                    .
     68    00000000              ;                                             
                                    R0                                     
                                  (High memory)
     69    00000000              ;
     70    00000000              ;                  where the stack pointer
                                  points to the task start address.
     71    00000000              ;
     72    00000000              ;
     73    00000000              ;               2) OSStartHighRdy() MUST:
     74    00000000              ;                      a) Call OSTaskSwHook()
                                  then,
     75    00000000              ;                      b) Set OSRunning to
                                  TRUE,
     76    00000000              ;                      c) Switch to the
                                  highest priority task.
     77    00000000              ;
     78    00000000              ;*********************************************
                                 **********************************************
                                 *************
     79    00000000              
     80    00000000 ....         OSStartHighRdy: RCALL   OSTaskSwHook          
       ; Invoke user defined context switch hook
     81    00000002 9100....                     LDS     R16,OSRunning         
                                                                   ; Indicate
                                                              that we are
                                                              multitasking
     82    00000006 9503                         INC     R16                   
       ;
     83    00000008 9300....                     STS     OSRunning,R16         
                                                                        
                                                                    ;
     84    0000000C              
     85    0000000C 91E0....                     LDS     R30,OSTCBHighRdy      
                                                                   ; Let Z
                                                              point to TCB of
                                                              highest priority
                                                              task
     86    00000010 91F0....                     LDS     R31,OSTCBHighRdy+1    
                                                                   ; ready to
                                                              run
     87    00000014 91C1                         LD      R28,Z+                
                                                                   ; Load Y
                                                              (R29:R28)
                                                              pointer
     88    00000016 91D1                         LD      R29,Z+                
                                                                   ;
     89    00000018              
     90    00000018                              POPSP                         
                                       ; Restore stack pointer
     90.1  00000018 9109                         LD      R16,Y+
     90.2  0000001A BF0D                         OUT     SPL,R16
     90.3  0000001C 9109                         LD      R16,Y+
     90.4  0000001E BF0E                         OUT     SPH,R16
     90.5  00000020                              ENDM
     91    00000020                              POPSREG                       
                                       ; Restore status register
     91.1  00000020 9109                         LD      R16,Y+
     91.2  00000022 BF0F                         OUT     SREG,R16
     91.3  00000024                              ENDM
     92    00000024                              POPRS                         
                                       ; Restore all registers
     92.1  00000024 91F9                         LD      R31,Y+
     92.2  00000026 91E9                         LD      R30,Y+
     92.3  00000028 91B9                         LD      R27,Y+

⌨️ 快捷键说明

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