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

📄 timers.lss

📁 Avr_atmel_小型OS
💻 LSS
📖 第 1 页 / 共 2 页
字号:

Timers.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000520  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000000  00800060  00000520  000005b4  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          0000007b  00800060  00800060  000005b4  2**2
                  ALLOC
  3 .noinit       00000000  008000db  008000db  000005b4  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  000005b4  2**0
                  CONTENTS
  5 .stab         00001d40  00000000  00000000  000005b4  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      000003a2  00000000  00000000  000022f4  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_aranges 00000014  00000000  00000000  00002696  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_pubnames 000000a2  00000000  00000000  000026aa  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_info   00000262  00000000  00000000  0000274c  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_abbrev 000000ed  00000000  00000000  000029ae  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_line   0000012e  00000000  00000000  00002a9b  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_str    00000134  00000000  00000000  00002bc9  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	0c 94 31 00 	jmp	0x62 <__init>
   4:	0c 94 4c 00 	jmp	0x98 <__bad_interrupt>
   8:	0c 94 4c 00 	jmp	0x98 <__bad_interrupt>
   c:	0c 94 4c 00 	jmp	0x98 <__bad_interrupt>
  10:	0c 94 4c 00 	jmp	0x98 <__bad_interrupt>
  14:	0c 94 4c 00 	jmp	0x98 <__bad_interrupt>
  18:	0c 94 4c 00 	jmp	0x98 <__bad_interrupt>
  1c:	0c 94 4c 00 	jmp	0x98 <__bad_interrupt>
  20:	0c 94 4c 00 	jmp	0x98 <__bad_interrupt>
  24:	0c 94 4e 00 	jmp	0x9c <__vector_9>
  28:	0c 94 4c 00 	jmp	0x98 <__bad_interrupt>
  2c:	0c 94 4c 00 	jmp	0x98 <__bad_interrupt>
  30:	0c 94 4c 00 	jmp	0x98 <__bad_interrupt>
  34:	0c 94 4c 00 	jmp	0x98 <__bad_interrupt>
  38:	0c 94 4c 00 	jmp	0x98 <__bad_interrupt>
  3c:	0c 94 4c 00 	jmp	0x98 <__bad_interrupt>
  40:	0c 94 4c 00 	jmp	0x98 <__bad_interrupt>
  44:	0c 94 4c 00 	jmp	0x98 <__bad_interrupt>
  48:	0c 94 4c 00 	jmp	0x98 <__bad_interrupt>
  4c:	0c 94 4c 00 	jmp	0x98 <__bad_interrupt>
  50:	0c 94 4c 00 	jmp	0x98 <__bad_interrupt>

00000054 <__ctors_end>:
  54:	96 00       	.word	0x0096	; ????
  56:	72 00       	.word	0x0072	; ????
  58:	66 00       	.word	0x0066	; ????
  5a:	02 cd       	rjmp	.-1532   	; 0xfffffa60 <__eeprom_end+0xff7efa60>

0000005b <task1Tcb>:
  5b:	cd 00 56 00 9d 00 03                                ..V....

00000062 <__init>:
  62:	11 24       	eor	r1, r1
  64:	1f be       	out	0x3f, r1	; 63
  66:	cf e5       	ldi	r28, 0x5F	; 95
  68:	d4 e0       	ldi	r29, 0x04	; 4
  6a:	de bf       	out	0x3e, r29	; 62
  6c:	cd bf       	out	0x3d, r28	; 61

0000006e <__do_copy_data>:
  6e:	10 e0       	ldi	r17, 0x00	; 0
  70:	a0 e6       	ldi	r26, 0x60	; 96
  72:	b0 e0       	ldi	r27, 0x00	; 0
  74:	e0 e2       	ldi	r30, 0x20	; 32
  76:	f5 e0       	ldi	r31, 0x05	; 5
  78:	02 c0       	rjmp	.+4      	; 0x7e <.do_copy_data_start>

0000007a <.do_copy_data_loop>:
  7a:	05 90       	lpm	r0, Z+
  7c:	0d 92       	st	X+, r0

0000007e <.do_copy_data_start>:
  7e:	a0 36       	cpi	r26, 0x60	; 96
  80:	b1 07       	cpc	r27, r17
  82:	d9 f7       	brne	.-10     	; 0x7a <.do_copy_data_loop>

00000084 <__do_clear_bss>:
  84:	10 e0       	ldi	r17, 0x00	; 0
  86:	a0 e6       	ldi	r26, 0x60	; 96
  88:	b0 e0       	ldi	r27, 0x00	; 0
  8a:	01 c0       	rjmp	.+2      	; 0x8e <.do_clear_bss_start>

0000008c <.do_clear_bss_loop>:
  8c:	1d 92       	st	X+, r1

0000008e <.do_clear_bss_start>:
  8e:	ab 3d       	cpi	r26, 0xDB	; 219
  90:	b1 07       	cpc	r27, r17
  92:	e1 f7       	brne	.-8      	; 0x8c <.do_clear_bss_loop>
  94:	0c 94 7d 00 	jmp	0xfa <main>

00000098 <__bad_interrupt>:
  98:	0c 94 00 00 	jmp	0x0 <__vectors>

0000009c <__vector_9>:

#pragma optimize=z 4
AVRX_SIGINT(SIG_OVERFLOW0)
{
    IntProlog();                // Switch to kernel stack/context
  9c:	0e 94 9b 00 	call	0x136 <IntProlog>
    TCNT0 = TCNT0_INIT;
  a0:	80 ee       	ldi	r24, 0xE0	; 224
  a2:	82 bf       	out	0x32, r24	; 50
//    outp(TCNT0_INIT, TCNT0);
    AvrXTimerHandler();         // Call Time queue manager
  a4:	0e 94 24 02 	call	0x448 <AvrXTimerHandler>
    Epilog();                   // Return to tasks
  a8:	0e 94 e7 00 	call	0x1ce <Epilog>

000000ac <task1>:
}

/*
 Task 1 simply flashes the light off for 1/5 second and then on for 4/5th
 for a 1 second cycle time.
 */
AVRX_IAR_TASKDEF(task1, 0, 6, 3)
AVRX_GCC_TASKDEF(task1, 8, 3)
{
    while (1)
    {
        AvrXStartTimer(&timer1, 800);       // 800 ms delay
  ac:	60 e2       	ldi	r22, 0x20	; 32
  ae:	73 e0       	ldi	r23, 0x03	; 3
  b0:	87 e9       	ldi	r24, 0x97	; 151
  b2:	90 e0       	ldi	r25, 0x00	; 0
  b4:	0e 94 f8 01 	call	0x3f0 <AvrXStartTimer>
        AvrXWaitTimer(&timer1);
  b8:	87 e9       	ldi	r24, 0x97	; 151
  ba:	90 e0       	ldi	r25, 0x00	; 0
  bc:	0e 94 85 01 	call	0x30a <AvrXWaitMessageAck>
        LED = LED ^ 0x01;
  c0:	88 b3       	in	r24, 0x18	; 24
  c2:	11 e0       	ldi	r17, 0x01	; 1
  c4:	81 27       	eor	r24, r17
  c6:	88 bb       	out	0x18, r24	; 24
//        outp(inp(LED) ^ 0x01, LED);
        AvrXStartTimer(&timer1, 200);       // 200 ms delay
  c8:	68 ec       	ldi	r22, 0xC8	; 200
  ca:	70 e0       	ldi	r23, 0x00	; 0
  cc:	87 e9       	ldi	r24, 0x97	; 151
  ce:	90 e0       	ldi	r25, 0x00	; 0
  d0:	0e 94 f8 01 	call	0x3f0 <AvrXStartTimer>
        AvrXWaitTimer(&timer1);
  d4:	87 e9       	ldi	r24, 0x97	; 151
  d6:	90 e0       	ldi	r25, 0x00	; 0
  d8:	0e 94 85 01 	call	0x30a <AvrXWaitMessageAck>
        LED = LED ^ 0x01;
  dc:	88 b3       	in	r24, 0x18	; 24
  de:	81 27       	eor	r24, r17
  e0:	88 bb       	out	0x18, r24	; 24
  e2:	e4 cf       	rjmp	.-56     	; 0xac <task1>

000000e4 <task2>:
//        outp(inp(LED) ^ 0x01, LED);
    }
}
/*
 Task 2 cycles the light on/off over 4 seconds.  It uses a simplified
 form of the delay API
 */
