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

📄 ucos-ii.lss

📁 avr ucos 代码 测试环境:source insight WINAVR 2个进程
💻 LSS
📖 第 1 页 / 共 5 页
字号:
#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
     370:	71 05       	cpc	r23, 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 + -