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

📄 mmc.lst

📁 MMC/SD on Olimex Sam7-EX256
💻 LST
📖 第 1 页 / 共 4 页
字号:
 581 0234 201C     		mov	r0, r4 582              		@ sp needed for prologue 583              	.LVL39: 584 0236 10BC     		pop	{r4} 585 0238 02BC     		pop	{r1} 586 023a 0847     		bx	r1 587              	.L94: 588              		.align	2 589              	.L93: 590 023c 00000000 		.word	mmc_buffer 591 0240 00020000 		.word	mmc_buffer+512 592              	.LFE9: 594              		.align	2 595              		.global	mmcWriteBlock 596              		.code 16 597              		.thumb_func 599              	mmcWriteBlock: 600              	.LFB10: 601              		.loc 1 259 0 602 0244 10B5     		push	{r4, lr} 603              	.LCFI8: 604              	.LVL40: 605              		.loc 1 259 0 606 0246 041C     		mov	r4, r0 607              		.loc 1 265 0 608 0248 8020     		mov	r0, #128 609              	.LVL41: 610 024a 8000     		lsl	r0, r0, #2 611 024c FFF7FEFF 		bl	mmcSetBlockLength 612 0250 0028     		cmp	r0, #0 613 0252 01D0     		beq	.L96 614 0254 0124     		mov	r4, #1 615              	.LVL42: 616 0256 20E0     		b	.L98 617              	.LVL43: 618              	.L96: 619              		.loc 1 270 0 620 0258 1820     		mov	r0, #24 621 025a 211C     		mov	r1, r4 622 025c FF22     		mov	r2, #255 623 025e FFF7FEFF 		bl	mmcSendCmd 624              		.loc 1 275 0 625 0262 0020     		mov	r0, #0 626 0264 FFF7FEFF 		bl	mmcGetXXResponse 627 0268 0028     		cmp	r0, #0 628 026a 15D1     		bne	.L106 629              		.loc 1 277 0 630 026c FF20     		mov	r0, #255 631 026e FFF7FEFF 		bl	spiSendByte 632              		.loc 1 279 0 633 0272 FE20     		mov	r0, #254 634 0274 FFF7FEFF 		bl	spiSendByte 635 0278 0B4C     		ldr	r4, .L107 636              	.LVL44: 637              	.L101: 638              		.loc 1 282 0 639 027a 2078     		ldrb	r0, [r4] 640 027c FFF7FEFF 		bl	spiSendByte 641              		.loc 1 259 0 642 0280 0A4B     		ldr	r3, .L107+4 643              		.loc 1 282 0 644 0282 0134     		add	r4, r4, #1 645              		.loc 1 281 0 646 0284 9C42     		cmp	r4, r3 647 0286 F8D1     		bne	.L101 648              		.loc 1 284 0 649 0288 FF20     		mov	r0, #255 650 028a FFF7FEFF 		bl	spiSendByte 651              		.loc 1 285 0 652 028e FF20     		mov	r0, #255 653 0290 FFF7FEFF 		bl	spiSendByte 654              		.loc 1 288 0 655 0294 FFF7FEFF 		bl	mmcCheckBusy 656              	.LVL45: 657              	.L106: 658 0298 0224     		mov	r4, #2 659              	.LVL46: 660              	.L98: 661              		.loc 1 306 0 662 029a FF20     		mov	r0, #255 663 029c FFF7FEFF 		bl	spiSendByte 664              		.loc 1 308 0 665 02a0 201C     		mov	r0, r4 666              		@ sp needed for prologue 667              	.LVL47: 668 02a2 10BC     		pop	{r4} 669 02a4 02BC     		pop	{r1} 670 02a6 0847     		bx	r1 671              	.L108: 672              		.align	2 673              	.L107: 674 02a8 00000000 		.word	mmc_buffer 675 02ac 00020000 		.word	mmc_buffer+512 676              	.LFE10: 678              		.align	2 679              		.global	spiWriteByte 680              		.code 16 681              		.thumb_func 683              	spiWriteByte: 684              	.LFB14: 409:mmc.c         **** 
 410:mmc.c         **** void spiWriteByte(const unsigned char data)
 411:mmc.c         **** {
 685              		.loc 1 411 0 686              	.LVL48: 687              		@ lr needed for prologue 412:mmc.c         ****   //while(SSIOST_bit.BUSY != 0);      // Wait until the character can be sent
 413:mmc.c         ****   //SSIOINT_bit.TXCMP = 1;            // clear interrupt register
 414:mmc.c         ****   //SSIOBUF = data;
 415:mmc.c         **** 
 416:mmc.c         ****   //while((s_pSpi->SPI_SR & AT91C_SPI_RDRF) == 1);    // Wait until the character can be sent
 417:mmc.c         ****   //s_pSpi->SPI_RDR = data;                           // Send the data
 418:mmc.c         **** }
 688              		.loc 1 418 0 689              		@ sp needed for prologue 690 02b0 7047     		bx	lr 691              	.LFE14: 693 02b2 0000     		.align	2 694              		.global	spiReadByte 695              		.code 16 696              		.thumb_func 698              	spiReadByte: 699              	.LFB15: 419:mmc.c         **** 
 420:mmc.c         **** unsigned char spiReadByte()
 421:mmc.c         **** {
 700              		.loc 1 421 0 701              	.LVL49: 422:mmc.c         ****   //unsigned char spib;
 423:mmc.c         ****   //while(SSIOINT_bit.RXCMP == 0);
 424:mmc.c         ****   //spib = SSIOBUF;                   // Get the data received
 425:mmc.c         ****   //SSIOINT_bit.RXCMP = 1;            //clear interrupt register
 426:mmc.c         ****   //return spib;
 427:mmc.c         ****   return 0;
 428:mmc.c         **** }
 702              		.loc 1 428 0 703 02b4 0020     		mov	r0, #0 704              		.loc 1 421 0 705              		@ lr needed for prologue 706              		.loc 1 428 0 707              		@ sp needed for prologue 708 02b6 7047     		bx	lr 709              	.LFE15: 711              		.align	2 712              		.global	mmcReadRegister 713              		.code 16 714              		.thumb_func 716              	mmcReadRegister: 717              	.LFB16: 429:mmc.c         **** 
 430:mmc.c         **** // Reading the contents of the CSD and CID registers in SPI mode is a simple
 431:mmc.c         **** // read-block transaction.
 432:mmc.c         **** 
 433:mmc.c         **** char mmcReadRegister (const char cmd_register, const unsigned char length)
 434:mmc.c         **** {
 718              		.loc 1 434 0 719 02b8 70B5     		push	{r4, r5, r6, lr} 720              	.LCFI9: 721              	.LVL50: 722              		.loc 1 434 0 723 02ba 0906     		lsl	r1, r1, #24 724              	.LVL51: 725 02bc 0006     		lsl	r0, r0, #24 726              	.LVL52: 727 02be 0E0E     		lsr	r6, r1, #24 728              	.LVL53: 729 02c0 040E     		lsr	r4, r0, #24 730              	.LVL54: 435:mmc.c         ****   char uc = 0;
 436:mmc.c         ****   char rvalue = MMC_TIMEOUT_ERROR;
 437:mmc.c         **** //  char i = 0;
 438:mmc.c         **** 
 439:mmc.c         ****   if (mmcSetBlockLength (length) == MMC_SUCCESS)
 731              		.loc 1 439 0 732 02c2 301C     		mov	r0, r6 733 02c4 FFF7FEFF 		bl	mmcSetBlockLength 734 02c8 0028     		cmp	r0, #0 735 02ca 01D0     		beq	.L114 736 02cc FF24     		mov	r4, #255 737              	.LVL55: 738 02ce 25E0     		b	.L116 739              	.LVL56: 740              	.L114: 440:mmc.c         ****     {
 441:mmc.c         ****       //CS_LOW ();
 442:mmc.c         ****       // CRC not used: 0xff as last byte
 443:mmc.c         ****       mmcSendCmd(cmd_register, 0x000000, 0xff);
 741              		.loc 1 443 0 742 02d0 201C     		mov	r0, r4 743 02d2 0021     		mov	r1, #0 744 02d4 FF22     		mov	r2, #255 745 02d6 FFF7FEFF 		bl	mmcSendCmd 444:mmc.c         **** 
 445:mmc.c         ****       // wait for response
 446:mmc.c         ****       // in the R1 format (0x00 is no errors)
 447:mmc.c         ****       if (mmcGetResponse() == 0x00)
 746              		.loc 1 447 0 747 02da FFF7FEFF 		bl	mmcGetResponse 748 02de 0028     		cmp	r0, #0 749 02e0 01D0     		beq	.L117 750 02e2 0224     		mov	r4, #2 751              	.LVL57: 752 02e4 17E0     		b	.L119 753              	.LVL58: 754              	.L117: 448:mmc.c         **** 	{
 449:mmc.c         **** 	 if (mmcGetXXResponse(0xfe)== 0xfe)
 755              		.loc 1 449 0 756 02e6 FE20     		mov	r0, #254 757 02e8 FFF7FEFF 		bl	mmcGetXXResponse 758 02ec FE28     		cmp	r0, #254 759 02ee 0BD1     		bne	.L120 760 02f0 0025     		mov	r5, #0 761 02f2 05E0     		b	.L122 762              	.LVL59: 763              	.L123: 450:mmc.c         **** 	    for (uc = 0; uc < length; uc++)
 451:mmc.c         **** 	      mmc_buffer[uc] = spiSendByte(0xff);
 764              		.loc 1 451 0 765 02f4 FF20     		mov	r0, #255 766 02f6 FFF7FEFF 		bl	spiSendByte 767 02fa 0A4B     		ldr	r3, .L125 768 02fc 1855     		strb	r0, [r3, r4] 769 02fe 0135     		add	r5, r5, #1 770              	.LVL60: 771              	.L122: 772 0300 2B06     		lsl	r3, r5, #24 773 0302 1C0E     		lsr	r4, r3, #24 774              	.LVL61: 775              		.loc 1 450 0 776 0304 B442     		cmp	r4, r6 777 0306 F5D3     		bcc	.L123 778              	.LVL62: 779              	.L120: 452:mmc.c         **** 	  // get CRC bytes (not really needed by us, but required by MMC)
 453:mmc.c         **** 	  spiSendByte(0xff);
 780              		.loc 1 453 0 781 0308 FF20     		mov	r0, #255 782 030a FFF7FEFF 		bl	spiSendByte 454:mmc.c         **** 	  spiSendByte(0xff);
 783              		.loc 1 454 0 784 030e FF20     		mov	r0, #255 785 0310 FFF7FEFF 		bl	spiSendByte 786 0314 FF24     		mov	r4, #255 787              	.LVL63: 788              	.L119: 455:mmc.c         **** 	}
 456:mmc.c         ****       else
 457:mmc.c         **** 	rvalue = MMC_RESPONSE_ERROR;
 458:mmc.c         ****       //CS=HIGH (off)
 459:mmc.c         ****       //CS_HIGH ();
 460:mmc.c         **** 
 461:mmc.c         ****       // Send 8 Clock pulses of delay.
 462:mmc.c         ****       spiSendByte(0xff);
 789              		.loc 1 462 0 790 0316 FF20     		mov	r0, #255 791 0318 FFF7FEFF 		bl	spiSendByte 792              	.L116: 463:mmc.c         ****     }
 464:mmc.c         ****   //CS_HIGH ();
 465:mmc.c         ****   return rvalue;
 466:mmc.c         **** }// mmc_read_register
 793              		.loc 1 466 0 794 031c 201C     		mov	r0, r4 795              		@ sp needed for prologue 796              	.LVL64: 797              	.LVL65: 798 031e 70BC     		pop	{r4, r5, r6} 799 0320 02BC     		pop	{r1} 800 0322 0847     		bx	r1 801              	.L126: 802              		.align	2 803              	.L125: 804 0324 00000000 		.word	mmc_buffer 805              	.LFE16: 1024              	.Letext0:DEFINED SYMBOLS                            *ABS*:00000000 mmc.c/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:1      .text:00000000 $t/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:15     .bss:00000000 mmc_buffer                             .bss:00000000 $d/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:22     .data:00000000 s_pPDC/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:23     .data:00000000 $d/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:28     .data:00000004 s_pPMC/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:34     .data:00000008 s_pPio/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:40     .data:0000000c s_pSpi/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:48     .text:00000000 Delays/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:69     .text:0000000c initSPI_port/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:95     .text:00000024 $d/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:103    .text:00000028 initSPI/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:100    .text:00000028 $t/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:155    .text:00000064 $d/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:169    .text:00000080 spiSendByte/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:166    .text:00000080 $t/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:208    .text:000000a0 $d/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:216    .text:000000a4 mmcSendCmd/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:213    .text:000000a4 $t/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:291    .text:000000f0 mmcGetResponse/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:326    .text:00000110 initMMC/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:380    .text:00000158 mmcGetXXResponse/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:413    .text:00000178 $d/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:421    .text:0000017c mmcCheckBusy/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:418    .text:0000017c $t/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:479    .text:000001bc mmcSetBlockLength/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:510    .text:000001d8 mmcReadBlock/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:590    .text:0000023c $d/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:599    .text:00000244 mmcWriteBlock/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:596    .text:00000244 $t/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:674    .text:000002a8 $d/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:683    .text:000002b0 spiWriteByte/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:680    .text:000002b0 $t/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:698    .text:000002b4 spiReadByte/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:716    .text:000002b8 mmcReadRegister/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccAyjOjk.s:804    .text:00000324 $dNO UNDEFINED SYMBOLS

⌨️ 快捷键说明

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