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

📄 os_cpu_a.lst

📁 《uC/os-II 内核分析.移植与驱动程序开发》随书光盘中的全部源代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
TMS320C2000 COFF Assembler PC Version 3.03 Sat Aug 02 12:26:42 2003

Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
OS_CPU_A.ASM                                                         PAGE    1

       1              ;********************************************************************************************************
       2              ;                                               uC/OS-II
       3              ;                                         The Real-Time Kernel
       4              ;
       5              ;                        (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL
       6              ;                                          All Rights Reserved
       7              ;
       8              ;
       9              ;                                       80x86/80x88 Specific code
      10              ;                                          LARGE MEMORY MODEL
      11              ;
      12              ;                                        IBM/PC Compatible Target
      13              ;
      14              ; File : OS_CPU_A.ASM
      15              ; By   : Jean J. Labrosse
      16              ;********************************************************************************************************
      17                                      
      18                          
TMS320C2000 COFF Assembler PC Version 3.03 Sat Aug 02 12:26:42 2003

Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
OS_CPU_A.ASM                                                         PAGE    2

      20 00000000                               .text
      21              ;*********************************************************************************************************
      22              ;                                          START MULTITASKING
      23              ;                                       void OSStartHighRdy(void)
      24              ;
      25              ; The stack frame is assumed to look as follows:
      26              ;
      27              ; OSTCBHighRdy->OSTCBStkPtr --> DS                               (Low memory)
      28              ;                               ES
      29              ;                               DI
      30              ;                               SI
      31              ;                               BP
      32              ;                               SP
      33              ;                               BX
      34              ;                               DX
      35              ;                               CX
      36              ;                               AX
      37              ;                               OFFSET  of task code address
      38              ;                               SEGMENT of task code address
      39              ;                               Flags to load in PSW             
      40              ;                               OFFSET  of task code address
      41              ;                               SEGMENT of task code address
      42              ;                               OFFSET  of 'pdata'
      43              ;                               SEGMENT of 'pdata'               (High memory)
      44              ;
      45              ; Note : OSStartHighRdy() MUST:
      46              ;           a) Call OSTaskSwHook() then,
      47              ;           b) Set OSRunning to TRUE,
      48              ;           c) Switch to the highest priority task.
      49              ;*********************************************************************************************************
      50              
      51 00000000       _OSStartHighRdy:  
      52              
      53                                      .global _OSStartHighRdy
      54                                      .ref   _OSTCBHighRdy                    
      55                                                              
      56                                      
      57 00000000 761F!       MOVW      DP,#_OSTCBHighRdy
         00000001 0000 
      58 00000002 8A00!       MOVL      XAR4,@_OSTCBHighRdy   ; |148| 
      59 00000003 8AC4        MOVL      XAR4,*+XAR4[0]        ; |148|                                                   
      60                    
      61                   
      62                    ;模拟中断      
      63 00000004 22A9        PUSH AL
      64                   
      65 00000005 0004        PUSH RPC  
      66                                  
      67 00000006 D004        MOVB XAR0,#4     
      68 00000007 9294        MOV  AL,*+XAR4[AR0]                       ;得到 ST0                                    
      69 00000008 D005        MOVB XAR0,#5     
      70 00000009 9394        MOV  AH,*+XAR4[AR0]                       ;得到 T      
      71 0000000a 1EBD        PUSH ACC
      72                   
      73                          
TMS320C2000 COFF Assembler PC Version 3.03 Sat Aug 02 12:26:42 2003

Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
OS_CPU_A.ASM                                                         PAGE    3

      74 0000000b D006        MOVB XAR0,#6     
      75 0000000c 9294        MOV  AL,*+XAR4[AR0]                       ;得到 AL
      76 0000000d D007        MOVB XAR0,#7     
      77 0000000e 9394        MOV  AH,*+XAR4[AR0]                       ;得到 AH
      78 0000000f 1EBD        PUSH ACC            
      79                          
      80 00000010 D008        MOVB XAR0,#8     
      81 00000011 9294        MOV  AL,*+XAR4[AR0]                       ;得到 PL            
      82 00000012 D009        MOVB XAR0,#9     
      83 00000013 9394        MOV  AH,*+XAR4[AR0]                       ;得到 PH
      84 00000014 1EBD        PUSH ACC
      85                          
      86                          
      87 00000015 D00A        MOVB XAR0,#10     
      88 00000016 9294        MOV  AL,*+XAR4[AR0]                       ;得到 AR0            
      89 00000017 D00B        MOVB XAR0,#11     
      90 00000018 9394        MOV  AH,*+XAR4[AR0]                       ;得到 AR1
      91 00000019 1EBD        PUSH ACC
      92                          
      93 0000001a D00C        MOVB XAR0,#12     
      94 0000001b 9294        MOV  AL,*+XAR4[AR0]                       ;得到 ST1      
      95 0000001c D00D        MOVB XAR0,#13     
      96 0000001d 9394        MOV  AH,*+XAR4[AR0]                       ;得到 DP
      97 0000001e 1EBD        PUSH ACC                  
      98                    
      99 0000001f D00E        MOVB XAR0,#14     
     100 00000020 9294        MOV  AL,*+XAR4[AR0]                       ;得到 IER            
     101 00000021 D00F        MOVB XAR0,#15     
     102 00000022 9394        MOV  AH,*+XAR4[AR0]                       ;得到 DBGSTAT
     103 00000023 1EBD        PUSH ACC
     104                        
     105 00000024 93D4        MOV     AH,*+XAR4[2]              ;task addr
     106 00000025 92DC        MOV     AL,*+XAR4[3]      
     107 00000026 1EBD        PUSH    ACC               
     108                    
     109 00000027 7602        IRET
     110              
     111              
     112              ;*********************************************************************************************************
     113              ;                                PERFORM A CONTEXT SWITCH (From task level)
     114              ;                                           void OSCtxSw(void)
     115              ;
     116              ; Note(s): 1) Upon entry, 
     117              ;             OSTCBCur     points to the OS_TCB of the task to suspend
     118              ;             OSTCBHighRdy points to the OS_TCB of the task to resume
     119              ;
     120              ;          2) The stack frame of the task to suspend looks as follows:
     121              ;
     122              ;                 SP -> OFFSET  of task to suspend    (Low memory)
     123              ;                       SEGMENT of task to suspend      
     124              ;                       PSW     of task to suspend    (High memory)  
     125              ;
     126              ;          3) The stack frame of the task to resume looks as follows:
     127              ; 
     128              ;                 OSTCBHighRdy->OSTCBStkPtr --> DS                               (Low memory)
TMS320C2000 COFF Assembler PC Version 3.03 Sat Aug 02 12:26:42 2003

Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
OS_CPU_A.ASM                                                         PAGE    4

     129              ;                                               ES
     130              ;                                               DI
     131              ;                                               SI
     132              ;                                               BP
     133              ;                                               SP
     134              ;                                               BX
     135              ;                                               DX
     136              ;                                               CX
     137              ;                                               AX
     138              ;                                               OFFSET  of task code address
     139              ;                                               SEGMENT of task code address
     140              ;                                               Flags to load in PSW             (High memory)
     141              ;*********************************************************************************************************
     142              
     143 00000028       _OSCtxSw:
     144                      .ref _OSTCBHighRdy
     145                      .ref _OSTCBCur
     146                      .ref _OSPrioHighRdy
     147                      .ref _OSPrioCur
     148                      .global _OSCtxSw
     149                      
     150                       ;模拟返回中断
     151                       ;保存当前环境
     152                       
     153              ;********************************************************************************                
     154 00000028 761F!          MOVW   DP,#_OSTCBCur
         00000029 0000 
     155 0000002a 8A00!      MOVL   XAR4,@_OSTCBCur             ; |165| 
     156 0000002b 8AC4       MOVL   XAR4,*+XAR4[0]              ; |165|      
     157                     
     158 0000002c 06BE       POP    ACC                                         
     159 0000002d 97D4       MOV    *+XAR4[2],AH                ;保存task addr
     160 0000002e 96DC       MOV    *+XAR4[3],AL                
     161                   
     162                    
     163                      
     164 0000002f 06BE       POP        ACC
     165 00000030 D00F       MOVB       XAR0,#15     
     166 00000031 9794       MOV        *+XAR4[AR0],AH                  ;保存DBGSTAT          
     167 00000032 D00E       MOVB       XAR0,#14     
     168 00000033 9694       MOV        *+XAR4[AR0],AL                  ;保存 IER
     169                    
     170 00000034 06BE       POP        ACC  
     171 00000035 D00D       MOVB       XAR0,#13     
     172 00000036 9794       MOV        *+XAR4[AR0],AH                  ;保存 DP
     173 00000037 D00C       MOVB       XAR0,#12     
     174 00000038 9694       MOV        *+XAR4[AR0],AL                  ;保存 ST1
     175                    
     176 00000039 06BE       POP        ACC
     177 0000003a D00B       MOVB       XAR0,#11     
     178 0000003b 9794       MOV        *+XAR4[AR0],AH                  ;保存 AR1           
     179 0000003c D00A       MOVB       XAR0,#10     
     180 0000003d 9694       MOV        *+XAR4[AR0],AL                  ;保存 AR0
     181                    
     182                    
TMS320C2000 COFF Assembler PC Version 3.03 Sat Aug 02 12:26:42 2003

⌨️ 快捷键说明

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