📄 tpbulk.lst
字号:
C51 COMPILER V7.06 TPBULK 02/17/2004 14:42:23 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 /*
2 //*************************************************************************
3 //
4 // P H I L I P S P R O P R I E T A R Y
5 //
6 // COPYRIGHT (c) 1999 BY PHILIPS SINGAPORE.
7 // -- ALL RIGHTS RESERVED --
8 //
9 // File Name: TPBulk.C
10 // Author: ZhenYu Zhang
11 // Created: Nov. 26, 1999
12 // Modified:
13 // Revision: 0.0
14 //
15 //*************************************************************************
16 //
17 // USB Mass Storage
18 // Class Spec 1.0 Oct. 1998
19 // Bulk Only Transport 1.0 Jun.21 1999
20 //
21 // Notes:
22 // 3. Share Mem between CBW & CSW to minimize Operations as well as RAM
23 // 2. CSW structure size is 13[0xd] bytes
24 // 1. bInterfaceProtocol for Bulk-Only Transport
25 // 0x50 = 'P'
26 //
27 //
28 //
29 */
30
31 #include <reg51.h> /* special function register declarations */
32 #undef GLOBAL_EXT
33 #include "SysCnfg.h"
34 #include "BasicTyp.h"
35 #include "usb100.h"
36 #include "common.h"
37 #include "Hal4Sys.h"
38 #include "Hal4d12.h"
39 #include "ATA.h"
40 #include "RBCCmd.h"
41 #include "RBC.h"
42 #include "HAL4ATA.h"
43 #include "MainLoop.h"
44 #include "Chap_9.h"
45 #include "TPBulk.h"
46
47 /*
48 //*************************************************************************
49 // Public Data
50 //*************************************************************************
51 */
52 // bit Flags
53 STRUC_EXT BITFLAGS BDATA_SEG bFlags;
54 // MCU Timer bit flags
55 BIT_EXT MCUBF_Timer;
C51 COMPILER V7.06 TPBULK 02/17/2004 14:42:23 PAGE 2
56 INT8_EXT Hal4Sys_ClockTicks;
57 // D12 bit flags
58 BIT_EXT D12BF_SetupOverwritten;
59 BIT_EXT D12BF_Configuration;
60 //USB
61 // DefaultControlPipe Finite State Machine [One-Hot]
62 INT8_EXT BDATA_SEG DCPFSMstate;
63 BIT_EXT DCPFSM_SetupProc;
64 BIT_EXT DCPFSM_DataIn;
65 BIT_EXT DCPFSM_DataOut;
66 BIT_EXT DCPFSM_COhandshake;
67 BIT_EXT DCPFSM_CIhandshake;
68 BIT_EXT DCPFSM_Stall;
69 // DCP FSM
70 // SETUP Stage -> SETUP Proc -> DATA OUT Stage -> CONTROL OUT Handshake -> STATUS Stage -> IDLE
71 // SETUP Stage -> SETUP Proc -> CONTROL OUT Handshake -> STATUS Stage -> IDLE
72 // SETUP Stage -> SETUP Proc -> DATA IN Stage-> CONTROL IN Handshake ->STATUS Stage -> IDLE
73 //
74 INT16_EXT DCPXfer_wResidue;
75 INT8_EXT * DCPXfer_pData;
76
77 // USB Device Request
78 STRUC_EXT DEVICE_REQUEST DCPDeviceRequest;
79 INT8_EXT UsbReq_Recipient;
80 INT8_EXT UsbReq_Type;
81 INT8_EXT UsbReq_Request;
82 BIT_EXT REQBF_DCPRequest_dir;
83 BIT_EXT REQBF_StallDCPRequest;
84 BIT_EXT REQBF_DCPRequest_EPdir;
85
86 // Bulk-Only TP Finite State Machine [One-Hot]
87 INT8_EXT BDATA_SEG BOTFSMstate;
88 BIT_EXT BOTFSM_CBWProc;
89 BIT_EXT BOTFSM_DataIn;
90 BIT_EXT BOTFSM_DataOut;
91 BIT_EXT BOTFSM_CSWProc;
92 BIT_EXT BOTFSM_CSW;
93 BIT_EXT BOTFSM_IDLE;
94 BIT_EXT BOTFSM_Stall;
95 // BOT FSM
96 // IDLE Stage -> CBW -> CBW Proc -> DATA OUT Stage -> CSW Proc -> CSW Stage -> IDLE
97 // IDLE Stage -> CBW -> CBW Proc -> DATA IN Stage -> CSW Proc -> CSW Stage -> IDLE
98 // STALL Stage -> IDLE
99 //
100 INT16_EXT BOTXfer_wResidue;
101 INT8_EXT * BOTXfer_pData;
102 //INT8_EXT * BOTXfer_pData;
103 STRUC_EXT TPBLK_STRUC DATA_SEG TPBulk_Block;
104 #define TPBulk_CBW TPBulk_Block.TPBulk_CommandBlock
105 #define RBC_CDB TPBulk_CBW.cdbRBC
106 #define RBC_LUN TPBulk_CBW.bCBW_LUN
107 #define TPBulk_CSW TPBulk_Block.TPBulk_CommandStatus
108 BIT_EXT BOTXfer_Abort;
109 BIT_EXT BOTBF_StallAtBulkOut;
110 BIT_EXT BOTBF_StallAtBulkIn;
111
112 // XferSpace
113 INT8_EXT BDATA_SEG Xfer_Space;
114 // DCPXfer space
115 BIT_EXT DCPXfer_atMCUCODE;
116 BIT_EXT DCPXfer_atMCURAM;
117 BIT_EXT DCPXfer_atEEROM;
C51 COMPILER V7.06 TPBULK 02/17/2004 14:42:23 PAGE 3
118 BIT_EXT DCPXfer_atATA;
119 // Bulk Only Tranport Xfer Space
120 BIT_EXT BOTXfer_atRAM;
121 BIT_EXT BOTXfer_atATA;
122 BIT_EXT BOTXfer_atROM;
123
124 /*
125 //*************************************************************************
126 // Public temp var
127 //*************************************************************************
128 */
129
130 // Public temp var
131 STRUC_EXT FLEXI_INT32 tempvars4UsbReq;
132 INT8_EXT BDATA_SEG FlexByte;
133 BIT_EXT FlexByte_b0 ;
134 BIT_EXT FlexByte_b1;
135 BIT_EXT FlexByte_b2;
136 BIT_EXT FlexByte_b3;
137 BIT_EXT FlexByte_b4;
138 BIT_EXT FlexByte_b5;
139 BIT_EXT FlexByte_b6;
140 BIT_EXT FlexByte_b7;
141
142
143 STRUC_EXT HW_ATA_DEVICES_EXTENSION Hal4ATA_DevExt;
144
145 /*
146 //*************************************************************************
147 // Private Data
148 //*************************************************************************
149 */
150
151
152 /*
153 //*************************************************************************
154 // Class Request Subroutines
155 // Public Functions
156 //*************************************************************************
157 */
158
159 #define USB_CLASS_REQUEST_USBSTOR_RESET 0xFF
160 #define USB_CLASS_REQUEST_USBSTOR_GETMAXLUN 0xFE
161
162 /*
163 //*************************************************************************
164 //Bulk-Only TP-Bulk Hanlder
165 //*************************************************************************
166 */
167 void TPBulk_CBWHandler( void )
168 {
169 1 //如果接收到的数据的长度与CBW长度一致,
170 1 if( sizeof(CBW) == Hal4D12_ReadEndpoint(4,EP2_PACKET_SIZE,(PINT8)&(TPBulk_CBW)) )
171 1 {
172 2 if(TPBulksup_IsCBWValid())
173 2 {
174 3 RBC_Handler(); //有效CBW,命令处理
175 3 return;
176 3 }
177 2 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -