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

📄 usb_scsi.txt

📁 STM32外部SRAM用作datamemery的程序 开发环境MDK
💻 TXT
📖 第 1 页 / 共 3 页
字号:
;;;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 + -