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

📄 os_cpu_a.lst

📁 uc/os在c167上的移植代码
💻 LST
📖 第 1 页 / 共 4 页
字号:
C166/ST10 assembler v6.0 r2 SN00082920-083 (c) 1998 TASKING, Inc.                       Date: Dec  5 2000  Time: 10:02:43  Page:   1
os_cpu_a

 LOC CODE        LINE   SOURCELINE

                     1   #line 1 "c:\software\ucos-ii\c167\tasking\source\os_cpu_a.asm"
                     1   ;********************************************************************************************************
                     2   ;                                                uC/OS-II
                     3   ;                                          The Real-Time Kernel
                     4   ;
                     5   ;                           (c) Copyright 1992-1999, Jean J. Labrosse, Weston, FL
                     6   ;                                          All Rights Reserved
                     7   ;
                     8   ;                                         Infineon  C167
                     9   ;                                    Extended Architecture Specific Code
                    10   ;                                           LARGE MEMORY MODEL
                    11   ;
                    12   ;
                    13   ; Module Title    : uC/OS-II C167
                    14   ; System Platform : Target System Infineon C167
                    15   ; Compile with    : TASKING C166/ST10 V2.0 R1 Cross-Assembler
                    16   ; Author          : Michael Awosika, Karl Wannenmacher
                    17   ; Date            : 5 Dez. 2000
                    18   ; Revision        : 1.00
                    19   ; File Name       : OS_CPU_A.ASM
                    20   ; Description     : This uC/OS-II port is intended for Infineon Technologies
                    21   ;                   C167 Extended Architecture Micro Controller Targets
                    22   ;********************************************************************************************************
                    23   
                    24   $DEBUG
                    25   $NOLOCALS
                    26   $EXTEND
                    27   $NOMOD166
                    28   $STDNAMES(Reg167.def)
                    29   $SEGMENTED
                    30   $CASE
                    31   $MODEL(LARGE)
                    32   $CHECKCPU16
                    33                   NAME     OS_CPU_C16x
                    34                   ASSUME   DPP3:SYSTEM
                    35   
                    36                   REGBAS   REGBANK R0
                    37                   COMAREA  COMREG  R1 - R15
                    38   
                    39   ;        1 [State] = 2 * 1/ f CPU [s] for f CPU = variable
                    40   ;                  = 100 [ns] for f CPU = 20 MHz
                    41   
                    42   
                    43   
                    44   
                    45   
                    46   ;********************************************************************************************************
                    47   ;                                             External Code
                    48   ;********************************************************************************************************
                    49                   EXTERN  _OSIntExit:FAR
                    50                   EXTERN  _OSTimeTick:FAR
                    51                   EXTERN  _OSTaskSwHook:FAR
                    52                   EXTERN  _OSIntEnter:FAR
                    53   
                    54   ;********************************************************************************************************
C166/ST10 assembler v6.0 r2 SN00082920-083 (c) 1998 TASKING, Inc.                       Date: Dec  5 2000  Time: 10:02:43  Page:   2
os_cpu_a

 LOC CODE        LINE   SOURCELINE

                    55   ;                                             External Data
                    56   ;********************************************************************************************************
                    57                   EXTERN  _OSIntNesting:BYTE
                    58                   EXTERN  _OSPrioHighRdy:BYTE
                    59                   EXTERN  _OSPrioCur:BYTE
                    60                   EXTERN  _OSRunning:BYTE
                    61                   EXTERN  _OSTCBCur:WORD
                    62                   EXTERN  _OSTCBHighRdy:WORD
                    63   
                    64   UCOS_C16X       SECTION CODE WORD PUBLIC  'CPROGRAM'
                    65                   PUBLIC  _OSStartHighRdy
                    66                   PUBLIC  _OSCtxSw
                    67                   PUBLIC  _OSIntCtxSw
                    68                   PUBLIC  _OSTickISR
                    69   UCOS_C16X       ENDS
                    70   
                    71   ;********************************************************************************************************
                    72   ;                                          START MULTITASKING
                    73   ;                                       void OSStartHighRdy (void)
                    74   ;
                    75   ; Note : OSStartHighRdy() MUST:
                    76   ;        a) Call OSTaskSwHook() then,
                    77   ;        b) Set OSRunning to TRUE.
                    78   ;
                    79   ;          The user stack frame of the task to start looks as follows:
                    80   ;
                    81   ;                                                TASK STACK AREA                              (High Memory)
                    82   ;                                           +12  TASK DATA PARAMETER PAGE pointer
                    83   ;                                           +10  TASK DATA PARAMETER OFFSET pointer
                    84   ;                                           +0E  SEGMENT of task code address
                    85   ;                                           +0C  OFFSET  of task code address
                    86   ;                                           +0A  USER STACK OFFSET POINTER (R0) of task
                    87   ;                                           +08  USER STACK PAGE POINTER (DPP1) of task
                    88   ;                                           +06  PSW flags of task
                    89   ;                                           +04  OFFSET  of task code address
                    90   ;                                           +02  SEGMENT of task code address
                    91   ;             OSTCBHighRdy->OSTCBStkPtr -->   0
                    92   ;                                           -02  R[1 ..15] General Purpose registers of task
                    93   ;                                           -20  CP     Context pointer of task
                    94   ;                                           -22  DPP3   Data page pointer 3 of task
                    95   ;                                           -24  DPP2   Data page pointer 2 of task
                    96   ;                                           -26  DPP0   Data page pointer 0 of task
                    97   ;                                           -28  MDC    Multiply/Divide Control of task
                    98   ;                                           -2A  MDH    Multiply/Divide High register of task
                    99   ;                                           -2C  MDL    Multiply/Divide Low register of task  (Low Memory)
                   100   ;********************************************************************************************************
                   101   
                   102   UCOS_C16X       SECTION CODE
                   103   _OSStartHighRdy PROC    FAR
                   104                                                       
0000 E6F90000  R   105                   MOV     R9,#SOF _ADDR00             ; Call user defined task switch hook
0004 8890          106                   MOV     [-R0],R9
0006 E6F90000  R   107                   MOV     R9,#SEG _ADDR00
000A 8890          108                   MOV     [-R0],R9
000C FA000000  R   109                   JMPS   SEG(_OSTaskSwHook),SOF( _OSTaskSwHook)
C166/ST10 assembler v6.0 r2 SN00082920-083 (c) 1998 TASKING, Inc.                       Date: Dec  5 2000  Time: 10:02:43  Page:   3
os_cpu_a

 LOC CODE        LINE   SOURCELINE

                   110   
0010               111   _ADDR00:
0010 E112          112                   MOVB    RL1,#01h                    ; Indicate that multitasking has started
0012 D7400000  R   113                   EXTP    #PAG _OSRunning,#01h
0016 F7F20000 1R   114                   MOVB    POF _OSRunning,RL1
001A BE88          115                   BCLR    IEN                         ; Disable interrupts
                   116   
001C D7500000  R   117                   EXTP    #PAG _OSTCBHighRdy,#02h     ; OSTCBCur = OSTCBHighRdy;
0020 F2FC0000 2R   118                   MOV     R12,POF _OSTCBHighRdy
0024 F2FD0000 1R   119                   MOV     R13,POF (_OSTCBHighRdy+2)
0028 D7500000  R   120                   EXTP    #PAG _OSTCBCur,#02h
002C F6FC0000 2R   121                   MOV     POF (_OSTCBCur),R12
0030 F6FD0000 1R   122                   MOV     POF (_OSTCBCur+2),R13
                   123   
0034 DC5D          124                   EXTP    R13,#02h                    ; pStack = OSTCBCur->OSTCBStkPtr;
0036 98EC     2    125                   MOV     R14,[R12+]                  ;     Load Offset pointer
0038 A8FC     1    126                   MOV     R15,[R12]                   ;     Load Page pointer
                   127   
                   128   ;                                                   ; Load Task's Context from TCB
003A DC5F          129                   EXTP    R15,#02h                    ;     Start Of Task USR Stack Offset
003C D40E0A00 2    130                   MOV     R0,[R14+#0AH]               ;     Task R0
0040 D41E0800 1    131                   MOV     R1,[R14+#08H]               ;     Task DPP1
                   132   
0044 DC5F          133                   EXTP    R15,#02h
0046 D42E0400 2    134                   MOV     R2,[R14+#04H]               ;     Task IP
004A D43E0200 1    135                   MOV     R3,[R14+#02H]               ;     Task CSP
                   136   
004E F6F102FE      137                   MOV     DPP1,R1                     ;     Start Of Task USER Stack Page
0052 ECF3          138                   PUSH    R3                          ;     Load "saved" CSP on System Stack
0054 ECF2          139                   PUSH    R2                          ;     Load "saved" IP  on System Stack
                   140   
0056 9810          141                   MOV     R1,[R0+]                    ; Restore MDL
0058 F6F10EFE      142                   MOV     MDL,R1                      ;
005C 9810          143                   MOV     R1,[R0+]                    ; Restore MDH
005E F6F10CFE      144                   MOV     MDH,R1                      ;
0062 9810          145                   MOV     R1,[R0+]                    ; Restore MDC
0064 F6F10EFF      146                   MOV     MDC,R1                      ;
0068 9810          147                   MOV     R1,[R0+]                    ; Restore DPP0
006A F6F100FE      148                   MOV     DPP0,R1                     ;
006E 9810          149                   MOV     R1,[R0+]                    ; Restore DPP2
0070 F6F104FE      150                   MOV     DPP2,R1                     ;

⌨️ 快捷键说明

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