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

📄 halscsi.lst

📁 威望公司MP3 + USB MCU 的参考软件
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.01   HALSCSI                                                               04/17/2008 09:46:26 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE HALSCSI
OBJECT MODULE PLACED IN .\Debug\halscsi.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE usbhost\halscsi.c LARGE OPTIMIZE(9,SIZE) NOINTPROMOTE INCDIR(.\common;.\e2p
                    -rom;.\file;.\fmtx;.\ir;.\keyboard;.\lcm;.\led;.\main;.\matrixkey;.\mp3ctrl;.\sd;.\usbhost;.\include;.\lib) DEBUG OBJECTE
                    -XTEND PRINT(.\Debug\halscsi.lst) OBJECT(.\Debug\halscsi.obj)

line level    source

   1          /****************************************************************
   2          *                      Viaon Technology (Suzhou) Co.,Ltd
   3          *
   4          *    Copyright 2007, Viaon Technology (Suzhou) Co.,Ltd,Suzhou,China
   5          *                    All rights reserved.
   6          *
   7          *
   8          * Filename:             halscsi.c
   9          *
  10          * Programmer:           Greg 
  11          *
  12          * Created:              1/2/2008
  13          *
  14          * Description:          public functions 
  15          *              
  16          *        
  17          * Change History (most recent first):   2008.1.2
  18          ****************************************************************/
  19          #include "utiltypedef.h"
  20          #include "common.h"
  21          #include "halusbhost.h"
  22          #include "halscsi.h"
  23          #include "scsicmd.h"
  24          
  25          TPB_STRUC  TPBulk_Block;
  26          
  27          extern XXGFLAGS bdata bXXGFlags;        //union XXGFLAGS is defined in common.h
  28          extern BYTE DBUF[SECT_LEN];
  29          extern XXGPKG usbstack;
  30          
  31          static void CBWSetup(BYTE flag, BYTE cdblen, DWORD datlen )
  32          {
  33   1              TPBulk_CBW.dCBW_Signature       = CBW_SIGNATURE;
  34   1              TPBulk_CBW.dCBW_Tag                     = 0x60a624de;
  35   1              TPBulk_CBW.dCBW_DataXferLen     = datlen;
  36   1              TPBulk_CBW.bCBW_Flag            = flag;
  37   1              TPBulk_CBW.bCBW_LUN             = 0;
  38   1              TPBulk_CBW.bCBW_CDBLen          = cdblen;
  39   1      
  40   1              return;
  41   1      }
  42          
  43          static void CSWRcv(void)
  44          {
  45   1              bXXGFlags.bIN_ISR = 0x0;
  46   1              usbstack.bRdFlag = RD_FLAG_BUF;
  47   1                      
  48   1              epBulkRcv((BYTE *)&TPBulk_CSW,13);
  49   1      
  50   1              return; 
  51   1      }
  52          
  53          ///////////////////////////////////////////////////////////////////////////
C51 COMPILER V8.01   HALSCSI                                                               04/17/2008 09:46:26 PAGE 2   

  54          void EnumMassDev(void)
  55          {
  56   1      
  57   1              //BYTE countroot=0;
  58   1               //fat[4],*pt;
  59   1              //pMBR_BLOCK pMBR;
  60   1              //pBPB_BLOCK pBPB;
  61   1              //pBPB_BLOCK32 pBPB32; 
  62   1              ////////////////////////////////////////////////////
  63   1              SPC_Inquiry();
  64   1              UartOutText("SPC_Inquiry \r\n");
  65   1              
  66   1              SPC_TestUnit();
  67   1      
  68   1              DelayUs(5);
  69   1      
  70   1              SPC_RequestSense();
  71   1              UartOutText("SPC_RequestSense 1\r\n");
  72   1              
  73   1              SPC_TestUnit();
  74   1              
  75   1              DelayUs(5);
  76   1              RBC_ReadCapacity();
  77   1              UartOutText("RBC_ReadCapacity 1\r\n");
  78   1              
  79   1              ////////////////////////////////////////////////////
  80   1      #if 0   
                      if(!SPC_RequestSense())
                              return FALSE;
                      UartOutText("SPC_RequestSense 2\r\n");
              //      DelayUs(5);
              //      if(!SPC_TestUnit())
              //              return FALSE;
              
                      DelayUs(5);
                      if(!RBC_ReadCapacity())
                              return FALSE;
              
                      UartOutText("RBC_ReadCapacity 2\r\n");  
              #endif
  94   1              ///////////////////////////////////////////////////////
  95   1      //      return TRUE;
  96   1      }
  97          
  98          /*unsigned char TPBulk_GetMaxLUN(void)
  99          {
 100                  
 101                  usbstack.setup.bmRequest=0xa1;
 102                  usbstack.setup.bRequest=0xfe;
 103                  usbstack.setup.wValue=0;
 104                  usbstack.setup.wIndex=0;
 105                  usbstack.setup.wLength=1;
 106                  usbstack.buffer=DBUF;
 107                  return ep0Xfer();
 108          
 109          }        
 110          */
 111          
 112          void SPC_Inquiry(void)
 113          {
 114   1      #define cdbInquirySPC RBC_CDB.SpcCdb_Inquiry
 115   1      
C51 COMPILER V8.01   HALSCSI                                                               04/17/2008 09:46:26 PAGE 3   

 116   1              //unsigned char len;
 117   1              //unsigned char retStatus=FALSE;
 118   1              CBWSetup(0x80, sizeof(INQUIRY_SPC), 0x24000000 );
 119   1              
 120   1              /////////////////////////////////
 121   1              cdbInquirySPC.OperationCode=SPC_CMD_INQUIRY;
 122   1              cdbInquirySPC.EnableVPD=0; 
 123   1              cdbInquirySPC.CmdSupportData=0;
 124   1              cdbInquirySPC.PageCode=0;
 125   1              cdbInquirySPC.AllocationLen=0x24;
 126   1              cdbInquirySPC.Control=0;
 127   1              ////////////////////////////////
 128   1              //if(!epBulkRcv(DBUF,5))
 129   1              //      return FALSE;
 130   1      //      if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
 131   1              epBulkSend((unsigned char *)&TPBulk_CBW,31);
 132   1      
 133   1              //DelayUs(150);
 134   1              //len=36;
 135   1              usbstack.bRdFlag = RD_FLAG_BUF;
 136   1              epBulkRcv(DBUF,36);      // FIXME: 38 including crc??, but here we get rid of crc via reset
 137   1              
 138   1      #if (UART_DEBUG == UART_DEBUG_ENABLE)   
                      UartOutText("Inquiry_PDT: "); UartOutValue(DBUF[0], 2);
                      UartOutText("Inquiry_RMB: "); UartOutValue(DBUF[1], 2); 
                      UartOutText("Inquiry_SPC: "); UartOutValue(DBUF[2], 2);         
              #endif
 143   1      
 144   1              CSWRcv();
 145   1      
 146   1      //      return TRUE;
 147   1      #undef cdbInquirySPC
 148   1      }
 149          
 150          /*unsigned char SPC_READLONG(void)
 151          {
 152          #define cdbReadLong RBC_CDB.SpcCdb_ReadLong     
 153                  //nsigned char retStatus=FALSE;
 154                  TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
 155                  TPBulk_CBW.dCBW_Tag=0x60a624de;
 156                  TPBulk_CBW.dCBW_DataXferLen=0xfc000000;
 157                  TPBulk_CBW.bCBW_Flag=0x80;
 158                  TPBulk_CBW.bCBW_LUN=0;
 159                  TPBulk_CBW.bCBW_CDBLen=sizeof(READ_LONG_CMD);
 160                  
 161                  /////////////////////////////////////
 162                  cdbReadLong.OperationCode=SPC_CMD_READLONG;
 163                  cdbReadLong.LogicalUnitNum=0;
 164                  cdbReadLong.AllocationLen=0xfc;
 165                  //////////////////////////////////////
 166                  if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
 167                          return FALSE;
 168                  DelayUs(5);
 169                  //len=36;
 170                  if(!epBulkRcv(DBUF,0xfc))
 171                          return FALSE;
 172                  
 173                  if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
 174                          return FALSE;
 175            ////////////////////////////
 176            return TRUE;
 177          #undef cdbReadLong
C51 COMPILER V8.01   HALSCSI                                                               04/17/2008 09:46:26 PAGE 4   

 178          }        */
 179          void SPC_RequestSense(void)
 180          {
 181   1      #define cdbRequestSenseSPC RBC_CDB.SpcCdb_RequestSense  
 182   1              //unsigned char retStatus=FALSE;
 183   1              CBWSetup(0x80, sizeof(REQUEST_SENSE_SPC), 0x12000000 );
 184   1                      
 185   1              /////////////////////////////////////
 186   1              cdbRequestSenseSPC.OperationCode=SPC_CMD_REQUESTSENSE;
 187   1              cdbRequestSenseSPC.AllocationLen= 0x12;//0x0e;
 188   1              //////////////////////////////////////
 189   1      //      if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
 190   1              epBulkSend((BYTE *)&TPBulk_CBW,31);
 191   1      
 192   1              //len=36;
 193   1              usbstack.bRdFlag = RD_FLAG_BUF;
 194   1              epBulkRcv(DBUF,0x12);
 195   1      
 196   1              CSWRcv();
 197   1      
 198   1      //      return TRUE;
 199   1      #undef cdbRequestSenseSPC
 200   1      }
 201          
 202          void SPC_TestUnit(void)
 203          {
 204   1      #define cdbTestUnit RBC_CDB.SpcCdb_TestUnit     
 205   1              //unsigned char retStatus=FALSE;
 206   1              CBWSetup(0x00, sizeof(TEST_UNIT_SPC), 0x00000000 );
 207   1              
 208   1              /////////////////////////////////////
 209   1              cdbTestUnit.OperationCode=SPC_CMD_TESTUNITREADY;

⌨️ 快捷键说明

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