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

📄 fat.cod

📁 Ep93XX TionProV2 BSP
💻 COD
📖 第 1 页 / 共 5 页
字号:

; 686  :     {
; 687  :         g_FATParms.FATType = FAT_32;

  0057c	e59f2354	 ldr         r2, [pc, #0x354]
  00580	e3a03002	 mov         r3, #2
  00584	e5823000	 str         r3, [r2]
  00588		 |$L38337|
  00588		 |$L38335|

; 688  :     }
; 689  : 
; 690  :     //
; 691  :     // Get the FAT filesystem description.
; 692  :     //
; 693  :     if ( (g_FATParms.FATType == FAT_12) ||
; 694  :          (g_FATParms.FATType == FAT_16) )

  00588	e59f3348	 ldr         r3, [pc, #0x348]
  0058c	e5933000	 ldr         r3, [r3]
  00590	e3530000	 cmp         r3, #0
  00594	0a000003	 beq         |$L38339|
  00598	e59f3338	 ldr         r3, [pc, #0x338]
  0059c	e5933000	 ldr         r3, [r3]
  005a0	e3530001	 cmp         r3, #1
  005a4	1a000005	 bne         |$L38338|
  005a8		 |$L38339|

; 695  :     {
; 696  :         memcpy(FATType, (void *)pFAT16Extension->TypeFAT16, 8);

  005a8	e3a02008	 mov         r2, #8
  005ac	e59d3220	 ldr         r3, [sp, #0x220]
  005b0	e2831012	 add         r1, r3, #0x12
  005b4	e28d0e21	 add         r0, sp, #0x21, 28
  005b8	eb000000	 bl          memcpy

; 697  :     }
; 698  :     else

  005bc	ea000004	 b           |$L38341|
  005c0		 |$L38338|

; 699  :     {
; 700  :         memcpy(FATType, (void *)pFAT32Extension->TypeFAT32, 8);

  005c0	e3a02008	 mov         r2, #8
  005c4	e59d321c	 ldr         r3, [sp, #0x21C]
  005c8	e283102e	 add         r1, r3, #0x2E
  005cc	e28d0e21	 add         r0, sp, #0x21, 28
  005d0	eb000000	 bl          memcpy
  005d4		 |$L38341|

; 701  :     }
; 702  :     FATType[8] = '\0';

  005d4	e3a03000	 mov         r3, #0
  005d8	e5cd3218	 strb        r3, [sp, #0x218]

; 703  :     
; 704  :     //
; 705  :     // Compute LBA for various disk regions.
; 706  :     //
; 707  : 
; 708  :     // The start of the data region, the first sector of cluster 2 is...
; 709  :     g_FATParms.DataStartLBA = g_FATParms.ReservedSects + 
; 710  :                               (g_FATParms.NumFATs * g_FATParms.SectorsPerFAT) +
; 711  :                               g_FATParms.RootDirSectors;

  005dc	e59f32f4	 ldr         r3, [pc, #0x2F4]
  005e0	e1d3e1b8	 ldrh        lr, [r3, #0x18]
  005e4	e59f32ec	 ldr         r3, [pc, #0x2EC]
  005e8	e5d30015	 ldrb        r0, [r3, #0x15]
  005ec	e59f12e4	 ldr         r1, [pc, #0x2E4]
  005f0	e5d1302c	 ldrb        r3, [r1, #0x2C]
  005f4	e1a02403	 mov         r2, r3, lsl #8
  005f8	e5d1302b	 ldrb        r3, [r1, #0x2B]
  005fc	e1833002	 orr         r3, r3, r2
  00600	e1a02403	 mov         r2, r3, lsl #8
  00604	e5d1302a	 ldrb        r3, [r1, #0x2A]
  00608	e1833002	 orr         r3, r3, r2
  0060c	e1a02403	 mov         r2, r3, lsl #8
  00610	e5d13029	 ldrb        r3, [r1, #0x29]
  00614	e1833002	 orr         r3, r3, r2
  00618	e0030390	 mul         r3, r0, r3
  0061c	e08e0003	 add         r0, lr, r3
  00620	e59f12b0	 ldr         r1, [pc, #0x2B0]
  00624	e5d13028	 ldrb        r3, [r1, #0x28]
  00628	e1a02403	 mov         r2, r3, lsl #8
  0062c	e5d13027	 ldrb        r3, [r1, #0x27]
  00630	e1833002	 orr         r3, r3, r2
  00634	e1a02403	 mov         r2, r3, lsl #8
  00638	e5d13026	 ldrb        r3, [r1, #0x26]
  0063c	e1833002	 orr         r3, r3, r2
  00640	e1a02403	 mov         r2, r3, lsl #8
  00644	e5d13025	 ldrb        r3, [r1, #0x25]
  00648	e1833002	 orr         r3, r3, r2
  0064c	e0802003	 add         r2, r0, r3
  00650	e59f3280	 ldr         r3, [pc, #0x280]
  00654	e5832010	 str         r2, [r3, #0x10]

; 712  :     
; 713  :     g_FATParms.NumRootEntries = pBPB->NumRootEntries;

  00658	e59d3000	 ldr         r3, [sp]
  0065c	e2831011	 add         r1, r3, #0x11
  00660	e5d13001	 ldrb        r3, [r1, #1]
  00664	e1a03403	 mov         r3, r3, lsl #8
  00668	e1a02803	 mov         r2, r3, lsl #16
  0066c	e1a02822	 mov         r2, r2, lsr #16
  00670	e5d13000	 ldrb        r3, [r1]
  00674	e1832002	 orr         r2, r3, r2
  00678	e59f3258	 ldr         r3, [pc, #0x258]
  0067c	e1c321b6	 strh        r2, [r3, #0x16]

; 714  :     g_FATParms.BytesPerSect = pBPB->BytesPerSect;

  00680	e59d3000	 ldr         r3, [sp]
  00684	e283100b	 add         r1, r3, #0xB
  00688	e5d13001	 ldrb        r3, [r1, #1]
  0068c	e1a03403	 mov         r3, r3, lsl #8
  00690	e1a02803	 mov         r2, r3, lsl #16
  00694	e1a02822	 mov         r2, r2, lsr #16
  00698	e5d13000	 ldrb        r3, [r1]
  0069c	e1833002	 orr         r3, r3, r2
  006a0	e59f2230	 ldr         r2, [pc, #0x230]
  006a4	e5c2301f	 strb        r3, [r2, #0x1F]
  006a8	e1a03423	 mov         r3, r3, lsr #8
  006ac	e5c23020	 strb        r3, [r2, #0x20]

; 715  : 
; 716  :     if (g_FATParms.FATType == FAT_32)

  006b0	e59f3220	 ldr         r3, [pc, #0x220]
  006b4	e5933000	 ldr         r3, [r3]
  006b8	e3530002	 cmp         r3, #2
  006bc	1a000020	 bne         |$L38343|

; 717  :     {
; 718  :         g_FATParms.RootDirCluster = pFAT32Extension->RootFirstCluster;

  006c0	e59d321c	 ldr         r3, [sp, #0x21C]
  006c4	e2831008	 add         r1, r3, #8
  006c8	e5d13003	 ldrb        r3, [r1, #3]
  006cc	e1a02403	 mov         r2, r3, lsl #8
  006d0	e5d13002	 ldrb        r3, [r1, #2]
  006d4	e1833002	 orr         r3, r3, r2
  006d8	e1a02403	 mov         r2, r3, lsl #8
  006dc	e5d13001	 ldrb        r3, [r1, #1]
  006e0	e1833002	 orr         r3, r3, r2
  006e4	e1a02403	 mov         r2, r3, lsl #8
  006e8	e5d13000	 ldrb        r3, [r1]
  006ec	e1832002	 orr         r2, r3, r2
  006f0	e59f31e0	 ldr         r3, [pc, #0x1E0]
  006f4	e583200c	 str         r2, [r3, #0xC]

; 719  :         g_FATParms.RootDirLBA = Cluster2LBA( g_FATParms.RootDirCluster );

  006f8	e59f31d8	 ldr         r3, [pc, #0x1D8]
  006fc	e593000c	 ldr         r0, [r3, #0xC]
  00700	eb000000	 bl          Cluster2LBA
  00704	e58d022c	 str         r0, [sp, #0x22C]
  00708	e59d222c	 ldr         r2, [sp, #0x22C]
  0070c	e59f31c4	 ldr         r3, [pc, #0x1C4]
  00710	e5832008	 str         r2, [r3, #8]

; 720  :         g_FATParms.DriveId  = pFAT32Extension->DriveId32;

  00714	e59d321c	 ldr         r3, [sp, #0x21C]
  00718	e283301c	 add         r3, r3, #0x1C
  0071c	e5d32000	 ldrb        r2, [r3]
  00720	e59f31b0	 ldr         r3, [pc, #0x1B0]
  00724	e5c3201e	 strb        r2, [r3, #0x1E]

; 721  :         // FAT LBA starts right after the reserved sectors
; 722  :         g_FATParms.FATLBA = g_FATParms.ReservedSects + uFirstPartitionLBA;

  00728	e59f31a8	 ldr         r3, [pc, #0x1A8]
  0072c	e1d321b8	 ldrh        r2, [r3, #0x18]
  00730	e59d323c	 ldr         r3, [sp, #0x23C]
  00734	e0822003	 add         r2, r2, r3
  00738	e59f3198	 ldr         r3, [pc, #0x198]
  0073c	e5832004	 str         r2, [r3, #4]

; 723  : 
; 724  :     }
; 725  :     else

  00740	ea00001e	 b           |$L38344|
  00744		 |$L38343|

; 726  :     {
; 727  :         // FAT-12/16 FAT root is not an allocated cluster!
; 728  :         g_FATParms.RootDirCluster = 0;  

  00744	e59f218c	 ldr         r2, [pc, #0x18C]
  00748	e3a03000	 mov         r3, #0
  0074c	e582300c	 str         r3, [r2, #0xC]

; 729  :         // Since it is not an allocated cluster, then calculate the LBA 
; 730  :         // here...
; 731  :         g_FATParms.RootDirLBA = 
; 732  :             g_FATParms.DataStartLBA - 
; 733  :               ((sizeof(DIRENTRY) * g_FATParms.NumRootEntries) / g_FATParms.BytesPerSect);

  00750	e59f3180	 ldr         r3, [pc, #0x180]
  00754	e1d321b6	 ldrh        r2, [r3, #0x16]
  00758	e3a03020	 mov         r3, #0x20
  0075c	e00e0392	 mul         lr, r2, r3
  00760	e59f1170	 ldr         r1, [pc, #0x170]
  00764	e5d13020	 ldrb        r3, [r1, #0x20]
  00768	e1a03403	 mov         r3, r3, lsl #8
  0076c	e1a02803	 mov         r2, r3, lsl #16
  00770	e1a02822	 mov         r2, r2, lsr #16
  00774	e5d1301f	 ldrb        r3, [r1, #0x1F]
  00778	e1830002	 orr         r0, r3, r2
  0077c	e1a0100e	 mov         r1, lr
  00780	eb000000	 bl          __rt_udiv
  00784	e59f314c	 ldr         r3, [pc, #0x14C]
  00788	e5933010	 ldr         r3, [r3, #0x10]
  0078c	e0432000	 sub         r2, r3, r0
  00790	e59f3140	 ldr         r3, [pc, #0x140]
  00794	e5832008	 str         r2, [r3, #8]

; 734  :         g_FATParms.DriveId  = pFAT16Extension->DriveId16;

  00798	e59d3220	 ldr         r3, [sp, #0x220]
  0079c	e5d32000	 ldrb        r2, [r3]
  007a0	e59f3130	 ldr         r3, [pc, #0x130]
  007a4	e5c3201e	 strb        r2, [r3, #0x1E]

; 735  :         // FAT LBA starts right after the reserved sectors
; 736  :         g_FATParms.FATLBA = g_FATParms.ReservedSects + uFirstPartitionLBA;

  007a8	e59f3128	 ldr         r3, [pc, #0x128]
  007ac	e1d321b8	 ldrh        r2, [r3, #0x18]
  007b0	e59d323c	 ldr         r3, [sp, #0x23C]
  007b4	e0822003	 add         r2, r2, r3
  007b8	e59f3118	 ldr         r3, [pc, #0x118]
  007bc	e5832004	 str         r2, [r3, #4]
  007c0		 |$L38344|

; 737  :     }
; 738  :     
; 739  :     if ((sizeof(DIRENTRY) * g_FATParms.NumRootEntries) % g_FATParms.BytesPerSect)

  007c0	e59f3110	 ldr         r3, [pc, #0x110]
  007c4	e1d321b6	 ldrh        r2, [r3, #0x16]
  007c8	e3a03020	 mov         r3, #0x20
  007cc	e00e0392	 mul         lr, r2, r3
  007d0	e59f1100	 ldr         r1, [pc, #0x100]
  007d4	e5d13020	 ldrb        r3, [r1, #0x20]
  007d8	e1a03403	 mov         r3, r3, lsl #8
  007dc	e1a02803	 mov         r2, r3, lsl #16
  007e0	e1a02822	 mov         r2, r2, lsr #16
  007e4	e5d1301f	 ldrb        r3, [r1, #0x1F]
  007e8	e1830002	 orr         r0, r3, r2
  007ec	e1a0100e	 mov         r1, lr
  007f0	eb000000	 bl          __rt_udiv
  007f4	e3510000	 cmp         r1, #0
  007f8	0a000004	 beq         |$L38347|

; 740  :     {
; 741  :         --g_FATParms.RootDirLBA;

  007fc	e59f30d4	 ldr         r3, [pc, #0xD4]
  00800	e5933008	 ldr         r3, [r3, #8]
  00804	e2432001	 sub         r2, r3, #1
  00808	e59f30c8	 ldr         r3, [pc, #0xC8]
  0080c	e5832008	 str         r2, [r3, #8]
  00810		 |$L38347|

; 742  :     }
; 743  :     
; 744  :     g_FATParms.SectsPerClust = pBPB->SectsPerClust;

  00810	e59d3000	 ldr         r3, [sp]
  00814	e283300d	 add         r3, r3, #0xD
  00818	e5d32000	 ldrb        r2, [r3]
  0081c	e59f30b4	 ldr         r3, [pc, #0xB4]
  00820	e5c32014	 strb        r2, [r3, #0x14]

; 745  :     g_FATParms.NumHeads = (USHORT) pBPB->NumHeads;

  00824	e59d3000	 ldr         r3, [sp]
  00828	e283101a	 add         r1, r3, #0x1A
  0082c	e5d13001	 ldrb        r3, [r1, #1]
  00830	e1a03403	 mov         r3, r3, lsl #8
  00834	e1a02803	 mov         r2, r3, lsl #16
  00838	e1a02822	 mov         r2, r2, lsr #16
  0083c	e5d13000	 ldrb        r3, [r1]
  00840	e1833002	 orr         r3, r3, r2
  00844	e59f208c	 ldr         r2, [pc, #0x8C]
  00848	e5c23021	 strb        r3, [r2, #0x21]
  0084c	e1a03423	 mov         r3, r3, lsr #8
  00850	e5c23022	 strb        r3, [r2, #0x22]

; 746  :     g_FATParms.SectsPerTrack = pBPB->SectsPerTrack;

  00854	e59d3000	 ldr         r3, [sp]
  00858	e2831018	 add         r1, r3, #0x18
  0085c	e5d13001	 ldrb        r3, [r1, #1]
  00860	e1a03403	 mov         r3, r3, lsl #8
  00864	e1a02803	 mov         r2, r3, lsl #16
  00868	e1a02822	 mov         r2, r2, lsr #16
  0086c	e5d13000	 ldrb        r3, [r1]
  00870	e1833002	 orr         r3, r3, r2
  00874	e59f205c	 ldr         r2, [pc, #0x5C]
  00878	e5c23023	 strb        r3, [r2, #0x23]
  0087c	e1a03423	 mov         r3, r3, lsr #8
  00880	e5c23024	 strb        r3, [r2, #0x24]

; 747  : 
; 748  :     // Some BIOS/floppy combinations don't support multi-sector reads.
; 749  :     // On a PC BIOS based system, a drive ID < 0x80 is a floppy disk.
; 750  :     // We will not have that here!  So, set the ReadBufferLen to the
; 751  :     // maximum rather than the number of bytes per sector!
; 752  :     // ReadBufferLen = ((pBPB->DriveId < 0x80) ? g_FATParms.BytesPerSect : READ_BUFFER_LENGTH_MAX);
; 753  :     ReadBufferLen = READ_BUFFER_LENGTH_MAX;

  00884	e3a03902	 mov         r3, #2, 18
  00888	e58d3208	 str         r3, [sp, #0x208]

; 754  : 
; 755  :     //
; 756  :     // Initialize the read buffer.
; 757  :     //
; 758  :     if (!InitReadBuffer(READ_BUFFER_START, ReadBufferLen))

  0088c	e59d1208	 ldr         r1, [sp, #0x208]
  00890	e3a00602	 mov         r0, #2, 12
  00894	eb000000	 bl          InitReadBuffer
  00898	e58d0230	 str         r0, [sp, #0x230]
  0089c	e59d3230	 ldr         r3, [sp, #0x230]
  008a0	e3530000	 cmp         r3, #0
  008a4	1a000004	 bne         |$L38349|

; 759  :     {
; 760  :         SERPRINT("ERROR: Failed to initialize read buffer.\r\n");

  008a8	e59f0024	 ldr         r0, [pc, #0x24]
  008ac	eb000000	 bl          EdbgOutputDebugString

; 761  :         return(FALSE);

  008b0	e3a03000	 mov         r3, #0
  008b4	e58d3224	 str         r3, [sp, #0x224]
  008b8	ea000001	 b           |$L38312|
  008bc		 |$L38349|

; 762  :     }
; 763  : 
; 764  : #if defined( DUMP_FAT_INFO )
; 765  :     SERPRINT("\r\nDrive Info:\r\n");
; 766  :     SERPRINT(" - Drive ID ................... 0x%x\r\n", g_FATParms.DriveId);
; 767  :     SERPRINT(" - Heads ...................... 0x%x\r\n", g_FATParms.NumHeads);
; 768  :     SERPRINT(" - Number of Sectors Per Track  0x%x\r\n", g_FATParms.SectsPerTrack);
; 769  :     SERPRINT(" - Sector Size ...............  0x%x\r\n\r\n", g_FATParms.BytesPerSect);
; 770  : 
; 771  :     SERPRINT("FAT Info:\r\n");
; 772  :     SERPRINT(" - FAT Type ................... %s(%d)\r\n", FATType, g_FATParms.FATType );
; 773  :     SERPRINT(" - Cluster Size ............... 0x%x\r\n", (g_FATParms.SectsPerClust * g_FATParms.BytesPerSect));
; 774  :     SERPRINT(" - Number of FATs ............. 0x%x\r\n", g_FATParms.NumFATs);
; 775  :     SERPRINT(" - Number of Sectors Per FAT .. 0x%x\r\n", g_FATParms.SectorsPerFAT);
; 776  :     SERPRINT(" - Number of Hidden Sectors ... 0x%x\r\n", g_FATParms.NumHiddenSectors);
; 777  :     SERPRINT(" - Number of Reserved Sectors . 0x%x\r\n\r\n", g_FATParms.ReservedSects);
; 778  :     SERPRINT(" - Root dir location (LBA) .... 0x%x\r\n", g_FATParms.RootDirLBA);
; 779  :     SERPRINT(" - FAT location (LBA) ......... 0x%x\r\n", g_FATParms.FATLBA);
; 780  :     SERPRINT(" - Data location (LBA) ........ 0x%x\r\n\r\n", g_FATParms.DataStartLBA);
; 781  :     
; 782  : #if defined( DUMP_ROOT_DIR )
; 783  :     DumpRootDir();
; 784  : #endif  // (DUMP_ROOT_DIR )
; 785  : 
; 786  : #if defined( DUMP_FAT_TABLE )
; 787  :     DumpFATTable();
; 788  : #endif  // ( DUMP_FAT_TABLE )
; 789  :     
; 790  : #endif  /

⌨️ 快捷键说明

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