📄 main.lss
字号:
Main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000c4c 00002da0 00002da0 00000094 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000002 00800060 000039ec 00000ce0 2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 00000234 00800062 00800062 00000ce2 2**0
ALLOC
3 .stab 00000378 00000000 00000000 00000ce4 2**2
CONTENTS, READONLY, DEBUGGING
4 .stabstr 00000071 00000000 00000000 0000105c 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_aranges 00000020 00000000 00000000 000010cd 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_pubnames 00000302 00000000 00000000 000010ed 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_info 00000dca 00000000 00000000 000013ef 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_abbrev 00000228 00000000 00000000 000021b9 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_line 0000126d 00000000 00000000 000023e1 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_frame 00000210 00000000 00000000 00003650 2**2
CONTENTS, READONLY, DEBUGGING
11 .debug_str 000002fd 00000000 00000000 00003860 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_loc 00000150 00000000 00000000 00003b5d 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00002da0 <__vectors>:
2da0: 0c 94 17 17 jmp 0x2e2e ; 0x2e2e <__ctors_end>
2da4: 0c 94 34 17 jmp 0x2e68 ; 0x2e68 <__bad_interrupt>
2da8: 0c 94 34 17 jmp 0x2e68 ; 0x2e68 <__bad_interrupt>
2dac: 0c 94 34 17 jmp 0x2e68 ; 0x2e68 <__bad_interrupt>
2db0: 0c 94 34 17 jmp 0x2e68 ; 0x2e68 <__bad_interrupt>
2db4: 0c 94 34 17 jmp 0x2e68 ; 0x2e68 <__bad_interrupt>
2db8: 0c 94 34 17 jmp 0x2e68 ; 0x2e68 <__bad_interrupt>
2dbc: 0c 94 34 17 jmp 0x2e68 ; 0x2e68 <__bad_interrupt>
2dc0: 0c 94 34 17 jmp 0x2e68 ; 0x2e68 <__bad_interrupt>
2dc4: 0c 94 34 17 jmp 0x2e68 ; 0x2e68 <__bad_interrupt>
2dc8: 0c 94 34 17 jmp 0x2e68 ; 0x2e68 <__bad_interrupt>
2dcc: 0c 94 34 17 jmp 0x2e68 ; 0x2e68 <__bad_interrupt>
2dd0: 0c 94 34 17 jmp 0x2e68 ; 0x2e68 <__bad_interrupt>
2dd4: 0c 94 34 17 jmp 0x2e68 ; 0x2e68 <__bad_interrupt>
2dd8: 0c 94 34 17 jmp 0x2e68 ; 0x2e68 <__bad_interrupt>
2ddc: 0c 94 34 17 jmp 0x2e68 ; 0x2e68 <__bad_interrupt>
2de0: 0c 94 34 17 jmp 0x2e68 ; 0x2e68 <__bad_interrupt>
2de4: 0c 94 34 17 jmp 0x2e68 ; 0x2e68 <__bad_interrupt>
2de8: 0c 94 34 17 jmp 0x2e68 ; 0x2e68 <__bad_interrupt>
2dec: 0c 94 34 17 jmp 0x2e68 ; 0x2e68 <__bad_interrupt>
2df0: 0c 94 34 17 jmp 0x2e68 ; 0x2e68 <__bad_interrupt>
2df4: 8b 1c adc r8, r11
2df6: 91 1c adc r9, r1
2df8: 8e 1c adc r8, r14
2dfa: cb 1c adc r12, r11
2dfc: c1 1c adc r12, r1
2dfe: b5 1c adc r11, r5
2e00: cb 1c adc r12, r11
2e02: cb 1c adc r12, r11
2e04: cb 1c adc r12, r11
2e06: cb 1c adc r12, r11
2e08: cb 1c adc r12, r11
2e0a: cb 1c adc r12, r11
2e0c: cb 1c adc r12, r11
2e0e: cb 1c adc r12, r11
2e10: cb 1c adc r12, r11
2e12: 94 1c adc r9, r4
2e14: 97 1c adc r9, r7
2e16: af 1c adc r10, r15
2e18: b2 1c adc r11, r2
2e1a: b8 1c adc r11, r8
2e1c: bb 1c adc r11, r11
2e1e: be 1c adc r11, r14
2e20: a3 1c adc r10, r3
2e22: a0 1c adc r10, r0
2e24: a9 1c adc r10, r9
2e26: a6 1c adc r10, r6
2e28: 9a 1c adc r9, r10
2e2a: 9d 1c adc r9, r13
2e2c: ac 1c adc r10, r12
00002e2e <__ctors_end>:
2e2e: 11 24 eor r1, r1
2e30: 1f be out 0x3f, r1 ; 63
2e32: cf e5 ldi r28, 0x5F ; 95
2e34: d4 e0 ldi r29, 0x04 ; 4
2e36: de bf out 0x3e, r29 ; 62
2e38: cd bf out 0x3d, r28 ; 61
00002e3a <__do_copy_data>:
2e3a: 10 e0 ldi r17, 0x00 ; 0
2e3c: a0 e6 ldi r26, 0x60 ; 96
2e3e: b0 e0 ldi r27, 0x00 ; 0
2e40: ec ee ldi r30, 0xEC ; 236
2e42: f9 e3 ldi r31, 0x39 ; 57
2e44: 02 c0 rjmp .+4 ; 0x2e4a <.do_copy_data_start>
00002e46 <.do_copy_data_loop>:
2e46: 05 90 lpm r0, Z+
2e48: 0d 92 st X+, r0
00002e4a <.do_copy_data_start>:
2e4a: a2 36 cpi r26, 0x62 ; 98
2e4c: b1 07 cpc r27, r17
2e4e: d9 f7 brne .-10 ; 0x2e46 <.do_copy_data_loop>
00002e50 <__do_clear_bss>:
2e50: 12 e0 ldi r17, 0x02 ; 2
2e52: a2 e6 ldi r26, 0x62 ; 98
2e54: b0 e0 ldi r27, 0x00 ; 0
2e56: 01 c0 rjmp .+2 ; 0x2e5a <.do_clear_bss_start>
00002e58 <.do_clear_bss_loop>:
2e58: 1d 92 st X+, r1
00002e5a <.do_clear_bss_start>:
2e5a: a6 39 cpi r26, 0x96 ; 150
2e5c: b1 07 cpc r27, r17
2e5e: e1 f7 brne .-8 ; 0x2e58 <.do_clear_bss_loop>
2e60: 0e 94 58 1c call 0x38b0 ; 0x38b0 <main>
2e64: 0c 94 f5 1c jmp 0x39ea ; 0x39ea <_exit>
00002e68 <__bad_interrupt>:
2e68: 0c 94 d0 16 jmp 0x2da0 ; 0x2da0 <__vectors>
00002e6c <putch>:
return;
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
void putch(char ch)
{
2e6c: 5d 9b sbis 0x0b, 5 ; 11
2e6e: fe cf rjmp .-4 ; 0x2e6c <putch>
while (!(UCSRA & _BV(UDRE)));
UDR = ch;
2e70: 8c b9 out 0x0c, r24 ; 12
2e72: 08 95 ret
00002e74 <getch>:
}
char getch(void)
{
2e74: 5f 9b sbis 0x0b, 7 ; 11
2e76: fe cf rjmp .-4 ; 0x2e74 <getch>
while(!(UCSRA & _BV(RXC)));
return UDR;
2e78: 8c b1 in r24, 0x0c ; 12
}
2e7a: 99 27 eor r25, r25
2e7c: 08 95 ret
00002e7e <flash_led>:
void flash_led(uint8_t count)
{
2e7e: 88 23 and r24, r24
2e80: 09 f4 brne .+2 ; 0x2e84 <flash_led+0x6>
uint32_t ll;
uint8_t ii;
if (count == 0) {
2e82: 83 e0 ldi r24, 0x03 ; 3
2e84: 90 e0 ldi r25, 0x00 ; 0
2e86: 03 c0 rjmp .+6 ; 0x2e8e <flash_led+0x10>
count = 3;
}
for (ii = 0; ii < count; ++ii) {
LED_PORT &= ~_BV(LED);
2e88: c2 98 cbi 0x18, 2 ; 24
for(ll = 0; ll < (F_CPU / 5); ++ll);
LED_PORT |= _BV(LED);
2e8a: c2 9a sbi 0x18, 2 ; 24
2e8c: 9f 5f subi r25, 0xFF ; 255
2e8e: 98 17 cp r25, r24
2e90: d9 f7 brne .-10 ; 0x2e88 <flash_led+0xa>
2e92: 08 95 ret
00002e94 <get_message_body>:
for(ll = 0; ll < (2 * F_CPU); ++ll);
}
}
void get_message(void)
{
rx_ptr=0;
rx_buf[rx_ptr]=getch(); //get MESSAGE_START
rx_chm^=rx_buf[rx_ptr];
rx_ptr++;
//////////////////LED_PORT &= ~_BV(LED); //turn led on
rx_buf[rx_ptr]=getch(); //get SEQUENCE_NUMBER
rx_chm^=rx_buf[rx_ptr];
rx_ptr++;
rx_buf[rx_ptr]=getch(); //get MESSAGE_SIZE[1]
rx_chm^=rx_buf[rx_ptr];
rx_ptr++;
rx_buf[rx_ptr]=getch(); //get MESSAGE_SIZE[0]
rx_chm^=rx_buf[rx_ptr];
rx_ptr++;
rx_buf[rx_ptr]=getch(); //get TOKEN
rx_chm^=rx_buf[rx_ptr];
rx_ptr++;
get_message_body(); //get message body
rx_buf[rx_ptr]=getch(); //get CHECKSUM
rx_chm^=rx_buf[rx_ptr];
if(rx_chm==0) //message recived Ok!
{
rx_chm=0;
rx_ptr=0;
//go to start
}
////////////////////////////LED_PORT |= _BV(LED); //turn led off
}
void get_message_body(void)
{
2e94: 80 91 72 00 lds r24, 0x0072
2e98: 99 27 eor r25, r25
2e9a: 58 2f mov r21, r24
2e9c: 44 27 eor r20, r20
2e9e: 80 91 73 00 lds r24, 0x0073
2ea2: 48 0f add r20, r24
2ea4: 51 1d adc r21, r1
2ea6: 20 91 62 00 lds r18, 0x0062
2eaa: 30 91 63 00 lds r19, 0x0063
2eae: e0 91 66 00 lds r30, 0x0066
2eb2: d9 01 movw r26, r18
2eb4: a0 59 subi r26, 0x90 ; 144
2eb6: bf 4f sbci r27, 0xFF ; 255
2eb8: 60 e0 ldi r22, 0x00 ; 0
2eba: 70 e0 ldi r23, 0x00 ; 0
2ebc: 0a c0 rjmp .+20 ; 0x2ed2 <get_message_body+0x3e>
2ebe: 5f 9b sbis 0x0b, 7 ; 11
2ec0: fe cf rjmp .-4 ; 0x2ebe <get_message_body+0x2a>
2ec2: 8c b1 in r24, 0x0c ; 12
int j,k;
j=rx_buf[2]*256+rx_buf[3]; //calculate message size
for(k=0;k<j;k++)
{
rx_buf[rx_ptr]=getch();
2ec4: 99 27 eor r25, r25
2ec6: 8d 93 st X+, r24
rx_chm^=rx_buf[rx_ptr];
2ec8: e8 27 eor r30, r24
2eca: 6f 5f subi r22, 0xFF ; 255
2ecc: 7f 4f sbci r23, 0xFF ; 255
2ece: 2f 5f subi r18, 0xFF ; 255
2ed0: 3f 4f sbci r19, 0xFF ; 255
2ed2: 64 17 cp r22, r20
2ed4: 75 07 cpc r23, r21
2ed6: 9c f3 brlt .-26 ; 0x2ebe <get_message_body+0x2a>
2ed8: 30 93 63 00 sts 0x0063, r19
2edc: 20 93 62 00 sts 0x0062, r18
2ee0: e0 93 66 00 sts 0x0066, r30
2ee4: 08 95 ret
00002ee6 <get_message>:
2ee6: 5f 9b sbis 0x0b, 7 ; 11
2ee8: fe cf rjmp .-4 ; 0x2ee6 <get_message>
2eea: 8c b1 in r24, 0x0c ; 12
2eec: 99 27 eor r25, r25
2eee: 68 2f mov r22, r24
2ef0: 80 93 70 00 sts 0x0070, r24
2ef4: 20 91 66 00 lds r18, 0x0066
2ef8: 5f 9b sbis 0x0b, 7 ; 11
2efa: fe cf rjmp .-4 ; 0x2ef8 <get_message+0x12>
2efc: 8c b1 in r24, 0x0c ; 12
2efe: 99 27 eor r25, r25
2f00: 58 2f mov r21, r24
2f02: 80 93 71 00 sts 0x0071, r24
2f06: 5f 9b sbis 0x0b, 7 ; 11
2f08: fe cf rjmp .-4 ; 0x2f06 <get_message+0x20>
2f0a: 8c b1 in r24, 0x0c ; 12
2f0c: 99 27 eor r25, r25
2f0e: 38 2f mov r19, r24
2f10: 80 93 72 00 sts 0x0072, r24
2f14: 5f 9b sbis 0x0b, 7 ; 11
2f16: fe cf rjmp .-4 ; 0x2f14 <get_message+0x2e>
2f18: 8c b1 in r24, 0x0c ; 12
2f1a: 99 27 eor r25, r25
2f1c: 48 2f mov r20, r24
2f1e: 80 93 73 00 sts 0x0073, r24
2f22: 5f 9b sbis 0x0b, 7 ; 11
2f24: fe cf rjmp .-4 ; 0x2f22 <get_message+0x3c>
2f26: 8c b1 in r24, 0x0c ; 12
2f28: 99 27 eor r25, r25
2f2a: 80 93 74 00 sts 0x0074, r24
2f2e: 35 27 eor r19, r21
2f30: 38 27 eor r19, r24
2f32: 26 27 eor r18, r22
2f34: 24 27 eor r18, r20
2f36: 23 27 eor r18, r19
2f38: 20 93 66 00 sts 0x0066, r18
2f3c: 85 e0 ldi r24, 0x05 ; 5
2f3e: 90 e0 ldi r25, 0x00 ; 0
2f40: 90 93 63 00 sts 0x0063, r25
2f44: 80 93 62 00 sts 0x0062, r24
2f48: 0e 94 4a 17 call 0x2e94 ; 0x2e94 <get_message_body>
2f4c: e0 91 62 00 lds r30, 0x0062
2f50: f0 91 63 00 lds r31, 0x0063
2f54: 5f 9b sbis 0x0b, 7 ; 11
2f56: fe cf rjmp .-4 ; 0x2f54 <get_message+0x6e>
2f58: 8c b1 in r24, 0x0c ; 12
2f5a: 99 27 eor r25, r25
2f5c: e0 59 subi r30, 0x90 ; 144
2f5e: ff 4f sbci r31, 0xFF ; 255
2f60: 80 83 st Z, r24
2f62: 20 91 66 00 lds r18, 0x0066
2f66: 28 27 eor r18, r24
2f68: 20 93 66 00 sts 0x0066, r18
2f6c: 22 23 and r18, r18
2f6e: 31 f4 brne .+12 ; 0x2f7c <get_message+0x96>
2f70: 10 92 66 00 sts 0x0066, r1
2f74: 10 92 63 00 sts 0x0063, r1
2f78: 10 92 62 00 sts 0x0062, r1
2f7c: 08 95 ret
00002f7e <sendResponse>:
rx_ptr++;
}
}
void sendResponse(void)
{
2f7e: 10 92 67 00 sts 0x0067, r1
int j,k;
tx_chm=0;
tx_buf[0]=MESSAGE_START; //MESSAGE_START
2f82: 8b e1 ldi r24, 0x1B ; 27
2f84: 80 93 83 01 sts 0x0183, r24
tx_buf[1]=rx_buf[1]; //SEQUENCE_NUMBER
2f88: 80 91 71 00 lds r24, 0x0071
2f8c: 80 93 84 01 sts 0x0184, r24
tx_buf[4]=TOKEN; //token
2f90: 8e e0 ldi r24, 0x0E ; 14
2f92: 80 93 87 01 sts 0x0187, r24
2f96: 60 e0 ldi r22, 0x00 ; 0
2f98: e3 e8 ldi r30, 0x83 ; 131
2f9a: f1 e0 ldi r31, 0x01 ; 1
for(j=0;j<5;j++)
{
tx_chm^=tx_buf[j];
2f9c: 80 81 ld r24, Z
2f9e: 68 27 eor r22, r24
2fa0: 5d 9b sbis 0x0b, 5 ; 11
2fa2: fe cf rjmp .-4 ; 0x2fa0 <sendResponse+0x22>
2fa4: 8c b9 out 0x0c, r24 ; 12
2fa6: 31 96 adiw r30, 0x01 ; 1
2fa8: 81 e0 ldi r24, 0x01 ; 1
2faa: e8 38 cpi r30, 0x88 ; 136
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -