📄 upsd3400_usb_app.ls1
字号:
00B4 195 PWMF0 DATA 0B4H
00C7 196 PWMF1 DATA 0C7H
0094 197 ADCPS DATA 094H
00DD 198 S1STA DATA 0DDH
0091 199 P3SFS DATA 091H
00E2 200 UADDR DATA 0E2H
00D5 201 F0 BIT 0D0H.5
00D0 202 PSW DATA 0D0H
00DA 203 RB81 BIT 0D8H.2
204 ?PR?ReturnCSW?UPSD3400_USB_APP SEGMENT CODE
205 ?PR?SpecificIncrementSectorAddress?UPSD3400_USB_APP SEGMENT CODE
206 ?PR?EraseMainFlashSector?UPSD3400_USB_APP SEGMENT CODE
207 ?PR?_WriteToMainFlash?UPSD3400_USB_APP SEGMENT CODE
208 ?PR?WriteBufferToFlash?UPSD3400_USB_APP SEGMENT CODE
209 ?DT?WriteBufferToFlash?UPSD3400_USB_APP SEGMENT DATA OVERLAYABLE
210 ?PR?ReadBufferFromFlash?UPSD3400_USB_APP SEGMENT CODE
211 ?PR?DoReadWrite?UPSD3400_USB_APP SEGMENT CODE
212 ?DT?DoReadWrite?UPSD3400_USB_APP SEGMENT DATA OVERLAYABLE
213 ?PR?OnRequestSense?UPSD3400_USB_APP SEGMENT CODE
214 ?PR?OnInquiry?UPSD3400_USB_APP SEGMENT CODE
215 ?PR?OnModeSelect6?UPSD3400_USB_APP SEGMENT CODE
216 ?PR?OnModeSense6?UPSD3400_USB_APP SEGMENT CODE
217 ?PR?OnModeSelect10?UPSD3400_USB_APP SEGMENT CODE
218 ?PR?OnModeSense10?UPSD3400_USB_APP SEGMENT CODE
219 ?PR?DoReadCapacity?UPSD3400_USB_APP SEGMENT CODE
220 ?PR?DoReadFormatCapacity?UPSD3400_USB_APP SEGMENT CODE
221 ?PR?CheckReceiveCBW?UPSD3400_USB_APP SEGMENT CODE
222 ?PR?UsbIsr?UPSD3400_USB_APP SEGMENT CODE
223 ?DT?UPSD3400_USB_APP SEGMENT DATA
224 EXTRN DATA (setupPacket)
225 EXTRN CODE (TransmitEP0)
226 EXTRN CODE (STALL_EP1)
227 EXTRN CODE (OnSetupPacket)
228 EXTRN DATA (usbState)
229 EXTRN CODE (OnUsbSuspend)
230 EXTRN XDATA (UPSD_xreg)
231 EXTRN CODE (OnUsbResume)
232 EXTRN CODE (ReadSetupPacket)
233 EXTRN CODE (OnUsbReset)
234 EXTRN CODE (?C?LSHL)
235 EXTRN CODE (?C?ULSHR)
236 EXTRN CODE (?C?CCASE)
237 PUBLIC gbBulkPipeStage
238 PUBLIC gdwCBWDataTransferLength
239 PUBLIC gbCSWStatus
240 PUBLIC gdwCBWTag
241 PUBLIC gbCBWCB
242 PUBLIC gbCBWFlags
243 PUBLIC gbCBWLUN
244 PUBLIC gbCBWCBLength
245 PUBLIC USB_ISR_Counter
246 PUBLIC UsbIsr
247 PUBLIC CheckReceiveCBW
248 PUBLIC DoReadFormatCapacity
249 PUBLIC DoReadCapacity
250 PUBLIC OnModeSense10
251 PUBLIC OnModeSelect10
252 PUBLIC OnModeSense6
253 PUBLIC OnModeSelect6
254 PUBLIC OnInquiry
255 PUBLIC OnRequestSense
A51 MACRO ASSEMBLER UPSD3400_USB_APP 09/13/2005 18:00:20 PAGE 5
256 PUBLIC DoReadWrite
257 PUBLIC ReadBufferFromFlash
258 PUBLIC WriteBufferToFlash
259 PUBLIC _WriteToMainFlash
260 PUBLIC EraseMainFlashSector
261 PUBLIC SpecificIncrementSectorAddress
262 PUBLIC ReturnCSW
263
---- 264 RSEG ?DT?WriteBufferToFlash?UPSD3400_USB_APP
0000 265 ?WriteBufferToFlash?BYTE:
0000 266 j?451: DS 1
0001 267 page?452: DS 1
0002 268 i?453: DS 2
0004 269 SectorEndPhysicalDataAddr?454: DS 2
270
---- 271 RSEG ?DT?DoReadWrite?UPSD3400_USB_APP
0000 272 ?DoReadWrite?BYTE:
0000 273 LogicalBlockAddr?655: DS 4
274
---- 275 RSEG ?DT?UPSD3400_USB_APP
0000 276 USB_ISR_Counter: DS 1
0001 277 gbCBWCBLength: DS 1
0002 278 gbCBWLUN: DS 1
0003 279 gbCBWFlags: DS 1
0004 280 gbCBWCB: DS 16
0014 281 TransferLength: DS 2
0016 282 PhysicalDataAddr: DS 2
0018 283 gdwCBWTag: DS 4
001C 284 gbCSWStatus: DS 1
001D 285 gdwCBWDataTransferLength: DS 4
0021 286 gbBulkPipeStage: DS 1
287 ; /*------------------------------------------------------------------------------
288 ; upsd3400_usb_app.c
289 ;
290 ; Version:
291 ; September 13, 2005 Ver 1.1 - Updated disclaimer, renamed file.
292 ; March 22, 2005 - Version 1.0 - Initial Release.
293 ;
294 ; Description: USB Mass Storage Class application module.
295 ;
296 ; Compilers:
297 ; Raisonance, Keil
298 ;
299 ; THIS INFORMATION (or THIS SOFTWARE or THIS DOCUMENT) IS FOR GUIDANCE ONLY. ST
300 ; MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS
301 ; SOFTWARE nor for any infringement of patents or other rights of third parties
302 ; which may result from its use. ST MICROELECTRONICS SHALL NOT BE HELD LIABLE FOR
303 ; ANY DIRECT, INDIRECT INCIDENTAL OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY
304 ; CLAIMS ARISING IN CONNECTION WITH OR ARISING FROM THE FURNISHING, PERFORMANCE,
305 ; OR USE OF THIS SOFTWARE. Specifications mentioned in this publication are
306 ; subject to change without notice. This publication supersedes and replaces all
307 ; information previously supplied. STMicroelectronics products are not authorized
308 ; for use as critical components in life support devices or systems without the
309 ; express written approval of STMicroelectronics.
310 ; ------------------------------------------------------------------------------*/
311 ;
312 ; #pragma NOAREGS
313 ;
314 ; #include "upsd3400.h"
315 ; #include "upsd3400_hardware.h"
316 ; #include "upsd3400_usb.h"
317 ; #include "upsd3400_upsd_usb.h"
318 ; #include "upsd3400_usb_app.h"
319 ;
320 ; #define USB_MS_SectorSize 512
321 ; #define USB_MS_UnitSize (USB_MS_SectorSize*9*64)
A51 MACRO ASSEMBLER UPSD3400_USB_APP 09/13/2005 18:00:20 PAGE 6
322 ;
323 ; extern xdata PSD_REGS UPSD_xreg;
324 ;
325 ; data unsigned char gbCBWCB[16];
326 ; data unsigned long int gdwCBWTag;
327 ; data unsigned long int gdwCBWDataTransferLength;
328 ; data unsigned char gbCBWFlags;
329 ; data unsigned char gbCBWLUN;
330 ; data unsigned char gbCBWCBLength;
331 ; data unsigned char gbCSWStatus;
332 ; data unsigned char gbBulkPipeStage;
333 ;
334 ; static data unsigned int TransferLength;
335 ; static data unsigned int PhysicalDataAddr;
336 ;
337 ; extern unsigned char data usbState, ep0state, ep1state;
338 ; extern setup_buffer setupPacket;
339 ;
340 ; #define USB_FIFO ((unsigned char volatile xdata *) USB_BASE_ADDR)
341 ;
342 ; #define UMSC_IN_ENDPOINT SELEP1
343 ; #define UMSC_OUT_ENDPOINT SELEP1
344 ;
345 ; #define UMSC_MASK_IN_ENDPOINT IN1F
346 ; #define UMSC_MASK_OUT_ENDPOINT OUT1F
347 ;
348 ;
349 ; void ReturnCSW(void)
350
---- 351 RSEG ?PR?ReturnCSW?UPSD3400_USB_APP
0000 352 ReturnCSW:
353 ; SOURCE LINE # 63
354 ; /******************************************************************************
355 ; Function : void ReturnCSW(void)
356 ; Parameters : none
357 ; Description: Handle CSW package.
358 ; Command Status Wrapper (CSW) shall start on a packet boundary
359 ; and shall end as a short packet with exactly 13 (0Dh) bytes
360 ; transferred. Fields appear aligned to byte offsets equal to
361 ; a multiple of their byte size. All CSW transfers shall
362 ; be ordered with the LSB (byte 0) first (little endian).
363 ; ******************************************************************************/
364 ; {
365 ; SOURCE LINE # 74
366 ; USEL = INDIR | UMSC_IN_ENDPOINT; //Select EP1 IN
367 ; SOURCE LINE # 75
0000 75EF01 368 MOV USEL,#01H
369 ;
370 ; /*dCSWSignature:
371 ; Signature that helps identify this data packet as a CSW. The signature field
372 ; shall contain the value 53425355h (little endian), indicating CSW. */
373 ; USB_FIFO[ 0] = 0x55; // dCSWSignature
374 ; SOURCE LINE # 80
0003 907000 375 MOV DPTR,#07000H
0006 7455 376 MOV A,#055H
0008 F0 377 MOVX @DPTR,A
378 ; USB_FIFO[ 1] = 0x53;
379 ; SOURCE LINE # 81
0009 A3 380 INC DPTR
000A 7453 381 MOV A,#053H
000C F0 382 MOVX @DPTR,A
383 ; USB_FIFO[ 2] = 0x42;
384 ; SOURCE LINE # 82
000D A3 385 INC DPTR
000E 7442 386 MOV A,#042H
0010 F0 387 MOVX @DPTR,A
A51 MACRO ASSEMBLER UPSD3400_USB_APP 09/13/2005 18:00:20 PAGE 7
388 ; USB_FIFO[ 3] = 0x53;
389 ; SOURCE LINE # 83
0011 A3 390 INC DPTR
0012 7453 391 MOV A,#053H
0014 F0 392 MOVX @DPTR,A
393 ; /*dCSWTag:
394 ; The device shall set this field to the value received in the dCBWTag
395 ; of the associated CBW.*/
396 ; USB_FIFO[ 4] = *((uchar *)&gdwCBWTag+3); // dCSWTag, LSB read first
397 ; SOURCE LINE # 87
0015 A3 398 INC DPTR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -