📄 usb_scsi.txt
字号:
;;;270 Set_Scsi_Sense_Data(CBW.bLUN, ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);
;;;271 Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);
000042 e8bde8bd POP {r4-r6,lr}
000046 2100 MOVS r1,#0
000048 2001 MOVS r0,#1
00004a f7fff7ff B.W Set_CSW
|L11.78|
;;;272 }
;;;273 return;
;;;274 }
;;;275 else if (Bot_State == BOT_DATA_OUT)
00004e 2c01 CMP r4,#1
000050 d103 BNE |L11.90|
;;;276 {
;;;277 Write_Memory(lun , LBA , BlockNbr);
000052 e8bde8bd POP {r4-r6,lr}
000056 f7fff7ff B.W Write_Memory
|L11.90|
;;;278 }
;;;279 }
00005a bd70 POP {r4-r6,pc}
;;;280
ENDP
|L11.92|
00005c 00000000 DCD Bot_State
|L11.96|
000060 00000000 DCD ||CBW||
|L11.100|
000064 00000000 DCD Scsi_Sense_Data
AREA ||i.SCSI_Verify10_Cmd||, CODE, READONLY, ALIGN=2
SCSI_Verify10_Cmd PROC
;;;288 void SCSI_Verify10_Cmd(u8 lun)
;;;289 {
000000 b510 PUSH {r4,lr}
;;;290 if ((CBW.dDataLength == 0) && !(CBW.CB[1] & BLKVFY))/* BLKVFY not set*/
000002 480b LDR r0,|L12.48|
000004 6881 LDR r1,[r0,#8] ; CBW
000006 b929 CBNZ r1,|L12.20|
000008 7c00 LDRB r0,[r0,#0x10] ; CBW
00000a 0740 LSLS r0,r0,#29
00000c d402 BMI |L12.20|
;;;291 {
;;;292 Set_CSW (CSW_CMD_PASSED, SEND_CSW_ENABLE);
00000e 2101 MOVS r1,#1
000010 2000 MOVS r0,#0
000012 e009 B |L12.40|
|L12.20|
;;;293 }
;;;294 else
;;;295 {
;;;296 Bot_Abort(BOTH_DIR);
000014 2002 MOVS r0,#2
000016 f7fff7ff BL Bot_Abort
00001a 4806 LDR r0,|L12.52|
00001c 2105 MOVS r1,#5
00001e 7081 STRB r1,[r0,#2] ; Scsi_Sense_Data
000020 2124 MOVS r1,#0x24
000022 7301 STRB r1,[r0,#0xc] ; Scsi_Sense_Data
;;;297 Set_Scsi_Sense_Data(CBW.bLUN, ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);
;;;298 Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);
000024 2100 MOVS r1,#0
000026 2001 MOVS r0,#1
|L12.40|
000028 e8bde8bd POP {r4,lr}
00002c f7fff7ff B.W Set_CSW
;;;299 }
;;;300 }
;;;301 /*******************************************************************************
ENDP
|L12.48|
000030 00000000 DCD ||CBW||
|L12.52|
000034 00000000 DCD Scsi_Sense_Data
AREA ||i.SCSI_Valid_Cmd||, CODE, READONLY, ALIGN=2
SCSI_Valid_Cmd PROC
;;;308 void SCSI_Valid_Cmd(u8 lun)
;;;309 {
000000 b510 PUSH {r4,lr}
;;;310 if (CBW.dDataLength != 0)
000002 480a LDR r0,|L13.44|
000004 6880 LDR r0,[r0,#8] ; CBW
000006 b150 CBZ r0,|L13.30|
;;;311 {
;;;312 Bot_Abort(BOTH_DIR);
000008 2002 MOVS r0,#2
00000a f7fff7ff BL Bot_Abort
00000e 4808 LDR r0,|L13.48|
000010 2105 MOVS r1,#5
000012 7081 STRB r1,[r0,#2] ; Scsi_Sense_Data
000014 2120 MOVS r1,#0x20
000016 7301 STRB r1,[r0,#0xc] ; Scsi_Sense_Data
;;;313 Set_Scsi_Sense_Data(CBW.bLUN, ILLEGAL_REQUEST, INVALID_COMMAND);
;;;314 Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);
000018 2100 MOVS r1,#0
00001a 2001 MOVS r0,#1
00001c e001 B |L13.34|
|L13.30|
;;;315 }
;;;316 else
;;;317 Set_CSW (CSW_CMD_PASSED, SEND_CSW_ENABLE);
00001e 2101 MOVS r1,#1
000020 2000 MOVS r0,#0
|L13.34|
000022 e8bde8bd POP {r4,lr}
000026 f7fff7ff B.W Set_CSW
;;;318 }
;;;319 /*******************************************************************************
ENDP
00002a 0000 DCW 0x0000
|L13.44|
00002c 00000000 DCD ||CBW||
|L13.48|
000030 00000000 DCD Scsi_Sense_Data
AREA ||i.SCSI_TestUnitReady_Cmd||, CODE, READONLY, ALIGN=2
SCSI_TestUnitReady_Cmd PROC
;;;326 void SCSI_TestUnitReady_Cmd(u8 lun)
;;;327 {
000000 b510 PUSH {r4,lr}
;;;328 if (MAL_GetStatus(lun))
000002 f7fff7ff BL MAL_GetStatus
000006 b168 CBZ r0,|L14.36|
000008 4809 LDR r0,|L14.48|
00000a 2102 MOVS r1,#2
00000c 7081 STRB r1,[r0,#2] ; Scsi_Sense_Data
00000e 213a MOVS r1,#0x3a
000010 7301 STRB r1,[r0,#0xc] ; Scsi_Sense_Data
;;;329 {
;;;330 Set_Scsi_Sense_Data(CBW.bLUN, NOT_READY, MEDIUM_NOT_PRESENT);
;;;331 Set_CSW (CSW_CMD_FAILED, SEND_CSW_ENABLE);
000012 2101 MOVS r1,#1
000014 4608 MOV r0,r1
000016 f7fff7ff BL Set_CSW
;;;332 Bot_Abort(DIR_IN);
00001a e8bde8bd POP {r4,lr}
00001e 2000 MOVS r0,#0
000020 f7fff7ff B.W Bot_Abort
|L14.36|
;;;333 return;
;;;334 }
;;;335 else
;;;336 {
;;;337 Set_CSW (CSW_CMD_PASSED, SEND_CSW_ENABLE);
000024 2101 MOVS r1,#1
000026 e8bde8bd POP {r4,lr}
00002a 2000 MOVS r0,#0
00002c f7fff7ff B.W Set_CSW
;;;338 }
;;;339 }
;;;340 /*******************************************************************************
ENDP
|L14.48|
000030 00000000 DCD Scsi_Sense_Data
AREA ||i.SCSI_Format_Cmd||, CODE, READONLY, ALIGN=2
SCSI_Format_Cmd PROC
;;;347 void SCSI_Format_Cmd(u8 lun)
;;;348 {
000000 b510 PUSH {r4,lr}
;;;349 if (MAL_GetStatus(lun))
000002 f7fff7ff BL MAL_GetStatus
000006 b168 CBZ r0,|L15.36|
000008 480a LDR r0,|L15.52|
00000a 2102 MOVS r1,#2
00000c 7081 STRB r1,[r0,#2] ; Scsi_Sense_Data
00000e 213a MOVS r1,#0x3a
000010 7301 STRB r1,[r0,#0xc] ; Scsi_Sense_Data
;;;350 {
;;;351 Set_Scsi_Sense_Data(CBW.bLUN, NOT_READY, MEDIUM_NOT_PRESENT);
;;;352 Set_CSW (CSW_CMD_FAILED, SEND_CSW_ENABLE);
000012 2101 MOVS r1,#1
000014 4608 MOV r0,r1
000016 f7fff7ff BL Set_CSW
;;;353 Bot_Abort(DIR_IN);
00001a e8bde8bd POP {r4,lr}
00001e 2000 MOVS r0,#0
000020 f7fff7ff B.W Bot_Abort
|L15.36|
;;;354 return;
;;;355 }
;;;356 else
;;;357 {
;;;358 NAND_Format();
000024 f7fff7ff BL NAND_Format
;;;359 Set_CSW (CSW_CMD_PASSED, SEND_CSW_ENABLE);
000028 2101 MOVS r1,#1
00002a e8bde8bd POP {r4,lr}
00002e 2000 MOVS r0,#0
000030 f7fff7ff B.W Set_CSW
;;;360 }
;;;361 }
;;;362 /*******************************************************************************
ENDP
|L15.52|
000034 00000000 DCD Scsi_Sense_Data
AREA ||i.SCSI_Invalid_Cmd||, CODE, READONLY, ALIGN=2
SCSI_Invalid_Cmd PROC
;;;369 void SCSI_Invalid_Cmd(u8 lun)
;;;370 {
000000 b510 PUSH {r4,lr}
;;;371 if (CBW.dDataLength == 0)
000002 480b LDR r0,|L16.48|
000004 6881 LDR r1,[r0,#8] ; CBW
000006 b111 CBZ r1,|L16.14|
;;;372 {
;;;373 Bot_Abort(DIR_IN);
;;;374 }
;;;375 else
;;;376 {
;;;377 if ((CBW.bmFlags & 0x80) != 0)
000008 7b00 LDRB r0,[r0,#0xc] ; CBW
00000a 0600 LSLS r0,r0,#24
00000c d501 BPL |L16.18|
|L16.14|
00000e 2000 MOVS r0,#0 ;373
000010 e000 B |L16.20|
|L16.18|
;;;378 {
;;;379 Bot_Abort(DIR_IN);
;;;380 }
;;;381 else
;;;382 {
;;;383 Bot_Abort(BOTH_DIR);
000012 2002 MOVS r0,#2
|L16.20|
000014 f7fff7ff BL Bot_Abort
000018 4806 LDR r0,|L16.52|
00001a 2105 MOVS r1,#5 ;379
00001c 7081 STRB r1,[r0,#2] ;379 ; Scsi_Sense_Data
00001e 2120 MOVS r1,#0x20 ;379
000020 7301 STRB r1,[r0,#0xc] ;379 ; Scsi_Sense_Data
;;;384 }
;;;385 }
;;;386 Set_Scsi_Sense_Data(CBW.bLUN, ILLEGAL_REQUEST, INVALID_COMMAND);
;;;387 Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);
000022 2100 MOVS r1,#0
000024 e8bde8bd POP {r4,lr}
000028 2001 MOVS r0,#1
00002a f7fff7ff B.W Set_CSW
;;;388 }
;;;389
ENDP
00002e 0000 DCW 0x0000
|L16.48|
000030 00000000 DCD ||CBW||
|L16.52|
000034 00000000 DCD Scsi_Sense_Data
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -