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

📄 usb_scsi.txt

📁 STM32外部SRAM用作datamemery的程序 开发环境MDK
💻 TXT
📖 第 1 页 / 共 3 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 934] for uVision
; commandline ArmCC [--split_sections --debug -c --asm --interleave -o.\Obj\usb_scsi.o --depend=.\Obj\usb_scsi.d --device=DARMSTM --apcs=interwork -O3 -I..\..\include -I..\..\..\FWLib\library\inc -I..\..\..\USBLib\library\inc -I..\..\SRAM -I"D:\Program Files\MDK KEIL\ARM\INC\ST\STM32F10x" -D__MICROLIB --omf_browse=.\Obj\usb_scsi.crf ..\..\source\usb_scsi.c]
                          THUMB

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

                  SCSI_Inquiry_Cmd PROC
;;;52     
;;;53       if (CBW.CB[1] & 0x01)/*Evpd is set*/
000000  4908              LDR      r1,|L1.36|
000002  7c0a              LDRB     r2,[r1,#0x10]  ; CBW
000004  07d2              LSLS     r2,r2,#31
000006  d002              BEQ      |L1.14|
;;;54       {
;;;55         Inquiry_Data = Page00_Inquiry_Data;
000008  4807              LDR      r0,|L1.40|
;;;56         Inquiry_Data_Length = 5;
00000a  2105              MOVS     r1,#5
00000c  e007              B        |L1.30|
                  |L1.14|
;;;57       }
;;;58       else
;;;59       {
;;;60     
;;;61         if ( lun == 0)
00000e  b908              CBNZ     r0,|L1.20|
;;;62         {
;;;63           Inquiry_Data = Standard_Inquiry_Data;
000010  4806              LDR      r0,|L1.44|
000012  e000              B        |L1.22|
                  |L1.20|
;;;64         }
;;;65         else
;;;66         {
;;;67           Inquiry_Data = Standard_Inquiry_Data2;
000014  4806              LDR      r0,|L1.48|
                  |L1.22|
;;;68         }
;;;69     
;;;70         if (CBW.CB[4] <= STANDARD_INQUIRY_DATA_LEN)
000016  7cc9              LDRB     r1,[r1,#0x13]  ; CBW
000018  2924              CMP      r1,#0x24
00001a  d900              BLS      |L1.30|
;;;71           Inquiry_Data_Length = CBW.CB[4];
;;;72         else
;;;73           Inquiry_Data_Length = STANDARD_INQUIRY_DATA_LEN;
00001c  2124              MOVS     r1,#0x24
                  |L1.30|
;;;74     
;;;75       }
;;;76       Transfer_Data_Request(Inquiry_Data, Inquiry_Data_Length);
00001e  f7fff7ff          B.W      Transfer_Data_Request
;;;77     }
;;;78     
                          ENDP

000022  0000              DCW      0x0000
                  |L1.36|
000024  00000000          DCD      ||CBW||
                  |L1.40|
000028  00000000          DCD      Page00_Inquiry_Data
                  |L1.44|
00002c  00000000          DCD      Standard_Inquiry_Data
                  |L1.48|
000030  00000000          DCD      Standard_Inquiry_Data2

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

                  Set_Scsi_Sense_Data PROC
000000  4801              LDR      r0,|L2.8|
000002  7081              STRB     r1,[r0,#2]  ; Scsi_Sense_Data
000004  7302              STRB     r2,[r0,#0xc]  ; Scsi_Sense_Data
000006  4770              BX       lr
                          ENDP

                  |L2.8|
000008  00000000          DCD      Scsi_Sense_Data

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

                  SCSI_ReadFormatCapacity_Cmd PROC
;;;86     void SCSI_ReadFormatCapacity_Cmd(u8 lun)
;;;87     {
000000  b510              PUSH     {r4,lr}
000002  4604              MOV      r4,r0
;;;88     
;;;89       if (MAL_GetStatus(lun) != 0 )
000004  f7fff7ff          BL       MAL_GetStatus
000008  b168              CBZ      r0,|L3.38|
00000a  4813              LDR      r0,|L3.88|
00000c  2102              MOVS     r1,#2
00000e  7081              STRB     r1,[r0,#2]  ; Scsi_Sense_Data
000010  213a              MOVS     r1,#0x3a
000012  7301              STRB     r1,[r0,#0xc]  ; Scsi_Sense_Data
;;;90       {
;;;91         Set_Scsi_Sense_Data(CBW.bLUN, NOT_READY, MEDIUM_NOT_PRESENT);
;;;92         Set_CSW (CSW_CMD_FAILED, SEND_CSW_ENABLE);
000014  2101              MOVS     r1,#1
000016  4608              MOV      r0,r1
000018  f7fff7ff          BL       Set_CSW
;;;93         Bot_Abort(DIR_IN);
00001c  e8bde8bd          POP      {r4,lr}
000020  2000              MOVS     r0,#0
000022  f7fff7ff          B.W      Bot_Abort
                  |L3.38|
;;;94         return;
;;;95       }
;;;96       ReadFormatCapacity_Data[4] = (u8)(Mass_Block_Count[lun] >> 24);
000026  480d              LDR      r0,|L3.92|
000028  f850f850          LDR      r1,[r0,r4,LSL #2]
00002c  480c              LDR      r0,|L3.96|
00002e  0e0a              LSRS     r2,r1,#24
000030  7102              STRB     r2,[r0,#4]  ; ReadFormatCapacity_Data
;;;97       ReadFormatCapacity_Data[5] = (u8)(Mass_Block_Count[lun] >> 16);
000032  0c0a              LSRS     r2,r1,#16
000034  7142              STRB     r2,[r0,#5]  ; ReadFormatCapacity_Data
;;;98       ReadFormatCapacity_Data[6] = (u8)(Mass_Block_Count[lun] >>  8);
000036  0a0a              LSRS     r2,r1,#8
000038  7182              STRB     r2,[r0,#6]  ; ReadFormatCapacity_Data
;;;99       ReadFormatCapacity_Data[7] = (u8)(Mass_Block_Count[lun]);
00003a  71c1              STRB     r1,[r0,#7]  ; ReadFormatCapacity_Data
;;;100    
;;;101      ReadFormatCapacity_Data[9] = (u8)(Mass_Block_Size[lun] >>  16);
00003c  4909              LDR      r1,|L3.100|
00003e  f851f851          LDR      r1,[r1,r4,LSL #2]
000042  0c0a              LSRS     r2,r1,#16
000044  7242              STRB     r2,[r0,#9]  ; ReadFormatCapacity_Data
;;;102      ReadFormatCapacity_Data[10] = (u8)(Mass_Block_Size[lun] >>  8);
000046  0a0a              LSRS     r2,r1,#8
000048  7282              STRB     r2,[r0,#0xa]  ; ReadFormatCapacity_Data
;;;103      ReadFormatCapacity_Data[11] = (u8)(Mass_Block_Size[lun]);
00004a  72c1              STRB     r1,[r0,#0xb]  ; ReadFormatCapacity_Data
;;;104      Transfer_Data_Request(ReadFormatCapacity_Data, READ_FORMAT_CAPACITY_DATA_LEN);
00004c  e8bde8bd          POP      {r4,lr}
000050  210c              MOVS     r1,#0xc
000052  f7fff7ff          B.W      Transfer_Data_Request
;;;105    }
;;;106    
                          ENDP

000056  0000              DCW      0x0000
                  |L3.88|
000058  00000000          DCD      Scsi_Sense_Data
                  |L3.92|
00005c  00000000          DCD      Mass_Block_Count
                  |L3.96|
000060  00000000          DCD      ReadFormatCapacity_Data
                  |L3.100|
000064  00000000          DCD      Mass_Block_Size

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

                  SCSI_ReadCapacity10_Cmd PROC
;;;114    void SCSI_ReadCapacity10_Cmd(u8 lun)
;;;115    {
000000  b510              PUSH     {r4,lr}
000002  4604              MOV      r4,r0
;;;116    
;;;117      if (MAL_GetStatus(lun))
000004  f7fff7ff          BL       MAL_GetStatus
000008  b168              CBZ      r0,|L4.38|
00000a  4814              LDR      r0,|L4.92|
00000c  2102              MOVS     r1,#2
00000e  7081              STRB     r1,[r0,#2]  ; Scsi_Sense_Data
000010  213a              MOVS     r1,#0x3a
000012  7301              STRB     r1,[r0,#0xc]  ; Scsi_Sense_Data
;;;118      {
;;;119        Set_Scsi_Sense_Data(CBW.bLUN, NOT_READY, MEDIUM_NOT_PRESENT);
;;;120        Set_CSW (CSW_CMD_FAILED, SEND_CSW_ENABLE);
000014  2101              MOVS     r1,#1
000016  4608              MOV      r0,r1
000018  f7fff7ff          BL       Set_CSW
;;;121        Bot_Abort(DIR_IN);
00001c  e8bde8bd          POP      {r4,lr}
000020  2000              MOVS     r0,#0
000022  f7fff7ff          B.W      Bot_Abort
                  |L4.38|
;;;122        return;
;;;123      }
;;;124    
;;;125      ReadCapacity10_Data[0] = (u8)(Mass_Block_Count[lun] - 1 >> 24);
000026  480e              LDR      r0,|L4.96|
000028  f850f850          LDR      r1,[r0,r4,LSL #2]
00002c  480d              LDR      r0,|L4.100|
00002e  1e49              SUBS     r1,r1,#1
000030  0e0a              LSRS     r2,r1,#24
000032  7002              STRB     r2,[r0,#0]  ; ReadCapacity10_Data
;;;126      ReadCapacity10_Data[1] = (u8)(Mass_Block_Count[lun] - 1 >> 16);
000034  0c0a              LSRS     r2,r1,#16
000036  7042              STRB     r2,[r0,#1]  ; ReadCapacity10_Data
;;;127      ReadCapacity10_Data[2] = (u8)(Mass_Block_Count[lun] - 1 >>  8);
000038  0a0a              LSRS     r2,r1,#8
00003a  7082              STRB     r2,[r0,#2]  ; ReadCapacity10_Data
;;;128      ReadCapacity10_Data[3] = (u8)(Mass_Block_Count[lun] - 1);
00003c  70c1              STRB     r1,[r0,#3]  ; ReadCapacity10_Data
;;;129    
;;;130      ReadCapacity10_Data[4] = (u8)(Mass_Block_Size[lun] >>  24);
00003e  490a              LDR      r1,|L4.104|
000040  f851f851          LDR      r1,[r1,r4,LSL #2]
000044  0e0a              LSRS     r2,r1,#24
000046  7102              STRB     r2,[r0,#4]  ; ReadCapacity10_Data
;;;131      ReadCapacity10_Data[5] = (u8)(Mass_Block_Size[lun] >>  16);
000048  0c0a              LSRS     r2,r1,#16
00004a  7142              STRB     r2,[r0,#5]  ; ReadCapacity10_Data
;;;132      ReadCapacity10_Data[6] = (u8)(Mass_Block_Size[lun] >>  8);
00004c  0a0a              LSRS     r2,r1,#8
00004e  7182              STRB     r2,[r0,#6]  ; ReadCapacity10_Data
;;;133      ReadCapacity10_Data[7] = (u8)(Mass_Block_Size[lun]);
000050  71c1              STRB     r1,[r0,#7]  ; ReadCapacity10_Data
;;;134      Transfer_Data_Request(ReadCapacity10_Data, READ_CAPACITY10_DATA_LEN);
000052  e8bde8bd          POP      {r4,lr}
000056  2108              MOVS     r1,#8
000058  f7fff7ff          B.W      Transfer_Data_Request
;;;135    }
;;;136    
                          ENDP

                  |L4.92|
00005c  00000000          DCD      Scsi_Sense_Data
                  |L4.96|
000060  00000000          DCD      Mass_Block_Count
                  |L4.100|
000064  00000000          DCD      ReadCapacity10_Data
                  |L4.104|
000068  00000000          DCD      Mass_Block_Size

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

                  SCSI_ModeSense6_Cmd PROC
;;;145    {
;;;146      Transfer_Data_Request(Mode_Sense6_data, MODE_SENSE6_DATA_LEN);
000000  2104              MOVS     r1,#4
000002  4801              LDR      r0,|L5.8|
000004  f7fff7ff          B.W      Transfer_Data_Request
;;;147    }
;;;148    
                          ENDP

                  |L5.8|
000008  00000000          DCD      Mode_Sense6_data

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

                  SCSI_ModeSense10_Cmd PROC
;;;157    {
;;;158      Transfer_Data_Request(Mode_Sense10_data, MODE_SENSE10_DATA_LEN);
000000  2108              MOVS     r1,#8
000002  4801              LDR      r0,|L6.8|
000004  f7fff7ff          B.W      Transfer_Data_Request
;;;159    }
;;;160    
                          ENDP

                  |L6.8|
000008  00000000          DCD      Mode_Sense10_data

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

                  SCSI_RequestSense_Cmd PROC
;;;171    
;;;172      if (CBW.CB[4] <= REQUEST_SENSE_DATA_LEN)
000000  4803              LDR      r0,|L7.16|
000002  7cc1              LDRB     r1,[r0,#0x13]  ; CBW

⌨️ 快捷键说明

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