📄 mass_stg.lst
字号:
C51 COMPILER V7.06 MASS_STG 10/19/2007 15:26:26 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MASS_STG
OBJECT MODULE PLACED IN Mass_STG.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Mass_STG.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*******************************************************************************************
2 USB MASS STORAGE Source Code
3 Create By: Sen Xu
4 Date: 09/10/2007
5 Version: V1.0
6 Note: Only for Study and not for cometial use
7 *******************************************************************************************/
8 #include "c8051f320.h"
9 #include "intrins.h"
10 #include "USB.h"
11 #include "UFI.h"
12 #include "flash.c"
13
14
15 #define MaxSize 0x40
16 #define BIT0 0x01
17 #define BIT1 0x02
18 #define BIT2 0x04
19 #define BIT3 0x08
20 #define BIT4 0x10
21 #define BIT5 0x20
22 #define BIT6 0x40
23 #define BIT7 0x80
24 ///////////////////////////////////////////////////////////////////////////////////////////
25 //Descriptors
26 #define DEVICE 0x01
27 #define CONFIG 0x02
28 #define STRING 0x03
29 #define INTERFACE 0x04
30 #define ENDPOINT 0x05
31
32 ///////////////////////////////////////////////////////////////////////////////////////////
33 //Host Requst Report
34 #define Set_Addr 0x05
35 #define Get_Descriptor 0x06
36 #define Set_Config 0x09
37 #define Set_Interface 0x11
38 ///////////////////////////////////////////////////////////////////////////////////////////
39 //Mass Storage class Specitial Requst
40 #define Get_Max_Lun 0xFE
41 #define Mass_Storage_Reset 0xFF
42 ///////////////////////////////////////////////////////////////////////////////////////////
43
44
45
46 extern void Oscillator_Init(void);
47 extern void System_Config(void);
48 extern void USB_Config(void);
49 extern void SFR_WR(uchar,uchar);
50 extern uchar SFR_RD(uchar);
51 extern void Delay_uS(uint);
52 extern void Delay_mS(uchar);
53 extern void Analysis_Requst(Requst *);
54 extern uint Swap(uint);
55 extern void FIFO_WR(uchar *, uchar, uint) reentrant;
C51 COMPILER V7.06 MASS_STG 10/19/2007 15:26:26 PAGE 2
56 extern void FIFO_RD(uchar,uchar);
57 extern void CLR_Flags(void);
58 extern void Analysis_UFI(void);
59 extern void BulkOut_Process(void);
60 extern ulong exchange(ulong);
61 extern void Read_ID(void);
62 extern void write_cmd(uchar);
63 extern void write_addr(uchar);
64 extern void write_addr_2byte(uchar, uchar);
65 extern void write_addr_3byte(uchar, uchar, uchar);
66 extern uchar read_dat(void);
67 extern void write_dat(uchar);
68 extern uchar read_status(void);
69 extern uchar block_erase(uchar,uchar);
70 extern uchar page_program(uchar *,uchar, uchar, uchar, uint);
71 extern uchar copy_back(uchar ,uchar , uchar , uchar , uchar , uchar);
72 extern void page_read(uchar ,uchar , uchar) ;
73 extern void check_invalid(void);
74 extern void test_flash(void);
75 extern void fill_DBR(void);
76 extern void block_buffer(uint);
77
78
79 /*****************************************************************************************
80 Interrupt Flag Data Structure for Program jump
81 ******************************************************************************************/
82 typedef struct Flag
83 {
84 uchar epin1;
85 uchar epout1;
86
87 }Flags;
88
89
90 /****************************************************************************************
91 UFI CBW DATA STRUCTURE
92 *****************************************************************************************/
93 code uchar Return_Inquiry[36] =
94 {
95 0x00, //Device Type
96 0x80, //Removable media
97 0x00,
98 0x01,
99 0x1F,
100 'x','u','s','e','n','C','H','F', //VID
101 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,
102 0x38,0x39,0x30,0x31,0x32,0x33,0x34,0x35,
103 'V','1','.','0'
104
105
106 };
107
108 code uchar Return_Read_Format[20] =
109 {
110 0x00,0x00,0x00,0x10, //Capacity List Header
111 0x00,0x00,0xFA,0x00, //Block number
112 0x01,0x00,0x02,0x00, //sector length 512byte
113 0x00,0x00,0xFA,0x00,
114 0x00,0x00,0x02,0x00
115 };
116
117 code uchar Return_Read_Cap [8] =
C51 COMPILER V7.06 MASS_STG 10/19/2007 15:26:26 PAGE 3
118 {
119 0x00,0x00,0xFA,0x00, //Mediu Capacity
120 0x00,0x00,0x02,0x00
121 };
122
123 code uchar Sense[8] =
124 {
125 0x45, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00
126 };
127
128 code uchar DBR[512] =
129 {
130 0xeb, 0x58, 0x90,
131 0x4d, 0x53, 0x44, 0x4f, 0x53, 0x35, 0x2e, 0x30,
132 0x00, 0x02,
133 0x01,
134 0x01, 0x00,
135 0x02,
136 0xB0, 0x00,
137 0x00, 0xfa,
138 0xf8,
139 0xFA, 0x00,
140 0x3F, 0x00,
141 0xFF, 0x00,
142 0x00, 0x00, 0x00, 0x00,
143 0x00, 0x00, 0x00, 0x00,
144 0x80,
145 0x00,
146 0x029,
147 0xA8, 0x8B, 0x36, 0x52,
148 0x4E, 0x4F, 0x20, 0x4E, 0x41, 0x4D, 0x45, 0x20, 0x20, 0x20, 0x20,
149 0x46, 0x41, 0x54, 0x31, 0x36, 0x20, 0x20, 0x20,
150 0xf1, 0x7d,
151 0xfa, 0x33, 0xc9, 0x8e, 0xd1, 0xbc, 0xfc, 0x7b, 0x16, 0x07, 0xbd, 0x78, 0x00, 0xc5, 0x76, 0x00,
152 0x1e, 0x56, 0x16, 0x55, 0xbf, 0x22, 0x05, 0x89, 0x7e, 0x00, 0x89, 0x4e, 0x02, 0xb1, 0x0b, 0xfc,
153 0xf3, 0xa4, 0x06, 0x1f, 0xbd, 0x00, 0x7c, 0xc6, 0x45, 0xfe, 0x0f, 0x8b, 0x46, 0x18, 0x88, 0x45,
154 0xf9, 0xfb, 0x38, 0x66, 0x24, 0x7c, 0x04, 0xcd, 0x13, 0x72, 0x3c, 0x8a, 0x46, 0x10, 0x98, 0xf7,
155 0x66, 0x16, 0x03, 0x46, 0x1c, 0x13, 0x56, 0x1e, 0x03, 0x46, 0x0e, 0x13, 0xd1, 0x50, 0x52, 0x89,
156 0x46, 0xfc, 0x89, 0x56, 0xfe, 0xb8, 0x20, 0x00, 0x8b, 0x76, 0x11, 0xf7, 0xe6, 0x8b, 0x5e, 0x0b,
157 0x03, 0xc3, 0x48, 0xf7, 0xf3, 0x01, 0x46, 0xfc, 0x11, 0x4e, 0xfe, 0x5a, 0x58, 0xbb, 0x00, 0x07,
158 0x8b, 0xfb, 0xb1, 0x01, 0xe8, 0x94, 0x00, 0x72, 0x47, 0x38, 0x2d, 0x74, 0x19, 0xb1, 0x0b, 0x56,
159 0x8b, 0x76, 0x3e, 0xf3, 0xa6, 0x5e, 0x74, 0x4a, 0x4e, 0x74, 0x0b, 0x03, 0xf9, 0x83, 0xc7, 0x15,
160 0x3b, 0xfb, 0x72, 0xe5, 0xeb, 0xd7, 0x2b, 0xc9, 0xb8, 0xd8, 0x7d, 0x87, 0x46, 0x3e, 0x3c, 0xd8,
161 0x75, 0x99, 0xbe, 0x80, 0x7d, 0xac, 0x98, 0x03, 0xf0, 0xac, 0x84, 0xc0, 0x74, 0x17, 0x3c, 0xff,
162 0x74, 0x09, 0xb4, 0x0e, 0xbb, 0x07, 0x00, 0xcd, 0x10, 0xeb, 0xee, 0xbe, 0x83, 0x7d, 0xeb, 0xe5,
163 0xbe, 0x81, 0x7d, 0xeb, 0xe0, 0x33, 0xc0, 0xcd, 0x16, 0x5e, 0x1f, 0x8f, 0x04, 0x8f, 0x44, 0x02,
164 0xcd, 0x19, 0xbe, 0x82, 0x7d, 0x8b, 0x7d, 0x0f, 0x83, 0xff, 0x02, 0x72, 0xc8, 0x8b, 0xc7, 0x48,
165 0x48, 0x8a, 0x4e, 0x0d, 0xf7, 0xe1, 0x03, 0x46, 0xfc, 0x13, 0x56, 0xfe, 0xbb, 0x00, 0x07, 0x53,
166 0xb1, 0x04, 0xe8, 0x16, 0x00, 0x5b, 0x72, 0xc8, 0x81, 0x3f, 0x4d, 0x5a, 0x75, 0xa7, 0x81, 0xbf,
167 0x00, 0x02, 0x42, 0x4a, 0x75, 0x9f, 0xea, 0x00, 0x02, 0x70, 0x00, 0x50, 0x52, 0x51, 0x91, 0x92,
168 0x33, 0xd2, 0xf7, 0x76, 0x18, 0x91, 0xf7, 0x76, 0x18, 0x42, 0x87, 0xca, 0xf7, 0x76, 0x1a, 0x8a,
169 0xf2, 0x8a, 0x56, 0x24, 0x8a, 0xe8, 0xd0, 0xcc, 0xd0, 0xcc, 0x0a, 0xcc, 0xb8, 0x01, 0x02, 0xcd,
170 0x13, 0x59, 0x5a, 0x58, 0x72, 0x09, 0x40, 0x75, 0x01, 0x42, 0x03, 0x5e, 0x0b, 0xe2, 0xcc, 0xc3,
171 0x03, 0x18, 0x01, 0x27, 0x0d, 0x0a, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x73, 0x79,
172 0x73, 0x74, 0x65, 0x6d, 0x20, 0x64, 0x69, 0x73, 0x6b, 0xff, 0x0d, 0x0a, 0x44, 0x69, 0x73, 0x6b,
173 0x20, 0x49, 0x2f, 0x4f, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0xff, 0x0d, 0x0a, 0x52, 0x65, 0x70,
174 0x6c, 0x61, 0x63, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x69, 0x73, 0x6b, 0x2c, 0x20, 0x61,
175 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x70, 0x72, 0x65, 0x73, 0x73, 0x20, 0x61, 0x6e,
176 0x79, 0x20, 0x6b, 0x65, 0x79, 0x0d, 0x0a, 0x00, 0x49, 0x4f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
177 0x53, 0x59, 0x53, 0x4d, 0x53, 0x44, 0x4f, 0x53, 0x20, 0x20, 0x20, 0x53, 0x59, 0x53, 0x80, 0x01,
178 0x00, 0x57, 0x49, 0x4e, 0x42, 0x4f, 0x4f, 0x54, 0x20, 0x53, 0x59, 0x53, 0x00, 0x00, 0x55, 0xaa
179 };
C51 COMPILER V7.06 MASS_STG 10/19/2007 15:26:26 PAGE 4
180 /****************************************************************************************
181 Descriptor Fullfill Blocks
182 *****************************************************************************************/
183 code Device_Descriptor device_descriptor =
184 {
185 0x12, //Descriptor Length
186 0x01, //Descriptor Type
187 0x0002, //bcdUSB USB2.0 Protocal
188 //0x1001,
189 0x00, //Device Class: Mass Storage
190 0x00, //Sub Device Class
191 0x00, //Device Protocal
192 0x40, //Max Packet size
193 0x1234, //ID Vendor
194 0x5678, //Product ID
195 0x0000, //BCD Device
196 0x00,
197 0x00,
198 0x00,
199 0x01 //Number of Configurations
200
201 } ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -