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

📄 os_task.lst

📁 IAR project for MSP430 and uC/OS. All configured to start filling with tasks.
💻 LST
📖 第 1 页 / 共 5 页
字号:
##############################################################################
#                                                                            #
# IAR MSP430 C-Compiler V1.26A/WIN                                           #
#                                                                            #
# Time limited license: 29 days left                                         #
#                                                                            #
#       Compile time  =  30/Sep/2002  18:04:14                               #
#       Target option =  SP430x31x                                           #
#       Memory model  =  small                                               #
#       Source file   =  c:\software\ucos-ii\source\os_task.c                #
#       List file     =  j:\software\ucos-ii\ti-msp430\iar\source\debug\list\os_task.lst#
#       Object file   =  j:\software\ucos-ii\ti-msp430\iar\source\debug\obj\os_task.r43#
#       ASM file      =  j:\software\ucos-ii\ti-msp430\iar\source\debug\list\os_task.s43#
#       Command line  =  -OJ:\SOFTWARE\UCOS-II\TI-MSP430\IAR\SOURCE\Debug\Obj\ #
#                        -e -K -gA -s6 -RCODE -r0                            #
#                        -LJ:\SOFTWARE\UCOS-II\TI-MSP430\IAR\SOURCE\Debug\List\ #
#                        -q -t8 -x                                           #
#                        -AJ:\SOFTWARE\UCOS-II\TI-MSP430\IAR\SOURCE\Debug\List\ #
#                        -X -IC:\PROGRA~1\IARSYS~1\ew23\430\inc\             #
#                        -I\software\ucos-ii\ti-msp430\iar\source\           #
#                        -I\software\ucos-ii\source\                         #
#                        C:\SOFTWARE\uCOS-II\SOURCE\OS_TASK.C                #
#                                                                            #
#                           Copyright 1996-2002 IAR Systems. All rights reserved. #
##############################################################################


extern  INT8U  const      OSMapTbl[];               /* Priority->Bit Mask lookup table                 */
-----------------------------------^
"c:\software\ucos-ii\source\ucos_ii.h",481  Warning[27]: Size of "extern" object 'OSMapTbl' is unknown

extern  INT8U  const      OSUnMapTbl[];             /* Priority->Index    lookup table                 */
-------------------------------------^
"c:\software\ucos-ii\source\ucos_ii.h",482  Warning[27]: Size of "extern" object 'OSUnMapTbl' is unknown

}
^
"c:\software\ucos-ii\source\os_task.c",437  Warning[33]: Local or formal 'self' was never referenced
   \   0000                    NAME    os_task(16)
   \   0000                    RSEG    CODE(1)
   \   0000                    EXTERN  OSIntNesting
   \   0000                    EXTERN  OSLockNesting
   \   0000                    EXTERN  OSMapTbl
   \   0000                    EXTERN  OSRdyGrp
   \   0000                    EXTERN  OSRdyTbl
   \   0000                    EXTERN  OSRunning
   \   0000                    EXTERN  OSTCBCur
   \   0000                    EXTERN  OSTCBFreeList
   \   0000                    EXTERN  OSTCBList
   \   0000                    EXTERN  OSTCBPrioTbl
   \   0000                    PUBLIC  OSTaskChangePrio
   \   0000                    PUBLIC  OSTaskCreate
   \   0000                    PUBLIC  OSTaskCreateExt
   \   0000                    EXTERN  OSTaskCtr
   \   0000                    PUBLIC  OSTaskDel
   \   0000                    EXTERN  OSTaskDelHook
   \   0000                    PUBLIC  OSTaskDelReq
   \   0000                    PUBLIC  OSTaskQuery
   \   0000                    PUBLIC  OSTaskResume
   \   0000                    PUBLIC  OSTaskStkChk
   \   0000                    EXTERN  OSTaskStkInit
   \   0000                    PUBLIC  OSTaskSuspend
   \   0000                    EXTERN  OS_Dummy
   \   0000                    EXTERN  OS_FlagUnlink
   \   0000                    EXTERN  OS_Sched
   \   0000                    EXTERN  OS_TCBInit
   \   0000                    EXTERN  memcpy
   \   0000                    EXTERN  memset
   \   0000                    EXTERN  ?CL430_1_26_L08
   \   0000                    RSEG    CODE
   \   0000            OSTaskChangePrio:
      1          /*
      2          *********************************************************************************************************
      3          *                                                uC/OS-II
      4          *                                          The Real-Time Kernel
      5          *                                            TASK MANAGEMENT
      6          *
      7          *                          (c) Copyright 1992-2002, Jean J. Labrosse, Weston, FL
      8          *                                           All Rights Reserved
      9          *
     10          * File : OS_TASK.C
     11          * By   : Jean J. Labrosse
     12          *********************************************************************************************************
     13          */
     14          
     15          #ifndef  OS_MASTER_FILE
     16          #include "includes.h"
     17          #endif
     18          
     19          /*
     20          *********************************************************************************************************
     21          *                                        CHANGE PRIORITY OF A TASK
     22          *
     23          * Description: This function allows you to change the priority of a task dynamically.  Note that the new
     24          *              priority MUST be available.
     25          *
     26          * Arguments  : oldp     is the old priority
     27          *
     28          *              newp     is the new priority
     29          *
     30          * Returns    : OS_NO_ERR        is the call was successful
     31          *              OS_PRIO_INVALID  if the priority you specify is higher that the maximum allowed
     32          *                               (i.e. >= OS_LOWEST_PRIO)
     33          *              OS_PRIO_EXIST    if the new priority already exist.
     34          *              OS_PRIO_ERR      there is no task with the specified OLD priority (i.e. the OLD task does
     35          *                               not exist.
     36          *********************************************************************************************************
     37          */
     38          
     39          #if OS_TASK_CHANGE_PRIO_EN > 0
     40          INT8U  OSTaskChangePrio (INT8U oldprio, INT8U newprio)
     41          {
   \   0000  0A12              PUSH    R10     
   \   0002  0B12              PUSH    R11     
   \   0004  0812              PUSH    R8      
   \   0006  0912              PUSH    R9      
   \   0008  0612              PUSH    R6      
     42          #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
     43              OS_CPU_SR    cpu_sr;
     44          #endif
     45          
     46          #if OS_EVENT_EN > 0
     47              OS_EVENT    *pevent;
     48          #endif
     49          
     50              OS_TCB      *ptcb;
     51              INT8U        x;
     52              INT8U        y;
     53              INT8U        bitx;
     54              INT8U        bity;
     55          
     56          
     57          
     58          #if OS_ARG_CHK_EN > 0
     59              if ((oldprio >= OS_LOWEST_PRIO && oldprio != OS_PRIO_SELF)  ||
     60                   newprio >= OS_LOWEST_PRIO) {
   \   000A  7C900C00          CMP.B   #12,R12 
   \   000E  0228              JNC     (?0063) 
   \   0010  7C93              CMP.B   #255,R12        
   \   0012  0320              JNE     (?0064) 
   \   0014            ?0063:
   \   0014  7E900C00          CMP.B   #12,R14 
   \   0018  0328              JNC     (?0061) 
   \   001A            ?0064:
     61                  return (OS_PRIO_INVALID);
   \   001A  7C402A00          MOV.B   #42,R12 
     62              }
   \   001E  7D3C              JMP     (?0085) 
   \   0020            ?0061:
     63          #endif
     64              OS_ENTER_CRITICAL();
   \   0020  32C2              DINT            
     65              if (OSTCBPrioTbl[newprio] != (OS_TCB *)0) {                 /* New priority must not already exist */
   \   0022  4D4E              MOV.B   R14,R13 
   \   0024  0D5D              ADD     R13,R13 
   \   0026  8D930000          CMP     #0,OSTCBPrioTbl(R13)    
   \   002A  0424              JEQ     (?0067) 
     66                  OS_EXIT_CRITICAL();
   \   002C  32D2              EINT            
     67                  return (OS_PRIO_EXIST);
   \   002E  7C402800          MOV.B   #40,R12 
     68              } else {
   \   0032  733C              JMP     (?0085) 
   \   0034            ?0067:
     69                  OSTCBPrioTbl[newprio] = (OS_TCB *)1;                    /* Reserve the entry to prevent others */
   \   0034  4D4E              MOV.B   R14,R13 
   \   0036  0D5D              ADD     R13,R13 
   \   0038  9D430000          MOV     #1,OSTCBPrioTbl(R13)    
     70                  OS_EXIT_CRITICAL();
   \   003C  32D2              EINT            
     71                  y    = newprio >> 3;                                    /* Precompute to reduce INT. latency   */
   \   003E  4D4E              MOV.B   R14,R13 
   \   0040  12C3              CLRC            
   \   0042  4D10              RRC.B   R13     
   \   0044  4D11              RRA.B   R13     
   \   0046  4D11              RRA.B   R13     
     72                  bity = OSMapTbl[y];
   \   0048  4A4D              MOV.B   R13,R10 
   \   004A  5F4A0000          MOV.B   OSMapTbl(R10),R15       
     73                  x    = newprio & 0x07;
   \   004E  4A4E              MOV.B   R14,R10 
   \   0050  7AF00700          AND.B   #7,R10  
     74                  bitx = OSMapTbl[x];
   \   0054  484A              MOV.B   R10,R8  
   \   0056  5B480000          MOV.B   OSMapTbl(R8),R11        
     75                  OS_ENTER_CRITICAL();
   \   005A  32C2              DINT            
     76                  if (oldprio == OS_PRIO_SELF) {                          /* See if changing self                */
   \   005C  7C93              CMP.B   #255,R12        
   \   005E  0420              JNE     (?0069) 
     77                      oldprio = OSTCBCur->OSTCBPrio;                      /* Yes, get priority                   */
   \   0060  18420000          MOV     &OSTCBCur,R8    
   \   0064  5C481D00          MOV.B   29(R8),R12      
   \   0068            ?0069:
     78                  }
     79                  ptcb = OSTCBPrioTbl[oldprio];
   \   0068  494C              MOV.B   R12,R9  
   \   006A  0959              ADD     R9,R9   
   \   006C  18490000          MOV     OSTCBPrioTbl(R9),R8     
     80                  if (ptcb != (OS_TCB *)0) {                              /* Task to change must exist           */
   \   0070  0893              CMP     #0,R8   
   \   0072  4C24              JEQ     (?0071) 
     81                      OSTCBPrioTbl[oldprio] = (OS_TCB *)0;                /* Remove TCB from old priority        */
   \   0074  7CF3              AND.B   #-1,R12 
   \   0076  0C5C              ADD     R12,R12 
   \   0078  8C430000          MOV     #0,OSTCBPrioTbl(R12)    
     82                      if ((OSRdyTbl[ptcb->OSTCBY] & ptcb->OSTCBBitX) != 0x00) {  /* If task is ready make it not */
   \   007C  5C481F00          MOV.B   31(R8),R12      
   \   0080  D8BC0000          BIT.B   OSRdyTbl(R12),32(R8)    
   \   0084  2000
   \   0086  1524              JEQ     (?0073) 
     83                          if ((OSRdyTbl[ptcb->OSTCBY] &= ~ptcb->OSTCBBitX) == 0x00) {
   \   0088  5C481F00          MOV.B   31(R8),R12      
   \   008C  59482000          MOV.B   32(R8),R9       
   \   0090  79E3              XOR.B   #-1,R9  
   \   0092  CCF90000          AND.B   R9,OSRdyTbl(R12)        
   \   0096  CC930000          CMP.B   #0,OSRdyTbl(R12)        
   \   009A  0520              JNE     (?0075) 
     84                              OSRdyGrp &= ~ptcb->OSTCBBitY;
   \   009C  5C482100          MOV.B   33(R8),R12      
   \   00A0  7CE3              XOR.B   #-1,R12 

⌨️ 快捷键说明

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