📄 os_view.lst
字号:
\ 0000001C 0400B0E1 MOVS R0,R4
\ 00000020 ........ LDR R1,??DataTable52 ;; OSView_TerminalRxCallbackFnct
\ 00000024 001091E5 LDR R1,[R1, #+0]
\ 00000028 0FE0A0E1 MOV LR,PC
\ 0000002C 01F0A0E1 MOV PC,R1
464 }
465 }
\ ??OSView_CmdSendToApp_0:
\ 00000030 1080BDE8 POP {R4,PC} ;; return
466
467
468 /*
469 *********************************************************************************************************
470 * uC/OS-View COMMAND HANDLER
471 * (Get System Information)
472 *********************************************************************************************************
473 */
474
\ In segment CODE, align 4, keep-with-next
475 static void OSView_CmdGetSysInfo (void)
476 {
\ OSView_CmdGetSysInfo:
\ 00000000 F0402DE9 PUSH {R4-R7,LR}
\ 00000004 20D04DE2 SUB SP,SP,#+32
477 INT8U s[OS_VIEW_CPU_NAME_SIZE+1];
478 INT8U i;
479 INT32U stk_base;
480 INT32U stk_size;
481 INT32U time;
482
483
484 time = OSTimeGet(); /* Send current value of tick counter */
\ 00000008 ........ _BLF OSTimeGet,??OSTimeGet??rA
\ 0000000C 0070B0E1 MOVS R7,R0
485 OSView_TxStoINT32U(time);
\ 00000010 0700B0E1 MOVS R0,R7
\ 00000014 ........ BL OSView_TxStoINT32U
486 OSView_TxStoPtr(OSTCBCur); /* Current task's OS_TCB */
\ 00000018 ........ LDR R0,??DataTable26 ;; OSTCBCur
\ 0000001C 000090E5 LDR R0,[R0, #+0]
\ 00000020 ........ BL OSView_TxStoPtr
487 OSView_TxStoINT16U(OS_VERSION); /* Send uC/OS-II's version number */
\ 00000024 470FA0E3 MOV R0,#+284
\ 00000028 ........ BL OSView_TxStoINT16U
488 OSView_TxStoINT8U(1); /* Indicate profiling information will be sent */
\ 0000002C 0100A0E3 MOV R0,#+1
\ 00000030 ........ BL OSView_TxStoINT8U
489
490 for (i = 0; i < OS_VIEW_CPU_NAME_SIZE; i++) { /* Clear buffer to help with debug. */
\ 00000034 0000A0E3 MOV R0,#+0
\ 00000038 0040B0E1 MOVS R4,R0
\ ??OSView_CmdGetSysInfo_0:
\ 0000003C FF4014E2 ANDS R4,R4,#0xFF ;; Zero extend
\ 00000040 1E0054E3 CMP R4,#+30
\ 00000044 0600002A BCS ??OSView_CmdGetSysInfo_1
491 s[i] = 0x00;
\ 00000048 0400B0E1 MOVS R0,R4
\ 0000004C FF0010E2 ANDS R0,R0,#0xFF ;; Zero extend
\ 00000050 0D10B0E1 MOVS R1,SP
\ 00000054 0020A0E3 MOV R2,#+0
\ 00000058 0120C0E7 STRB R2,[R0, +R1]
492 }
\ 0000005C 014094E2 ADDS R4,R4,#+1
\ 00000060 F5FFFFEA B ??OSView_CmdGetSysInfo_0
493 OSView_GetCPUName(s); /* Get Processor Name in string 's' */
\ ??OSView_CmdGetSysInfo_1:
\ 00000064 0D00B0E1 MOVS R0,SP
\ 00000068 ........ _BLF OSView_GetCPUName,??OSView_GetCPUName??rA
494 OSView_TxStoStr(s, OS_VIEW_CPU_NAME_SIZE);
\ 0000006C 1E10A0E3 MOV R1,#+30
\ 00000070 0D00B0E1 MOVS R0,SP
\ 00000074 ........ BL OSView_TxStoStr
495
496 stk_base = OSView_GetIntStkBase(); /* Interrupt stack base from port specific file */
\ 00000078 ........ _BLF OSView_GetIntStkBase,??OSView_GetIntStkBase??rA
\ 0000007C 0050B0E1 MOVS R5,R0
497 OSView_TxStoINT32U(stk_base);
\ 00000080 0500B0E1 MOVS R0,R5
\ 00000084 ........ BL OSView_TxStoINT32U
498
499 stk_size = OSView_GetIntStkSize(); /* Interrupt stack size from port specific file */
\ 00000088 ........ _BLF OSView_GetIntStkSize,??OSView_GetIntStkSize??rA
\ 0000008C 0060B0E1 MOVS R6,R0
500 OSView_TxStoINT32U(stk_size);
\ 00000090 0600B0E1 MOVS R0,R6
\ 00000094 ........ BL OSView_TxStoINT32U
501 }
\ 00000098 20D08DE2 ADD SP,SP,#+32 ;; stack cleaning
\ 0000009C F080BDE8 POP {R4-R7,PC} ;; return
502
503 /*$PAGE*/
504 /*
505 *********************************************************************************************************
506 * uC/OS-View COMMAND HANDLER
507 * (Get Task List)
508 *********************************************************************************************************
509 */
510
\ In segment CODE, align 4, keep-with-next
511 static void OSView_CmdGetTaskList (void)
512 {
\ OSView_CmdGetTaskList:
\ 00000000 30402DE9 PUSH {R4,R5,LR}
513 INT8U prio;
514 OS_TCB *ptcb;
515
516
517 OSView_TxStoINT8U('t'); /* Identifier for data type */
\ 00000004 7400A0E3 MOV R0,#+116
\ 00000008 ........ BL OSView_TxStoINT8U
518 for (prio = 0; prio <= OS_LOWEST_PRIO; prio++) {
\ 0000000C 0000A0E3 MOV R0,#+0
\ 00000010 0040B0E1 MOVS R4,R0
\ ??OSView_CmdGetTaskList_0:
\ 00000014 FF4014E2 ANDS R4,R4,#0xFF ;; Zero extend
\ 00000018 200054E3 CMP R4,#+32
\ 0000001C 0E00002A BCS ??OSView_CmdGetTaskList_1
519 ptcb = OSTCBPrioTbl[prio];
\ 00000020 0400B0E1 MOVS R0,R4
\ 00000024 FF0010E2 ANDS R0,R0,#0xFF ;; Zero extend
\ 00000028 0410A0E3 MOV R1,#+4
\ 0000002C 2C209FE5 LDR R2,??OSView_CmdGetTaskList_2 ;; OSTCBPrioTbl
\ 00000030 912020E0 MLA R0,R1,R0,R2
\ 00000034 000090E5 LDR R0,[R0, #+0]
\ 00000038 0050B0E1 MOVS R5,R0
520 if (ptcb != (OS_TCB *)0 && ptcb != (OS_TCB *)1) { /* Does task exist? (Not a Mutex reserved task) */
\ 0000003C 000055E3 CMP R5,#+0
\ 00000040 0300000A BEQ ??OSView_CmdGetTaskList_3
\ 00000044 010055E3 CMP R5,#+1
\ 00000048 0100000A BEQ ??OSView_CmdGetTaskList_3
521 OSView_TxStoINT32U((INT32U)ptcb); /* Yes, send the task's TCB address */
\ 0000004C 0500B0E1 MOVS R0,R5
\ 00000050 ........ BL OSView_TxStoINT32U
522 }
523 }
\ ??OSView_CmdGetTaskList_3:
\ 00000054 014094E2 ADDS R4,R4,#+1
\ 00000058 EDFFFFEA B ??OSView_CmdGetTaskList_0
524 }
\ ??OSView_CmdGetTaskList_1:
\ 0000005C 3080BDE8 POP {R4,R5,PC} ;; return
\ ??OSView_CmdGetTaskList_2:
\ 00000060 ........ DC32 OSTCBPrioTbl
525
526 /*
527 *********************************************************************************************************
528 * uC/OS-View COMMAND HANDLER
529 * (Get Task Information)
530 *********************************************************************************************************
531 */
532
\ In segment CODE, align 4, keep-with-next
533 static void OSView_CmdGetTaskInfo (void)
534 {
\ OSView_CmdGetTaskInfo:
\ 00000000 70402DE9 PUSH {R4-R6,LR}
535 OS_TCB *ptcb;
536 INT32U cycles;
537 INT8U stat;
538
539
540 ptcb = (OS_TCB *)OSView_RxGetINT32U(); /* Get the desired task's TCB address */
\ 00000004 ........ BL OSView_RxGetINT32U
\ 00000008 0040B0E1 MOVS R4,R0
541 cycles = OSView_TimeGetCycles(); /* Get timestamp */
\ 0000000C ........ BL OSView_TimeGetCycles
\ 00000010 0050B0E1 MOVS R5,R0
542 OSView_TxStoINT32U(cycles);
\ 00000014 0500B0E1 MOVS R0,R5
\ 00000018 ........ BL OSView_TxStoINT32U
543 if (ptcb != (OS_TCB *)0 && ptcb != (OS_TCB *)1) { /* Make sure we have a valid TCB pointer */
\ 0000001C 000054E3 CMP R4,#+0
\ 00000020 2800000A BEQ ??OSView_CmdGetTaskInfo_0
\ 00000024 010054E3 CMP R4,#+1
\ 00000028 2600000A BEQ ??OSView_CmdGetTaskInfo_0
544 if (ptcb == OSTCBCur) {
\ 0000002C ........ LDR R0,??DataTable26 ;; OSTCBCur
\ 00000030 000090E5 LDR R0,[R0, #+0]
\ 00000034 000054E1 CMP R4,R0
\ 00000038 0500001A BNE ??OSView_CmdGetTaskInfo_1
545 ptcb->OSTCBCyclesTot += cycles - ptcb->OSTCBCyclesStart;
\ 0000003C 380094E5 LDR R0,[R4, #+56]
\ 00000040 000095E0 ADDS R0,R5,R0
\ 00000044 3C1094E5 LDR R1,[R4, #+60]
\ 00000048 010050E0 SUBS R0,R0,R1
\ 0000004C 380084E5 STR R0,[R4, #+56]
546 ptcb->OSTCBCyclesStart = cycles;
\ 00000050 3C5084E5 STR R5,[R4, #+60]
547 }
548 OSView_TxStoStr(ptcb->OSTCBTaskName, OS_TASK_NAME_SIZE - 1); /* Task name */
\ ??OSView_CmdGetTaskInfo_1:
\ 00000054 0F10A0E3 MOV R1,#+15
\ 00000058 480094E2 ADDS R0,R4,#+72
\ 0000005C ........ BL OSView_TxStoStr
549 OSView_TxStoINT8U(ptcb->OSTCBPrio); /* Prio */
\ 00000060 2E00D4E5 LDRB R0,[R4, #+46]
\ 00000064 ........ BL OSView_TxStoINT8U
550 stat = OSView_CmdGetTaskInfo_TCBStat(ptcb); /* Task status */
\ 00000068 0400B0E1 MOVS R0,R4
\ 0000006C ........ BL OSView_CmdGetTaskInfo_TCBStat
\ 00000070 0060B0E1 MOVS R6,R0
551 OSView_TxStoINT8U(stat);
\ 00000074 0600B0E1 MOVS R0,R6
\ 00000078 ........ BL OSView_TxStoINT8U
552 OSView_TxStoINT32U((INT32U)ptcb->OSTCBEventPtr); /* Pointer to event task is waiting for. */
\ 0000007C 1C0094E5 LDR R0,[R4, #+28]
\ 00000080 ........ BL OSView_TxStoINT32U
553 OSView_TxStoINT32U((INT32U)ptcb->OSTCBDly); /* Timeout (i.e. ticks of delayed task) */
\ 00000084 BA02D4E1 LDRH R0,[R4, #+42]
\ 00000088 ........ BL OSView_TxStoINT32U
554 OSView_TxStoINT32U(ptcb->OSTCBCyclesTot); /* ExecTime */
\ 0000008C 380094E5 LDR R0,[R4, #+56]
\ 00000090 ........ BL OSView_TxStoINT32U
555 OSView_TxStoINT32U(ptcb->OSTCBCtxSwCtr); /* NumActivations */
\ 00000094 340094E5 LDR R0,[R4, #+52]
\ 00000098 ........ BL OSView_TxStoINT32U
556
557 OSView_TxStoINT32U((INT32U)ptcb->OSTCBStkBase); /* Stack base address */
\ 0000009C 400094E5 LDR R0,[R4, #+64]
\ 000000A0 ........ BL OSView_TxStoINT32U
558 OSView_TxStoINT32U(ptcb->OSTCBStkSize * sizeof(OS_STK)); /* Stack size (in #bytes) */
\ 000000A4 0C0094E5 LDR R0,[R4, #+12]
\
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -