📄 rbc.lst
字号:
C51 COMPILER V7.06 RBC 02/17/2004 14:42:23 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE RBC
OBJECT MODULE PLACED IN Rbc.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE Rbc.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*这时SCSI基本命令的子集。这部分代码用于对主机发出的SCSI命令进行解码
2 /*
3 ////////////////////////////////////////////////////////////////////////////////////
4 //
5 // Copyright (c) 1999-2003 PHILIPS Semiconductors - APIC
6 //
7 // Module Name:
8 //
9 // rbc.c
10 //
11 // Abstract:
12 //
13 // These are the structures and defines used in the Reduced Block Command set
14 //
15 // Author:
16 //
17 // Hilbert Zhang ZhenYu
18 //
19 // Revision History:
20 //
21 // Created 01 Jun. 1999
22 //
23 // Copyright @ 1999-2003, PHILIPS Semiconductors - APIC. All rights reserved.
24 //
25 */
26
27 #include <reg51.h> /* special function register declarations */
28
29 #undef GLOBAL_EXT
30
31 #include "SysCnfg.h"
32 #include "BasicTyp.h"
33 #include "common.h"
34
35 #include "Hal4D12.h"
36
37 #include "ATA.h"
38 #include "RBC.h"
39 #include "RBCCmd.h"
40 #include "Hal4ata.h"
41 #include "Hal4Sys.h"
42
43
44 #include "TPBulk.h"
45
46
47 /*
48 //*************************************************************************
49 // Public Data
50 //*************************************************************************
51 */
52
53 //sbit ATA_RD_N = 0xB6;
54
55 // bit Flags
C51 COMPILER V7.06 RBC 02/17/2004 14:42:23 PAGE 2
56 STRUC_EXT BITFLAGS BDATA_SEG bFlags;
57
58 // MCU Timer bit flags
59 BIT_EXT MCUBF_Timer;
60 INT8_EXT Hal4Sys_ClockTicks;
61
62 // D12 bit flags
63 BIT_EXT D12BF_SetupOverwritten;
64 BIT_EXT D12BF_Configuration;
65
66 //USB
67 // DefaultControlPipe Finite State Machine [One-Hot]
68 INT8_EXT BDATA_SEG DCPFSMstate;
69 BIT_EXT DCPFSM_SetupProc;
70 BIT_EXT DCPFSM_DataIn;
71 BIT_EXT DCPFSM_DataOut;
72 BIT_EXT DCPFSM_COhandshake;
73 BIT_EXT DCPFSM_CIhandshake;
74 BIT_EXT DCPFSM_Stall;
75 // DCP FSM
76 // SETUP Stage -> SETUP Proc -> DATA OUT Stage -> CONTROL OUT Handshake -> STATUS Stage -> IDLE
77 // SETUP Stage -> SETUP Proc -> CONTROL OUT Handshake -> STATUS Stage -> IDLE
78 // SETUP Stage -> SETUP Proc -> DATA IN Stage-> CONTROL IN Handshake ->STATUS Stage -> IDLE
79 //
80 INT16_EXT DCPXfer_wResidue;
81 INT8_EXT * DCPXfer_pData;
82
83
84 // USB Device Request
85 STRUC_EXT DEVICE_REQUEST DCPDeviceRequest;
86 INT8_EXT UsbReq_Recipient;
87 INT8_EXT UsbReq_Type;
88 INT8_EXT UsbReq_Request;
89 BIT_EXT REQBF_DCPRequest_dir;
90 BIT_EXT REQBF_StallDCPRequest;
91 BIT_EXT REQBF_DCPRequest_EPdir;
92
93 // Bulk-Only TP Finite State Machine [One-Hot]
94 INT8_EXT BDATA_SEG BOTFSMstate;
95 BIT_EXT BOTFSM_CBWProc;
96 BIT_EXT BOTFSM_DataIn;
97 BIT_EXT BOTFSM_DataOut;
98 BIT_EXT BOTFSM_CSWProc;
99 BIT_EXT BOTFSM_CSW;
100 BIT_EXT BOTFSM_IDLE;
101 BIT_EXT BOTFSM_Stall;
102 // BOT FSM
103 // IDLE Stage -> CBW -> CBW Proc -> DATA OUT Stage -> CSW Proc -> CSW Stage -> IDLE
104 // IDLE Stage -> CBW -> CBW Proc -> DATA IN Stage -> CSW Proc -> CSW Stage -> IDLE
105 // STALL Stage -> IDLE
106 //
107 BIT_EXT BOTXfer_Abort;
108 INT16_EXT BOTXfer_wResidue;
109 INT8_EXT * BOTXfer_pData;
110 STRUC_EXT TPBLK_STRUC DATA_SEG TPBulk_Block;
111 #define TPBulk_CBW TPBulk_Block.TPBulk_CommandBlock
112 #define CBW_wXferLen TPBulk_CBW.dCBW_DataXferLen
113 #define RBC_CDB TPBulk_CBW.cdbRBC
114 #define RBC_LUN TPBulk_CBW.bCBW_LUN
115 #define TPBulk_CSW TPBulk_Block.TPBulk_CommandStatus
116 #define CSW_wResidue ((INT16)TPBulk_CSW.dCSW_DataResidue)
117
C51 COMPILER V7.06 RBC 02/17/2004 14:42:23 PAGE 3
118 BIT_EXT BOTBF_StallAtBulkOut;
119 BIT_EXT BOTBF_StallAtBulkIn;
120
121 // Xfer_Space
122 INT8_EXT BDATA_SEG Xfer_Space;
123 // Default Control Pipe Tansfer DCPXfer
124 BIT_EXT DCPXfer_atMCUCODE;
125 BIT_EXT DCPXfer_atMCURAM;
126 BIT_EXT DCPXfer_atEEROM;
127 BIT_EXT DCPXfer_atATA;
128 // Bulk Only Xfer space
129 BIT_EXT BOTXfer_atRAM;
130 BIT_EXT BOTXfer_atATA;
131 BIT_EXT BOTXfer_atROM;
132
133 STRUC_EXT HW_ATA_DEVICES_EXTENSION Hal4ATA_DevExt;
134 #define ATADevExt_IDData Hal4ATA_DevExt.IdentifyData
135
136 BIT_EXT ATABF_IsAttached;
137 BIT_EXT ATABF_IsSupportMultiSector;
138 BIT_EXT ATABF_IDEXfer_dir;
139 BIT_EXT ATABF_IsSkipSetParameters;
140
141 INT8_EXT Hal4ATA_SectCntInBlk;
142 /*
143 //*************************************************************************
144 // Public temp var
145 //*************************************************************************
146 */
147 STRUC_EXT FLEXI_INT32 tempvars4UsbReq;
148 INT8_EXT BDATA_SEG FlexByte;
149 BIT_EXT FlexByte_b0;
150 BIT_EXT FlexByte_b1;
151 BIT_EXT FlexByte_b2;
152 BIT_EXT FlexByte_b3;
153 BIT_EXT FlexByte_b4;
154 BIT_EXT FlexByte_b5;
155 BIT_EXT FlexByte_b6;
156 BIT_EXT FlexByte_b7;
157
158 /*
159 //*************************************************************************
160 // Private Data
161 //*************************************************************************
162 */
163 code REQUEST_SENSE_DATA Req_SenseData=
164 {
165 //0x70, 0x00, 0x06, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x29,
166 //0x00, 0x00, 0x00, 0x00, 0x00
167
168
169 0x70, // INT8 ResponseCode : 7;
170 0, // INT8 Valid : 1;
171
172 0,// INT8 SegmentNum;
173
174 0x5,// INT8 SenseKey : 4; 5= illegal request
175 0, // INT8 Reserved0 : 1;
176 0,// INT8 WrongLenIndicator : 1;
177 0,// INT8 EndofMedium : 1;
178 0,// INT8 FileMark : 1;
179
C51 COMPILER V7.06 RBC 02/17/2004 14:42:23 PAGE 4
180 0,// INT8 Info_0;
181 0,// INT8 Info_1;
182 0,// INT8 Info_2;
183 0,// INT8 Info_3;
184
185 0xA,// INT8 AdditionalSenseLen;
186
187 0,// INT8 CommandSpecInfo_0;
188 0,// INT8 CommandSpecInfo_1;
189 0,// INT8 CommandSpecInfo_2;
190 0,// INT8 CommandSpecInfo_3;
191
192 0x29,// INT8 ASC;
193 0,// INT8 ASCQ;
194 0,// INT8 FieldReplacableUnitCode;
195 0,// INT8 SenseKeySpec_0 : 7;
196 0,// INT8 SenseKeySpecValid : 1;
197 0,// INT8 SenseKeySpec_1;
198 0 // INT8 SenseKeySpec_2;
199
200 };
201
202 RBC_PROPERTY RBC_PropertyData;
203
204
205
206 #define PARAMETER_LIST_LENGTH (sizeof(MODE_PARAMETER_HEAD)+sizeof(MODE_PARAMETER_HEAD))
207
208
209 code MODE_PARAMETER_HEAD ParaHeadMask =
210 {
211 PARAMETER_LIST_LENGTH-1, /* mode data length*/
212 0, /* medium type*/
213 0, /* device spec Param*/
214 0 /* block Descriptor length*/
215 };
216
217 code MODE_RBC_DEVICE_PARAMETERS_PAGE ParaPageMask =
218 {
219 MODE_PAGE_RBC_DEVICE_PARAMETERS,
220 0, /*Reserved*/
221 0, /*PageSavable*/
222
223 0x00, /*PageLength*/
224
225 0, /*WriteCacheDisable*/
226 00, /*Reserved*/
227
228 {
229 /*Logical block Size = 512 Bytes*/
230 0x00,
231 0x00
232 },
233
234 {
235 /*Number of logical blocks*/
236 0x00,
237 0x00,
238 0x00,
239 0x00,
240 0x00
241 },
C51 COMPILER V7.06 RBC 02/17/2004 14:42:23 PAGE 5
242
243 0x00, /*Power/Peformance*/
244
245 0, /*LockDisable*/
246 0, /*FormatDisable*/
247 0, /*WriteDisable*/
248 0, /*ReadDisable*/
249 0x0, /*Reserved*/
250
251 0x00 /*Reserved*/
252 };
253
254 code MODE_PARAMETER_HEAD DefaultParaHead =
255 {
256 PARAMETER_LIST_LENGTH-1, /* mode data length*/
257 0, /* medium type*/
258 0, /* device spec Param*/
259 0 /* block Descriptor length*/
260 };
261
262 code MODE_RBC_DEVICE_PARAMETERS_PAGE DefaultParaPage =
263 {
264 MODE_PAGE_RBC_DEVICE_PARAMETERS,
265 0, /*Reserved*/
266 1, /*PageSavable*/
267
268 0x0B, /*PageLength*/
269
270 0, /*WriteCacheDisable*/
271 00, /*Reserved*/
272
273 {
274 /*Logical block Size = 512 Bytes*/
275 0x02,
276 0x00
277 },
278
279 {
280 /*Number of logical blocks*/
281 0x00,
282 0x00,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -