📄 os_core.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.0 [Build 951] for uVision
; commandline ArmCC [--debug -c --asm --interleave -oos_core.o --device=DARMP --apcs=interwork -O0 -IC:\Keil\ARM\INC\Philips uCosii\OS_CORE.C]
ARM
AREA ||.text.7||, CODE, READONLY, ALIGN=2
OS_TaskStat PROC
;;;954 void OS_TaskStat (void *pdata)
;;;955 {
|L1.0|
000000 e92d41f0 PUSH {r4-r8,lr}
000004 e1a07000 MOV r7,r0
;;;956 #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
;;;957 OS_CPU_SR cpu_sr;
;;;958 #endif
;;;959 INT32U run;
;;;960 INT32U max;
;;;961 INT8S usage;
;;;962
;;;963
;;;964 pdata = pdata; /* Prevent compiler warning for not using 'pdata' */
000008 e1a00000 MOV r0,r0
;;;965 while (OSStatRdy == FALSE) {
00000c ea000001 B |L1.24|
;;;966 OSTimeDly(2 * OS_TICKS_PER_SEC); /* Wait until statistic task is ready */
|L1.16|
000010 e3a00e19 MOV r0,#0x190
000014 ebfffffe BL OSTimeDly
|L1.24|
000018 e59f0ad4 LDR r0,|L1.2804| ;965
00001c e5d00000 LDRB r0,[r0,#0] ;965 ; OSStatRdy
000020 e3500000 CMP r0,#0 ;965
000024 0afffff9 BEQ |L1.16| ;965
;;;967 }
;;;968 max = OSIdleCtrMax / 100L;
000028 e3a01064 MOV r1,#0x64
00002c e59f0ac4 LDR r0,|L1.2808|
000030 e5900000 LDR r0,[r0,#0] ; OSIdleCtrMax
000034 ebfffffe BL __aeabi_uidivmod
000038 e1a04000 MOV r4,r0
;;;969 for (;;) {
00003c e1a00000 MOV r0,r0
;;;970 OS_ENTER_CRITICAL();
|L1.64|
000040 ef000002 SVC 0x2 ; formerly SWI
;;;971 OSIdleCtrRun = OSIdleCtr; /* Obtain the of the idle counter for the past second */
000044 e59f0ab0 LDR r0,|L1.2812|
000048 e5900000 LDR r0,[r0,#0] ; OSIdleCtr
00004c e59f1aac LDR r1,|L1.2816|
000050 e5810000 STR r0,[r1,#0] ; OSIdleCtrRun
;;;972 run = OSIdleCtr;
000054 e59f0aa0 LDR r0,|L1.2812|
000058 e5905000 LDR r5,[r0,#0] ; OSIdleCtr
;;;973 OSIdleCtr = 0L; /* Reset the idle counter for the next second */
00005c e3a00000 MOV r0,#0
000060 e59f1a94 LDR r1,|L1.2812|
000064 e5810000 STR r0,[r1,#0] ; OSIdleCtr
;;;974 OS_EXIT_CRITICAL();
000068 ef000003 SVC 0x3 ; formerly SWI
;;;975 if (max > 0L) {
00006c e3540000 CMP r4,#0
000070 0a00000e BEQ |L1.176|
;;;976 usage = (INT8S)(100L - run / max);
000074 e1a01004 MOV r1,r4
000078 e1a00005 MOV r0,r5
00007c ebfffffe BL __aeabi_uidivmod
000080 e2600064 RSB r0,r0,#0x64
000084 e1a06c00 LSL r6,r0,#24
000088 e1a06c46 ASR r6,r6,#24
;;;977 if (usage >= 0) { /* Make sure we don't have a negative percentage */
00008c e3560000 CMP r6,#0
000090 ba000002 BLT |L1.160|
;;;978 OSCPUUsage = usage;
000094 e59f0a68 LDR r0,|L1.2820|
000098 e5c06000 STRB r6,[r0,#0] ; OSCPUUsage
00009c ea00000b B |L1.208|
;;;979 } else {
;;;980 OSCPUUsage = 0;
|L1.160|
0000a0 e3a00000 MOV r0,#0
0000a4 e59f1a58 LDR r1,|L1.2820|
0000a8 e5c10000 STRB r0,[r1,#0] ; OSCPUUsage
0000ac ea000007 B |L1.208|
;;;981 }
;;;982 } else {
;;;983 OSCPUUsage = 0;
|L1.176|
0000b0 e3a00000 MOV r0,#0
0000b4 e59f1a48 LDR r1,|L1.2820|
0000b8 e5c10000 STRB r0,[r1,#0] ; OSCPUUsage
;;;984 max = OSIdleCtrMax / 100L;
0000bc e3a01064 MOV r1,#0x64
0000c0 e59f0a30 LDR r0,|L1.2808|
0000c4 e5900000 LDR r0,[r0,#0] ; OSIdleCtrMax
0000c8 ebfffffe BL __aeabi_uidivmod
0000cc e1a04000 MOV r4,r0
;;;985 }
;;;986 OSTaskStatHook(); /* Invoke user definable hook */
|L1.208|
0000d0 ebfffffe BL OSTaskStatHook
;;;987 OSTimeDly(OS_TICKS_PER_SEC); /* Accumulate OSIdleCtr for the next second */
0000d4 e3a000c8 MOV r0,#0xc8
0000d8 ebfffffe BL OSTimeDly
0000dc eaffffd7 B |L1.64|
;;;988 }
;;;989 }
ENDP
OS_InitTaskStat PROC
;;;777 static void OS_InitTaskStat (void)
;;;778 {
0000e0 e52de004 PUSH {lr}
0000e4 e24dd014 SUB sp,sp,#0x14
;;;779 #if OS_TASK_CREATE_EXT_EN > 0
;;;780 #if OS_STK_GROWTH == 1
;;;781 (void)OSTaskCreateExt(OS_TaskStat,
0000e8 e3a03003 MOV r3,#3
0000ec e3a02000 MOV r2,#0
0000f0 e3a01c03 MOV r1,#0x300
0000f4 e59f0a0c LDR r0,|L1.2824|
0000f8 e98d000f STMIB sp,{r0-r3}
0000fc e59f3a08 LDR r3,|L1.2828|
000100 e58d3000 STR r3,[sp,#0]
000104 e3a0300b MOV r3,#0xb
000108 e59f2a00 LDR r2,|L1.2832|
00010c e3a01000 MOV r1,#0
000110 e24f0f46 ADR r0,|L1.0|
000114 ebfffffe BL OSTaskCreateExt
;;;782 (void *)0, /* No args passed to OS_TaskStat()*/
;;;783 &OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1], /* Set Top-Of-Stack */
;;;784 OS_STAT_PRIO, /* One higher than the idle task */
;;;785 OS_TASK_STAT_ID,
;;;786 &OSTaskStatStk[0], /* Set Bottom-Of-Stack */
;;;787 OS_TASK_STAT_STK_SIZE,
;;;788 (void *)0, /* No TCB extension */
;;;789 OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR); /* Enable stack checking + clear */
;;;790 #else
;;;791 (void)OSTaskCreateExt(OS_TaskStat,
;;;792 (void *)0, /* No args passed to OS_TaskStat()*/
;;;793 &OSTaskStatStk[0], /* Set Top-Of-Stack */
;;;794 OS_STAT_PRIO, /* One higher than the idle task */
;;;795 OS_TASK_STAT_ID,
;;;796 &OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1], /* Set Bottom-Of-Stack */
;;;797 OS_TASK_STAT_STK_SIZE,
;;;798 (void *)0, /* No TCB extension */
;;;799 OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR); /* Enable stack checking + clear */
;;;800 #endif
;;;801 #else
;;;802 #if OS_STK_GROWTH == 1
;;;803 (void)OSTaskCreate(OS_TaskStat,
;;;804 (void *)0, /* No args passed to OS_TaskStat()*/
;;;805 &OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1], /* Set Top-Of-Stack */
;;;806 OS_STAT_PRIO); /* One higher than the idle task */
;;;807 #else
;;;808 (void)OSTaskCreate(OS_TaskStat,
;;;809 (void *)0, /* No args passed to OS_TaskStat()*/
;;;810 &OSTaskStatStk[0], /* Set Top-Of-Stack */
;;;811 OS_STAT_PRIO); /* One higher than the idle task */
;;;812 #endif
;;;813 #endif
;;;814 }
000118 e28dd014 ADD sp,sp,#0x14
00011c e49de004 POP {lr}
000120 e12fff1e BX lr
ENDP
OS_TaskIdle PROC
;;;911 void OS_TaskIdle (void *pdata)
;;;912 {
|L1.292|
000124 e92d4010 PUSH {r4,lr}
000128 e1a04000 MOV r4,r0
;;;913 #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
;;;914 OS_CPU_SR cpu_sr;
;;;915 #endif
;;;916
;;;917
;;;918 pdata = pdata; /* Prevent compiler warning for not using 'pdata' */
00012c e1a00000 MOV r0,r0
;;;919 for (;;) {
000130 e1a00000 MOV r0,r0
;;;920 OS_ENTER_CRITICAL();
|L1.308|
000134 ef000002 SVC 0x2 ; formerly SWI
;;;921 OSIdleCtr++;
000138 e59f09bc LDR r0,|L1.2812|
00013c e5900000 LDR r0,[r0,#0] ; OSIdleCtr
000140 e2800001 ADD r0,r0,#1
000144 e59f19b0 LDR r1,|L1.2812|
000148 e5810000 STR r0,[r1,#0] ; OSIdleCtr
;;;922 OS_EXIT_CRITICAL();
00014c ef000003 SVC 0x3 ; formerly SWI
;;;923 OSTaskIdleHook(); /* Call user definable HOOK */
000150 ebfffffe BL OSTaskIdleHook
000154 eafffff6 B |L1.308|
;;;924 }
;;;925 }
ENDP
OS_InitTaskIdle PROC
;;;724 static void OS_InitTaskIdle (void)
;;;725 {
000158 e52de004 PUSH {lr}
00015c e24dd014 SUB sp,sp,#0x14
;;;726 #if OS_TASK_CREATE_EXT_EN > 0
;;;727 #if OS_STK_GROWTH == 1
;;;728 (void)OSTaskCreateExt(OS_TaskIdle,
000160 e3a03003 MOV r3,#3
000164 e3a02000 MOV r2,#0
000168 e3a01040 MOV r1,#0x40
00016c e59f09a0 LDR r0,|L1.2836|
000170 e98d000f STMIB sp,{r0-r3}
000174 e59f399c LDR r3,|L1.2840|
000178 e58d3000 STR r3,[sp,#0]
00017c e3a0300c MOV r3,#0xc
000180 e28020fc ADD r2,r0,#0xfc
000184 e3a01000 MOV r1,#0
000188 e24f006c ADR r0,|L1.292|
00018c ebfffffe BL OSTaskCreateExt
;;;729 (void *)0, /* No arguments passed to OS_TaskIdle() */
;;;730 &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1], /* Set Top-Of-Stack */
;;;731 OS_IDLE_PRIO, /* Lowest priority level */
;;;732 OS_TASK_IDLE_ID,
;;;733 &OSTaskIdleStk[0], /* Set Bottom-Of-Stack */
;;;734 OS_TASK_IDLE_STK_SIZE,
;;;735 (void *)0, /* No TCB extension */
;;;736 OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/* Enable stack checking + clear stack */
;;;737 #else
;;;738 (void)OSTaskCreateExt(OS_TaskIdle,
;;;739 (void *)0, /* No arguments passed to OS_TaskIdle() */
;;;740 &OSTaskIdleStk[0], /* Set Top-Of-Stack */
;;;741 OS_IDLE_PRIO, /* Lowest priority level */
;;;742 OS_TASK_IDLE_ID,
;;;743 &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1], /* Set Bottom-Of-Stack */
;;;744 OS_TASK_IDLE_STK_SIZE,
;;;745 (void *)0, /* No TCB extension */
;;;746 OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/* Enable stack checking + clear stack */
;;;747 #endif
;;;748 #else
;;;749 #if OS_STK_GROWTH == 1
;;;750 (void)OSTaskCreate(OS_TaskIdle,
;;;751 (void *)0,
;;;752 &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1],
;;;753 OS_IDLE_PRIO);
;;;754 #else
;;;755 (void)OSTaskCreate(OS_TaskIdle,
;;;756 (void *)0,
;;;757 &OSTaskIdleStk[0],
;;;758 OS_IDLE_PRIO);
;;;759 #endif
;;;760 #endif
;;;761 }
000190 e28dd014 ADD sp,sp,#0x14
000194 e49de004 POP {lr}
000198 e12fff1e BX lr
ENDP
OS_InitEventList PROC
;;;622
;;;623 pevent1 = &OSEventTbl[0];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -