?? ucos-ii.lss
字號:
#endif
INT8U i;
pevent->OSEventGrp = 0; /* No task waiting on event */
354: 15 82 std Z+5, r1 ; 0x05
ptbl = &pevent->OSEventTbl[0];
356: 36 96 adiw r30, 0x06 ; 6
358: 80 e0 ldi r24, 0x00 ; 0
for (i = 0; i < OS_EVENT_TBL_SIZE; i++) {
*ptbl++ = 0;
35a: 11 92 st Z+, r1
pevent->OSEventGrp = 0; /* No task waiting on event */
ptbl = &pevent->OSEventTbl[0];
for (i = 0; i < OS_EVENT_TBL_SIZE; i++) {
35c: 8f 5f subi r24, 0xFF ; 255
35e: 88 30 cpi r24, 0x08 ; 8
360: e1 f7 brne .-8 ; 0x35a <OS_EventWaitListInit+0x8>
*ptbl++ = 0;
}
}
362: 08 95 ret
00000364 <OS_MemClr>:
* of the alignment of the destination.
*********************************************************************************************************
*/
void OS_MemClr (INT8U *pdest, INT16U size)
{
364: fc 01 movw r30, r24
366: 03 c0 rjmp .+6 ; 0x36e <OS_MemClr+0xa>
while (size > 0) {
*pdest++ = (INT8U)0;
368: 11 92 st Z+, r1
size--;
36a: 61 50 subi r22, 0x01 ; 1
36c: 70 40 sbci r23, 0x00 ; 0
*********************************************************************************************************
*/
void OS_MemClr (INT8U *pdest, INT16U size)
{
while (size > 0) {
36e: 61 15 cp r22, r1
372: d1 f7 brne .-12 ; 0x368 <OS_MemClr+0x4>
*pdest++ = (INT8U)0;
size--;
}
}
374: 08 95 ret
00000376 <OS_MemCopy>:
* of the alignment of the source and destination.
*********************************************************************************************************
*/
void OS_MemCopy (INT8U *pdest, INT8U *psrc, INT16U size)
{
376: dc 01 movw r26, r24
378: fb 01 movw r30, r22
37a: 04 c0 rjmp .+8 ; 0x384 <OS_MemCopy+0xe>
while (size > 0) {
*pdest++ = *psrc++;
37c: 81 91 ld r24, Z+
37e: 8d 93 st X+, r24
size--;
380: 41 50 subi r20, 0x01 ; 1
382: 50 40 sbci r21, 0x00 ; 0
*********************************************************************************************************
*/
void OS_MemCopy (INT8U *pdest, INT8U *psrc, INT16U size)
{
while (size > 0) {
384: 41 15 cp r20, r1
386: 51 05 cpc r21, r1
388: c9 f7 brne .-14 ; 0x37c <OS_MemCopy+0x6>
*pdest++ = *psrc++;
size--;
}
}
38a: 08 95 ret
0000038c <OS_StrCopy>:
*********************************************************************************************************
*/
#if (OS_EVENT_NAME_SIZE > 1) || (OS_FLAG_NAME_SIZE > 1) || (OS_MEM_NAME_SIZE > 1) || (OS_TASK_NAME_SIZE > 1) || (OS_TMR_CFG_NAME_SIZE > 1)
INT8U OS_StrCopy (INT8U *pdest, INT8U *psrc)
{
38c: 58 2f mov r21, r24
38e: db 01 movw r26, r22
390: 28 2f mov r18, r24
392: 39 2f mov r19, r25
394: f9 01 movw r30, r18
396: 02 c0 rjmp .+4 ; 0x39c <OS_StrCopy+0x10>
INT8U len;
len = 0;
while (*psrc != OS_ASCII_NUL) {
*pdest++ = *psrc++;
398: 91 93 st Z+, r25
39a: 11 96 adiw r26, 0x01 ; 1
39c: 8e 2f mov r24, r30
39e: 85 1b sub r24, r21
{
INT8U len;
len = 0;
while (*psrc != OS_ASCII_NUL) {
3a0: 9c 91 ld r25, X
3a2: 99 23 and r25, r25
3a4: c9 f7 brne .-14 ; 0x398 <OS_StrCopy+0xc>
*pdest++ = *psrc++;
len++;
}
*pdest = OS_ASCII_NUL;
3a6: 10 82 st Z, r1
return (len);
}
3a8: 08 95 ret
000003aa <OS_StrLen>:
*********************************************************************************************************
*/
#if (OS_EVENT_NAME_SIZE > 1) || (OS_FLAG_NAME_SIZE > 1) || (OS_MEM_NAME_SIZE > 1) || (OS_TASK_NAME_SIZE > 1) || (OS_TMR_CFG_NAME_SIZE > 1)
INT8U OS_StrLen (INT8U *psrc)
{
3aa: 58 2f mov r21, r24
3ac: 28 2f mov r18, r24
3ae: 39 2f mov r19, r25
3b0: f9 01 movw r30, r18
3b2: 01 c0 rjmp .+2 ; 0x3b6 <OS_StrLen+0xc>
INT8U len;
len = 0;
while (*psrc != OS_ASCII_NUL) {
psrc++;
3b4: 31 96 adiw r30, 0x01 ; 1
3b6: 9e 2f mov r25, r30
3b8: 95 1b sub r25, r21
{
INT8U len;
len = 0;
while (*psrc != OS_ASCII_NUL) {
3ba: 80 81 ld r24, Z
3bc: 88 23 and r24, r24
3be: d1 f7 brne .-12 ; 0x3b4 <OS_StrLen+0xa>
psrc++;
len++;
}
return (len);
}
3c0: 89 2f mov r24, r25
3c2: 08 95 ret
000003c4 <OS_TCBInit>:
* Note : This function is INTERNAL to uC/OS-II and your application should not call it.
*********************************************************************************************************
*/
INT8U OS_TCBInit (INT8U prio, OS_STK *ptos, OS_STK *pbos, INT16U id, INT32U stk_size, void *pext, INT16U opt)
{
3c4: 9f 92 push r9
3c6: af 92 push r10
3c8: bf 92 push r11
3ca: cf 92 push r12
3cc: df 92 push r13
3ce: ef 92 push r14
3d0: ff 92 push r15
3d2: 0f 93 push r16
3d4: 1f 93 push r17
3d6: cf 93 push r28
3d8: df 93 push r29
3da: 98 2e mov r9, r24
OS_CPU_SR cpu_sr = 0;
#endif
OS_ENTER_CRITICAL();
3dc: f8 94 cli
ptcb = OSTCBFreeList; /* Get a free TCB from the free TCB list */
3de: c0 91 cc 02 lds r28, 0x02CC
3e2: d0 91 cd 02 lds r29, 0x02CD
if (ptcb != (OS_TCB *)0) {
3e6: 20 97 sbiw r28, 0x00 ; 0
3e8: 09 f4 brne .+2 ; 0x3ec <OS_TCBInit+0x28>
3ea: 6d c0 rjmp .+218 ; 0x4c6 <OS_TCBInit+0x102>
OSTCBFreeList = ptcb->OSTCBNext; /* Update pointer to free TCB list */
3ec: 8e 85 ldd r24, Y+14 ; 0x0e
3ee: 9f 85 ldd r25, Y+15 ; 0x0f
3f0: 90 93 cd 02 sts 0x02CD, r25
3f4: 80 93 cc 02 sts 0x02CC, r24
OS_EXIT_CRITICAL();
3f8: 78 94 sei
ptcb->OSTCBStkPtr = ptos; /* Load Stack pointer in TCB */
3fa: 79 83 std Y+1, r23 ; 0x01
3fc: 68 83 st Y, r22
ptcb->OSTCBPrio = prio; /* Load task priority into TCB */
3fe: 9b 8e std Y+27, r9 ; 0x1b
ptcb->OSTCBStat = OS_STAT_RDY; /* Task is ready to run */
400: 19 8e std Y+25, r1 ; 0x19
ptcb->OSTCBStatPend = OS_STAT_PEND_OK; /* Clear pend status */
402: 1a 8e std Y+26, r1 ; 0x1a
ptcb->OSTCBDly = 0; /* Task is not delayed */
404: 18 8e std Y+24, r1 ; 0x18
406: 1f 8a std Y+23, r1 ; 0x17
#if OS_TASK_CREATE_EXT_EN > 0
ptcb->OSTCBExtPtr = pext; /* Store pointer to TCB extension */
408: db 82 std Y+3, r13 ; 0x03
40a: ca 82 std Y+2, r12 ; 0x02
ptcb->OSTCBStkSize = stk_size; /* Store stack size */
40c: ee 82 std Y+6, r14 ; 0x06
40e: ff 82 std Y+7, r15 ; 0x07
410: 08 87 std Y+8, r16 ; 0x08
412: 19 87 std Y+9, r17 ; 0x09
ptcb->OSTCBStkBottom = pbos; /* Store pointer to bottom of stack */
414: 5d 83 std Y+5, r21 ; 0x05
416: 4c 83 std Y+4, r20 ; 0x04
ptcb->OSTCBOpt = opt; /* Store task options */
418: bb 86 std Y+11, r11 ; 0x0b
41a: aa 86 std Y+10, r10 ; 0x0a
ptcb->OSTCBId = id; /* Store task ID */
41c: 3d 87 std Y+13, r19 ; 0x0d
41e: 2c 87 std Y+12, r18 ; 0x0c
#if OS_TASK_DEL_EN > 0
ptcb->OSTCBDelReq = OS_ERR_NONE;
#endif
#if OS_LOWEST_PRIO <= 63
ptcb->OSTCBY = (INT8U)(prio >> 3); /* Pre-compute X, Y, BitX and BitY */
420: 89 2d mov r24, r9
422: 86 95 lsr r24
424: 86 95 lsr r24
426: 86 95 lsr r24
428: 8d 8f std Y+29, r24 ; 0x1d
ptcb->OSTCBBitY = (INT8U)(1 << ptcb->OSTCBY);
42a: 21 e0 ldi r18, 0x01 ; 1
42c: 30 e0 ldi r19, 0x00 ; 0
42e: a9 01 movw r20, r18
430: 02 c0 rjmp .+4 ; 0x436 <OS_TCBInit+0x72>
432: 44 0f add r20, r20
434: 55 1f adc r21, r21
436: 8a 95 dec r24
438: e2 f7 brpl .-8 ; 0x432 <OS_TCBInit+0x6e>
43a: 4f 8f std Y+31, r20 ; 0x1f
ptcb->OSTCBX = (INT8U)(prio & 0x07);
43c: 89 2d mov r24, r9
43e: 87 70 andi r24, 0x07 ; 7
440: 8c 8f std Y+28, r24 ; 0x1c
ptcb->OSTCBBitX = (INT8U)(1 << ptcb->OSTCBX);
442: 02 c0 rjmp .+4 ; 0x448 <OS_TCBInit+0x84>
444: 22 0f add r18, r18
446: 33 1f adc r19, r19
448: 8a 95 dec r24
44a: e2 f7 brpl .-8 ; 0x444 <OS_TCBInit+0x80>
44c: 2e 8f std Y+30, r18 ; 0x1e
ptcb->OSTCBX = (INT8U)(prio & 0x0F);
ptcb->OSTCBBitX = (INT16U)(1 << ptcb->OSTCBX);
#endif
#if OS_EVENT_EN
ptcb->OSTCBEventPtr = (OS_EVENT *)0; /* Task is not pending on an event */
44e: 1b 8a std Y+19, r1 ; 0x13
450: 1a 8a std Y+18, r1 ; 0x12
#if (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0) && (OS_TASK_DEL_EN > 0)
ptcb->OSTCBFlagNode = (OS_FLAG_NODE *)0; /* Task is not pending on an event flag */
#endif
#if (OS_MBOX_EN > 0) || ((OS_Q_EN > 0) && (OS_MAX_QS > 0))
ptcb->OSTCBMsg = (void *)0; /* No message received */
452: 1d 8a std Y+21, r1 ; 0x15
454: 1c 8a std Y+20, r1 ; 0x14
ptcb->OSTCBStkBase = (OS_STK *)0;
ptcb->OSTCBStkUsed = 0L;
#endif
#if OS_TASK_NAME_SIZE > 1
ptcb->OSTCBTaskName[0] = '?'; /* Unknown name at task creation */
456: 8f e3 ldi r24, 0x3F ; 63
458: 88 a3 std Y+32, r24 ; 0x20
ptcb->OSTCBTaskName[1] = OS_ASCII_NUL;
45a: 19 a2 std Y+33, r1 ; 0x21
#endif
OSTCBInitHook(ptcb);
45c: ce 01 movw r24, r28
45e: 0e 94 c3 14 call 0x2986 ; 0x2986 <OSTCBInitHook>
OSTaskCreateHook(ptcb); /* Call user defined hook */
462: ce 01 movw r24, r28
464: 0e 94 79 14 call 0x28f2 ; 0x28f2 <OSTaskCreateHook>
OS_ENTER_CRITICAL();
468: f8 94 cli
OSTCBPrioTbl[prio] = ptcb;
46a: e9 2d mov r30, r9
46c: f0 e0 ldi r31, 0x00 ; 0
46e: ee 0f add r30, r30
470: ff 1f adc r31, r31
472: ed 57 subi r30, 0x7D ; 125
474: f8 4f sbci r31, 0xF8 ; 248
476: d1 83 std Z+1, r29 ; 0x01
478: c0 83 st Z, r28
ptcb->OSTCBNext = OSTCBList; /* Link into TCB chain */
47a: e0 91 c6 02 lds r30, 0x02C6
47e: f0 91 c7 02 lds r31, 0x02C7
482: ff 87 std Y+15, r31 ; 0x0f
484: ee 87 std Y+14, r30 ; 0x0e
ptcb->OSTCBPrev = (OS_TCB *)0;
486: 19 8a std Y+17, r1 ; 0x11
488: 18 8a std Y+16, r1 ; 0x10
if (OSTCBList != (OS_TCB *)0) {
48a: 30 97 sbiw r30, 0x00 ; 0
48c: 11 f0 breq .+4 ; 0x492 <OS_TCBInit+0xce>
OSTCBList->OSTCBPrev = ptcb;
48e: d1 8b std Z+17, r29 ; 0x11
490: c0 8b std Z+16, r28 ; 0x10
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -