📄 main.lss
字号:
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 000000aa 00800100 00002848 000028dc 2**0
CONTENTS, ALLOC, LOAD, DATA
1 .text 00002848 00000000 00000000 00000094 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .bss 0000003d 008001aa 008001aa 00002986 2**0
ALLOC
3 .stab 00000414 00000000 00000000 00002988 2**2
CONTENTS, READONLY, DEBUGGING
4 .stabstr 00000071 00000000 00000000 00002d9c 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_aranges 000000c0 00000000 00000000 00002e0d 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_pubnames 00000805 00000000 00000000 00002ecd 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_info 00002563 00000000 00000000 000036d2 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_abbrev 00000950 00000000 00000000 00005c35 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_line 00002a54 00000000 00000000 00006585 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_frame 000005f0 00000000 00000000 00008fdc 2**2
CONTENTS, READONLY, DEBUGGING
11 .debug_str 00000ac1 00000000 00000000 000095cc 2**0
CONTENTS, READONLY, DEBUGGING
12 .debug_loc 00000d19 00000000 00000000 0000a08d 2**0
CONTENTS, READONLY, DEBUGGING
13 .debug_ranges 00000018 00000000 00000000 0000ada6 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 4c 00 jmp 0x98 ; 0x98 <__ctors_end>
4: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
8: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
c: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
10: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
14: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
18: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
1c: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
20: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
24: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
28: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
2c: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
30: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
34: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
38: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
3c: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
40: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
44: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
48: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
4c: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
50: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
54: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
58: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
5c: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
60: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
64: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
68: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
6c: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
70: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
74: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
78: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
7c: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
80: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
84: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
88: 0c 94 6b 00 jmp 0xd6 ; 0xd6 <__bad_interrupt>
0000008c <edges.1628>:
8c: 23 23 23 23 3d 23 2b 2b 2b 2b 2d 7c ####=#++++-|
00000098 <__ctors_end>:
98: 11 24 eor r1, r1
9a: 1f be out 0x3f, r1 ; 63
9c: cf ef ldi r28, 0xFF ; 255
9e: d0 e1 ldi r29, 0x10 ; 16
a0: de bf out 0x3e, r29 ; 62
a2: cd bf out 0x3d, r28 ; 61
000000a4 <__do_copy_data>:
a4: 11 e0 ldi r17, 0x01 ; 1
a6: a0 e0 ldi r26, 0x00 ; 0
a8: b1 e0 ldi r27, 0x01 ; 1
aa: e8 e4 ldi r30, 0x48 ; 72
ac: f8 e2 ldi r31, 0x28 ; 40
ae: 00 e0 ldi r16, 0x00 ; 0
b0: 0b bf out 0x3b, r16 ; 59
b2: 02 c0 rjmp .+4 ; 0xb8 <__do_copy_data+0x14>
b4: 07 90 elpm r0, Z+
b6: 0d 92 st X+, r0
b8: aa 3a cpi r26, 0xAA ; 170
ba: b1 07 cpc r27, r17
bc: d9 f7 brne .-10 ; 0xb4 <__do_copy_data+0x10>
000000be <__do_clear_bss>:
be: 11 e0 ldi r17, 0x01 ; 1
c0: aa ea ldi r26, 0xAA ; 170
c2: b1 e0 ldi r27, 0x01 ; 1
c4: 01 c0 rjmp .+2 ; 0xc8 <.do_clear_bss_start>
000000c6 <.do_clear_bss_loop>:
c6: 1d 92 st X+, r1
000000c8 <.do_clear_bss_start>:
c8: a7 3e cpi r26, 0xE7 ; 231
ca: b1 07 cpc r27, r17
cc: e1 f7 brne .-8 ; 0xc6 <.do_clear_bss_loop>
ce: 0e 94 6d 00 call 0xda ; 0xda <main>
d2: 0c 94 23 14 jmp 0x2846 ; 0x2846 <_exit>
000000d6 <__bad_interrupt>:
d6: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
000000da <main>:
extern unsigned char DISK_CAPACITY[8];
int main()
{
da: ef 92 push r14
dc: ff 92 push r15
de: 0f 93 push r16
e0: 1f 93 push r17
e2: cf 93 push r28
e4: df 93 push r29
e6: cd b7 in r28, 0x3d ; 61
e8: de b7 in r29, 0x3e ; 62
ea: 24 97 sbiw r28, 0x04 ; 4
ec: 0f b6 in r0, 0x3f ; 63
ee: f8 94 cli
f0: de bf out 0x3e, r29 ; 62
f2: 0f be out 0x3f, r0 ; 63
f4: cd bf out 0x3d, r28 ; 61
Term_Initialise();
f6: 0e 94 3c 0e call 0x1c78 ; 0x1c78 <Term_Initialise>
LED_DDR |= 1<<LED_BIT;
fa: 13 9a sbi 0x02, 3 ; 2
LED_OFF();
fc: 1b 9a sbi 0x03, 3 ; 3
U8 i;
uint32_t Cap = 0;
fe: 19 82 std Y+1, r1 ; 0x01
100: 1a 82 std Y+2, r1 ; 0x02
102: 1b 82 std Y+3, r1 ; 0x03
104: 1c 82 std Y+4, r1 ; 0x04
//uint32_t Cap = 62128128;
U8 retry = 0;
USB_Delay(0xffff);
106: 8f ef ldi r24, 0xFF ; 255
108: 9f ef ldi r25, 0xFF ; 255
10a: 0e 94 19 06 call 0xc32 ; 0xc32 <USB_Delay>
D12_PORT_INI();
10e: 0e 94 fe 00 call 0x1fc ; 0x1fc <D12_PORT_INI>
MMC_SD_Init();
112: 0e 94 7a 0a call 0x14f4 ; 0x14f4 <MMC_SD_Init>
LED_OFF();
116: 1b 9a sbi 0x03, 3 ; 3
118: 10 e0 ldi r17, 0x00 ; 0
11a: 04 c0 rjmp .+8 ; 0x124 <main+0x4a>
while(MMC_SD_Reset())// retry 100 times
{
retry++;
11c: 1f 5f subi r17, 0xFF ; 255
if(retry>100)break;
11e: 15 36 cpi r17, 0x65 ; 101
120: 09 f4 brne .+2 ; 0x124 <main+0x4a>
122: 6a c0 rjmp .+212 ; 0x1f8 <main+0x11e>
124: 0e 94 3a 0c call 0x1874 ; 0x1874 <MMC_SD_Reset>
128: 88 23 and r24, r24
12a: c1 f7 brne .-16 ; 0x11c <main+0x42>
}
if(retry<100 )//if success
12c: 14 36 cpi r17, 0x64 ; 100
12e: 08 f0 brcs .+2 ; 0x132 <main+0x58>
130: 63 c0 rjmp .+198 ; 0x1f8 <main+0x11e>
{
//LED_ON();
//Read SD Card Capacity
Cap = (MMC_SD_ReadCapacity()/512) - 1 ;
132: 0e 94 d3 0a call 0x15a6 ; 0x15a6 <MMC_SD_ReadCapacity>
136: 29 e0 ldi r18, 0x09 ; 9
138: 96 95 lsr r25
13a: 87 95 ror r24
13c: 77 95 ror r23
13e: 67 95 ror r22
140: 2a 95 dec r18
142: d1 f7 brne .-12 ; 0x138 <main+0x5e>
144: 61 50 subi r22, 0x01 ; 1
146: 70 40 sbci r23, 0x00 ; 0
148: 80 40 sbci r24, 0x00 ; 0
14a: 90 40 sbci r25, 0x00 ; 0
14c: 69 83 std Y+1, r22 ; 0x01
14e: 7a 83 std Y+2, r23 ; 0x02
150: 8b 83 std Y+3, r24 ; 0x03
152: 9c 83 std Y+4, r25 ; 0x04
//Cap = (MMC_SD_ReadCapacity()/512)-1;//Capacity is SD card total capacity not sector . so need -1
DISK_CAPACITY[0] = ((U8 *)(&Cap))[3];//to U8 format
154: 2c 81 ldd r18, Y+4 ; 0x04
156: 20 93 28 01 sts 0x0128, r18
DISK_CAPACITY[1] = ((U8 *)(&Cap))[2];
15a: 2b 81 ldd r18, Y+3 ; 0x03
15c: 20 93 29 01 sts 0x0129, r18
DISK_CAPACITY[2] = ((U8 *)(&Cap))[1];
160: 2a 81 ldd r18, Y+2 ; 0x02
162: 20 93 2a 01 sts 0x012A, r18
DISK_CAPACITY[3] = ((U8 *)(&Cap))[0];
166: 29 81 ldd r18, Y+1 ; 0x01
168: 20 93 2b 01 sts 0x012B, r18
//if(Cap>0)
//LED_ON();
printf("%ld",Cap);
16c: 9f 93 push r25
16e: 8f 93 push r24
170: 7f 93 push r23
172: 6f 93 push r22
174: 80 e0 ldi r24, 0x00 ; 0
176: 91 e0 ldi r25, 0x01 ; 1
178: 9f 93 push r25
17a: 8f 93 push r24
17c: 0e 94 8f 0f call 0x1f1e ; 0x1f1e <printf>
if(D12_Read_Chip_ID()==0x1210)
180: 0e 94 22 02 call 0x444 ; 0x444 <D12_Read_Chip_ID>
184: 2d b7 in r18, 0x3d ; 61
186: 3e b7 in r19, 0x3e ; 62
188: 2a 5f subi r18, 0xFA ; 250
18a: 3f 4f sbci r19, 0xFF ; 255
18c: 0f b6 in r0, 0x3f ; 63
18e: f8 94 cli
190: 3e bf out 0x3e, r19 ; 62
192: 0f be out 0x3f, r0 ; 63
194: 2d bf out 0x3d, r18 ; 61
196: 80 51 subi r24, 0x10 ; 16
198: 92 41 sbci r25, 0x12 ; 18
19a: 71 f5 brne .+92 ; 0x1f8 <main+0x11e>
{
//Term_PutS("Find Pdiusbd12, chip id = 0x1210");
USB_Init();
19c: 0e 94 67 08 call 0x10ce ; 0x10ce <USB_Init>
1a0: 26 c0 rjmp .+76 ; 0x1ee <main+0x114>
while(1)
{
while(!D12_INT) //interrupt
{
PORTE |= 0x02;
1a2: 19 9a sbi 0x03, 1 ; 3
i = D12_Read_Interrupt_Register()&0xff;
1a4: 0e 94 57 02 call 0x4ae ; 0x4ae <D12_Read_Interrupt_Register>
1a8: 7c 01 movw r14, r24
UsbIntProc(i);
1aa: 08 2f mov r16, r24
1ac: 11 27 eor r17, r17
1ae: 00 ff sbrs r16, 0
1b0: 02 c0 rjmp .+4 ; 0x1b6 <main+0xdc>
1b2: 0e 94 42 06 call 0xc84 ; 0xc84 <D12Ep0IntProc>
1b6: 01 ff sbrs r16, 1
1b8: 02 c0 rjmp .+4 ; 0x1be <main+0xe4>
1ba: 0e 94 38 06 call 0xc70 ; 0xc70 <D12Ep1IntProc>
1be: 02 ff sbrs r16, 2
1c0: 02 c0 rjmp .+4 ; 0x1c6 <main+0xec>
1c2: 0e 94 33 06 call 0xc66 ; 0xc66 <D12Ep2IntProc>
1c6: 03 ff sbrs r16, 3
1c8: 02 c0 rjmp .+4 ; 0x1ce <main+0xf4>
1ca: 0e 94 2e 06 call 0xc5c ; 0xc5c <D12Ep3IntProc>
1ce: 04 ff sbrs r16, 4
1d0: 02 c0 rjmp .+4 ; 0x1d6 <main+0xfc>
1d2: 0e 94 fe 07 call 0xffc ; 0xffc <D12Ep4IntProc>
1d6: 05 ff sbrs r16, 5
1d8: 02 c0 rjmp .+4 ; 0x1de <main+0x104>
1da: 0e 94 2a 06 call 0xc54 ; 0xc54 <D12Ep5IntProc>
1de: 06 ff sbrs r16, 6
1e0: 02 c0 rjmp .+4 ; 0x1e6 <main+0x10c>
1e2: 0e 94 22 06 call 0xc44 ; 0xc44 <D12BusRstProc>
1e6: e7 fe sbrs r14, 7
1e8: 02 c0 rjmp .+4 ; 0x1ee <main+0x114>
1ea: 0e 94 21 06 call 0xc42 ; 0xc42 <D12SuspChgProc>
1ee: 80 91 63 00 lds r24, 0x0063
1f2: 80 ff sbrs r24, 0
1f4: d6 cf rjmp .-84 ; 0x1a2 <main+0xc8>
1f6: fb cf rjmp .-10 ; 0x1ee <main+0x114>
1f8: ff cf rjmp .-2 ; 0x1f8 <main+0x11e>
000001fa <D12_Delay>:
#define NOP2() asm("nop");asm("nop")
#define NOP1() asm("nop")
void D12_Delay(U8 n)
{
1fa: 08 95 ret
000001fc <D12_PORT_INI>:
while(n--);
}
void D12_PORT_INI()
{
1fc: a5 e6 ldi r26, 0x65 ; 101
1fe: b0 e0 ldi r27, 0x00 ; 0
200: 8c 91 ld r24, X
202: 84 60 ori r24, 0x04 ; 4
204: 8c 93 st X, r24
D12_CS_PORT |= 1<<D12_CS_BIT;
D12_CS_DDR |= 1<<D12_CS_BIT;
206: e4 e6 ldi r30, 0x64 ; 100
208: f0 e0 ldi r31, 0x00 ; 0
20a: 80 81 ld r24, Z
20c: 84 60 ori r24, 0x04 ; 4
20e: 80 83 st Z, r24
D12_INT_PORT |= 1<<D12_INT_BIT;
210: 8c 91 ld r24, X
212: 81 60 ori r24, 0x01 ; 1
214: 8c 93 st X, r24
D12_INT_DDR &= ~(1<<D12_INT_BIT);
216: 80 81 ld r24, Z
218: 8e 7f andi r24, 0xFE ; 254
21a: 80 83 st Z, r24
D12_WR_PORT |= 1<<D12_WR_BIT;
21c: 8c 91 ld r24, X
21e: 88 60 ori r24, 0x08 ; 8
220: 8c 93 st X, r24
D12_WR_DDR |= 1<<D12_WR_BIT;
222: 80 81 ld r24, Z
224: 88 60 ori r24, 0x08 ; 8
226: 80 83 st Z, r24
D12_RD_PORT |= 1<<D12_RD_BIT;
228: 8c 91 ld r24, X
22a: 80 61 ori r24, 0x10 ; 16
22c: 8c 93 st X, r24
D12_RD_DDR |= 1<<D12_RD_BIT;
22e: 80 81 ld r24, Z
230: 80 61 ori r24, 0x10 ; 16
232: 80 83 st Z, r24
D12_A0_PORT |= 1<<D12_A0_BIT;
234: 8c 91 ld r24, X
236: 82 60 ori r24, 0x02 ; 2
238: 8c 93 st X, r24
D12_A0_DDR |= 1<<D12_A0_BIT;
23a: 80 81 ld r24, Z
23c: 82 60 ori r24, 0x02 ; 2
23e: 80 83 st Z, r24
240: 08 95 ret
00000242 <D12_Select_Endpoint>:
...
}
U8 D12_Select_Endpoint(U8 Endpoint)
{
U8 temp;
NOP4();
D12_OUTPUT_MODE();
24a: 9f ef ldi r25, 0xFF ; 255
24c: 9a bb out 0x1a, r25 ; 26
D12_OUTPUT = Endpoint;
24e: 8b bb out 0x1b, r24 ; 27
D12_CMD_WR_L();
250: e5 e6 ldi r30, 0x65 ; 101
252: f0 e0 ldi r31, 0x00 ; 0
254: 83 e1 ldi r24, 0x13 ; 19
256: 80 83 st Z, r24
D12_CMD_WR_H();
258: 8f e1 ldi r24, 0x1F ; 31
25a: 80 83 st Z, r24
...
NOP7();
268: 00 00 nop
D12_INPUT_MODE();
26a: 1a ba out 0x1a, r1 ; 26
D12_DAT_RD_L();
26c: 89 e0 ldi r24, 0x09 ; 9
26e: 80 83 st Z, r24
NOP3();
270: 00 00 nop
272: 00 00 nop
274: 00 00 nop
temp = D12_INPUT;
276: 89 b3 in r24, 0x19 ; 25
D12_DAT_RD_H();
278: 9d e1 ldi r25, 0x1D ; 29
27a: 90 83 st Z, r25
...
NOP4();
return temp;
}
284: 99 27 eor r25, r25
286: 08 95 ret
00000288 <D12_Set_Endpoint_Status>:
...
void D12_Set_Endpoint_Status(U8 Endpoint,U8 Status)
{
NOP4();
D12_OUTPUT_MODE();
290: 9f ef ldi r25, 0xFF ; 255
292: 9a bb out 0x1a, r25 ; 26
D12_OUTPUT = Endpoint+0x40;
294: 80 5c subi r24, 0xC0 ; 192
296: 8b bb out 0x1b, r24 ; 27
D12_CMD_WR_L();
298: e5 e6 ldi r30, 0x65 ; 101
29a: f0 e0 ldi r31, 0x00 ; 0
29c: 83 e1 ldi r24, 0x13 ; 19
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -