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

📄 test.lst

📁 51环境下的FAT及FAT32文件系统源码
💻 LST
📖 第 1 页 / 共 5 页
字号:
  23      =1    unsigned int  CSD_RdBlkMisAlign:1;
  24      =1    unsigned int  CSD_DSRImp:1;
  25      =1    unsigned int  CSD_DevResv:2;
  26      =1    unsigned int  CSD_DevSize:12;
  27      =1    unsigned int  CSD_MaxRdCurVmin:3;
  28      =1    unsigned int  CSD_MaxRdCurVmax:3;
  29      =1    unsigned int  CSD_MaxWrCurVmin:3;
  30      =1    unsigned int  CSD_MaxWrCurVmax:3;
  31      =1    unsigned int  CSD_DevSizeMult:3;
  32      =1    unsigned int  CSD_ErsSingBlk:1;
  33      =1    unsigned int  CSD_ErsSectSize:7;
  34      =1    unsigned int  CSD_WrProtGrpSize:7;
  35      =1    unsigned char CSD_WrFmtGrpEn:1;
  36      =1    unsigned char CSD_MMCResv:2;
  37      =1    unsigned char CSD_WrSpeedFactor:3;
  38      =1    unsigned char CSD_MaxWrLen:4;
  39      =1    unsigned char CSD_PartBlkWr:1;
  40      =1    unsigned char CSD_FileResv:5;
  41      =1    unsigned char CSD_FileFmtGrp:1;
  42      =1    unsigned char CSD_CopyFlag:1;
  43      =1    unsigned char CSD_PermWrProt:1;
  44      =1    unsigned char CSD_TempWrProt:1;
  45      =1    unsigned char CSD_FileFmt:2;
  46      =1    unsigned char CSD_Resv:2;
  47      =1    unsigned char CSD_CRC:7;
  48      =1    unsigned char CSD_EOB:1;
  49      =1  } CSD_BLOCK, *pCSD_BLOCK;
  50      =1  
  51      =1  // SD/MMC commands
  52      =1  #define SD_RESET                  0x40 + 0
  53      =1  #define SD_INIT                   0x40 + 1
  54      =1  #define SD_READ_CSD               0x40 + 9
C51 COMPILER V8.02   TEST                                                                  09/19/2006 15:01:22 PAGE 11  

  55      =1  #define SD_READ_CID               0x40 + 10
  56      =1  //
  57      =1  #define SD_STOP_TRANSMISSION      0x40 + 12
  58      =1  #define SD_SEND_STATUS            0x40 + 13
  59      =1  //
  60      =1  #define SD_SET_BLOCKLEN           0x40 + 16
  61      =1  #define SD_READ_BLOCK             0x40 + 17
  62      =1  #define SD_READ_MULTI_BLOCK       0x40 + 18
  63      =1  // 
  64      =1  #define SD_WRITE_BLOCK            0x40 + 24
  65      =1  #define SD_WRITE_MULTI_BLOCK      0x40 + 25
  66      =1  
  67      =1  //prototypes
  68      =1  unsigned char GetDevInfo(void);
  69      =1  
  70      =1  unsigned char SDCommand(unsigned char command, unsigned char *pAddr);
  71      =1  
  72      =1  unsigned char SDReadSector(unsigned long sector);
  73      =1  
  74      =1  unsigned char SDReadFat(unsigned long sector);
  75      =1  
  76      =1  unsigned char SDReadRdir(unsigned long sector);
  77      =1  
  78      =1  unsigned char SDWriteSector(unsigned long sector, unsigned char *pUsrBuf);
  79      =1  
  80      =1  unsigned char SDIdentify(void);
  81      =1  
  82      =1  unsigned char SDResp(unsigned char respLen);
  83      =1  
  84      =1  unsigned char SDMp3Read(unsigned long sector);
  85      =1  
  86      =1  unsigned char UartWaitCmd();
  87      =1  
  88      =1  #endif
   4          #include "tpbulk.h"
   1      =1  #include "rbccmd.h"
   1      =2  /*
   2      =2  // RBC commands
   3      =2  */
   4      =2  #define RBC_CMD_FORMAT                                          0x04
   5      =2  #define RBC_CMD_READ10                                          0x28
   6      =2  #define RBC_CMD_READCAPACITY                            0x25
   7      =2  #define RBC_CMD_STARTSTOPUNIT                           0x1B
   8      =2  #define RBC_CMD_SYNCCACHE                                       0x35
   9      =2  #define RBC_CMD_VERIFY10                                        0x2F
  10      =2  #define RBC_CMD_WRITE10                                         0x2A
  11      =2  
  12      =2  /*
  13      =2  // SPC-2 commands
  14      =2  */
  15      =2  #define SPC_CMD_INQUIRY                                         0x12
  16      =2  #define SPC_CMD_MODESELECT6                                     0x15
  17      =2  #define SPC_CMD_MODESENSE6                                      0x1A
  18      =2  #define SPC_CMD_PERSISTANTRESERVIN                      0x5E
  19      =2  #define SPC_CMD_PERSISTANTRESERVOUT                     0x5F
  20      =2  #define SPC_CMD_PRVENTALLOWMEDIUMREMOVAL        0x1E
  21      =2  #define SPC_CMD_RELEASE6                                        0x17
  22      =2  #define SPC_CMD_REQUESTSENSE                            0x03
  23      =2  #define SPC_CMD_RESERVE6                                        0x16
  24      =2  #define SPC_CMD_TESTUNITREADY                           0x00
  25      =2  #define SPC_CMD_WRITEBUFFER                                     0x3B
  26      =2  #define SPC_CMD_READLONG                                        0x23
