📄 memory.txt
字号:
;;;125 SetEPRxStatus(ENDP2, EP_RX_VALID); /* enable the next transaction*/
00005a 6081 STR r1,[r0,#8] ; CSW
00005c f44f5140 MOV r1,#0x3000
000060 2002 MOVS r0,#2
000062 f7fffffe BL SetEPRxStatus
;;;126
;;;127 Led_RW_ON();
000066 f7fffffe BL Led_RW_ON
;;;128
;;;129 if ((Transfer_Length == 0) || (Bot_State == BOT_CSW_Send))
00006a 68e0 LDR r0,[r4,#0xc] ; Transfer_Length
00006c b118 CBZ r0,|L2.118|
00006e 480c LDR r0,|L2.160|
000070 7800 LDRB r0,[r0,#0] ; Bot_State
000072 2804 CMP r0,#4
000074 d108 BNE |L2.136|
|L2.118|
;;;130 {
;;;131 Counter = 0;
000076 6065 STR r5,[r4,#4] ; Counter
;;;132 Set_CSW (CSW_CMD_PASSED, SEND_CSW_ENABLE);
000078 2101 MOVS r1,#1
00007a 2000 MOVS r0,#0
00007c f7fffffe BL Set_CSW
;;;133 Led_RW_OFF();
000080 e8bd41f0 POP {r4-r8,lr}
000084 f7ffbffe B.W Led_RW_OFF
|L2.136|
;;;134 }
;;;135 }
000088 e8bd81f0 POP {r4-r8,pc}
;;;136
ENDP
|L2.140|
00008c 00000000 DCD ||.data||
|L2.144|
000090 00000000 DCD Bulk_Data_Buff
|L2.148|
000094 00000000 DCD ||.bss||
|L2.152|
000098 00000000 DCD Data_Len
|L2.156|
00009c 00000000 DCD ||CSW||
|L2.160|
0000a0 00000000 DCD Bot_State
AREA ||i.Address_Management_Test||, CODE, READONLY, ALIGN=2
Address_Management_Test PROC
;;;144 bool Address_Management_Test(u8 Cmd)
;;;145 {
000000 b570 PUSH {r4-r6,lr}
;;;146 vu32 temp1;
;;;147 vu32 temp2;
;;;148
;;;149 /* Logical Block Address of First Block */
;;;150 temp1 = (CBW.CB[2] << 24) |
000002 4c1b LDR r4,|L3.112|
;;;151 (CBW.CB[3] << 16) |
;;;152 (CBW.CB[4] << 8) |
;;;153 (CBW.CB[5] << 0);
;;;154 /* Number of Blocks to transfer */
;;;155 temp2 = (CBW.CB[7] << 8) |
;;;156 (CBW.CB[8] << 0);
;;;157
;;;158 Memory_Offset = temp1 * Mass_Block_Size;
000004 4b1c LDR r3,|L3.120|
000006 f8d41011 LDR r1,[r4,#0x11] ;150 ; CBW
00000a 7d22 LDRB r2,[r4,#0x14] ;150 ; CBW
00000c ba09 REV r1,r1 ;150
00000e f02105ff BIC r5,r1,#0xff ;150
000012 4315 ORRS r5,r5,r2 ;150
000014 4a17 LDR r2,|L3.116|
000016 8ae1 LDRH r1,[r4,#0x16] ;155 ; CBW
000018 6812 LDR r2,[r2,#0] ; Mass_Block_Size
00001a ba49 REV16 r1,r1 ;155
00001c 4355 MULS r5,r2,r5
00001e 609d STR r5,[r3,#8] ; Memory_Offset
;;;159 Transfer_Length = temp2 * Mass_Block_Size;
000020 4351 MULS r1,r2,r1
;;;160
;;;161 if ((Memory_Offset + Transfer_Length) > Mass_Memory_Size)
000022 60d9 STR r1,[r3,#0xc] ; Transfer_Length
000024 689a LDR r2,[r3,#8] ; Memory_Offset
000026 4b15 LDR r3,|L3.124|
000028 440a ADD r2,r2,r1
00002a 681b LDR r3,[r3,#0] ; Mass_Memory_Size
00002c 429a CMP r2,r3
00002e d909 BLS |L3.68|
;;;162 {
;;;163 if (Cmd == SCSI_WRITE10)
000030 282a CMP r0,#0x2a
000032 d102 BNE |L3.58|
;;;164 {
;;;165 Bot_Abort(BOTH_DIR);
000034 2002 MOVS r0,#2
000036 f7fffffe BL Bot_Abort
|L3.58|
;;;166 }
;;;167 Bot_Abort(DIR_IN);
00003a 2000 MOVS r0,#0
00003c f7fffffe BL Bot_Abort
;;;168 Set_Scsi_Sense_Data(ILLEGAL_REQUEST, ADDRESS_OUT_OF_RANGE);
000040 2121 MOVS r1,#0x21
;;;169 Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);
;;;170 return (FALSE);
000042 e00a B |L3.90|
|L3.68|
;;;171 }
;;;172
;;;173
;;;174 if (CBW.dDataLength != Transfer_Length)
000044 68a2 LDR r2,[r4,#8] ; CBW
000046 428a CMP r2,r1
000048 d010 BEQ |L3.108|
;;;175 {
;;;176 if (Cmd == SCSI_WRITE10)
00004a 282a CMP r0,#0x2a
00004c d101 BNE |L3.82|
;;;177 {
;;;178 Bot_Abort(BOTH_DIR);
00004e 2002 MOVS r0,#2
000050 e000 B |L3.84|
|L3.82|
;;;179 }
;;;180 else
;;;181 {
;;;182 Bot_Abort(DIR_IN);
000052 2000 MOVS r0,#0
|L3.84|
000054 f7fffffe BL Bot_Abort
;;;183 }
;;;184 Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);
000058 2124 MOVS r1,#0x24
|L3.90|
00005a 2005 MOVS r0,#5
00005c f7fffffe BL Set_Scsi_Sense_Data
;;;185 Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);
000060 2100 MOVS r1,#0
000062 2001 MOVS r0,#1
000064 f7fffffe BL Set_CSW
;;;186 return (FALSE);
000068 2000 MOVS r0,#0
;;;187 }
;;;188 return (TRUE);
;;;189 }
00006a bd70 POP {r4-r6,pc}
|L3.108|
00006c 2001 MOVS r0,#1 ;188
00006e bd70 POP {r4-r6,pc}
;;;190
ENDP
|L3.112|
000070 00000000 DCD ||CBW||
|L3.116|
000074 00000000 DCD Mass_Block_Size
|L3.120|
000078 00000000 DCD ||.data||
|L3.124|
00007c 00000000 DCD Mass_Memory_Size
AREA ||.data||, DATA, ALIGN=2
Block_Read_count
000000 00000000 DCD 0x00000000
Counter
000004 00000000 DCD 0x00000000
Memory_Offset
000008 00000000 DCD 0x00000000
Transfer_Length
00000c 00000000 DCD 0x00000000
Block_offset
000010 00000000 DCD 0x00000000
i
000014 00000000 DCD 0x00000000
AREA ||.bss||, DATA, NOINIT, ALIGN=0
Data_Buffer
% 512
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -