📄 tpbulk.lst
字号:
C51 COMPILER V7.06 TPBULK 01/14/2008 22:33:39 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE TPBULK
OBJECT MODULE PLACED IN TPBULK.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE TPBULK.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "common.h"
2 #include "SL811.H"
3 #include "TPBULK.H"
4 #include "HAL.H"
5 #include "HPI.H"
6 //#include "common.h"
7
8 //////////////////////////////////
9 extern unsigned char xdata DBUF[BUFFER_LENGTH];
10 extern XXGPKG usbstack;
11 extern SYS_INFO_BLOCK xdata DeviceInfo;
12 extern FILE_INFO xdata ThisFile;
13
14 TPBLK_STRUC idata TPBulk_Block;
15 #define TPBulk_CBW TPBulk_Block.TPBulk_CommandBlock
16 #define CBW_wXferLen TPBulk_CBW.dCBW_DataXferLen
17 #define RBC_CDB TPBulk_CBW.cdbRBC
18 #define RBC_LUN TPBulk_CBW.bCBW_LUN
19 #define TPBulk_CSW TPBulk_Block.TPBulk_CommandStatus
20
21 ///////////////////////////////////////////////////////////////////////////
22 unsigned char EnumMassDev(void)
23 {
24 1
25 1 PMBR_BLOCK pMBR;
26 1 PBPB_BLOCK pBPB;
27 1 ////////////////////////////////////////////////////
28 1 if(!SPC_Inquiry())
29 1 return FALSE;
30 1 //if(!SPC_READLONG())
31 1 // return FALSE;
32 1 if(!SPC_TestUnit())
33 1 return FALSE;
34 1 if(!SPC_LockMedia())
35 1 return FALSE;
36 1 if(!SPC_RequestSense())
37 1 return FALSE;
38 1 if(!SPC_TestUnit())
39 1 return FALSE;
40 1 if(!RBC_ReadCapacity())
41 1 return FALSE;
42 1 ////////////////////////////////////////////////////
43 1 pMBR=(PMBR_BLOCK)DBUF;
44 1 DeviceInfo.BPB_BytesPerSec=512; //暂假设为512
45 1 //if(!RBC_Read(0x0,1,DBUF))
46 1 // return FALSE;
47 1
48 1 if(!SPC_RequestSense())
49 1 return FALSE;
50 1 if(!SPC_TestUnit())
51 1 return FALSE;
52 1 if(!RBC_ReadCapacity())
53 1 return FALSE;
54 1 if(!RBC_Read(0x0,1,DBUF))
55 1 return FALSE;
C51 COMPILER V7.06 TPBULK 01/14/2008 22:33:39 PAGE 2
56 1 //////////////////////////////////
57 1 if(DBUF[0]==0xeb||DBUF[0]==0xe9)
58 1 {
59 2 DeviceInfo.StartSector=0;
60 2 //DeviceInfo.TotalSector=SwapINT32(pMBR->TotalSector);
61 2 }
62 1 else
63 1 {
64 2 //////////////////////////////////
65 2 DeviceInfo.StartSector=SwapINT32(pMBR->StartSector);
66 2 //DeviceInfo.TotalSector=SwapINT32(pMBR->TotalSector);
67 2 }
68 1 ///////////////////////////////////////////////////////
69 1 pBPB=(PBPB_BLOCK)DBUF;
70 1 if(!RBC_Read(DeviceInfo.StartSector,1,DBUF))
71 1 return FALSE;
72 1 DeviceInfo.BPB_BytesPerSec=SwapINT16(pBPB->BPB_BytesPerSec);
73 1 DeviceInfo.BPB_SecPerClus=pBPB->BPB_SecPerClus;
74 1 DeviceInfo.BPB_NumFATs=pBPB->BPB_NumFATs;
75 1 DeviceInfo.BPB_RootEntCnt=SwapINT16(pBPB->BPB_RootEntCnt);
76 1 DeviceInfo.BPB_TotSec16=SwapINT16(pBPB->BPB_TotSec16);
77 1 DeviceInfo.BPB_FATSz16=SwapINT16(pBPB->BPB_FATSz16);
78 1 DeviceInfo.BPB_TotSec32=SwapINT32(pBPB->BPB_TotSec32);
79 1 DeviceInfo.FatStartSector=DeviceInfo.StartSector+1;
80 1 DeviceInfo.RootStartSector=DeviceInfo.StartSector+2*DeviceInfo.BPB_FATSz16+1;
81 1 //DeviceInfo.DataStartSector=DeviceInfo.RootStartSector+DeviceInfo.BPB_RootEntCnt;
82 1 DeviceInfo.FirstDataSector=DeviceInfo.FatStartSector+2*DeviceInfo.BPB_FATSz16+32;
83 1 //DeviceInfo.FirstSectorofCluster=;
84 1 ///////////////////////////////////////////////////////
85 1 ThisFile.bFileOpen=0;
86 1 ///////////////////////////////////////////////////////
87 1 return TRUE;
88 1 }
89
90 unsigned char TPBulk_GetMaxLUN(void)
91 {
92 1
93 1 usbstack.setup.bmRequest=0xa1;
94 1 usbstack.setup.bRequest=0xfe;
95 1 usbstack.setup.wValue=0;
96 1 usbstack.setup.wIndex=0;
97 1 usbstack.setup.wLength=1;
98 1 usbstack.buffer=DBUF;
99 1 return ep0Xfer();
100 1
101 1 }
102
103 unsigned char SPC_Inquiry(void)
104 {
105 1 #define cdbInquirySPC RBC_CDB.SpcCdb_Inquiry
106 1 //unsigned char len;
107 1 //unsigned char retStatus=FALSE;
108 1 TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
109 1 TPBulk_CBW.dCBW_Tag=0x60a624de;
110 1 TPBulk_CBW.dCBW_DataXferLen=0x24000000;
111 1 TPBulk_CBW.bCBW_Flag=0x80;
112 1 TPBulk_CBW.bCBW_LUN=0;
113 1 TPBulk_CBW.bCBW_CDBLen=sizeof(INQUIRY_SPC);
114 1
115 1 /////////////////////////////////
116 1 cdbInquirySPC.OperationCode=SPC_CMD_INQUIRY;
117 1 cdbInquirySPC.EnableVPD=0;
C51 COMPILER V7.06 TPBULK 01/14/2008 22:33:39 PAGE 3
118 1 cdbInquirySPC.CmdSupportData=0;
119 1 cdbInquirySPC.PageCode=0;
120 1 cdbInquirySPC.AllocationLen=0x24;
121 1 cdbInquirySPC.Control=0;
122 1 ////////////////////////////////
123 1 //if(!epBulkRcv(DBUF,5))
124 1 // return FALSE;
125 1 if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
126 1 return FALSE;
127 1 DelayMs(150);
128 1 //len=36;
129 1 if(!epBulkRcv(DBUF,38))
130 1 return FALSE;
131 1 if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
132 1 return FALSE;
133 1 ////////////////////////////////
134 1 return TRUE;
135 1 #undef cdbInquirySPC
136 1 }
137
138 unsigned char SPC_READLONG(void)
139 {
140 1 #define cdbReadLong RBC_CDB.SpcCdb_ReadLong
141 1 //nsigned char retStatus=FALSE;
142 1 TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
143 1 TPBulk_CBW.dCBW_Tag=0x60a624de;
144 1 TPBulk_CBW.dCBW_DataXferLen=0xfc000000;
145 1 TPBulk_CBW.bCBW_Flag=0x80;
146 1 TPBulk_CBW.bCBW_LUN=0;
147 1 TPBulk_CBW.bCBW_CDBLen=sizeof(READ_LONG_CMD);
148 1
149 1 /////////////////////////////////////
150 1 cdbReadLong.OperationCode=SPC_CMD_READLONG;
151 1 cdbReadLong.LogicalUnitNum=0;
152 1 cdbReadLong.AllocationLen=0xfc;
153 1 //////////////////////////////////////
154 1 if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
155 1 return FALSE;
156 1 DelayMs(5);
157 1 //len=36;
158 1 if(!epBulkRcv(DBUF,0xfc))
159 1 return FALSE;
160 1
161 1 if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
162 1 return FALSE;
163 1 ////////////////////////////
164 1 return TRUE;
165 1 #undef cdbReadLong
166 1 }
167 unsigned char SPC_RequestSense(void)
168 {
169 1 #define cdbRequestSenseSPC RBC_CDB.SpcCdb_RequestSense
170 1 //unsigned char retStatus=FALSE;
171 1 TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
172 1 TPBulk_CBW.dCBW_Tag=0x60a624de;
173 1 TPBulk_CBW.dCBW_DataXferLen=0x0e000000;
174 1 TPBulk_CBW.bCBW_Flag=0x80;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -