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

📄 test.lss

📁 在M16上动行的Small RTOS
💻 LSS
📖 第 1 页 / 共 5 页
字号:

test.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000b8e  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000048  00800060  00000b8e  00000c22  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000291  008000a8  008000a8  00000c6a  2**0
                  ALLOC
  3 .noinit       00000000  00800339  00800339  00000c6a  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  00000c6a  2**0
                  CONTENTS
  5 .stab         0000036c  00000000  00000000  00000c6c  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000084  00000000  00000000  00000fd8  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_aranges 00000064  00000000  00000000  0000105c  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_pubnames 000002bb  00000000  00000000  000010c0  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_info   00000bc9  00000000  00000000  0000137b  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_abbrev 00000410  00000000  00000000  00001f44  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_line   00000cb9  00000000  00000000  00002354  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_str    000002b3  00000000  00000000  0000300d  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	0c 94 2a 00 	jmp	0x54 <__ctors_end>
   4:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
   8:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
   c:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  10:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  14:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  18:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  1c:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  20:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  24:	0c 94 5b 00 	jmp	0xb6 <__vector_9>
  28:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  2c:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  30:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  34:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  38:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  3c:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  40:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  44:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  48:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  4c:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  50:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>

00000054 <__ctors_end>:
  54:	11 24       	eor	r1, r1
  56:	1f be       	out	0x3f, r1	; 63
  58:	cf e5       	ldi	r28, 0x5F	; 95
  5a:	d4 e0       	ldi	r29, 0x04	; 4
  5c:	de bf       	out	0x3e, r29	; 62
  5e:	cd bf       	out	0x3d, r28	; 61

00000060 <__do_copy_data>:
  60:	10 e0       	ldi	r17, 0x00	; 0
  62:	a0 e6       	ldi	r26, 0x60	; 96
  64:	b0 e0       	ldi	r27, 0x00	; 0
  66:	ee e8       	ldi	r30, 0x8E	; 142
  68:	fb e0       	ldi	r31, 0x0B	; 11
  6a:	02 c0       	rjmp	.+4      	; 0x70 <.do_copy_data_start>

0000006c <.do_copy_data_loop>:
  6c:	05 90       	lpm	r0, Z+
  6e:	0d 92       	st	X+, r0

00000070 <.do_copy_data_start>:
  70:	a8 3a       	cpi	r26, 0xA8	; 168
  72:	b1 07       	cpc	r27, r17
  74:	d9 f7       	brne	.-10     	; 0x6c <.do_copy_data_loop>

00000076 <__do_clear_bss>:
  76:	13 e0       	ldi	r17, 0x03	; 3
  78:	a8 ea       	ldi	r26, 0xA8	; 168
  7a:	b0 e0       	ldi	r27, 0x00	; 0
  7c:	01 c0       	rjmp	.+2      	; 0x80 <.do_clear_bss_start>

0000007e <.do_clear_bss_loop>:
  7e:	1d 92       	st	X+, r1

00000080 <.do_clear_bss_start>:
  80:	a9 33       	cpi	r26, 0x39	; 57
  82:	b1 07       	cpc	r27, r17
  84:	e1 f7       	brne	.-8      	; 0x7e <.do_clear_bss_loop>
  86:	0c 94 4e 00 	jmp	0x9c <main>

0000008a <__bad_interrupt>:
  8a:	0c 94 00 00 	jmp	0x0 <__vectors>

0000008e <Timer0Init>:
#define TCNT0_INIT (0XFF-F_CPU/256/TICK_TIMER_SHARING/OS_TICKS_PER_SEC)

void Timer0Init(void)
{
	TCNT0=TCNT0_INIT;
  8e:	81 ec       	ldi	r24, 0xC1	; 193
  90:	82 bf       	out	0x32, r24	; 50
	TCCR0=_BV(CS02);
  92:	84 e0       	ldi	r24, 0x04	; 4
  94:	83 bf       	out	0x33, r24	; 51
	TIMSK=_BV(TOIE0);
  96:	81 e0       	ldi	r24, 0x01	; 1
  98:	89 bf       	out	0x39, r24	; 57
  9a:	08 95       	ret

0000009c <main>:
}




int main (void)
{	
  9c:	cf e5       	ldi	r28, 0x5F	; 95
  9e:	d4 e0       	ldi	r29, 0x04	; 4
  a0:	de bf       	out	0x3e, r29	; 62
  a2:	cd bf       	out	0x3d, r28	; 61
	cli();
  a4:	f8 94       	cli
	MCUCR  = 0x00;
  a6:	15 be       	out	0x35, r1	; 53
	MCUCSR = 0x80;
  a8:	80 e8       	ldi	r24, 0x80	; 128
  aa:	84 bf       	out	0x34, r24	; 52

	Timer0Init();
  ac:	0e 94 47 00 	call	0x8e <Timer0Init>


	OSStart();
  b0:	0e 94 07 03 	call	0x60e <OSStart>

	
	while (1);
  b4:	ff cf       	rjmp	.-2      	; 0xb4 <main+0x18>

000000b6 <__vector_9>:
}

SIGNAL(SIG_OVERFLOW0)
{
  b6:	1f 92       	push	r1
  b8:	0f 92       	push	r0
  ba:	0f b6       	in	r0, 0x3f	; 63
  bc:	0f 92       	push	r0
  be:	11 24       	eor	r1, r1
  c0:	2f 93       	push	r18
  c2:	3f 93       	push	r19
  c4:	4f 93       	push	r20
  c6:	5f 93       	push	r21
  c8:	6f 93       	push	r22
  ca:	7f 93       	push	r23
  cc:	8f 93       	push	r24
  ce:	9f 93       	push	r25
  d0:	af 93       	push	r26
  d2:	bf 93       	push	r27
  d4:	ef 93       	push	r30
  d6:	ff 93       	push	r31
	TCNT0=TCNT0_INIT; 
  d8:	81 ec       	ldi	r24, 0xC1	; 193
  da:	82 bf       	out	0x32, r24	; 50
	

	#if TICK_TIMER_SHARING >1 
    static uint8 TickSum = 0;
#endif

#if EN_USER_TICK_TIMER > 0 
    UserTickTimer();                                                                                  
#endif



#if TICK_TIMER_SHARING >1 
    TickSum = (TickSum + 1) % TICK_TIMER_SHARING;
  dc:	80 91 a8 00 	lds	r24, 0x00A8
  e0:	99 27       	eor	r25, r25
  e2:	01 96       	adiw	r24, 0x01	; 1
  e4:	65 e0       	ldi	r22, 0x05	; 5
  e6:	70 e0       	ldi	r23, 0x00	; 0
  e8:	0e 94 a0 05 	call	0xb40 <__divmodhi4>
  ec:	80 93 a8 00 	sts	0x00A8, r24
    if (TickSum != 0)
  f0:	88 23       	and	r24, r24
  f2:	51 f4       	brne	.+20     	; 0x108 <__vector_9+0x52>
    {
        return;
    }
#endif

#if EN_OS_INT_ENTER > 0 
    OS_INT_ENTER();                                     // 中断开始处理                                    
  f4:	80 91 ac 00 	lds	r24, 0x00AC
  f8:	8f 5f       	subi	r24, 0xFF	; 255
  fa:	80 93 ac 00 	sts	0x00AC, r24
  fe:	78 94       	sei
#endif
    

#if EN_TIMER_SHARING > 0
    OSTimeTick();                                       // 调用系统时钟处理函数                            
 100:	0e 94 90 01 	call	0x320 <OSTimeTick>
#else
    OSIntSendSignal(TIME_ISR_TASK_ID);                  // 唤醒ID为TIME_ISR_TASK_ID的任务                 
#endif
    
    OSIntExit();                     
 104:	0e 94 51 01 	call	0x2a2 <OSIntExit>
 108:	ff 91       	pop	r31
 10a:	ef 91       	pop	r30
 10c:	bf 91       	pop	r27
 10e:	af 91       	pop	r26
 110:	9f 91       	pop	r25
 112:	8f 91       	pop	r24
 114:	7f 91       	pop	r23
 116:	6f 91       	pop	r22
 118:	5f 91       	pop	r21
 11a:	4f 91       	pop	r20
 11c:	3f 91       	pop	r19
 11e:	2f 91       	pop	r18
 120:	0f 90       	pop	r0
 122:	0f be       	out	0x3f, r0	; 63
 124:	0f 90       	pop	r0
 126:	1f 90       	pop	r1
 128:	18 95       	reti

0000012a <OSIntSendSignal>:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        void OSIntSendSignal(uint8 TaskId)

{
 12a:	e8 2f       	mov	r30, r24
    if (TaskId < OS_MAX_TASKS)
 12c:	80 31       	cpi	r24, 0x10	; 16
 12e:	d0 f5       	brcc	.+116    	; 0x1a4 <OSIntSendSignal+0x7a>
    {
        OS_ENTER_CRITICAL();
 130:	f8 94       	cli
 132:	80 91 a9 00 	lds	r24, 0x00A9
 136:	8f 5f       	subi	r24, 0xFF	; 255
 138:	80 93 a9 00 	sts	0x00A9, r24
 13c:	ae 2f       	mov	r26, r30
 13e:	bb 27       	eor	r27, r27

#if OS_MAX_TASKS < 9
        OSTaskRuning |= OSMapTbl[TaskId];
#else
        if (TaskId < 8)
 140:	e8 30       	cpi	r30, 0x08	; 8
 142:	58 f4       	brcc	.+22     	; 0x15a <OSIntSendSignal+0x30>
        {
            ((uint8 *)(&OSTaskRuning))[LOW_BYTE] |= OSMapTbl[TaskId];
 144:	aa 0f       	add	r26, r26
 146:	bb 1f       	adc	r27, r27
 148:	a0 5a       	subi	r26, 0xA0	; 160
 14a:	bf 4f       	sbci	r27, 0xFF	; 255
 14c:	80 91 82 00 	lds	r24, 0x0082
 150:	9c 91       	ld	r25, X
 152:	89 2b       	or	r24, r25
 154:	80 93 82 00 	sts	0x0082, r24
 158:	0c c0       	rjmp	.+24     	; 0x172 <OSIntSendSignal+0x48>
        }
        else
        {
            ((uint8 *)(&OSTaskRuning))[HIGH_BYTE] |= OSMapTbl[TaskId & 0x07];
 15a:	a7 70       	andi	r26, 0x07	; 7
 15c:	b0 70       	andi	r27, 0x00	; 0
 15e:	aa 0f       	add	r26, r26
 160:	bb 1f       	adc	r27, r27
 162:	a0 5a       	subi	r26, 0xA0	; 160
 164:	bf 4f       	sbci	r27, 0xFF	; 255
 166:	80 91 83 00 	lds	r24, 0x0083
 16a:	9c 91       	ld	r25, X
 16c:	89 2b       	or	r24, r25
 16e:	80 93 83 00 	sts	0x0083, r24
        }
#endif

        OSTaskRuning |= OSMapTbl[TaskId];
 172:	ff 27       	eor	r31, r31
 174:	ee 0f       	add	r30, r30
 176:	ff 1f       	adc	r31, r31
 178:	e0 5a       	subi	r30, 0xA0	; 160
 17a:	ff 4f       	sbci	r31, 0xFF	; 255
 17c:	80 91 82 00 	lds	r24, 0x0082
 180:	90 91 83 00 	lds	r25, 0x0083
 184:	20 81       	ld	r18, Z
 186:	31 81       	ldd	r19, Z+1	; 0x01
 188:	82 2b       	or	r24, r18
 18a:	93 2b       	or	r25, r19
 18c:	90 93 83 00 	sts	0x0083, r25
 190:	80 93 82 00 	sts	0x0082, r24
		OS_EXIT_CRITICAL();
 194:	80 91 a9 00 	lds	r24, 0x00A9
 198:	81 50       	subi	r24, 0x01	; 1
 19a:	80 93 a9 00 	sts	0x00A9, r24
 19e:	88 23       	and	r24, r24
 1a0:	09 f4       	brne	.+2      	; 0x1a4 <OSIntSendSignal+0x7a>
 1a2:	78 94       	sei
 1a4:	08 95       	ret

000001a6 <OSClearSignal>:
    }
}

/*********************************************************************************************************
** 函数名称: OSSendSignal
** 功能描述: 任务中给指定任务发送信号,既使指定任务就绪
** 输 入: TaskId : 任务ID
** 输 出: 无
** 全局变量: 无
** 调用模块: OSSched,OSIntSendSignal
**
** 作 者: 陈明计
** 日 期: 2002年6月20日
**-------------------------------------------------------------------------------------------------------
** 修改人: 陈明计
** 日 期: 2002年9月1日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        void OSSendSignal(uint8 TaskId)

{
    OSIntSendSignal(TaskId);
    OSSched();                                              //开始任务切换
}

/*********************************************************************************************************
** 函数名称: OSClearSignal
** 功能描述: 清除指定任务信号,既使指定任务休眠
** 输 入: TaskId : 任务ID
** 输 出: 无
** 全局变量: OSTaskRuning
** 调用模块: 无
**
** 作 者: 陈明计
** 日 期: 2002年6月20日
**-------------------------------------------------------------------------------------------------------
** 修改人: 陈明计
** 日 期: 2002年9月1日
**-------------------------------------------------------------------------------------------------------
** 修改人: 陈明计
** 日 期: 2002年9月4日
**------------------------------------------------------------------------------------------------------
** 修改人: 陈明计
** 日 期: 2002年12月30日
**------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/

        void OSClearSignal(uint8 TaskId)
{
 1a6:	e8 2f       	mov	r30, r24
    if (TaskId < OS_MAX_TASKS)
 1a8:	80 31       	cpi	r24, 0x10	; 16
 1aa:	08 f0       	brcs	.+2      	; 0x1ae <OSClearSignal+0x8>
 1ac:	3e c0       	rjmp	.+124    	; 0x22a <OSClearSignal+0x84>
    {
        OS_ENTER_CRITICAL();
 1ae:	f8 94       	cli
 1b0:	80 91 a9 00 	lds	r24, 0x00A9
 1b4:	8f 5f       	subi	r24, 0xFF	; 255
 1b6:	80 93 a9 00 	sts	0x00A9, r24
 1ba:	ae 2f       	mov	r26, r30
 1bc:	bb 27       	eor	r27, r27

#if OS_MAX_TASKS < 9

⌨️ 快捷键说明

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