AVRX_IAR_TASKDEF(task2, 0, 6, 2)
AVRX_GCC_TASKDEF(task2, 8, 2)
{
    while (1)
    {
        AvrXDelay(&timer2, 2000);           // 2 second delay
  e4:	60 ed       	ldi	r22, 0xD0	; 208
  e6:	77 e0       	ldi	r23, 0x07	; 7
  e8:	80 e6       	ldi	r24, 0x60	; 96
  ea:	90 e0       	ldi	r25, 0x00	; 0
  ec:	0e 94 f6 01 	call	0x3ec <AvrXDelay>
        LED = LED ^ 0x02;
  f0:	88 b3       	in	r24, 0x18	; 24
  f2:	92 e0       	ldi	r25, 0x02	; 2
  f4:	89 27       	eor	r24, r25
  f6:	88 bb       	out	0x18, r24	; 24
  f8:	f5 cf       	rjmp	.-22     	; 0xe4 <task2>

000000fa <main>:
//        outp((inp(LED) ^ 0x02), LED);
    }
}

int main(void)                 // Main runs under the AvrX Stack
{
  fa:	cf e5       	ldi	r28, 0x5F	; 95
  fc:	d4 e0       	ldi	r29, 0x04	; 4
  fe:	de bf       	out	0x3e, r29	; 62
 100:	cd bf       	out	0x3d, r28	; 61
    AvrXSetKernelStack(0);
 102:	80 e0       	ldi	r24, 0x00	; 0
 104:	90 e0       	ldi	r25, 0x00	; 0
 106:	0e 94 20 01 	call	0x240 <AvrXSetKernelStack>
/*
    outp((1<<SE), MCUCR);       // Enable "Sleep" instruction
    outp(TCNT0_INIT, TCNT0);
    outp(TMC8_CK256, TCCR0);    // Set up Timer0 for CLK/256 rate
    outp((1<<TOIE0), TIMSK);     // Enable Timer0 overflow interrupt

    outp(0xFF, LEDDDR);         // Make LED output and
    outp(0xFF, LED);            // drive high (LEDs off)
*/
    MCUCR = 1<<SE;
 10a:	80 e4       	ldi	r24, 0x40	; 64
 10c:	85 bf       	out	0x35, r24	; 53
    TCNT0 = TCNT0_INIT;
 10e:	80 ee       	ldi	r24, 0xE0	; 224
 110:	82 bf       	out	0x32, r24	; 50
    TCCR0 = TMC8_CK256;
 112:	84 e0       	ldi	r24, 0x04	; 4
 114:	83 bf       	out	0x33, r24	; 51
    TIMSK = 1<<TOIE0;
 116:	81 e0       	ldi	r24, 0x01	; 1
 118:	89 bf       	out	0x39, r24	; 57

    LEDDDR = 0xFF;
 11a:	8f ef       	ldi	r24, 0xFF	; 255
 11c:	87 bb       	out	0x17, r24	; 23
    LED   = 0xFF;
 11e:	88 bb       	out	0x18, r24	; 24

    AvrXRunTask(TCB(task1));
 120:	8b e5       	ldi	r24, 0x5B	; 91
 122:	90 e0       	ldi	r25, 0x00	; 0
 124:	0e 94 2c 01 	call	0x258 <AvrXRunTask>
    AvrXRunTask(TCB(task2));
 128:	84 e5       	ldi	r24, 0x54	; 84
 12a:	90 e0       	ldi	r25, 0x00	; 0
 12c:	0e 94 2c 01 	call	0x258 <AvrXRunTask>
 //   AvrXRunTask(TCB(Monitor));

//    InitSerialIO(UBRR_INIT);    // Initialize USART baud rate generator
    Epilog();                   // Switch from AvrX Stack to first task
 130:	0e 94 e7 00 	call	0x1ce <Epilog>
    while(1);
 134:	ff cf       	rjmp	.-2      	; 0x134 <main+0x3a>

00000136 <IntProlog>:
 136:	df 93       	push	r29
 138:	cf 93       	push	r28
 13a:	bf 93       	push	r27
 13c:	af 93       	push	r26
 13e:	9f 93       	push	r25
 140:	d0 e0       	ldi	r29, 0x00	; 0
 142:	c0 ed       	ldi	r28, 0xD0	; 208
 144:	9f b7       	in	r25, 0x3f	; 63
 146:	ae 81       	ldd	r26, Y+6	; 0x06
 148:	af 5f       	subi	r26, 0xFF	; 255
 14a:	ae 83       	std	Y+6, r26	; 0x06
 14c:	60 f0       	brcs	.+24     	; 0x166 <SaveContext>
 14e:	aa 81       	ldd	r26, Y+2	; 0x02
 150:	bb 81       	ldd	r27, Y+3	; 0x03
 152:	ba 2b       	or	r27, r26
 154:	41 f4       	brne	.+16     	; 0x166 <SaveContext>
 156:	cd b7       	in	r28, 0x3d	; 61
 158:	de b7       	in	r29, 0x3e	; 62
 15a:	fe 81       	ldd	r31, Y+6	; 0x06
 15c:	ef 81       	ldd	r30, Y+7	; 0x07
 15e:	29 96       	adiw	r28, 0x09	; 9
 160:	cd bf       	out	0x3d, r28	; 61
 162:	de bf       	out	0x3e, r29	; 62
 164:	09 94       	ijmp

00000166 <SaveContext>:
 166:	8f 93       	push	r24
 168:	7f 93       	push	r23
 16a:	6f 93       	push	r22
 16c:	5f 93       	push	r21
 16e:	4f 93       	push	r20
 170:	3f 93       	push	r19
 172:	2f 93       	push	r18
 174:	1f 93       	push	r17
 176:	0f 93       	push	r16
 178:	ff 92       	push	r15
 17a:	ef 92       	push	r14
 17c:	df 92       	push	r13
 17e:	cf 92       	push	r12
 180:	bf 92       	push	r11
 182:	af 92       	push	r10
 184:	9f 92       	push	r9
 186:	8f 92       	push	r8
 188:	7f 92       	push	r7
 18a:	6f 92       	push	r6
 18c:	5f 92       	push	r5
 18e:	4f 92       	push	r4
 190:	3f 92       	push	r3
 192:	2f 92       	push	r2
 194:	1f 92       	push	r1
 196:	0f 92       	push	r0
 198:	9f 93       	push	r25
 19a:	cd b7       	in	r28, 0x3d	; 61
 19c:	de b7       	in	r29, 0x3e	; 62
 19e:	9b 8d       	ldd	r25, Y+27	; 0x1b
 1a0:	39 a1       	ldd	r19, Y+33	; 0x21
 1a2:	48 a1       	ldd	r20, Y+32	; 0x20
 1a4:	e8 a3       	std	Y+32, r30	; 0x20
 1a6:	f9 a3       	std	Y+33, r31	; 0x21
 1a8:	70 f0       	brcs	.+28     	; 0x1c6 <AlreadyInKernel>
 1aa:	f0 e0       	ldi	r31, 0x00	; 0
 1ac:	e0 ed       	ldi	r30, 0xD0	; 208
 1ae:	d3 81       	ldd	r29, Z+3	; 0x03
 1b0:	c2 81       	ldd	r28, Z+2	; 0x02
 1b2:	be b7       	in	r27, 0x3e	; 62
 1b4:	ad b7       	in	r26, 0x3d	; 61
 1b6:	bd 83       	std	Y+5, r27	; 0x05
 1b8:	ac 83       	std	Y+4, r26	; 0x04
 1ba:	24 81       	ldd	r18, Z+4	; 0x04
 1bc:	2d bf       	out	0x3d, r18	; 61
 1be:	25 81       	ldd	r18, Z+5	; 0x05
 1c0:	2e bf       	out	0x3e, r18	; 62
 1c2:	ca 2f       	mov	r28, r26
 1c4:	db 2f       	mov	r29, r27

000001c6 <AlreadyInKernel>:
 1c6:	11 24       	eor	r1, r1
 1c8:	e3 2f       	mov	r30, r19
 1ca:	f4 2f       	mov	r31, r20
 1cc:	09 94       	ijmp

000001ce <Epilog>:
 1ce:	ef 91       	pop	r30
 1d0:	ef 91       	pop	r30

000001d2 <_Epilog>:
 1d2:	e0 ed       	ldi	r30, 0xD0	; 208
 1d4:	f0 e0       	ldi	r31, 0x00	; 0
 1d6:	f8 94       	cli
 1d8:	06 81       	ldd	r16, Z+6	; 0x06
 1da:	0a 95       	dec	r16
 1dc:	06 83       	std	Z+6, r16	; 0x06
 1de:	54 f4       	brge	.+20     	; 0x1f4 <SkipTaskSwap>
 1e0:	d1 81       	ldd	r29, Z+1	; 0x01
 1e2:	c0 81       	ld	r28, Z
 1e4:	d3 83       	std	Z+3, r29	; 0x03
 1e6:	c2 83       	std	Z+2, r28	; 0x02
 1e8:	20 96       	adiw	r28, 0x00	; 0
 1ea:	39 f1       	breq	.+78     	; 0x23a <_IdleTask>
 1ec:	bd 81       	ldd	r27, Y+5	; 0x05
 1ee:	ac 81       	ldd	r26, Y+4	; 0x04
 1f0:	ad bf       	out	0x3d, r26	; 61
 1f2:	be bf       	out	0x3e, r27	; 62

000001f4 <SkipTaskSwap>:
 1f4:	0f 90       	pop	r0
 1f6:	0f be       	out	0x3f, r0	; 63
 1f8:	0f 90       	pop	r0
 1fa:	1f 90       	pop	r1
 1fc:	2f 90       	pop	r2
 1fe:	3f 90       	pop	r3
 200:	4f 90       	pop	r4
 202:	5f 90       	pop	r5
 204:	6f 90       	pop	r6
 206:	7f 90       	pop	r7
 208:	8f 90       	pop	r8
 20a:	9f 90       	pop	r9
 20c:	af 90       	pop	r10
 20e:	bf 90       	pop	r11
 210:	cf 90       	pop	r12
 212:	df 90       	pop	r13
 214:	ef 90       	pop	r14
 216:	ff 90       	pop	r15
 218:	0f 91       	pop	r16
 21a:	1f 91       	pop	r17
 21c:	2f 91       	pop	r18
 21e:	3f 91       	pop	r19
 220:	4f 91       	pop	r20
 222:	5f 91       	pop	r21
 224:	6f 91       	pop	r22
 226:	7f 91       	pop	r23
 228:	8f 91       	pop	r24
 22a:	9f 91       	pop	r25
 22c:	af 91       	pop	r26
 22e:	bf 91       	pop	r27
 230:	cf 91       	pop	r28
 232:	df 91       	pop	r29
 234:	ef 91       	pop	r30
 236:	ff 91       	pop	r31
 238:	18 95       	reti

0000023a <_IdleTask>:
 23a:	78 94       	sei
 23c:	88 95       	sleep

0000023e <snooze>:
 23e:	fd cf       	rjmp	.-6      	; 0x23a <_IdleTask>

00000240 <AvrXSetKernelStack>:
 240:	ff 91       	pop	r31
 242:	ef 91       	pop	r30
 244:	80 50       	subi	r24, 0x00	; 0
 246:	90 40       	sbci	r25, 0x00	; 0
 248:	11 f4       	brne	.+4      	; 0x24e <sks1>
 24a:	8d b7       	in	r24, 0x3d	; 61
 24c:	9e b7       	in	r25, 0x3e	; 62

0000024e <sks1>:
 24e:	80 93 d4 00 	sts	0x00D4, r24
 252:	90 93 d5 00 	sts	0x00D5, r25
 256:	09 94       	ijmp

00000258 <AvrXRunTask>:
 258:	01 d0       	rcall	.+2      	; 0x25c <AvrXInitTask>
 25a:	23 c0       	rjmp	.+70     	; 0x2a2 <AvrXResume>

0000025c <AvrXInitTask>:
 25c:	e8 2f       	mov	r30, r24
 25e:	f9 2f       	mov	r31, r25
 260:	1d d0       	rcall	.+58     	; 0x29c <lpm_inc>
 262:	a0 2d       	mov	r26, r0
 264:	1b d0       	rcall	.+54     	; 0x29c <lpm_inc>
 266:	b0 2d       	mov	r27, r0

⌨️ 快捷键说明

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