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

📄 usb_scsi.txt

📁 MP3_PLAYER.rar
💻 TXT
📖 第 1 页 / 共 2 页
字号:
000026  480b              LDR      r0,|L9.84|
000028  2105              MOVS     r1,#5
00002a  7081              STRB     r1,[r0,#2]  ; Scsi_Sense_Data
00002c  2124              MOVS     r1,#0x24
00002e  7301              STRB     r1,[r0,#0xc]  ; Scsi_Sense_Data
;;;206          Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);
;;;207          Set_CSW (CSW_CMD_FAILED, SEND_CSW_ENABLE);
000030  2101              MOVS     r1,#1
000032  e8bd4010          POP      {r4,lr}
000036  4608              MOV      r0,r1
000038  f7ffbffe          B.W      Set_CSW
                  |L9.60|
;;;208        }
;;;209        return;
;;;210      }
;;;211      else if (Bot_State == BOT_DATA_IN)
00003c  2802              CMP      r0,#2
00003e  d103              BNE      |L9.72|
                  |L9.64|
;;;212      {
;;;213        Read_Memory();
000040  e8bd4010          POP      {r4,lr}
000044  f7ffbffe          B.W      Read_Memory
                  |L9.72|
;;;214      }
;;;215    }
000048  bd10              POP      {r4,pc}
;;;216    
                          ENDP

00004a  0000              DCW      0x0000
                  |L9.76|
00004c  00000000          DCD      Bot_State
                  |L9.80|
000050  00000000          DCD      ||CBW||
                  |L9.84|
000054  00000000          DCD      Scsi_Sense_Data

                          AREA ||i.SCSI_Write10_Cmd||, CODE, READONLY, ALIGN=2

                  SCSI_Write10_Cmd PROC