C51 COMPILER V8.02   TEST                                                                  09/19/2006 15:01:22 PAGE 12  

  27      =2  
  28      =2  
  29      =2  /*
  30      =2  // ATAPI Command Descriptor Block - 13 Bytes
  31      =2  */
  32      =2  
  33      =2  typedef struct _READ_10 {
  34      =2                  UINT8 OperationCode;
  35      =2                  UINT8 Reserved1;
  36      =2                  UINT8 LBA_3;
  37      =2                  UINT8 LBA_2;
  38      =2          UINT8 LBA_1;
  39      =2                  UINT8 LBA_0;
  40      =2                  UINT8 Reserved2;
  41      =2                  UINT8 XferLen_1;
  42      =2                  UINT8 XferLen_0;
  43      =2                  UINT8 Reserved3[3];
  44      =2  } READ_10, *pREAD_10;
  45      =2  
  46      =2  typedef struct _WRITE_10 {
  47      =2                  UINT8 OperationCode;
  48      =2                  UINT8 Reserved1;
  49      =2                  UINT8 LBA_3;
  50      =2                  UINT8 LBA_2;
  51      =2          UINT8 LBA_1;
  52      =2                  UINT8 LBA_0;
  53      =2                  UINT8 Reserved2;
  54      =2                  UINT8 XferLen_1;
  55      =2                  UINT8 XferLen_0;
  56      =2                  UINT8 Reserved3[3];
  57      =2  } WRITE_10, *pWRITE_10;
  58      =2  
  59      =2  typedef struct _MODE_SENSE_10 {
  60      =2                  UINT8 OperationCode;
  61      =2                  UINT8 Reserved1;
  62      =2                  UINT8 PageCode : 6;
  63      =2                  UINT8 Pc : 2;
  64      =2                  UINT8 Reserved2[4];
  65      =2                  UINT8 ParameterListLengthMsb;
  66      =2                  UINT8 ParameterListLengthLsb;
  67      =2                  UINT8 Reserved3[3];
  68      =2  } MODE_SENSE_10, *pMODE_SENSE_10;
  69      =2  
  70      =2  typedef struct _MODE_SELECT_10 {
  71      =2                  UINT8 OperationCode;
  72      =2                  UINT8 Reserved1 : 4;
  73      =2                  UINT8 PFBit : 1;
  74      =2                  UINT8 Reserved2 : 3;
  75      =2                  UINT8 Reserved3[5];
  76      =2                  UINT8 ParameterListLengthMsb;
  77      =2                  UINT8 ParameterListLengthLsb;
  78      =2                  UINT8 Reserved4[3];
  79      =2  } MODE_SELECT_10, *pMODE_SELECT_10;
  80      =2  /*
  81      =2  ////////////////////////////////////////////////////////////////////////////////////
  82      =2  // Command Descriptor Block - max = 16 Bytes 
  83      =2  //      _RBC : Reduced Block Command               
  84      =2  //      _SPC : SPC-2 SCSI primary Command - 2
  85      =2  ////////////////////////////////////////////////////////////////////////////////////
  86      =2  */
  87      =2  
  88      =2  /*
C51 COMPILER V8.02   TEST                                                                  09/19/2006 15:01:22 PAGE 13  

  89      =2  // Generic
  90      =2  */
  91      =2  typedef struct _GENERIC_CDB {
  92      =2          UINT8 OperationCode;
  93      =2      UINT8 Reserved[15];
  94      =2  } GENERIC_CDB,*pGENERIC_CDB;
  95      =2  
  96      =2  typedef struct _GENERIC_RBC {
  97      =2          UINT8 OperationCode;
  98      =2      UINT8 Reserved[8];
  99      =2          UINT8 Control;
 100      =2  } GENERIC_RBC,*pGENERIC_RBC;
 101      =2  
 102      =2  /*
 103      =2  // format unit
 104      =2  */
 105      =2  typedef struct _FORMAT_RBC {
 106      =2          UINT8 OperationCode;    // 04H
 107      =2          UINT8 VendorSpecific;
 108      =2          UINT8 Increment : 1;
 109      =2          UINT8 PercentorTime : 1;
 110      =2          UINT8 Progress : 1;
 111      =2      UINT8 Immediate : 1;
 112      =2          UINT8 VendorSpecific1 : 4;
 113      =2          UINT8 Reserved2[2];
 114      =2          UINT8 Control;
 115      =2  } FORMAT_RBC, *pFORMAT_RBC;
 116      =2  
 117      =2  
 118      =2  /*
 119      =2  // Read Command
 120      =2  */
 121      =2  typedef struct _READ_RBC {
 122      =2          UINT8 OperationCode;    // 10H
 123      =2          UINT8 VendorSpecific;
 124      =2          union{
 125      =2                  struct
 126      =2                  {
 127      =2                  UINT8 LBA_3;
 128      =2                  UINT8 LBA_2;
 129      =2                  UINT8 LBA_1;
 130      =2                  UINT8 LBA_0;
 131      =2                  } LBA_W8 ;
 132      =2  
 133      =2                  UINT32 LBA_W32;
 134      =2                }LBA;
 135      =2          UINT8 Reserved;
 136      =2          //UINT8 XferLength_1;
 137      =2          //UINT8 XferLength_0;
 138      =2          UINT16 XferLength;
 139      =2          UINT8 Control;
 140      =2          //UINT8 Reserved1[3];
 141      =2  } READ_RBC, *pREAD_RBC;
 142      =2  
 143      =2  
 144      =2  /*
 145      =2  // Read Capacity Data - returned in Big Endian format
 146      =2  */
 147      =2  typedef struct _READ_CAPACITY_DATA {
 148      =2  
 149      =2      UINT8 LBA_3;
 150      =2      UINT8 LBA_2;
C51 COMPILER V8.02   TEST                                                                  09/19/2006 15:01:22 PAGE 14  

 151      =2      UINT8 LBA_1;
 152      =2      UINT8 LBA_0;
 153      =2  
 154      =2      UINT8 BlockLen_3;
 155      =2      UINT8 BlockLen_2;
 156      =2      UINT8 BlockLen_1;
 157      =2      UINT8 BlockLen_0;
 158      =2  } READ_CAPACITY_DATA, *pREAD_CAPACITY_DATA;
 159      =2  //////////////////////////////////////////////////
 160      =2  typedef struct _READ_LONG_CMD{
 161      =2      UINT8 OperationCode;
 162      =2      UINT8 LogicalUnitNum        :3;
 163      =2      UINT8 RES_1         :5;
 164      =2      UINT8 RES_2;
 165      =2      UINT8 RES_3;
 166      =2      UINT8 RES_4;
 167      =2      UINT8 RES_5;
 168      =2      UINT8 RES_6;
 169      =2      UINT16 AllocationLen;
 170      =2      UINT8 RES_7;
 171      =2      UINT8 RES_8;
 172      =2      UINT8 RES_9;
 173      =2  }READ_LONG_CMD, *pREAD_LONG_CMD;
 174      =2  
 175      =2  typedef struct _READ_LONG {
 176      =2  
 177      =2      UINT8 RES_1;
 178      =2      UINT8 RES_2;
 179      =2      UINT8 RES_3;
 180      =2      UINT8 CAP_LIST_LEN;
 181      =2      
 182      =2      UINT8 LBA_3;
 183      =2      UINT8 LBA_2;
 184      =2      UINT8 LBA_1;
 185      =2      UINT8 LBA_0;
 186      =2  
 187      =2      UINT8 Descripter;
 188      =2      UINT8 BlockLen_2;
 189      =2      UINT8 BlockLen_1;
 190      =2      UINT8 BlockLen_0;
 191      =2  } READ_LONG, *pREAD_LONG;
 192      =2  /*
 193      =2  // Read Capacity command
 194      =2  */
 195      =2  typedef struct _READ_CAPACITY_RBC {
 196      =2          UINT8                OperationCode;     /* 10H */
 197      =2          union  {
 198      =2                          FLEXI_INT32                     l0[2];
 199      =2                  UINT32               l[2];
 200      =2                  READ_CAPACITY_DATA  CapData;       /* Reserved area, here is used as temp*/
 201      =2                  } tmpVar;
 202      =2  
 203      =2          UINT8                Control;
 204      =2  } READ_CAPACITY_RBC, *pREAD_CAPACITY_RBC;
 205      =2  
 206      =2  typedef struct _READ_CAPACITY_RSP {
 207      =2          UINT32 LastLBA;
 208      =2          UINT32 BlockSize;
 209      =2  
 210      =2  } READ_CAPACITY_RSP, *pREAD_CAPACITY_RSP;
 211      =2  /*
 212      =2  // START_STOP_UNIT
C51 COMPILER V8.02   TEST                                                                  09/19/2006 15:01:22 PAGE 15  

 213      =2  */
 214      =2  typedef struct _START_STOP_RBC {
 215      =2      UINT8 OperationCode;    /*1BH*/
 216      =2      UINT8 Immediate: 1;
 217      =2      UINT8 Reserved1 : 7;
 218      =2      UINT8 Reserved2[2];
 219      =2          union _START_STOP_FLAGS
 220      =2      {
 221      =2          struct
 222      =2          {
 223      =2              UINT8 Start          : 1;
 224      =2              UINT8 LoadEject      : 1;
 225      =2              UINT8 Reserved3      : 2;
 226      =2              UINT8 PowerConditions: 4;

⌨️ 快捷键说明

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