📄 mscuser.lst
字号:
0000000E 0412 LSL R2,R2,#0x10
00000010 4310 ORR R0,R2
00000012 78CA LDRB R2,[R1,#0x3] ; CBW+8
00000014 0612 LSL R2,R2,#0x18
00000016 4310 ORR R0,R2
00000018 2800 CMP R0,#0x0
0000001A D106 BNE L_29 ; T=0x0000002A
226: CSW.bStatus = CSW_PHASE_ERROR;
0000001C 2102 MOV R1,#0x2
0000001E 4800 LDR R0,=CSW + 0xC ; CSW+12
00000020 7001 STRB R1,[R0,#0x0] ; CSW+12
227: MSC_SetCSW();
00000022 F7FF BL MSC_SetCSW?T ; T=0x0001 (1)
00000024 FFED BL MSC_SetCSW?T ; T=0x0001 (2)
228: return (FALSE);
00000026 2000 MOV R0,#0x0
00000028 E00F B L_30 ; T=0x0000004A
229: }
0000002A L_29:
230: if ((CBW.bmFlags & 0x80) == 0) {
0000002A 4800 LDR R0,=CBW + 0xC ; CBW+12
0000002C 7800 LDRB R0,[R0,#0x0] ; CBW+12
0000002E 2180 MOV R1,#0x80
00000030 4208 TST R0,R1
00000032 D109 BNE L_31 ; T=0x00000048
231: USB_SetStallEP(MSC_EP_OUT);
00000034 2002 MOV R0,#0x2
00000036 F7FF BL USB_SetStallEP?T ; T=0x0001 (1)
00000038 FFE3 BL USB_SetStallEP?T ; T=0x0001 (2)
232: CSW.bStatus = CSW_PHASE_ERROR;
0000003A 2102 MOV R1,#0x2
0000003C 4800 LDR R0,=CSW + 0xC ; CSW+12
0000003E 7001 STRB R1,[R0,#0x0] ; CSW+12
233: MSC_SetCSW();
00000040 F7FF BL MSC_SetCSW?T ; T=0x0001 (1)
00000042 FFDE BL MSC_SetCSW?T ; T=0x0001 (2)
234: return (FALSE);
00000044 2000 MOV R0,#0x0
00000046 E000 B L_30 ; T=0x0000004A
235: }
00000048 L_31:
236: return (TRUE);
00000048 2001 MOV R0,#0x1
237: }
0000004A L_30:
0000004A BC08 POP {R3}
0000004C 4718 BX R3
0000004E ENDP ; 'DataInFormat?T'
*** CODE SEGMENT '?PR?DataInTransfer?T?mscuser':
246: void DataInTransfer (void) {
00000000 B500 PUSH {LR}
248: if (BulkLen > CBW.dDataLength) {
00000002 4800 LDR R0,=BulkLen ; BulkLen
00000004 7800 LDRB R0,[R0,#0x0] ; BulkLen
00000006 4800 LDR R2,=CBW + 0x8 ; CBW+8
00000008 7811 LDRB R1,[R2,#0x0] ; CBW+8
0000000A 7853 LDRB R3,[R2,#0x1] ; CBW+8
0000000C 021B LSL R3,R3,#0x8
0000000E 4319 ORR R1,R3
00000010 7893 LDRB R3,[R2,#0x2] ; CBW+8
00000012 041B LSL R3,R3,#0x10
00000014 4319 ORR R1,R3
00000016 78D3 LDRB R3,[R2,#0x3] ; CBW+8
00000018 061B LSL R3,R3,#0x18
0000001A 4319 ORR R1,R3
ARM COMPILER V2.53, mscuser 24/09/06 22:23:19 PAGE 20
0000001C 4288 CMP R0,R1
0000001E D90E BLS L_32 ; T=0x0000003E
249: BulkLen = CBW.dDataLength;
00000020 4800 LDR R2,=CBW + 0x8 ; CBW+8
00000022 7811 LDRB R1,[R2,#0x0] ; CBW+8
00000024 7850 LDRB R0,[R2,#0x1] ; CBW+8
00000026 0200 LSL R0,R0,#0x8
00000028 4301 ORR R1,R0
0000002A 7890 LDRB R0,[R2,#0x2] ; CBW+8
0000002C 0400 LSL R0,R0,#0x10
0000002E 4301 ORR R1,R0
00000030 78D0 LDRB R0,[R2,#0x3] ; CBW+8
00000032 0600 LSL R0,R0,#0x18
00000034 4301 ORR R1,R0
00000036 0609 LSL R1,R1,#0x18
00000038 0E09 LSR R1,R1,#0x18
0000003A 4800 LDR R0,=BulkLen ; BulkLen
0000003C 7001 STRB R1,[R0,#0x0] ; BulkLen
250: }
0000003E L_32:
252: USB_WriteEP(MSC_EP_IN, BulkBuf, BulkLen);
0000003E 4800 LDR R0,=BulkLen ; BulkLen
00000040 7800 LDRB R0,[R0,#0x0] ; BulkLen
00000042 1C02 MOV R2,R0
00000044 4800 LDR R1,=BulkBuf ; BulkBuf
00000046 2081 MOV R0,#0x81
00000048 F7FF BL USB_WriteEP?T ; T=0x0001 (1)
0000004A FFDA BL USB_WriteEP?T ; T=0x0001 (2)
253: BulkStage = MSC_BS_DATA_IN_LAST;
0000004C 2103 MOV R1,#0x3
0000004E 4800 LDR R0,=BulkStage ; BulkStage
00000050 7001 STRB R1,[R0,#0x0] ; BulkStage
255: CSW.dDataResidue -= BulkLen;
00000052 4800 LDR R0,=BulkLen ; BulkLen
00000054 7800 LDRB R0,[R0,#0x0] ; BulkLen
00000056 1C02 MOV R2,R0
00000058 4800 LDR R0,=CSW + 0x8 ; CSW+8
0000005A 7801 LDRB R1,[R0,#0x0] ; CSW+8
0000005C 7843 LDRB R3,[R0,#0x1] ; CSW+8
0000005E 021B LSL R3,R3,#0x8
00000060 4319 ORR R1,R3
00000062 7883 LDRB R3,[R0,#0x2] ; CSW+8
00000064 041B LSL R3,R3,#0x10
00000066 4319 ORR R1,R3
00000068 78C3 LDRB R3,[R0,#0x3] ; CSW+8
0000006A 061B LSL R3,R3,#0x18
0000006C 4319 ORR R1,R3
0000006E 1A89 SUB R1,R2
00000070 7001 STRB R1,[R0,#0x0] ; CSW+8
00000072 0A09 LSR R1,R1,#0x8
00000074 7041 STRB R1,[R0,#0x1] ; CSW+8
00000076 0A09 LSR R1,R1,#0x8
00000078 7081 STRB R1,[R0,#0x2] ; CSW+8
0000007A 0A09 LSR R1,R1,#0x8
0000007C 70C1 STRB R1,[R0,#0x3] ; CSW+8
256: CSW.bStatus = CSW_CMD_PASSED;
0000007E 2100 MOV R1,#0x0
00000080 4800 LDR R0,=CSW + 0xC ; CSW+12
00000082 7001 STRB R1,[R0,#0x0] ; CSW+12
257: }
00000084 BC08 POP {R3}
00000086 4718 BX R3
00000088 ENDP ; 'DataInTransfer?T'
*** CODE SEGMENT '?PR?MSC_TestUnitReady?T?mscuser':
266: void MSC_TestUnitReady (void) {
00000000 B500 PUSH {LR}
ARM COMPILER V2.53, mscuser 24/09/06 22:23:19 PAGE 21
268: if (CBW.dDataLength != 0) {
00000002 4800 LDR R1,=CBW + 0x8 ; CBW+8
00000004 7808 LDRB R0,[R1,#0x0] ; CBW+8
00000006 784A LDRB R2,[R1,#0x1] ; CBW+8
00000008 0212 LSL R2,R2,#0x8
0000000A 4310 ORR R0,R2
0000000C 788A LDRB R2,[R1,#0x2] ; CBW+8
0000000E 0412 LSL R2,R2,#0x10
00000010 4310 ORR R0,R2
00000012 78CA LDRB R2,[R1,#0x3] ; CBW+8
00000014 0612 LSL R2,R2,#0x18
00000016 4310 ORR R0,R2
00000018 2800 CMP R0,#0x0
0000001A D00B BEQ L_33 ; T=0x00000034
269: if ((CBW.bmFlags & 0x80) != 0) {
0000001C 4800 LDR R0,=CBW + 0xC ; CBW+12
0000001E 7800 LDRB R0,[R0,#0x0] ; CBW+12
00000020 2180 MOV R1,#0x80
00000022 4208 TST R0,R1
00000024 D003 BEQ L_34 ; T=0x0000002E
270: USB_SetStallEP(MSC_EP_IN);
00000026 2081 MOV R0,#0x81
00000028 F7FF BL USB_SetStallEP?T ; T=0x0001 (1)
0000002A FFEA BL USB_SetStallEP?T ; T=0x0001 (2)
271: } else {
0000002C E002 B L_33 ; T=0x00000034
0000002E L_34:
272: USB_SetStallEP(MSC_EP_OUT);
0000002E 2002 MOV R0,#0x2
00000030 F7FF BL USB_SetStallEP?T ; T=0x0001 (1)
00000032 FFE6 BL USB_SetStallEP?T ; T=0x0001 (2)
274: }
00000034 L_33:
276: CSW.bStatus = CSW_CMD_PASSED;
00000034 2100 MOV R1,#0x0
00000036 4800 LDR R0,=CSW + 0xC ; CSW+12
00000038 7001 STRB R1,[R0,#0x0] ; CSW+12
277: MSC_SetCSW();
0000003A F7FF BL MSC_SetCSW?T ; T=0x0001 (1)
0000003C FFE1 BL MSC_SetCSW?T ; T=0x0001 (2)
278: }
0000003E BC08 POP {R3}
00000040 4718 BX R3
00000042 ENDP ; 'MSC_TestUnitReady?T'
*** CODE SEGMENT '?PR?MSC_RequestSense?T?mscuser':
287: void MSC_RequestSense (void) {
00000000 B500 PUSH {LR}
289: if (!DataInFormat()) return;
00000002 F7FF BL DataInFormat?T ; T=0x0001 (1)
00000004 FFFD BL DataInFormat?T ; T=0x0001 (2)
00000006 2800 CMP R0,#0x0 ; DataInFormat?T
00000008 D03A BEQ L_37 ; T=0x00000080
291: BulkBuf[ 0] = 0x70; /* Response Code */
0000000A 2170 MOV R1,#0x70
0000000C 4800 LDR R0,=BulkBuf ; BulkBuf
0000000E 7001 STRB R1,[R0,#0x0] ; BulkBuf
292: BulkBuf[ 1] = 0x00;
00000010 2100 MOV R1,#0x0
00000012 4800 LDR R0,=BulkBuf + 0x1 ; BulkBuf+1
00000014 7001 STRB R1,[R0,#0x0] ; BulkBuf+1
293: BulkBuf[ 2] = 0x02; /* Sense Key */
00000016 2102 MOV R1,#0x2
00000018 4800 LDR R0,=BulkBuf + 0x2 ; BulkBuf+2
0000001A 7001 STRB R1,[R0,#0x0] ; BulkBuf+2
294: BulkBuf[ 3] = 0x00;
0000001C 2100 MOV R1,#0x0
ARM COMPILER V2.53, mscuser 24/09/06 22:23:19 PAGE 22
0000001E 4800 LDR R0,=BulkBuf + 0x3 ; BulkBuf+3
00000020 7001 STRB R1,[R0,#0x0] ; BulkBuf+3
295: BulkBuf[ 4] = 0x00;
00000022 2100 MOV R1,#0x0
00000024 4800 LDR R0,=BulkBuf + 0x4 ; BulkBuf+4
00000026 7001 STRB R1,[R0,#0x0] ; BulkBuf+4
296: BulkBuf[ 5] = 0x00;
00000028 2100 MOV R1,#0x0
0000002A 4800 LDR R0,=BulkBuf + 0x5 ; BulkBuf+5
0000002C 7001 STRB R1,[R0,#0x0] ; BulkBuf+5
297: BulkBuf[ 6] = 0x00;
0000002E 2100 MOV R1,#0x0
00000030 4800 LDR R0,=BulkBuf + 0x6 ; BulkBuf+6
00000032 7001 STRB R1,[R0,#0x0] ; BulkBuf+6
298: BulkBuf[ 7] = 0x0A; /* Additional Length */
00000034 210A MOV R1,#0xA
00000036 4800 LDR R0,=BulkBuf + 0x7 ; BulkBuf+7
00000038 7001 STRB R1,[R0,#0x0] ; BulkBuf+7
299: BulkBuf[ 8] = 0x00;
0000003A 2100 MOV R1,#0x0
0000003C 4800 LDR R0,=BulkBuf + 0x8 ; BulkBuf+8
0000003E 7001 STRB R1,[R0,#0x0] ; BulkBuf+8
300: BulkBuf[ 9] = 0x00;
00000040 2100 MOV R1,#0x0
00000042 4800 LDR R0,=BulkBuf + 0x9 ; BulkBuf+9
00000044 7001 STRB R1,[R0,#0x0] ; BulkBuf+9
301: BulkBuf[10] = 0x00;
00000046 2100 MOV R1,#0x0
00000048 4800 LDR R0,=BulkBuf + 0xA ; BulkBuf+10
0000004A 7001 STRB R1,[R0,#0x0] ; BulkBuf+10
302: BulkBuf[11] = 0x00;
0000004C 2100 MOV R1,#0x0
0000004E 4800 LDR R0,=BulkBuf + 0xB ; BulkBuf+11
00000050 7001 STRB R1,[R0,#0x0] ; BulkBuf+11
303: BulkBuf[12] = 0x30; /* ASC */
00000052 2130 MOV R1,#0x30
00000054 4800 LDR R0,=BulkBuf + 0xC ; BulkBuf+12
00000056 7001 STRB R1,[R0,#0x0] ; BulkBuf+12
304: BulkBuf[13] = 0x01; /* ASCQ */
00000058 2101 MOV R1,#0x1
0000005A 4800 LDR R0,=BulkBuf + 0xD ; BulkBuf+13
0000005C 7001 STRB R1,[R0,#0x0] ; BulkBuf+13
305: BulkBuf[14] = 0x00;
0000005E 2100 MOV R1,#0x0
00000060 4800 LDR R0,=BulkBuf + 0xE ; BulkBuf+14
00000062 7001 STRB R1,[R0,#0x0] ; BulkBuf+14
306: BulkBuf[15] = 0x00;
00000064 2100 MOV R1,#0x0
00000066 4800 LDR R0,=BulkBuf + 0xF ; BulkBuf+15
00000068 7001 STRB R1,[R0,#0x0] ; BulkBuf+15
307: BulkBuf[16] = 0x00;
0000006A 2100 MOV R1,#0x0
0000006C 4800 LDR R0,=BulkBuf + 0x10 ; BulkBuf+16
0000006E 7001 STRB R1,[R0,#0x0] ; BulkBuf+16
308: BulkBuf[17] = 0x00;
00000070 2100 MOV R1,#0x0
00000072 4800 LDR R0,=BulkBuf + 0x11 ; BulkBuf+17
00000074 7001 STRB R1,[R0,#0x0] ; BulkBuf+17
310: BulkLen = 18;
00000076 2112 MOV R1,#0x12
00000078 4800 LDR R0,=BulkLen ; BulkLen
0000007A 7001 STRB R1,[R0,#0x0] ; BulkLen
311: DataInTransfer();
0000007C F7FF BL DataInTransfer?T ; T=0x0001 (1)
0000007E FFC0 BL DataInTransfer?T ; T=0x0001 (2)
312: }
ARM COMPILER V2.53, mscuser 24/09/06 22:23:19 PAGE 23
00000080 L_37:
00000080 BC08 POP {R3}
00000082 4718 BX R3
00000084 ENDP ; 'MSC_RequestSense?T'
*** CODE SEGMENT '?PR?MSC_Inquiry?T?mscuser':
321: void MSC_Inquiry (void) {
00000000 B500 PUSH {LR}
323: if (!DataInFormat()) return;
00000002 F7FF BL DataInFormat?T ; T=0x0001 (1)
00000004 FFFD BL DataInFormat?T ; T=0x0001 (2)
00000006 2800 CMP R0,#0x0 ; DataInFormat?T
00000008 D070 BEQ L_39 ; T=0x000000EC
325: BulkBuf[ 0] = 0x00; /* Direct Access Device */
0000000A 2100 MOV R1,#0x0
0000000C 4800 LDR R0,=BulkBuf ; BulkBuf
0000000E 7001 STRB R1,[R0,#0x0] ; BulkBuf
326: BulkBuf[ 1] = 0x80; /* RMB = 1: Removable Medium */
00000010 2180 MOV R1,#0x80
00000012 4800 LDR R0,=BulkBuf + 0x1 ; BulkBuf+1
00000014 7001 STRB R1,[R0,#0x0] ; BulkBuf+1
327: BulkBuf[ 2] = 0x00; /* Version: No conformance claim to standard */
00000016 2100 MOV R1,#0x0
00000018 4800 LDR R0,=BulkBuf + 0x2 ; BulkBuf+2
0000001A 7001 STRB R1,[R0,#0x0] ; BulkBuf+2
328: BulkBuf[ 3] = 0x01;
0000001C 2101 MOV R1,#0x1
0000001E 4800 LDR R0,=BulkBuf + 0x3 ; BulkBuf+3
00000020 7001 STRB R1,[R0,#0x0] ; BulkBuf+3
330: BulkBuf[ 4] = 36-4; /* Addition
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -