📄 os_core.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 934] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o.\rvmdk\os_core.o --depend=.\rvmdk\os_core.d --device=DARMP --apcs=interwork -O1 -I. -I..\BSP -I..\..\..\..\uCOS-II\Ports\ARM\Generic\RealView -I..\..\..\..\uCOS-II\Source -I..\..\..\..\uC-CPU -I..\..\..\..\uC-CPU\ARM\RealView -I..\..\..\..\uC-LIB -I..\..\..\..\uC-TCPIP\IF -I..\..\..\..\uC-TCPIP\IF\Ether -I..\..\..\..\uC-TCPIP\NIC\ETHER\LPC2378 -I..\..\..\..\uC-TCPIP\NIC\ETHER\PHY -I..\..\..\..\uC-TCPIP\NIC\ETHER\PHY\DP83848 -I..\..\..\..\uC-TCPIP\OS\uCOS-II -I..\..\..\..\uC-TCPIP\Source -I..\..\..\..\uC-LCD\Source -I..\..\..\..\uC-Probe\Target\Communication\Generic\Source -I..\..\..\..\uC-Probe\Target\Communication\Generic\RS-232\Source -I..\..\..\..\uC-Probe\Target\Communication\Generic\TCPIP\Source -I..\..\..\..\uC-Probe\Target\Plugins\uCOS-II -Ie:\Keil_ARM\ARM\INC\Philips -D__IN_CHIP --omf_browse=.\rvmdk\os_core.crf ..\Source\OS_CORE.C]
ARM
AREA ||.text||, CODE, READONLY, ALIGN=2
OS_TaskStat PROC
;;;954 void OS_TaskStat (void *pdata)
;;;955 {
000000 e92d41f0 PUSH {r4-r8,lr}
000004 e59f4850 LDR r4,|L1.2140|
;;;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' */
;;;965 while (OSStatRdy == FALSE) {
000008 ea000001 B |L1.20|
|L1.12|
;;;966 OSTimeDly(2 * OS_TICKS_PER_SEC); /* Wait until statistic task is ready */
00000c e3a00e19 MOV r0,#0x190
000010 ebfffffe BL OSTimeDly
|L1.20|
000014 e5d40001 LDRB r0,[r4,#1] ;965 ; OSStatRdy
000018 e3500000 CMP r0,#0 ;965
00001c 0afffffa BEQ |L1.12|
;;;967 }
;;;968 max = OSIdleCtrMax / 100L;
000020 e5940014 LDR r0,[r4,#0x14] ; OSIdleCtrMax
000024 e3a01064 MOV r1,#0x64
000028 ebfffffe BL __aeabi_uidivmod
00002c e1a06000 MOV r6,r0
;;;969 for (;;) {
000030 e3a05000 MOV r5,#0
|L1.52|
;;;970 OS_ENTER_CRITICAL();
000034 ef000002 SVC #0x2
;;;971 OSIdleCtrRun = OSIdleCtr; /* Obtain the of the idle counter for the past second */
000038 e594001c LDR r0,[r4,#0x1c] ; OSIdleCtr
00003c e5840018 STR r0,[r4,#0x18] ; OSIdleCtrRun
;;;972 run = OSIdleCtr;
000040 e594701c LDR r7,[r4,#0x1c] ; OSIdleCtr
;;;973 OSIdleCtr = 0L; /* Reset the idle counter for the next second */
000044 e584501c STR r5,[r4,#0x1c] ; OSIdleCtr
;;;974 OS_EXIT_CRITICAL();
000048 ef000003 SVC #0x3
;;;975 if (max > 0L) {
00004c e3560000 CMP r6,#0
000050 0a00000b BEQ |L1.132|
;;;976 usage = (INT8S)(100L - run / max);
000054 e1a01006 MOV r1,r6
000058 e1a00007 MOV r0,r7
00005c ebfffffe BL __aeabi_uidivmod
000060 e2600064 RSB r0,r0,#0x64
000064 e1a01c00 LSL r1,r0,#24
000068 e1a01c41 ASR r1,r1,#24
;;;977 if (usage >= 0) { /* Make sure we don't have a negative percentage */
00006c e3510000 CMP r1,#0
000070 ba000001 BLT |L1.124|
;;;978 OSCPUUsage = usage;
000074 e5c41000 STRB r1,[r4,#0] ; OSCPUUsage
000078 ea000006 B |L1.152|
|L1.124|
;;;979 } else {
;;;980 OSCPUUsage = 0;
00007c e5c45000 STRB r5,[r4,#0] ; OSCPUUsage
000080 ea000004 B |L1.152|
|L1.132|
;;;981 }
;;;982 } else {
;;;983 OSCPUUsage = 0;
000084 e5c45000 STRB r5,[r4,#0] ; OSCPUUsage
;;;984 max = OSIdleCtrMax / 100L;
000088 e5940014 LDR r0,[r4,#0x14] ; OSIdleCtrMax
00008c e3a01064 MOV r1,#0x64
000090 ebfffffe BL __aeabi_uidivmod
000094 e1a06000 MOV r6,r0
|L1.152|
;;;985 }
;;;986 OSTaskStatHook(); /* Invoke user definable hook */
000098 ebfffffe BL OSTaskStatHook
;;;987 OSTimeDly(OS_TICKS_PER_SEC); /* Accumulate OSIdleCtr for the next second */
00009c e3a000c8 MOV r0,#0xc8
0000a0 ebfffffe BL OSTimeDly
0000a4 eaffffe2 B |L1.52|
;;;988 }
;;;989 }
;;;990 #endif
ENDP
OS_InitTaskStat PROC
;;;777 static void OS_InitTaskStat (void)
;;;778 {
0000a8 e52de004 PUSH {lr}
0000ac e24dd014 SUB sp,sp,#0x14
;;;779 #if OS_TASK_CREATE_EXT_EN > 0
;;;780 #if OS_STK_GROWTH == 1
;;;781 (void)OSTaskCreateExt(OS_TaskStat,
0000b0 e59f07a8 LDR r0,|L1.2144|
0000b4 e3a03003 MOV r3,#3
0000b8 e3a02000 MOV r2,#0
0000bc e3a01c02 MOV r1,#0x200
0000c0 e98d000f STMIB sp,{r0-r3}
0000c4 e59f3798 LDR r3,|L1.2148|
0000c8 e59f2798 LDR r2,|L1.2152|
0000cc e58d3000 STR r3,[sp,#0]
0000d0 e3a0300b MOV r3,#0xb
0000d4 e3a01000 MOV r1,#0
0000d8 e24f00e0 ADR r0,OS_TaskStat
0000dc 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 }
0000e0 e28dd014 ADD sp,sp,#0x14
0000e4 e49de004 POP {lr}
0000e8 e12fff1e BX lr
;;;815 #endif
ENDP
OS_TaskIdle PROC
;;;911 void OS_TaskIdle (void *pdata)
;;;912 {
0000ec e92d4010 PUSH {r4,lr}
;;;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' */
;;;919 for (;;) {
0000f0 e59f4764 LDR r4,|L1.2140|
|L1.244|
;;;920 OS_ENTER_CRITICAL();
0000f4 ef000002 SVC #0x2
;;;921 OSIdleCtr++;
0000f8 e594001c LDR r0,[r4,#0x1c] ; OSIdleCtr
0000fc e2800001 ADD r0,r0,#1
000100 e584001c STR r0,[r4,#0x1c] ; OSIdleCtr
;;;922 OS_EXIT_CRITICAL();
000104 ef000003 SVC #0x3
;;;923 OSTaskIdleHook(); /* Call user definable HOOK */
000108 ebfffffe BL OSTaskIdleHook
00010c eafffff8 B |L1.244|
;;;924 }
;;;925 }
;;;926 /*$PAGE*/
ENDP
OS_InitTaskIdle PROC
;;;724 static void OS_InitTaskIdle (void)
;;;725 {
000110 e52de004 PUSH {lr}
000114 e24dd014 SUB sp,sp,#0x14
;;;726 #if OS_TASK_CREATE_EXT_EN > 0
;;;727 #if OS_STK_GROWTH == 1
;;;728 (void)OSTaskCreateExt(OS_TaskIdle,
000118 e59f074c LDR r0,|L1.2156|
00011c e3a03003 MOV r3,#3
000120 e3a02000 MOV r2,#0
000124 e3a01c02 MOV r1,#0x200
000128 e98d000f STMIB sp,{r0-r3}
00012c e59f373c LDR r3,|L1.2160|
000130 e59f273c LDR r2,|L1.2164|
000134 e58d3000 STR r3,[sp,#0]
000138 e3a0300c MOV r3,#0xc
00013c e3a01000 MOV r1,#0
000140 e24f005c ADR r0,OS_TaskIdle
000144 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 }
000148 e28dd014 ADD sp,sp,#0x14
00014c e49de004 POP {lr}
000150 e12fff1e BX lr
;;;762 /*$PAGE*/
ENDP
OS_InitEventList PROC
;;;622
;;;623 pevent1 = &OSEventTbl[0];
000154 e59f071c LDR r0,|L1.2168|
;;;624 pevent2 = &OSEventTbl[1];
000158 e280c000 ADD r12,r0,#0
00015c e28c100c ADD r1,r12,#0xc
;;;625 for (i = 0; i < (OS_MAX_EVENTS - 1); i++) { /* Init. list of free EVENT control blocks */
000160 e3a02000 MOV r2,#0
000164 e3a03000 MOV r3,#0
|L1.360|
;;;626 pevent1->OSEventType = OS_EVENT_TYPE_UNUSED;
000168 e5c03000 STRB r3,[r0,#0]
;;;627 pevent1->OSEventPtr = pevent2;
00016c e5801004 STR r1,[r0,#4]
;;;628 pevent1++;
000170 e280000c ADD r0,r0,#0xc
;;;629 pevent2++;
000174 e281100c ADD r1,r1,#0xc
000178 e2822001 ADD r2,r2,#1 ;625
00017c e3c22801 BIC r2,r2,#0x10000 ;625
000180 e3520000 CMP r2,#0 ;625
000184 0afffff7 BEQ |L1.360|
;;;630 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -