📄 test.lss
字号:
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 + -