;;;224    void SCSI_Write10_Cmd(void)
;;;225    {
000000  b510              PUSH     {r4,lr}
;;;226    
;;;227      if (Bot_State == BOT_IDLE)
000002  4c15              LDR      r4,|L10.88|
000004  7820              LDRB     r0,[r4,#0]  ; Bot_State
000006  b9f8              CBNZ     r0,|L10.72|
;;;228      {
;;;229        if (!(Address_Management_Test(SCSI_WRITE10)))/*address out of range*/
000008  202a              MOVS     r0,#0x2a
00000a  f7fffffe          BL       Address_Management_Test
00000e  2800              CMP      r0,#0
000010  d020              BEQ      |L10.84|
;;;230        {
;;;231          return;
;;;232        }
;;;233    
;;;234        if ((CBW.bmFlags & 0x80) == 0)
000012  4812              LDR      r0,|L10.92|
000014  7b00              LDRB     r0,[r0,#0xc]  ; CBW
000016  0600              LSLS     r0,r0,#24
000018  d408              BMI      |L10.44|
;;;235        {
;;;236          Bot_State = BOT_DATA_OUT;
00001a  2001              MOVS     r0,#1
00001c  7020              STRB     r0,[r4,#0]  ; Bot_State
;;;237          SetEPRxStatus(ENDP2, EP_RX_VALID);
00001e  e8bd4010          POP      {r4,lr}
000022  f44f5140          MOV      r1,#0x3000
000026  2002              MOVS     r0,#2
000028  f7ffbffe          B.W      SetEPRxStatus
                  |L10.44|
;;;238        }
;;;239        else
;;;240        {
;;;241          Bot_Abort(DIR_IN);
00002c  2000              MOVS     r0,#0
00002e  f7fffffe          BL       Bot_Abort
000032  480b              LDR      r0,|L10.96|
000034  2105              MOVS     r1,#5
000036  7081              STRB     r1,[r0,#2]  ; Scsi_Sense_Data
000038  2124              MOVS     r1,#0x24
00003a  7301              STRB     r1,[r0,#0xc]  ; Scsi_Sense_Data
;;;242          Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);
;;;243          Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);
00003c  2100              MOVS     r1,#0
00003e  e8bd4010          POP      {r4,lr}
000042  2001              MOVS     r0,#1
000044  f7ffbffe          B.W      Set_CSW
                  |L10.72|
;;;244        }
;;;245        return;
;;;246      }
;;;247      else if (Bot_State == BOT_DATA_OUT)
000048  2801              CMP      r0,#1
00004a  d103              BNE      |L10.84|
;;;248      {
;;;249        Write_Memory();
00004c  e8bd4010          POP      {r4,lr}
000050  f7ffbffe          B.W      Write_Memory
                  |L10.84|
;;;250      }
;;;251    }
000054  bd10              POP      {r4,pc}
;;;252    
                          ENDP

000056  0000              DCW      0x0000
                  |L10.88|
000058  00000000          DCD      Bot_State
                  |L10.92|
00005c  00000000          DCD      ||CBW||
                  |L10.96|
000060  00000000          DCD      Scsi_Sense_Data

                          AREA ||i.SCSI_Verify10_Cmd||, CODE, READONLY, ALIGN=2

                  SCSI_Verify10_Cmd PROC
;;;260    void SCSI_Verify10_Cmd(void)
;;;261    {
000000  b510              PUSH     {r4,lr}
;;;262      if ((CBW.dDataLength == 0) && !(CBW.CB[1] & BLKVFY))/* BLKVFY not set*/
000002  480b              LDR      r0,|L11.48|
000004  6881              LDR      r1,[r0,#8]  ; CBW
000006  b929              CBNZ     r1,|L11.20|
000008  7c00              LDRB     r0,[r0,#0x10]  ; CBW
00000a  0740              LSLS     r0,r0,#29
00000c  d402              BMI      |L11.20|
;;;263      {
;;;264        Set_CSW (CSW_CMD_PASSED, SEND_CSW_ENABLE);
00000e  2101              MOVS     r1,#1
000010  2000              MOVS     r0,#0
000012  e009              B        |L11.40|
                  |L11.20|
;;;265      }
;;;266      else
;;;267      {
;;;268        Bot_Abort(BOTH_DIR);
000014  2002              MOVS     r0,#2
000016  f7fffffe          BL       Bot_Abort
00001a  4806              LDR      r0,|L11.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
;;;269        Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_FIELED_IN_COMMAND);
;;;270        Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);
000024  2100              MOVS     r1,#0
000026  2001              MOVS     r0,#1
                  |L11.40|
000028  e8bd4010          POP      {r4,lr}
00002c  f7ffbffe          B.W      Set_CSW
;;;271      }
;;;272    }
;;;273    
                          ENDP

                  |L11.48|
000030  00000000          DCD      ||CBW||
                  |L11.52|
000034  00000000          DCD      Scsi_Sense_Data

                          AREA ||i.SCSI_Valid_Cmd||, CODE, READONLY, ALIGN=2

                  SCSI_Valid_Cmd PROC
;;;281    void SCSI_Valid_Cmd(void)
;;;282    {
000000  b510              PUSH     {r4,lr}
;;;283      if (CBW.dDataLength != 0)
000002  480a              LDR      r0,|L12.44|
000004  6880              LDR      r0,[r0,#8]  ; CBW
000006  b150              CBZ      r0,|L12.30|
;;;284      {
;;;285        Bot_Abort(BOTH_DIR);
000008  2002              MOVS     r0,#2
00000a  f7fffffe          BL       Bot_Abort
00000e  4808              LDR      r0,|L12.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
;;;286        Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_COMMAND);
;;;287        Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);
000018  2100              MOVS     r1,#0
00001a  2001              MOVS     r0,#1
00001c  e001              B        |L12.34|
                  |L12.30|
;;;288      }
;;;289      else
;;;290        Set_CSW (CSW_CMD_PASSED, SEND_CSW_ENABLE);
00001e  2101              MOVS     r1,#1
000020  2000              MOVS     r0,#0
                  |L12.34|
000022  e8bd4010          POP      {r4,lr}
000026  f7ffbffe          B.W      Set_CSW
;;;291    }
;;;292    
                          ENDP

00002a  0000              DCW      0x0000
                  |L12.44|
00002c  00000000          DCD      ||CBW||
                  |L12.48|
000030  00000000          DCD      Scsi_Sense_Data

                          AREA ||i.SCSI_Invalid_Cmd||, CODE, READONLY, ALIGN=2

                  SCSI_Invalid_Cmd PROC
;;;300    void SCSI_Invalid_Cmd(void)
;;;301    {
000000  b510              PUSH     {r4,lr}
;;;302      if (CBW.dDataLength == 0)
000002  480b              LDR      r0,|L13.48|
000004  6881              LDR      r1,[r0,#8]  ; CBW
000006  b111              CBZ      r1,|L13.14|
;;;303      {
;;;304        Bot_Abort(DIR_IN);
;;;305      }
;;;306      else
;;;307      {
;;;308        if ((CBW.bmFlags & 0x80) != 0)
000008  7b00              LDRB     r0,[r0,#0xc]  ; CBW
00000a  0600              LSLS     r0,r0,#24
00000c  d501              BPL      |L13.18|
                  |L13.14|
00000e  2000              MOVS     r0,#0                 ;304
000010  e000              B        |L13.20|
                  |L13.18|
;;;309        {
;;;310          Bot_Abort(DIR_IN);
;;;311        }
;;;312        else
;;;313        {
;;;314          Bot_Abort(BOTH_DIR);
000012  2002              MOVS     r0,#2
                  |L13.20|
000014  f7fffffe          BL       Bot_Abort
000018  4806              LDR      r0,|L13.52|
00001a  2105              MOVS     r1,#5                 ;310
00001c  7081              STRB     r1,[r0,#2]            ;310  ; Scsi_Sense_Data
00001e  2120              MOVS     r1,#0x20              ;310
000020  7301              STRB     r1,[r0,#0xc]          ;310  ; Scsi_Sense_Data
;;;315        }
;;;316      }
;;;317      Set_Scsi_Sense_Data(ILLEGAL_REQUEST, INVALID_COMMAND);
;;;318      Set_CSW (CSW_CMD_FAILED, SEND_CSW_DISABLE);
000022  2100              MOVS     r1,#0
000024  e8bd4010          POP      {r4,lr}
000028  2001              MOVS     r0,#1
00002a  f7ffbffe          B.W      Set_CSW
;;;319    }
;;;320    
                          ENDP

00002e  0000              DCW      0x0000
                  |L13.48|
000030  00000000          DCD      ||CBW||
                  |L13.52|
000034  00000000          DCD      Scsi_Sense_Data

⌨️ 快捷键说明

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