📄 usb_scsi.txt
字号:
; 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 + -