📄 fat16.lst
字号:
\ 00000088 0E2E CMP R6,#+14
\ 0000008A 01D1 BNE ??fat_format_5
76 bpb->bpbResSectors = 1;
\ ??fat_format_4:
\ 0000008C 0120 MOV R0,#+1
\ 0000008E 03E0 B ??fat_format_6
77 else if(FilesysType==PART_TYPE_FAT32||FilesysType==PART_TYPE_FAT32LBA)
\ ??fat_format_5:
\ 00000090 0B2E CMP R6,#+11
\ 00000092 01D0 BEQ ??fat_format_6
\ 00000094 0C2E CMP R6,#+12
\ 00000096 00D1 BNE ??fat_format_7
78 bpb->bpbResSectors = 32;
\ ??fat_format_6:
\ 00000098 9060 STR R0,[R2, #+8]
79 bpb->bpbFATs = 2;
\ ??fat_format_7:
\ 0000009A 0220 MOV R0,#+2
\ 0000009C 1073 STRB R0,[R2, #+12]
80 bpb->bpbRootDirEnts = ((bpb->bpbSecPerClust)-1-(Sizeofdisk_M >> 1)) << 4;
\ 0000009E 1F20 MOV R0,#+31
\ 000000A0 6946 MOV R1,SP
\ 000000A2 097B LDRB R1,[R1, #+12]
\ 000000A4 4908 LSR R1,R1,#+1
\ 000000A6 401A SUB R0,R0,R1
\ 000000A8 0001 LSL R0,R0,#+4
\ 000000AA 1061 STR R0,[R2, #+16]
81 bpb->bpbSectors = Sizeofdisk_M << 11;
\ 000000AC 6846 MOV R0,SP
\ 000000AE 007B LDRB R0,[R0, #+12]
\ 000000B0 C302 LSL R3,R0,#+11
\ 000000B2 5361 STR R3,[R2, #+20]
\ 000000B4 F020 MOV R0,#+240
\ 000000B6 1076 STRB R0,[R2, #+24]
82 bpb->bpbMedia = 0xf0;//必须与FAT[0]一致。
83 fatsec = bpb->bpbFATsecs = Sizeofdisk_M >> 2;
\ 000000B8 6846 MOV R0,SP
\ 000000BA 007B LDRB R0,[R0, #+12]
\ 000000BC 8008 LSR R0,R0,#+2
\ 000000BE D061 STR R0,[R2, #+28]
\ 000000C0 011C MOV R1,R0
84 bpb->bpbSecPerTrack = 0;
\ 000000C2 4848 LDR R0,??fat_format_0+0x1C ;; 0x402b
\ 000000C4 2018 ADD R0,R4,R0
\ 000000C6 0026 MOV R6,#+0
\ 000000C8 0660 STR R6,[R0, #+0]
85 bpb->bpbHeads = 0;
\ 000000CA 4660 STR R6,[R0, #+4]
86 bpb->bpbHiddenSecs = 0;
\ 000000CC 8660 STR R6,[R0, #+8]
87 bpb->bpbHugeSectors = Sizeofdisk_M << 11;
\ 000000CE C360 STR R3,[R0, #+12]
88
89 ext->exDriveNumber = 0x80;
\ 000000D0 8023 MOV R3,#+128
\ 000000D2 5376 STRB R3,[R2, #+25]
90 ext->exReserved1 = 0;
\ 000000D4 9676 STRB R6,[R2, #+26]
91 ext->exBootSignature = EXBOOTSIG;
\ 000000D6 2923 MOV R3,#+41
\ 000000D8 D376 STRB R3,[R2, #+27]
92 ext->exVolumeID = 0x88331446;
\ 000000DA 434A LDR R2,??fat_format_0+0x20 ;; 0x4028
\ 000000DC 434B LDR R3,??fat_format_0+0x24 ;; 0x88331446
\ 000000DE A350 STR R3,[R4, R2]
93 for(i=0;i<10;i++)
\ 000000E0 0022 MOV R2,#+0
94 ext->exVolumeLabel[i] = *armsys_str++;
\ ??fat_format_8:
\ 000000E2 434B LDR R3,??fat_format_0+0x28 ;; 0x402c
\ 000000E4 A618 ADD R6,R4,R2
\ 000000E6 019F LDR R7,[SP, #+4]
\ 000000E8 3F78 LDRB R7,[R7, #+0]
\ 000000EA F754 STRB R7,[R6, R3]
\ 000000EC 019B LDR R3,[SP, #+4]
\ 000000EE 5B1C ADD R3,R3,#+1
\ 000000F0 0193 STR R3,[SP, #+4]
\ 000000F2 521C ADD R2,R2,#+1
\ 000000F4 0A2A CMP R2,#+10
\ 000000F6 F4DB BLT ??fat_format_8
95 ext->exVolumeLabel[10]='\0';
\ 000000F8 0022 MOV R2,#+0
\ 000000FA C272 STRB R2,[R0, #+11]
96 for(i=0;i<7;i++)
\ 000000FC 3D4F LDR R7,??fat_format_0+0x2C ;; 0x4037
97 ext->exFileSysType[i] = *fat16_str++;
\ ??fat_format_9:
\ 000000FE A318 ADD R3,R4,R2
\ 00000100 2E78 LDRB R6,[R5, #+0]
\ 00000102 DE55 STRB R6,[R3, R7]
\ 00000104 6D1C ADD R5,R5,#+1
\ 00000106 521C ADD R2,R2,#+1
\ 00000108 072A CMP R2,#+7
\ 0000010A F8DB BLT ??fat_format_9
98 ext->exFileSysType[8]='\0';
^
Warning[Pe175]: subscript out of range
int i,j,fatsec,temp,blocknum;
^
"G:\AT91_ENERGY\ATMEL_ARM\mmssys\mmc_sd\fat16.c",31 Warning[Pe177]: variable
"j" was declared but never referenced
int i,j,fatsec,temp,blocknum;
^
"G:\AT91_ENERGY\ATMEL_ARM\mmssys\mmc_sd\fat16.c",31 Warning[Pe550]: variable
"blocknum" was set but never used
\ 0000010C 0022 MOV R2,#+0
\ 0000010E 0275 STRB R2,[R0, #+20]
99
100 memcpy(ClusterBuffer[0],SectorBuffer,512);
\ 00000110 .... LDR R2,??DataTable5 ;; ClusterBuffer + 16384
\ 00000112 .... LDR R3,??DataTable6 ;; ClusterBuffer
\ 00000114 8020 MOV R0,#+128
\ 00000116 8000 LSL R0,R0,#+2 ;; #+512
\ ??fat_format_10:
\ 00000118 001F SUB R0,R0,#+4
\ 0000011A 1558 LDR R5,[R2, R0]
\ 0000011C 1D50 STR R5,[R3, R0]
\ 0000011E FBD1 BNE ??fat_format_10
101
102 //第1个扇区开始是FAT及FAT备份区
103
104 for(i=0;i<512;i++)
\ 00000120 0020 MOV R0,#+0
\ 00000122 0025 MOV R5,#+0
105 SectorBuffer[i]=0x00;
\ ??fat_format_11:
\ 00000124 8022 MOV R2,#+128
\ 00000126 D201 LSL R2,R2,#+7 ;; #+16384
\ 00000128 2318 ADD R3,R4,R0
\ 0000012A 9D54 STRB R5,[R3, R2]
\ 0000012C 401C ADD R0,R0,#+1
\ 0000012E 5209 LSR R2,R2,#+5
\ 00000130 9042 CMP R0,R2
\ 00000132 F7DB BLT ??fat_format_11
106
107 for(i=1;i<(fatsec*2+1);i++)
\ 00000134 0122 MOV R2,#+1
\ 00000136 4800 LSL R0,R1,#+1
\ 00000138 401C ADD R0,R0,#+1
\ 0000013A .... LDR R5,??DataTable5 ;; ClusterBuffer + 16384
\ 0000013C 09E0 B ??fat_format_12
108 memcpy(ClusterBuffer[i],SectorBuffer,512);
\ ??fat_format_13:
\ 0000013E 5602 LSL R6,R2,#+9
\ 00000140 .... LDR R7,??DataTable6 ;; ClusterBuffer
\ 00000142 BE19 ADD R6,R7,R6
\ 00000144 8023 MOV R3,#+128
\ 00000146 9B00 LSL R3,R3,#+2 ;; #+512
\ ??fat_format_14:
\ 00000148 5B1E SUB R3,R3,#+1
\ 0000014A EF5C LDRB R7,[R5, R3]
\ 0000014C F754 STRB R7,[R6, R3]
\ 0000014E FBD1 BNE ??fat_format_14
\ 00000150 521C ADD R2,R2,#+1
\ ??fat_format_12:
\ 00000152 8242 CMP R2,R0
\ 00000154 F3DB BLT ??fat_format_13
109
110 ClusterBuffer[1][0]=0xf0;//0xf8?
\ 00000156 8022 MOV R2,#+128
\ 00000158 9200 LSL R2,R2,#+2 ;; #+512
\ 0000015A A218 ADD R2,R4,R2
\ 0000015C F023 MOV R3,#+240
\ 0000015E 1370 STRB R3,[R2, #+0]
111 ClusterBuffer[1][1]=0xff;
\ 00000160 FF23 MOV R3,#+255
\ 00000162 5370 STRB R3,[R2, #+1]
112 ClusterBuffer[1][2]=0xff;
\ 00000164 9370 STRB R3,[R2, #+2]
113 ClusterBuffer[1][3]=0xff;
\ 00000166 D370 STRB R3,[R2, #+3]
114
115 ClusterBuffer[fatsec+1][0]=0xf0;//0xf8?
\ 00000168 8022 MOV R2,#+128
\ 0000016A 9200 LSL R2,R2,#+2 ;; #+512
\ 0000016C 4902 LSL R1,R1,#+9
\ 0000016E 6118 ADD R1,R4,R1
\ 00000170 8918 ADD R1,R1,R2
\ 00000172 F022 MOV R2,#+240
\ 00000174 0A70 STRB R2,[R1, #+0]
116 ClusterBuffer[fatsec+1][1]=0xff;
\ 00000176 4B70 STRB R3,[R1, #+1]
117 ClusterBuffer[fatsec+1][2]=0xff;
\ 00000178 8B70 STRB R3,[R1, #+2]
118 ClusterBuffer[fatsec+1][3]=0xff;
\ 0000017A CB70 STRB R3,[R1, #+3]
119
120 //从第fatsec*2+1个扇区开始,是根目录区,到簇的最后,应该清零
121 for(i=fatsec*2+1;i<32;i++)
\ 0000017C .... LDR R2,??DataTable5 ;; ClusterBuffer + 16384
\ 0000017E 09E0 B ??fat_format_15
122 memcpy(ClusterBuffer[i],SectorBuffer,512);
\ ??fat_format_16:
\ 00000180 4302 LSL R3,R0,#+9
\ 00000182 .... LDR R5,??DataTable6 ;; ClusterBuffer
\ 00000184 EB18 ADD R3,R5,R3
\ 00000186 8021 MOV R1,#+128
\ 00000188 8900 LSL R1,R1,#+2 ;; #+512
\ ??fat_format_17:
\ 0000018A 491E SUB R1,R1,#+1
\ 0000018C 555C LDRB R5,[R2, R1]
\ 0000018E 5D54 STRB R5,[R3, R1]
\ 00000190 FBD1 BNE ??fat_format_17
\ 00000192 401C ADD R0,R0,#+1
\ ??fat_format_15:
\ 00000194 2028 CMP R0,#+32
\ 00000196 F3DB BLT ??fat_format_16
123
124 for(i=0;i<32;i++)//一扇区接一扇区写入
\ 00000198 0027 MOV R7,#+0
125 {
126 //for(j=0;j<255;j++);//延时
127 temp=mmc_write_page(0,i,ClusterBuffer[i]);
128 if(temp==0)
\ ??fat_format_18:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -