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

📄 os_view.txt

📁 lpc2478开发板基于IAR编译器移植ucos实验例程
💻 TXT
📖 第 1 页 / 共 5 页
字号:
000548  e1b00005          MOVS     r0,r5
00054c  e2451001          SUB      r1,r5,#1
000550  e20150ff          AND      r5,r1,#0xff
000554  1afffff8          BNE      |L1.1340|
;;;663        }
;;;664    }
000558  e8bd4030          POP      {r4,r5,lr}
00055c  e12fff1e          BX       lr
                          ENDP

                  OSView_CmdMemRdINT16U PROC
;;;637    static  void  OSView_CmdMemRdINT16U (void)
;;;638    {
000560  e92d4030          PUSH     {r4,r5,lr}
;;;639        INT32U addr;
;;;640        INT8U  nbytes;
;;;641    
;;;642    
;;;643        addr   = OSView_RxGetINT32U();
000564  ebfffffe          BL       OSView_RxGetINT32U
000568  e1a04000          MOV      r4,r0
;;;644        nbytes = OSView_RxGetINT8U();
00056c  ebfffffe          BL       OSView_RxGetINT8U
000570  e1a05000          MOV      r5,r0
;;;645        while (nbytes--) {
000574  ea000002          B        |L1.1412|
                  |L1.1400|
;;;646            OSView_TxStoINT16U(*(INT16U *)addr);
000578  e1d400b0          LDRH     r0,[r4,#0]
00057c  ebfffffe          BL       OSView_TxStoINT16U
;;;647            addr += 2;
000580  e2844002          ADD      r4,r4,#2
                  |L1.1412|
000584  e1b00005          MOVS     r0,r5
000588  e2451001          SUB      r1,r5,#1
00058c  e20150ff          AND      r5,r1,#0xff
000590  1afffff8          BNE      |L1.1400|
;;;648        }
;;;649    }
000594  e8bd4030          POP      {r4,r5,lr}
000598  e12fff1e          BX       lr
                          ENDP

                  OSView_CmdMemRdINT8U PROC
;;;622    static  void  OSView_CmdMemRdINT8U (void)
;;;623    {
00059c  e92d4030          PUSH     {r4,r5,lr}
;;;624        INT32U addr;
;;;625        INT8U  nbytes;
;;;626    
;;;627    
;;;628        addr   = OSView_RxGetINT32U();
0005a0  ebfffffe          BL       OSView_RxGetINT32U
0005a4  e1a04000          MOV      r4,r0
;;;629        nbytes = OSView_RxGetINT8U();
0005a8  ebfffffe          BL       OSView_RxGetINT8U
0005ac  e1a05000          MOV      r5,r0
;;;630        while (nbytes--) {
0005b0  ea000002          B        |L1.1472|
                  |L1.1460|
;;;631            OSView_TxStoINT8U(*(INT8U *)addr);
0005b4  e5d40000          LDRB     r0,[r4,#0]
0005b8  ebfffffe          BL       OSView_TxStoINT8U
;;;632            addr++;
0005bc  e2844001          ADD      r4,r4,#1
                  |L1.1472|
0005c0  e1b00005          MOVS     r0,r5
0005c4  e2451001          SUB      r1,r5,#1
0005c8  e20150ff          AND      r5,r1,#0xff
0005cc  1afffff8          BNE      |L1.1460|
;;;633        }
;;;634    }
0005d0  e8bd4030          POP      {r4,r5,lr}
0005d4  e12fff1e          BX       lr
                          ENDP

                  OSView_CmdTrace PROC
;;;744    {
;;;745    }
0005d8  e12fff1e          BX       lr
                          ENDP

                  OSView_CmdTickStep PROC
;;;711    static  void  OSView_CmdTickStep (void)
;;;712    {
0005dc  e52de004          PUSH     {lr}
;;;713    #if OS_TICK_STEP_EN > 0
;;;714        INT8U sub_cmd;
;;;715    
;;;716    
;;;717        sub_cmd = OSView_RxGetINT8U();
0005e0  ebfffffe          BL       OSView_RxGetINT8U
0005e4  e1a03000          MOV      r3,r0
;;;718        switch (sub_cmd) {
0005e8  e3530000          CMP      r3,#0
0005ec  0a000004          BEQ      |L1.1540|
0005f0  e3530001          CMP      r3,#1
0005f4  0a000007          BEQ      |L1.1560|
0005f8  e3530002          CMP      r3,#2
0005fc  1a00000f          BNE      |L1.1600|
000600  ea000009          B        |L1.1580|
                  |L1.1540|
;;;719            case 0:                                             /* Enable stepping                                 */
000604  e1a00000          MOV      r0,r0
;;;720                 OSTickStepState = OS_TICK_STEP_WAIT;
000608  e3a00001          MOV      r0,#1
00060c  e59f1310          LDR      r1,|L1.2340|
000610  e5c10000          STRB     r0,[r1,#0]  ; OSTickStepState
;;;721                 break;
000614  ea000009          B        |L1.1600|
                  |L1.1560|
;;;722    
;;;723            case 1:                                             /* Disable stepping, let tick ISR handle the ticks */
000618  e1a00000          MOV      r0,r0
;;;724                 OSTickStepState = OS_TICK_STEP_DIS;
00061c  e3a00000          MOV      r0,#0
000620  e59f12fc          LDR      r1,|L1.2340|
000624  e5c10000          STRB     r0,[r1,#0]  ; OSTickStepState
;;;725                 break;
000628  ea000004          B        |L1.1600|
                  |L1.1580|
;;;726    
;;;727            case 2:                                             /* Simulate the occurrence of one tick             */
00062c  e1a00000          MOV      r0,r0
;;;728                 OSTickStepState = OS_TICK_STEP_ONCE;
000630  e3a00002          MOV      r0,#2
000634  e59f12e8          LDR      r1,|L1.2340|
000638  e5c10000          STRB     r0,[r1,#0]  ; OSTickStepState
;;;729                 break;
00063c  e1a00000          MOV      r0,r0
                  |L1.1600|
000640  e1a00000          MOV      r0,r0
;;;730        }
;;;731    #endif
;;;732    }
000644  e49de004          POP      {lr}
000648  e12fff1e          BX       lr
                          ENDP

                  OSView_CmdGetTaskList PROC
;;;511    static  void  OSView_CmdGetTaskList (void)
;;;512    {
00064c  e92d4030          PUSH     {r4,r5,lr}
;;;513        INT8U   prio;
;;;514        OS_TCB *ptcb;
;;;515    
;;;516    
;;;517        OSView_TxStoINT8U('t');                                 /* Identifier for data type                        */
000650  e3a00074          MOV      r0,#0x74
000654  ebfffffe          BL       OSView_TxStoINT8U
;;;518        for (prio = 0; prio <= OS_LOWEST_PRIO; prio++) {
000658  e3a05000          MOV      r5,#0
00065c  ea000009          B        |L1.1672|
                  |L1.1632|
;;;519            ptcb = OSTCBPrioTbl[prio];
000660  e59f02c0          LDR      r0,|L1.2344|
000664  e7904105          LDR      r4,[r0,r5,LSL #2]
;;;520            if (ptcb != (OS_TCB *)0 && ptcb != (OS_TCB *)1) {   /* Does task exist? (Not a Mutex reserved task)    */
000668  e3540000          CMP      r4,#0
00066c  0a000003          BEQ      |L1.1664|
000670  e3540001          CMP      r4,#1
000674  0a000001          BEQ      |L1.1664|
;;;521                OSView_TxStoINT32U((INT32U)ptcb);               /* Yes, send the task's TCB address                */
000678  e1a00004          MOV      r0,r4
00067c  ebfffffe          BL       OSView_TxStoINT32U
                  |L1.1664|
000680  e2850001          ADD      r0,r5,#1
000684  e20050ff          AND      r5,r0,#0xff
                  |L1.1672|
000688  e355001f          CMP      r5,#0x1f
00068c  dafffff3          BLE      |L1.1632|
;;;522            }
;;;523        }
;;;524    }
000690  e8bd4030          POP      {r4,r5,lr}
000694  e12fff1e          BX       lr
                          ENDP

                  OSView_TxStoStr PROC
;;;1143   static  void  OSView_TxStoStr (INT8U *s, int max_len)
;;;1144   {
000698  e92d41f0          PUSH     {r4-r8,lr}
00069c  e1a04000          MOV      r4,r0
0006a0  e1a05001          MOV      r5,r1
;;;1145       INT8U   len;
;;;1146       INT8U   i;
;;;1147       INT8U  *ps;
;;;1148   
;;;1149   
;;;1150       len = 0;
0006a4  e3a06000          MOV      r6,#0
;;;1151       ps  = s;
0006a8  e1a07004          MOV      r7,r4
;;;1152       if (ps != (INT8U *)0) {                                 /* Calculate length of string                      */
0006ac  e1b04007          MOVS     r4,r7
0006b0  0a000008          BEQ      |L1.1752|
;;;1153           while (*ps && (len < max_len)) {
0006b4  ea000002          B        |L1.1732|
                  |L1.1720|
;;;1154               ps++;
0006b8  e2877001          ADD      r7,r7,#1
;;;1155               len++;
0006bc  e2860001          ADD      r0,r6,#1
0006c0  e20060ff          AND      r6,r0,#0xff
                  |L1.1732|
0006c4  e5d70000          LDRB     r0,[r7,#0]
0006c8  e3500000          CMP      r0,#0
0006cc  0a000001          BEQ      |L1.1752|
0006d0  e1560005          CMP      r6,r5
0006d4  bafffff7          BLT      |L1.1720|
                  |L1.1752|
;;;1156           }
;;;1157       }
;;;1158       OSView_TxStoINT8U(len);                                 /* Store string, length first                      */
0006d8  e1a00006          MOV      r0,r6
0006dc  ebfffffe          BL       OSView_TxStoINT8U
;;;1159       ps = s;
0006e0  e1a07004          MOV      r7,r4
;;;1160       for (i = 0; i < len; i++) {
0006e4  e3a08000          MOV      r8,#0
0006e8  ea000004          B        |L1.1792|
                  |L1.1772|
;;;1161           OSView_TxStoINT8U((INT8U)*ps);
0006ec  e5d70000          LDRB     r0,[r7,#0]
0006f0  ebfffffe          BL       OSView_TxStoINT8U
;;;1162           ps++;
0006f4  e2877001          ADD      r7,r7,#1
0006f8  e2880001          ADD      r0,r8,#1
0006fc  e20080ff          AND      r8,r0,#0xff
                  |L1.1792|
000700  e1580006          CMP      r8,r6
000704  bafffff8          BLT      |L1.1772|
;;;1163       }
;;;1164   }
000708  e8bd41f0          POP      {r4-r8,lr}
00070c  e12fff1e          BX       lr
                          ENDP

                  OSView_CmdGetTaskInfo_InvalidTask PROC
;;;575    static  void  OSView_CmdGetTaskInfo_InvalidTask (void)
;;;576    {
000710  e52de004          PUSH     {lr}
;;;577        OSView_TxStoStr((INT8U *)"INVALID TASK!", 30);          /* Task name                                       */
000714  e3a0101e          MOV      r1,#0x1e
000718  e28f0f83          ADR      r0,|L1.2348|
00071c  ebfffffe          BL       OSView_TxStoStr
;;;578        OSView_TxStoINT8U(0);                                   /* Prio                                            */
000720  e3a00000          MOV      r0,#0
000724  ebfffffe          BL       OSView_TxStoINT8U
;;;579        OSView_TxStoINT8U(0);                                   /* Stat                                            */
000728  e3a00000          MOV      r0,#0
00072c  ebfffffe          BL       OSView_TxStoINT8U
;;;580        OSView_TxStoINT32U(0);                                  /* Data                                            */
000730  e3a00000          MOV      r0,#0
000734  ebfffffe          BL       OSView_TxStoINT32U
;;;581        OSView_TxStoINT32U(0);                                  /* Timeout                                         */
000738  e3a00000          MOV      r0,#0
00073c  ebfffffe          BL       OSView_TxStoINT32U
;;;582        OSView_TxStoINT32U(0);                                  /* StackBase                                       */
000740  e3a00000          MOV      r0,#0
000744  ebfffffe          BL       OSView_TxStoINT32U
;;;583        OSView_TxStoINT32U(0);                                  /* StackSize                                       */
000748  e3a00000          MOV      r0,#0
00074c  ebfffffe          BL       OSView_TxStoINT32U
;;;584        OSView_TxStoINT32U(0);                                  /* #Bytes used on stack                            */
000750  e3a00000          MOV      r0,#0
000754  ebfffffe          BL       OSView_TxStoINT32U
;;;585        OSView_TxStoINT32U(0);                                  /* Current SP address                              */
000758  e3a00000          MOV      r0,#0
00075c  ebfffffe          BL       OSView_TxStoINT32U
;;;586        OSView_TxStoINT32U(0);                                  /* ExecTime                                        */
000760  e3a00000          MOV      r0,#0
000764  ebfffffe          BL       OSView_TxStoINT32U
;;;587        OSView_TxStoINT32U(0);                                  /* NumActivations                                  */
000768  e3a00000          MOV      r0,#0
00076c  ebfffffe          BL       OSView_TxStoINT32U
;;;588    }
000770  e49de004          POP      {lr}
000774  e12fff1e          BX       lr
                          ENDP

                  OSView_CmdGetTaskInfo_TCBStat PROC
;;;597    static  INT8U  OSView_CmdGetTaskInfo_TCBStat (OS_TCB *ptcb)
;;;598    {
000778  e1a01000          MOV      r1,r0
;;;599        INT8U stat;
;;;600    
;;;601    
;;;602        if (ptcb->OSTCBStat != OS_STAT_RDY) {
00077c  e5d1202c          LDRB     r2,[r1,#0x2c]
000780  e3520000          CMP      r2,#0

⌨️ 快捷键说明

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