📄 ide.lst
字号:
124:IDE.c **** cmd[4] = (SecIndex>>0);
308 .LM25:
309 0108 0D83 std Y+5,r16
125:IDE.c ****
126:IDE.c **** if (MMC_SendCMD(cmd) != 0X00) /* 发送CMD17 */
311 .LM26:
312 010a CE01 movw r24,r28
313 010c 0196 adiw r24,1
314 010e 0E94 0000 call _Z11MMC_SendCMDPh
315 0112 8823 tst r24
316 0114 21F0 breq .L16
127:IDE.c **** {
128:IDE.c **** return FALSE; /* 读取失败 */
318 .LM27:
319 0116 80E0 ldi r24,lo8(0)
320 0118 90E0 ldi r25,hi8(0)
321 011a 1AC0 rjmp .L14
322 .L18:
129:IDE.c **** }
130:IDE.c ****
131:IDE.c **** while (SPI_SendData(0XFF) != 0XFE)
132:IDE.c **** {
133:IDE.c **** __asm__ __volatile__("nop"); /* 等待数据接受开始,受到0XFE表示开始 */
324 .LM28:
325 /* #APP */
326 011c 0000 nop
327 /* #NOAPP */
328 .L16:
329 011e 8FEF ldi r24,lo8(-1)
330 0120 0E94 0000 call _Z12SPI_SendDatah
331 0124 8E3F cpi r24,lo8(-2)
332 0126 D1F7 brne .L18
333 0128 0FEF ldi r16,lo8(511)
334 012a 11E0 ldi r17,hi8(511)
335 .L22:
134:IDE.c **** }
135:IDE.c ****
136:IDE.c **** for (i = 0; i < 512; i++) /* 读取数据 */
137:IDE.c **** {
138:IDE.c **** *Buf++ = SPI_SendData(0XFF);
337 .LM29:
338 012c 8FEF ldi r24,lo8(-1)
339 012e 0E94 0000 call _Z12SPI_SendDatah
340 0132 F701 movw r30,r14
341 0134 8193 st Z+,r24
342 0136 7F01 movw r14,r30
344 .LM30:
345 0138 0150 subi r16,lo8(-(-1))
346 013a 1040 sbci r17,hi8(-(-1))
347 013c 17FF sbrs r17,7
348 013e F6CF rjmp .L22
139:IDE.c **** }
140:IDE.c **** SPI_SendData(0XFF); /* 取走CRC字节 */
350 .LM31:
351 0140 8FEF ldi r24,lo8(-1)
352 0142 0E94 0000 call _Z12SPI_SendDatah
141:IDE.c ****
142:IDE.c **** SPI_SendData(0XFF);
354 .LM32:
355 0146 8FEF ldi r24,lo8(-1)
356 0148 0E94 0000 call _Z12SPI_SendDatah
143:IDE.c ****
144:IDE.c **** return TRUE;
358 .LM33:
359 014c 81E0 ldi r24,lo8(1)
360 014e 90E0 ldi r25,hi8(1)
361 .L14:
362 .LBE5:
363 .LBE4:
364 /* epilogue: frame size=6 */
365 0150 2696 adiw r28,6
366 0152 0FB6 in __tmp_reg__,__SREG__
367 0154 F894 cli
368 0156 DEBF out __SP_H__,r29
369 0158 0FBE out __SREG__,__tmp_reg__
370 015a CDBF out __SP_L__,r28
371 015c DF91 pop r29
372 015e CF91 pop r28
373 0160 1F91 pop r17
374 0162 0F91 pop r16
375 0164 FF90 pop r15
376 0166 EF90 pop r14
377 0168 0895 ret
378 /* epilogue end (size=13) */
379 /* function uint8 ReadIDESector(uint32, uint8*) size 99 (72) */
388 .global _Z14WriteIDESectormPh
390 _Z14WriteIDESectormPh:
145:IDE.c **** #endif
146:IDE.c ****
147:IDE.c **** return FALSE;
148:IDE.c **** }
149:IDE.c ****
150:IDE.c **** /*
151:IDE.c **** ;**************************************************************************************************
152:IDE.c **** ;* 函数名称 : WriteIDESector
153:IDE.c **** ;* 描 述 : 写IDE指定扇区
154:IDE.c **** ;* 输 入 : SecIndex: 扇区号; Buf: 要写入的内容
155:IDE.c **** ;*
156:IDE.c **** ;* 输 出 : TRUE OR FALSE
157:IDE.c **** ;**************************************************************************************************
158:IDE.c **** ;*/
159:IDE.c **** uint8 WriteIDESector(uint32 SecIndex, uint8 *Buf)
160:IDE.c **** {
392 .LM34:
393 /* prologue: frame size=6 */
394 016a EF92 push r14
395 016c FF92 push r15
396 016e 0F93 push r16
397 0170 1F93 push r17
398 0172 CF93 push r28
399 0174 DF93 push r29
400 0176 CDB7 in r28,__SP_L__
401 0178 DEB7 in r29,__SP_H__
402 017a 2697 sbiw r28,6
403 017c 0FB6 in __tmp_reg__,__SREG__
404 017e F894 cli
405 0180 DEBF out __SP_H__,r29
406 0182 0FBE out __SREG__,__tmp_reg__
407 0184 CDBF out __SP_L__,r28
408 /* prologue end (size=14) */
409 0186 8B01 movw r16,r22
410 0188 9C01 movw r18,r24
411 018a 7A01 movw r14,r20
412 .LBB6:
413 .LBB7:
161:IDE.c **** #ifdef WINDOWS
162:IDE.c **** FILE *fp = fopen(DISK_MOUNT_FILE, "rb+");
163:IDE.c ****
164:IDE.c **** if (fp != NULL)
165:IDE.c **** {
166:IDE.c **** fseek(fp, (SecIndex*512), SEEK_SET);
167:IDE.c **** fwrite(Buf, 1, 512, fp);
168:IDE.c **** fclose(fp);
169:IDE.c **** return TRUE;
170:IDE.c **** }
171:IDE.c **** #endif
172:IDE.c ****
173:IDE.c **** #ifdef AVR_MMC
174:IDE.c **** uint16 i;
175:IDE.c **** uint8 temp;
176:IDE.c **** uint8 cmd[] = {0x40, 0x00, 0x00, 0x00, 0x00, 0xff};
415 .LM35:
416 018c 86E0 ldi r24,lo8(6)
417 018e DE01 movw r26,r28
418 0190 1196 adiw r26,1
419 0192 E0E0 ldi r30,lo8(.LC1)
420 0194 F0E0 ldi r31,hi8(.LC1)
421 0196 0190 ld __tmp_reg__,Z+
422 0198 0D92 st X+,__tmp_reg__
423 019a 8A95 dec r24
424 019c E1F7 brne .-8
177:IDE.c ****
178:IDE.c **** cmd[0] = 0x40 + 24; /* WRITE SINGLE BLOCK */
426 .LM36:
427 019e 88E5 ldi r24,lo8(88)
428 01a0 8983 std Y+1,r24
179:IDE.c ****
180:IDE.c **** SecIndex = SecIndex << 9; /* address*512,取512的整数倍 */
430 .LM37:
431 01a2 A9E0 ldi r26,9
432 01a4 000F 1: lsl r16
433 01a6 111F rol r17
434 01a8 221F rol r18
435 01aa 331F rol r19
436 01ac AA95 dec r26
437 01ae D1F7 brne 1b
181:IDE.c ****
182:IDE.c **** cmd[1] = (SecIndex>>24);
439 .LM38:
440 01b0 832F mov r24,r19
441 01b2 9927 clr r25
442 01b4 AA27 clr r26
443 01b6 BB27 clr r27
444 01b8 8A83 std Y+2,r24
183:IDE.c **** cmd[2] = (SecIndex>>16);
446 .LM39:
447 01ba C901 movw r24,r18
448 01bc AA27 clr r26
449 01be BB27 clr r27
450 01c0 8B83 std Y+3,r24
184:IDE.c **** cmd[3] = (SecIndex>>8);
452 .LM40:
453 01c2 BB27 clr r27
454 01c4 A32F mov r26,r19
455 01c6 922F mov r25,r18
456 01c8 812F mov r24,r17
457 01ca 8C83 std Y+4,r24
185:IDE.c **** cmd[4] = (SecIndex>>0);
459 .LM41:
460 01cc 0D83 std Y+5,r16
186:IDE.c ****
187:IDE.c **** if (MMC_SendCMD(cmd) != 0X00) /* 发送CMD24 */
462 .LM42:
463 01ce CE01 movw r24,r28
464 01d0 0196 adiw r24,1
465 01d2 0E94 0000 call _Z11MMC_SendCMDPh
466 01d6 8823 tst r24
467 01d8 09F5 brne .L37
188:IDE.c **** {
189:IDE.c **** return FALSE; /* 写入失败 */
190:IDE.c **** }
191:IDE.c ****
192:IDE.c **** SPI_SendData(0XFF); /* 发送填冲字节 */
469 .LM43:
470 01da 8FEF ldi r24,lo8(-1)
471 01dc 0E94 0000 call _Z12SPI_SendDatah
193:IDE.c **** SPI_SendData(0XFE); /* 发送数据开始标志0XFE */
473 .LM44:
474 01e0 8EEF ldi r24,lo8(-2)
475 01e2 0E94 0000 call _Z12SPI_SendDatah
476 01e6 8701 movw r16,r14
477 01e8 6FEF ldi r22,lo8(511)
478 01ea E62E mov r14,r22
479 01ec 61E0 ldi r22,hi8(511)
480 01ee F62E mov r15,r22
481 01f0 E00E add r14,r16
482 01f2 F11E adc r15,r17
483 .L30:
194:IDE.c ****
195:IDE.c **** for(i = 0; i < 512; i++) /* 写入数据 */
196:IDE.c **** {
197:IDE.c **** SPI_SendData(Buf[i]);
485 .LM45:
486 01f4 F801 movw r30,r16
487 01f6 8191 ld r24,Z+
488 01f8 8F01 movw r16,r30
489 01fa 0E94 0000 call _Z12SPI_SendDatah
491 .LM46:
492 01fe E016 cp r14,r16
493 0200 F106 cpc r15,r17
494 0202 C0F7 brsh .L30
198:IDE.c **** }
199:IDE.c ****
200:IDE.c **** SPI_SendData(0XFF); /* 写入CRC字节 */
496 .LM47:
497 0204 8FEF ldi r24,lo8(-1)
498 0206 0E94 0000 call _Z12SPI_SendDatah
201:IDE.c **** SPI_SendData(0XFF);
500 .LM48:
501 020a 8FEF ldi r24,lo8(-1)
502 020c 0E94 0000 call _Z12SPI_SendDatah
202:IDE.c ****
203:IDE.c **** temp = SPI_SendData(0XFF); /* 读取XXX0 0101字节 */
504 .LM49:
505 0210 8FEF ldi r24,lo8(-1)
506 0212 0E94 0000 call _Z12SPI_SendDatah
204:IDE.c ****
205:IDE.c **** temp = temp & 0X1F;
508 .LM50:
509 0216 8F71 andi r24,lo8(31)
206:IDE.c ****
207:IDE.c **** if (temp != 0X05)
511 .LM51:
512 0218 8530 cpi r24,lo8(5)
513 021a 21F0 breq .L32
514 .L37:
208:IDE.c **** {
209:IDE.c **** return FALSE; /* 写入失败 */
516 .LM52:
517 021c 80E0 ldi r24,lo8(0)
518 021e 90E0 ldi r25,hi8(0)
519 0220 08C0 rjmp .L25
520 .L34:
210:IDE.c **** }
211:IDE.c **** while (SPI_SendData(0XFF) == 0X00)
212:IDE.c **** {
213:IDE.c **** __asm__ __volatile__("nop"); /* BUSY等待 */
522 .LM53:
523 /* #APP */
524 0222 0000 nop
525 /* #NOAPP */
526 .L32:
527 0224 8FEF ldi r24,lo8(-1)
528 0226 0E94 0000 call _Z12SPI_SendDatah
529 022a 8823 tst r24
530 022c D1F3 breq .L34
214:IDE.c **** }
215:IDE.c **** return TRUE;
532 .LM54:
533 022e 81E0 ldi r24,lo8(1)
534 0230 90E0 ldi r25,hi8(1)
535 .L25:
536 .LBE7:
537 .LBE6:
538 /* epilogue: frame size=6 */
539 0232 2696 adiw r28,6
540 0234 0FB6 in __tmp_reg__,__SREG__
541 0236 F894 cli
542 0238 DEBF out __SP_H__,r29
543 023a 0FBE out __SREG__,__tmp_reg__
544 023c CDBF out __SP_L__,r28
545 023e DF91 pop r29
546 0240 CF91 pop r28
547 0242 1F91 pop r17
548 0244 0F91 pop r16
549 0246 FF90 pop r15
550 0248 EF90 pop r14
551 024a 0895 ret
552 /* epilogue end (size=13) */
553 /* function uint8 WriteIDESector(uint32, uint8*) size 114 (87) */
559 .text
561 Letext:
562 /* File "IDE.c": code 296 = 0x0128 ( 217), prologues 41, epilogues 38 */
DEFINED SYMBOLS
*ABS*:00000000 IDE.c
*ABS*:0000003f __SREG__
*ABS*:0000003e __SP_H__
*ABS*:0000003d __SP_L__
*ABS*:00000000 __tmp_reg__
*ABS*:00000001 __zero_reg__
C:\Users\ADMINI~1\AppData\Local\Temp/ccszaaaa.s:92 .text:00000000 _Z8Init_IDEv
C:\Users\ADMINI~1\AppData\Local\Temp/ccszaaaa.s:239 .text:000000a6 _Z13ReadIDESectormPh
C:\Users\ADMINI~1\AppData\Local\Temp/ccszaaaa.s:390 .text:0000016a _Z14WriteIDESectormPh
C:\Users\ADMINI~1\AppData\Local\Temp/ccszaaaa.s:561 .text:0000024c Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
_Z8SPI_Initv
_Z7DelayMsm
_Z12SPI_SendDatah
_Z11MMC_SendCMDPh
_Z9SPI_HiSPDv
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -