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

📄 usb_scsi.txt

📁 MP3_PLAYER.rar
💻 TXT
📖 第 1 页 / 共 2 页
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 938] 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.\Code\FATSystem\INC -I.\Code\Library\INC -I.\Code\SDCard\INC -I.\Code\Speaker\INC -I.\Code\System\INC -I.\Code\USBMassStorage\INC -I.\Code\User\INC -I.\Code\VS1003\INC -ID:\Keil\ARM\INC\ST\STM32F10x --omf_browse=.\Obj\usb_scsi.crf Code\USBMassStorage\SRC\usb_scsi.c]
                          THUMB

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

                  SCSI_Inquiry_Cmd PROC
;;;51     
;;;52       if (CBW.CB[1] & 0x01)/*Evpd is set*/
000000  4906              LDR      r1,|L1.28|
000002  7c08              LDRB     r0,[r1,#0x10]  ; CBW
000004  07c0              LSLS     r0,r0,#31
000006  d002              BEQ      |L1.14|
;;;53       {
;;;54         Inquiry_Data = Page00_Inquiry_Data;
000008  4805              LDR      r0,|L1.32|
;;;55         Inquiry_Data_Length = 5;
00000a  2105              MOVS     r1,#5
00000c  e004              B        |L1.24|
                  |L1.14|
;;;56       }
;;;57       else
;;;58       {
;;;59         Inquiry_Data = Standard_Inquiry_Data;
;;;60         if (CBW.CB[4] <= STANDARD_INQUIRY_DATA_LEN)
00000e  7cc9              LDRB     r1,[r1,#0x13]  ; CBW
000010  4804              LDR      r0,|L1.36|
000012  2924              CMP      r1,#0x24
000014  d900              BLS      |L1.24|
;;;61           Inquiry_Data_Length = CBW.CB[4];
;;;62         else
;;;63           Inquiry_Data_Length = STANDARD_INQUIRY_DATA_LEN;
000016  2124              MOVS     r1,#0x24
                  |L1.24|
;;;64       }
;;;65       Transfer_Data_Request(Inquiry_Data, Inquiry_Data_Length);
000018  f7ffbffe          B.W      Transfer_Data_Request
;;;66     }
;;;67     
                          ENDP

                  |L1.28|
00001c  00000000          DCD      ||CBW||
                  |L1.32|
000020  00000000          DCD      Page00_Inquiry_Data
                  |L1.36|
000024  00000000          DCD      Standard_Inquiry_Data

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

                  SCSI_ReadFormatCapacity_Cmd PROC
;;;76     {
;;;77       ReadFormatCapacity_Data[4] = (u8)(Mass_Block_Count >> 24);
000000  4809              LDR      r0,|L2.40|
000002  6801              LDR      r1,[r0,#0]  ; Mass_Block_Count
000004  4809              LDR      r0,|L2.44|
000006  0e0a              LSRS     r2,r1,#24
000008  7102              STRB     r2,[r0,#4]  ; ReadFormatCapacity_Data
;;;78       ReadFormatCapacity_Data[5] = (u8)(Mass_Block_Count >> 16);
00000a  0c0a              LSRS     r2,r1,#16
00000c  7142              STRB     r2,[r0,#5]  ; ReadFormatCapacity_Data
;;;79       ReadFormatCapacity_Data[6] = (u8)(Mass_Block_Count >>  8);
00000e  0a0a              LSRS     r2,r1,#8
000010  7182              STRB     r2,[r0,#6]  ; ReadFormatCapacity_Data
;;;80       ReadFormatCapacity_Data[7] = (u8)(Mass_Block_Count);
000012  71c1              STRB     r1,[r0,#7]  ; ReadFormatCapacity_Data
;;;81     
;;;82       ReadFormatCapacity_Data[9] = (u8)(Mass_Block_Size >>  16);
000014  4906              LDR      r1,|L2.48|
000016  6809              LDR      r1,[r1,#0]  ; Mass_Block_Size
000018  0c0a              LSRS     r2,r1,#16
00001a  7242              STRB     r2,[r0,#9]  ; ReadFormatCapacity_Data
;;;83       ReadFormatCapacity_Data[10] = (u8)(Mass_Block_Size >>  8);
00001c  0a0a              LSRS     r2,r1,#8
00001e  7282              STRB     r2,[r0,#0xa]  ; ReadFormatCapacity_Data
;;;84       ReadFormatCapacity_Data[11] = (u8)(Mass_Block_Size);
000020  72c1              STRB     r1,[r0,#0xb]  ; ReadFormatCapacity_Data
;;;85       Transfer_Data_Request(ReadFormatCapacity_Data, READ_FORMAT_CAPACITY_DATA_LEN);
000022  210c              MOVS     r1,#0xc
000024  f7ffbffe          B.W      Transfer_Data_Request
;;;86     }
;;;87     
                          ENDP

                  |L2.40|
000028  00000000          DCD      Mass_Block_Count
                  |L2.44|
00002c  00000000          DCD      ReadFormatCapacity_Data
                  |L2.48|
000030  00000000          DCD      Mass_Block_Size

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

                  SCSI_ReadCapacity10_Cmd PROC
;;;96     {
;;;97       ReadCapacity10_Data[0] = (u8)(Mass_Block_Count - 1 >> 24);
000000  480b              LDR      r0,|L3.48|
000002  6801              LDR      r1,[r0,#0]  ; Mass_Block_Count
000004  480b              LDR      r0,|L3.52|
000006  1e49              SUBS     r1,r1,#1
000008  0e0a              LSRS     r2,r1,#24
00000a  7002              STRB     r2,[r0,#0]  ; ReadCapacity10_Data
;;;98       ReadCapacity10_Data[1] = (u8)(Mass_Block_Count - 1 >> 16);
00000c  0c0a              LSRS     r2,r1,#16
00000e  7042              STRB     r2,[r0,#1]  ; ReadCapacity10_Data
;;;99       ReadCapacity10_Data[2] = (u8)(Mass_Block_Count - 1 >>  8);
000010  0a0a              LSRS     r2,r1,#8
000012  7082              STRB     r2,[r0,#2]  ; ReadCapacity10_Data
;;;100      ReadCapacity10_Data[3] = (u8)(Mass_Block_Count - 1);
000014  70c1              STRB     r1,[r0,#3]  ; ReadCapacity10_Data
;;;101    
;;;102      ReadCapacity10_Data[4] = (u8)(Mass_Block_Size >>  24);
000016  4908              LDR      r1,|L3.56|
000018  6809              LDR      r1,[r1,#0]  ; Mass_Block_Size
00001a  0e0a              LSRS     r2,r1,#24
00001c  7102              STRB     r2,[r0,#4]  ; ReadCapacity10_Data
;;;103      ReadCapacity10_Data[5] = (u8)(Mass_Block_Size >>  16);
00001e  0c0a              LSRS     r2,r1,#16
000020  7142              STRB     r2,[r0,#5]  ; ReadCapacity10_Data
;;;104      ReadCapacity10_Data[6] = (u8)(Mass_Block_Size >>  8);
000022  0a0a              LSRS     r2,r1,#8
000024  7182              STRB     r2,[r0,#6]  ; ReadCapacity10_Data
;;;105      ReadCapacity10_Data[7] = (u8)(Mass_Block_Size);
000026  71c1              STRB     r1,[r0,#7]  ; ReadCapacity10_Data
;;;106      Transfer_Data_Request(ReadCapacity10_Data, READ_CAPACITY10_DATA_LEN);
000028  2108              MOVS     r1,#8
00002a  f7ffbffe          B.W      Transfer_Data_Request
;;;107    }
;;;108    
                          ENDP

00002e  0000              DCW      0x0000
                  |L3.48|
000030  00000000          DCD      Mass_Block_Count
                  |L3.52|
000034  00000000          DCD      ReadCapacity10_Data
                  |L3.56|
000038  00000000          DCD      Mass_Block_Size

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

                  SCSI_ModeSense6_Cmd PROC
;;;117    {
;;;118      Transfer_Data_Request(Mode_Sense6_data, MODE_SENSE6_DATA_LEN);
000000  2104              MOVS     r1,#4
000002  4801              LDR      r0,|L4.8|
000004  f7ffbffe          B.W      Transfer_Data_Request
;;;119    }
;;;120    
                          ENDP

                  |L4.8|
000008  00000000          DCD      Mode_Sense6_data

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

                  SCSI_ModeSense10_Cmd PROC
;;;129    {
;;;130      Transfer_Data_Request(Mode_Sense10_data, MODE_SENSE10_DATA_LEN);
000000  2108              MOVS     r1,#8
000002  4801              LDR      r0,|L5.8|
000004  f7ffbffe          B.W      Transfer_Data_Request
;;;131    }
;;;132    
                          ENDP

                  |L5.8|
000008  00000000          DCD      Mode_Sense10_data

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

                  SCSI_RequestSense_Cmd PROC
;;;143    
;;;144      if (CBW.CB[4] <= REQUEST_SENSE_DATA_LEN)
000000  4803              LDR      r0,|L6.16|
000002  7cc1              LDRB     r1,[r0,#0x13]  ; CBW
000004  2912              CMP      r1,#0x12
000006  d900              BLS      |L6.10|
;;;145      {
;;;146        Request_Sense_data_Length = CBW.CB[4];
;;;147      }
;;;148      else
;;;149      {
;;;150        Request_Sense_data_Length = REQUEST_SENSE_DATA_LEN;
000008  2112              MOVS     r1,#0x12
                  |L6.10|
;;;151      }
;;;152      Transfer_Data_Request(Scsi_Sense_Data, Request_Sense_data_Length);
00000a  4802              LDR      r0,|L6.20|
00000c  f7ffbffe          B.W      Transfer_Data_Request
;;;153    }
;;;154    
                          ENDP

                  |L6.16|
000010  00000000          DCD      ||CBW||
                  |L6.20|
000014  00000000          DCD      Scsi_Sense_Data

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

                  Set_Scsi_Sense_Data PROC
000000  4a01              LDR      r2,|L7.8|
000002  7090              STRB     r0,[r2,#2]  ; Scsi_Sense_Data
000004  7311              STRB     r1,[r2,#0xc]  ; Scsi_Sense_Data
000006  4770              BX       lr
                          ENDP

                  |L7.8|
000008  00000000          DCD      Scsi_Sense_Data

                          AREA ||i.SCSI_Start_Stop_Unit_Cmd||, CODE, READONLY, ALIGN=1

                  SCSI_Start_Stop_Unit_Cmd PROC
;;;177    {
;;;178      Set_CSW (CSW_CMD_PASSED, SEND_CSW_ENABLE);
000000  2101              MOVS     r1,#1
000002  2000              MOVS     r0,#0
000004  f7ffbffe          B.W      Set_CSW
;;;179    }
;;;180    
                          ENDP


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

                  SCSI_Read10_Cmd PROC
;;;188    void SCSI_Read10_Cmd(void)
;;;189    {
000000  b510              PUSH     {r4,lr}
;;;190    
;;;191      if (Bot_State == BOT_IDLE)
000002  4c12              LDR      r4,|L9.76|
000004  7820              LDRB     r0,[r4,#0]  ; Bot_State
000006  b9c8              CBNZ     r0,|L9.60|
;;;192      {
;;;193        if (!(Address_Management_Test(SCSI_READ10)))/*address out of range*/
000008  2028              MOVS     r0,#0x28
00000a  f7fffffe          BL       Address_Management_Test
00000e  2800              CMP      r0,#0
000010  d01a              BEQ      |L9.72|
;;;194        {
;;;195          return;
;;;196        }
;;;197    
;;;198        if ((CBW.bmFlags & 0x80) != 0)
000012  480f              LDR      r0,|L9.80|
000014  7b00              LDRB     r0,[r0,#0xc]  ; CBW
000016  0600              LSLS     r0,r0,#24
;;;199        {
;;;200          Bot_State = BOT_DATA_IN;
000018  f04f0002          MOV      r0,#2
00001c  d501              BPL      |L9.34|
00001e  7020              STRB     r0,[r4,#0]  ; Bot_State
;;;201          Read_Memory();
000020  e00e              B        |L9.64|
                  |L9.34|
;;;202        }
;;;203        else
;;;204        {
;;;205          Bot_Abort(BOTH_DIR);
000022  f7fffffe          BL       Bot_Abort

⌨️ 快捷键说明

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