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

📄 os_core.txt

📁 ATMEL ARM7 SAM64 Porting ucos / Keil ARM VER3.04。不同于其它
💻 TXT
📖 第 1 页 / 共 4 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.0 [Build 951] for uVision
; commandline ArmCC [--debug -c --asm --interleave -o.\ULINK-RAM\Obj\os_core.o --device=DARMATS --apcs=interwork -I..\..\..\..\uCOS-II\Source -I..\..\..\..\uCOS-II\Ports\ARM\Generic\KEILRV -I.\APP -I.\BSP -IC:\DEVELOP\Keil\ARM\INC\Atmel\SAM7S ..\..\..\..\uCOS-II\Source\os_core.c]

                          ARM

                          AREA ||.text.7||, CODE, READONLY, ALIGN=2

                  OS_TaskStatStkChk PROC
;;;1425   void  OS_TaskStatStkChk (void)
;;;1426   {
000000  e92d407c          PUSH     {r2-r6,lr}
;;;1427       OS_TCB      *ptcb;
;;;1428       OS_STK_DATA  stk_data;
;;;1429       INT8U        err;
;;;1430       INT8U        prio;
;;;1431   
;;;1432   
;;;1433       for (prio = 0; prio <= OS_IDLE_PRIO; prio++) {
000004  e59f547c          LDR      r5,|L1.1160|
000008  e3a04000          MOV      r4,#0
;;;1434           err = OSTaskStkChk(prio, &stk_data);
                  |L1.12|
00000c  e1a0100d          MOV      r1,sp
000010  e1a00004          MOV      r0,r4
000014  ebfffffe          BL       OSTaskStkChk
;;;1435           if (err == OS_NO_ERR) {
000018  e3500000          CMP      r0,#0
00001c  1a000009          BNE      |L1.72|
;;;1436               ptcb = OSTCBPrioTbl[prio];
000020  e7950104          LDR      r0,[r5,r4,LSL #2]
;;;1437               if (ptcb != (OS_TCB *)0) {                               /* Make sure task 'ptcb' is ...   */
000024  e3500000          CMP      r0,#0
;;;1438                   if (ptcb != (OS_TCB *)1) {                           /* ... still valid.               */
000028  13500001          CMPNE    r0,#1
00002c  0a000005          BEQ      |L1.72|               ;1437
;;;1439   #if OS_TASK_PROFILE_EN > 0
;;;1440                       #if OS_STK_GROWTH == 1
;;;1441                       ptcb->OSTCBStkBase = ptcb->OSTCBStkBottom + ptcb->OSTCBStkSize;
000030  e2802008          ADD      r2,r0,#8
000034  e8920006          LDM      r2,{r1,r2}
000038  e0811102          ADD      r1,r1,r2,LSL #2
;;;1442                       #else
;;;1443                       ptcb->OSTCBStkBase = ptcb->OSTCBStkBottom - ptcb->OSTCBStkSize;
;;;1444                       #endif
;;;1445                       ptcb->OSTCBStkUsed = stk_data.OSUsed;            /* Store the number of bytes used */
00003c  e5801034          STR      r1,[r0,#0x34]
000040  e59d1004          LDR      r1,[sp,#4]
000044  e5801038          STR      r1,[r0,#0x38]
                  |L1.72|
000048  e2840001          ADD      r0,r4,#1              ;1433
00004c  e20040ff          AND      r4,r0,#0xff           ;1433
000050  e354000f          CMP      r4,#0xf               ;1433
000054  9affffec          BLS      |L1.12|               ;1433
;;;1446   #endif
;;;1447                   }
;;;1448               }
;;;1449           }
;;;1450       }
;;;1451   }
000058  e8bd407c          POP      {r2-r6,lr}
00005c  e12fff1e          BX       lr
                          ENDP

                  OS_TaskStat PROC
;;;1370   void  OS_TaskStat (void *p_arg)
;;;1371   {
                  |L1.96|
000060  e92d41f0          PUSH     {r4-r8,lr}
000064  e59f4420          LDR      r4,|L1.1164|
;;;1372       INT32U     run;
;;;1373       INT32U     max;
;;;1374       INT8S      usage;
;;;1375   #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
;;;1376       OS_CPU_SR  cpu_sr = 0;
;;;1377   #endif
;;;1378   
;;;1379   
;;;1380   
;;;1381       p_arg = p_arg;                               /* Prevent compiler warning for not using 'parg'      */
;;;1382       while (OSStatRdy == FALSE) {
000068  ea000001          B        |L1.116|
;;;1383           OSTimeDly(2 * OS_TICKS_PER_SEC / 10);    /* Wait until statistic task is ready                 */
                  |L1.108|
00006c  e3a00014          MOV      r0,#0x14
000070  ebfffffe          BL       OSTimeDly
                  |L1.116|
000074  e5d40001          LDRB     r0,[r4,#1]            ;1382  ; OSStatRdy
000078  e3500000          CMP      r0,#0                 ;1382
00007c  0afffffa          BEQ      |L1.108|              ;1382
;;;1384       }
;;;1385       max = OSIdleCtrMax / 100L;
000080  e5940010          LDR      r0,[r4,#0x10]  ; OSIdleCtrMax
000084  e3a01064          MOV      r1,#0x64
000088  ebfffffe          BL       __aeabi_uidivmod
00008c  e1a06000          MOV      r6,r0
000090  e3a05000          MOV      r5,#0
;;;1386       for (;;) {
;;;1387           OS_ENTER_CRITICAL();
                  |L1.148|
000094  ebfffffe          BL       OS_CPU_SR_Save
;;;1388           OSIdleCtrRun = OSIdleCtr;                /* Obtain the of the idle counter for the past second */
000098  e5941018          LDR      r1,[r4,#0x18]  ; OSIdleCtr
;;;1389           run          = OSIdleCtr;
00009c  e5841014          STR      r1,[r4,#0x14]  ; OSIdleCtrRun
0000a0  e5947018          LDR      r7,[r4,#0x18]  ; OSIdleCtr
;;;1390           OSIdleCtr    = 0L;                       /* Reset the idle counter for the next second         */
0000a4  e5845018          STR      r5,[r4,#0x18]  ; OSIdleCtr
;;;1391           OS_EXIT_CRITICAL();
0000a8  ebfffffe          BL       OS_CPU_SR_Restore
;;;1392           if (max > 0L) {
0000ac  e3560000          CMP      r6,#0
0000b0  0a000008          BEQ      |L1.216|
;;;1393               usage = (INT8S)(100L - run / max);
0000b4  e1a01006          MOV      r1,r6
0000b8  e1a00007          MOV      r0,r7
0000bc  ebfffffe          BL       __aeabi_uidivmod
0000c0  e2600064          RSB      r0,r0,#0x64
0000c4  e1a00c00          LSL      r0,r0,#24
0000c8  e1b00c40          ASRS     r0,r0,#24
;;;1394               if (usage >= 0) {                    /* Make sure we don't have a negative percentage      */
;;;1395                   OSCPUUsage = usage;
;;;1396               } else {
;;;1397                   OSCPUUsage = 0;
0000cc  45c45000          STRBMI   r5,[r4,#0]  ; OSCPUUsage
0000d0  55c40000          STRBPL   r0,[r4,#0]            ;1395  ; OSCPUUsage
0000d4  ea000004          B        |L1.236|              ;1395
;;;1398               }
;;;1399           } else {
;;;1400               OSCPUUsage = 0;
                  |L1.216|
0000d8  e5c45000          STRB     r5,[r4,#0]  ; OSCPUUsage
;;;1401               max        = OSIdleCtrMax / 100L;
0000dc  e5940010          LDR      r0,[r4,#0x10]  ; OSIdleCtrMax
0000e0  e3a01064          MOV      r1,#0x64
0000e4  ebfffffe          BL       __aeabi_uidivmod
0000e8  e1a06000          MOV      r6,r0
;;;1402           }
;;;1403           OSTaskStatHook();                        /* Invoke user definable hook                         */
                  |L1.236|
0000ec  ebfffffe          BL       OSTaskStatHook
;;;1404   #if (OS_TASK_STAT_STK_CHK_EN > 0) && (OS_TASK_CREATE_EXT_EN > 0)
;;;1405           OS_TaskStatStkChk();                     /* Check the stacks for each task                     */
0000f0  ebfffffe          BL       OS_TaskStatStkChk
;;;1406   #endif
;;;1407           OSTimeDly(OS_TICKS_PER_SEC / 10);        /* Accumulate OSIdleCtr for the next 1/10 second      */
0000f4  e3a0000a          MOV      r0,#0xa
0000f8  ebfffffe          BL       OSTimeDly
0000fc  eaffffe4          B        |L1.148|
;;;1408       }
;;;1409   }
                          ENDP

                  OS_TaskIdle PROC
;;;1328   void  OS_TaskIdle (void *p_arg)
;;;1329   {
                  |L1.256|
000100  e92d4010          PUSH     {r4,lr}
000104  e59f4380          LDR      r4,|L1.1164|
;;;1330   #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
;;;1331       OS_CPU_SR  cpu_sr = 0;
;;;1332   #endif
;;;1333   
;;;1334   
;;;1335   
;;;1336       (void)p_arg;                                 /* Prevent compiler warning for not using 'parg'      */
;;;1337       for (;;) {
;;;1338           OS_ENTER_CRITICAL();
                  |L1.264|
000108  ebfffffe          BL       OS_CPU_SR_Save
;;;1339           OSIdleCtr++;
00010c  e5941018          LDR      r1,[r4,#0x18]  ; OSIdleCtr
000110  e2811001          ADD      r1,r1,#1
000114  e5841018          STR      r1,[r4,#0x18]  ; OSIdleCtr
;;;1340           OS_EXIT_CRITICAL();
000118  ebfffffe          BL       OS_CPU_SR_Restore
;;;1341           OSTaskIdleHook();                        /* Call user definable HOOK                           */
00011c  ebfffffe          BL       OSTaskIdleHook
000120  eafffff8          B        |L1.264|
;;;1342       }
;;;1343   }
                          ENDP

                  OS_MemClr PROC
;;;1114   void  OS_MemClr (INT8U *pdest, INT16U size)
;;;1115   {
000124  e3a02000          MOV      r2,#0
;;;1116       while (size > 0) {
                  |L1.296|
000128  e3510000          CMP      r1,#0
;;;1117           *pdest++ = (INT8U)0;
;;;1118           size--;
00012c  12411001          SUBNE    r1,r1,#1
000130  11a01801          LSLNE    r1,r1,#16
000134  11a01821          LSRNE    r1,r1,#16
000138  14c02001          STRBNE   r2,[r0],#1            ;1117
00013c  1afffff9          BNE      |L1.296|
;;;1119       }
;;;1120   }
000140  e12fff1e          BX       lr
                          ENDP

                  OSInit PROC
;;;223    void  OSInit (void)
;;;224    {
000144  e92d4010          PUSH     {r4,lr}
000148  e24dd018          SUB      sp,sp,#0x18
;;;225    #if OS_VERSION >= 204
;;;226        OSInitHookBegin();                                           /* Call port specific initialization code   */
00014c  ebfffffe          BL       OSInitHookBegin
000150  e59fc334          LDR      r12,|L1.1164|         ;874
000154  e3a03000          MOV      r3,#0                 ;874
000158  e5cc3002          STRB     r3,[r12,#2]           ;874  ; OSIntNesting
00015c  e5cc3003          STRB     r3,[r12,#3]           ;875  ; OSLockNesting
000160  e5cc3008          STRB     r3,[r12,#8]           ;877  ; OSTaskCtr
000164  e5cc3007          STRB     r3,[r12,#7]           ;879  ; OSRunning
000168  e58c300c          STR      r3,[r12,#0xc]         ;882  ; OSCtxSwCtr
00016c  e58c3018          STR      r3,[r12,#0x18]        ;882  ; OSIdleCtr
000170  e58c3014          STR      r3,[r12,#0x14]        ;886  ; OSIdleCtrRun
000174  e58c3010          STR      r3,[r12,#0x10]        ;886  ; OSIdleCtrMax
000178  e5cc3001          STRB     r3,[r12,#1]           ;887  ; OSStatRdy
00017c  e28c1009          ADD      r1,r12,#9             ;915
000180  e1a00003          MOV      r0,r3                 ;916
000184  e5cc3006          STRB     r3,[r12,#6]           ;914  ; OSRdyGrp
                  |L1.392|
000188  e2800001          ADD      r0,r0,#1              ;916
00018c  e20000ff          AND      r0,r0,#0xff           ;916
000190  e3500002          CMP      r0,#2                 ;916
000194  e4c13001          STRB     r3,[r1],#1            ;917
000198  3afffffa          BCC      |L1.392|              ;916
00019c  e5cc3004          STRB     r3,[r12,#4]           ;920  ; OSPrioCur
0001a0  e5cc3005          STRB     r3,[r12,#5]           ;921  ; OSPrioHighRdy
0001a4  e58c3024          STR      r3,[r12,#0x24]        ;924  ; OSTCBHighRdy
0001a8  e59f02e0          LDR      r0,|L1.1168|          ;1072
0001ac  e3a01e39          MOV      r1,#0x390             ;1072
0001b0  e58c301c          STR      r3,[r12,#0x1c]        ;1072  ; OSTCBCur
0001b4  ebfffffe          BL       OS_MemClr             ;1072
0001b8  e59f02c8          LDR      r0,|L1.1160|          ;1073
0001bc  e3a01040          MOV      r1,#0x40              ;1073
0001c0  ebfffffe          BL       OS_MemClr             ;1073
0001c4  e59f02c4          LDR      r0,|L1.1168|          ;1074
0001c8  e3a01000          MOV      r1,#0                 ;1076
0001cc  e2804000          ADD      r4,r0,#0              ;1075
0001d0  e284204c          ADD      r2,r4,#0x4c           ;1075
0001d4  e3a0e03f          MOV      lr,#0x3f              ;1076
                  |L1.472|
0001d8  e5802014          STR      r2,[r0,#0x14]         ;1077
0001dc  e2811001          ADD      r1,r1,#1              ;1076
0001e0  e5c0e03c          STRB     lr,[r0,#0x3c]         ;1079
0001e4  e20110ff          AND      r1,r1,#0xff           ;1076
0001e8  e5c0303d          STRB     r3,[r0,#0x3d]         ;1080
0001ec  e351000b          CMP      r1,#0xb               ;1076
0001f0  e280004c          ADD      r0,r0,#0x4c           ;1082
0001f4  e282204c          ADD      r2,r2,#0x4c           ;1083
0001f8  3afffff6          BCC      |L1.472|              ;1076
0001fc  e5803014          STR      r3,[r0,#0x14]         ;1085
000200  e5c0e03c          STRB     lr,[r0,#0x3c]         ;1087
000204  e5c0303d          STRB     r3,[r0,#0x3d]         ;1088
000208  e5ac4020          STR      r4,[r12,#0x20]!       ;1091  ; OSTCBList, OSTCBFreeList
00020c  e59f0280          LDR      r0,|L1.1172|          ;950
000210  e58c3008          STR      r3,[r12,#8]           ;1091
000214  e3a03003          MOV      r3,#3                 ;950
000218  e3a02000          MOV      r2,#0                 ;950
00021c  e3a01080          MOV      r1,#0x80              ;950
000220  e98d000f          STMIB    sp,{r0-r3}            ;950
000224  e59f326c          LDR      r3,|L1.1176|          ;950
000228  e2802f7f          ADD      r2,r0,#0x1fc          ;950
00022c  e58d3000          STR      r3,[sp,#0]            ;950
000230  e3a0300f          MOV      r3,#0xf               ;950
000234  e3a01000          MOV      r1,#0                 ;950
000238  e24f0d05          ADR      r0,|L1.256|           ;950
00023c  ebfffffe          BL       OSTaskCreateExt       ;950
000240  e28d2014          ADD      r2,sp,#0x14           ;985
000244  e28f1e25          ADR      r1,|L1.1180|          ;985
000248  e3a0000f          MOV      r0,#0xf               ;985
00024c  ebfffffe          BL       OSTaskNameSet         ;985
000250  e59f0254          LDR      r0,|L1.1196|          ;1012

⌨️ 快捷键说明

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