?? upsd3400_usb_app.src
字號:
; .\upsd3400_usb_app.SRC generated from: upsd3400_usb_app.c
; COMPILER INVOKED BY:
; C:\Keil\C51\BIN\C51.EXE upsd3400_usb_app.c BROWSE DEBUG OBJECTEXTEND SRC(.\upsd3400_usb_app.SRC)
$NOMOD51
NAME UPSD3400_USB_APP
SPICON0 DATA 0D6H
TB81 BIT 0D8H.3
SPICON1 DATA 0D7H
P1 DATA 090H
SM01 BIT 0D8H.7
SM11 BIT 0D8H.6
UPAIR DATA 0E3H
IRDACON DATA 0CEH
P3 DATA 0B0H
SM21 BIT 0D8H.5
AC BIT 0D0H.6
P4 DATA 0C0H
EA BIT 0A8H.7
WDKEY DATA 0AEH
SPICLKD DATA 0D2H
IE DATA 0A8H
P1_0 BIT 090H.0
PCACH0 DATA 0A3H
P1_1 BIT 090H.1
USIZE DATA 0F2H
PCACH1 DATA 0BBH
P3_0 BIT 0B0H.0
P1_2 BIT 090H.2
P4_0 BIT 0C0H.0
P3_1 BIT 0B0H.1
P1_3 BIT 090H.3
UIE0 DATA 0E4H
P4_1 BIT 0C0H.1
P3_2 BIT 0B0H.2
P1_4 BIT 090H.4
UIF0 DATA 0E8H
UIE1 DATA 0E5H
PCACL0 DATA 0A2H
P4_2 BIT 0C0H.2
P3_3 BIT 0B0H.3
P1_5 BIT 090H.5
EXF2 BIT 0C8H.6
UIF1 DATA 0E9H
UIE2 DATA 0E6H
WDRST DATA 0A6H
PCACL1 DATA 0BAH
REN1 BIT 0D8H.4
P4_3 BIT 0C0H.3
P3_4 BIT 0B0H.4
P1_6 BIT 090H.6
UIF2 DATA 0EAH
UIE3 DATA 0E7H
P4_4 BIT 0C0H.4
P3_5 BIT 0B0H.5
P1_7 BIT 090H.7
ES BIT 0A8H.4
UIF3 DATA 0EBH
S1SETUP DATA 0DBH
P4_5 BIT 0C0H.5
P3_6 BIT 0B0H.6
IP DATA 0B8H
P4_6 BIT 0C0H.6
P3_7 BIT 0B0H.7
RI BIT 098H.0
P4_7 BIT 0C0H.7
CY BIT 0D0H.7
TI BIT 098H.1
P1SFS0 DATA 08EH
P1SFS1 DATA 08FH
NAKF BIT 0E8H.4
ACON DATA 097H
P4SFS0 DATA 092H
RCAP2H DATA 0CBH
PS BIT 0B8H.4
P4SFS1 DATA 093H
SP DATA 081H
OV BIT 0D0H.2
SUSPNDF BIT 0E8H.2
RCAP2L DATA 0CAH
C_T2 BIT 0C8H.1
EOPF BIT 0E8H.1
SPISTAT DATA 0D3H
DPTC DATA 085H
RCLK BIT 0C8H.5
CAPCOMH0 DATA 0ADH
TCLK BIT 0C8H.4
CAPCOMH1 DATA 0B1H
CAPCOMH2 DATA 0B3H
CAPCOMH3 DATA 0C2H
SBUF DATA 099H
PCON DATA 087H
CAPCOMH4 DATA 0C4H
CAPCOML0 DATA 0ACH
CAPCOMH5 DATA 0C6H
CAPCOML1 DATA 0AFH
CAPCOML2 DATA 0B2H
SCON DATA 098H
USCI DATA 0F5H
CAPCOML3 DATA 0C1H
TMOD DATA 089H
TCON DATA 088H
UCON DATA 0F1H
DPTM DATA 086H
CAPCOML4 DATA 0C3H
CAPCOML5 DATA 0C5H
UCTL DATA 0ECH
UBASEH DATA 0F3H
USEL DATA 0EFH
TCMMODE0 DATA 0A9H
TCMMODE1 DATA 0AAH
IE0 BIT 088H.1
UBASEL DATA 0F4H
USTA DATA 0EDH
TCMMODE2 DATA 0ABH
PCASTA DATA 0A5H
OUTF BIT 0E8H.5
IE1 BIT 088H.3
TCMMODE3 DATA 0BDH
RSTF BIT 0E8H.3
TCMMODE4 DATA 0BEH
TCMMODE5 DATA 0BFH
B DATA 0F0H
USCV DATA 0F6H
CP_RL2 BIT 0C8H.0
ACC DATA 0E0H
ES0 BIT 0A8H.4
ET0 BIT 0A8H.1
ET1 BIT 0A8H.3
TF0 BIT 088H.5
ET2 BIT 0A8H.5
EDB BIT 0A8H.6
TF1 BIT 088H.7
ADAT0 DATA 095H
RB8 BIT 098H.2
RI1 BIT 0D8H.0
TF2 BIT 0C8H.7
BUSCON DATA 09DH
ADAT1 DATA 096H
TH0 DATA 08CH
EX0 BIT 0A8H.0
IT0 BIT 088H.0
TH1 DATA 08DH
TB8 BIT 098H.3
TI1 BIT 0D8H.1
EX1 BIT 0A8H.2
IT1 BIT 088H.2
TH2 DATA 0CDH
P BIT 0D0H.0
IEA DATA 0A7H
SM0 BIT 098H.7
TL0 DATA 08AH
SM1 BIT 098H.6
TL1 DATA 08BH
SM2 BIT 098H.5
TL2 DATA 0CCH
PS0 BIT 0B8H.4
RESUMF BIT 0E8H.0
PT0 BIT 0B8H.1
CCON0 DATA 0F9H
PT1 BIT 0B8H.3
RS0 BIT 0D0H.3
CCON1 DATA 0FAH
PT2 BIT 0B8H.5
PDB BIT 0B8H.6
TR0 BIT 088H.4
RS1 BIT 0D0H.4
CCON2 DATA 0FBH
SPIRDR DATA 0D5H
TR1 BIT 088H.6
CCON3 DATA 0FCH
PX0 BIT 0B8H.0
TR2 BIT 0C8H.2
SPITDR DATA 0D4H
GLF BIT 0E8H.7
PX1 BIT 0B8H.2
IPA DATA 0B7H
S1ADR DATA 0DFH
DPH DATA 083H
INF BIT 0E8H.6
S1DAT DATA 0DEH
DPL DATA 082H
SBUF0 DATA 099H
SBUF1 DATA 0D9H
EXEN2 BIT 0C8H.3
SCON0 DATA 098H
REN BIT 098H.4
S1CON DATA 0DCH
SCON1 DATA 0D8H
PCACON0 DATA 0A4H
PCACON1 DATA 0BCH
T2CON DATA 0C8H
PWMF0 DATA 0B4H
PWMF1 DATA 0C7H
ADCPS DATA 094H
S1STA DATA 0DDH
P3SFS DATA 091H
UADDR DATA 0E2H
F0 BIT 0D0H.5
PSW DATA 0D0H
RB81 BIT 0D8H.2
?PR?ReturnCSW?UPSD3400_USB_APP SEGMENT CODE
?PR?SpecificIncrementSectorAddress?UPSD3400_USB_APP SEGMENT CODE
?PR?EraseMainFlashSector?UPSD3400_USB_APP SEGMENT CODE
?PR?_WriteToMainFlash?UPSD3400_USB_APP SEGMENT CODE
?PR?WriteBufferToFlash?UPSD3400_USB_APP SEGMENT CODE
?DT?WriteBufferToFlash?UPSD3400_USB_APP SEGMENT DATA OVERLAYABLE
?PR?ReadBufferFromFlash?UPSD3400_USB_APP SEGMENT CODE
?PR?DoReadWrite?UPSD3400_USB_APP SEGMENT CODE
?DT?DoReadWrite?UPSD3400_USB_APP SEGMENT DATA OVERLAYABLE
?PR?OnRequestSense?UPSD3400_USB_APP SEGMENT CODE
?PR?OnInquiry?UPSD3400_USB_APP SEGMENT CODE
?PR?OnModeSelect6?UPSD3400_USB_APP SEGMENT CODE
?PR?OnModeSense6?UPSD3400_USB_APP SEGMENT CODE
?PR?OnModeSelect10?UPSD3400_USB_APP SEGMENT CODE
?PR?OnModeSense10?UPSD3400_USB_APP SEGMENT CODE
?PR?DoReadCapacity?UPSD3400_USB_APP SEGMENT CODE
?PR?DoReadFormatCapacity?UPSD3400_USB_APP SEGMENT CODE
?PR?CheckReceiveCBW?UPSD3400_USB_APP SEGMENT CODE
?PR?UsbIsr?UPSD3400_USB_APP SEGMENT CODE
?DT?UPSD3400_USB_APP SEGMENT DATA
EXTRN DATA (setupPacket)
EXTRN CODE (TransmitEP0)
EXTRN CODE (STALL_EP1)
EXTRN CODE (OnSetupPacket)
EXTRN DATA (usbState)
EXTRN CODE (OnUsbSuspend)
EXTRN XDATA (UPSD_xreg)
EXTRN CODE (OnUsbResume)
EXTRN CODE (ReadSetupPacket)
EXTRN CODE (OnUsbReset)
EXTRN CODE (?C?LSHL)
EXTRN CODE (?C?ULSHR)
EXTRN CODE (?C?CCASE)
PUBLIC gbBulkPipeStage
PUBLIC gdwCBWDataTransferLength
PUBLIC gbCSWStatus
PUBLIC gdwCBWTag
PUBLIC gbCBWCB
PUBLIC gbCBWFlags
PUBLIC gbCBWLUN
PUBLIC gbCBWCBLength
PUBLIC USB_ISR_Counter
PUBLIC UsbIsr
PUBLIC CheckReceiveCBW
PUBLIC DoReadFormatCapacity
PUBLIC DoReadCapacity
PUBLIC OnModeSense10
PUBLIC OnModeSelect10
PUBLIC OnModeSense6
PUBLIC OnModeSelect6
PUBLIC OnInquiry
PUBLIC OnRequestSense
PUBLIC DoReadWrite
PUBLIC ReadBufferFromFlash
PUBLIC WriteBufferToFlash
PUBLIC _WriteToMainFlash
PUBLIC EraseMainFlashSector
PUBLIC SpecificIncrementSectorAddress
PUBLIC ReturnCSW
RSEG ?DT?WriteBufferToFlash?UPSD3400_USB_APP
?WriteBufferToFlash?BYTE:
j?451: DS 1
page?452: DS 1
i?453: DS 2
SectorEndPhysicalDataAddr?454: DS 2
RSEG ?DT?DoReadWrite?UPSD3400_USB_APP
?DoReadWrite?BYTE:
LogicalBlockAddr?655: DS 4
RSEG ?DT?UPSD3400_USB_APP
USB_ISR_Counter: DS 1
gbCBWCBLength: DS 1
gbCBWLUN: DS 1
gbCBWFlags: DS 1
gbCBWCB: DS 16
TransferLength: DS 2
PhysicalDataAddr: DS 2
gdwCBWTag: DS 4
gbCSWStatus: DS 1
gdwCBWDataTransferLength: DS 4
gbBulkPipeStage: DS 1
; /*------------------------------------------------------------------------------
; upsd3400_usb_app.c
;
; Version:
; September 13, 2005 Ver 1.1 - Updated disclaimer, renamed file.
; March 22, 2005 - Version 1.0 - Initial Release.
;
; Description: USB Mass Storage Class application module.
;
; Compilers:
; Raisonance, Keil
;
; THIS INFORMATION (or THIS SOFTWARE or THIS DOCUMENT) IS FOR GUIDANCE ONLY. ST
; MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS
; SOFTWARE nor for any infringement of patents or other rights of third parties
; which may result from its use. ST MICROELECTRONICS SHALL NOT BE HELD LIABLE FOR
; ANY DIRECT, INDIRECT INCIDENTAL OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY
; CLAIMS ARISING IN CONNECTION WITH OR ARISING FROM THE FURNISHING, PERFORMANCE,
; OR USE OF THIS SOFTWARE. Specifications mentioned in this publication are
; subject to change without notice. This publication supersedes and replaces all
; information previously supplied. STMicroelectronics products are not authorized
; for use as critical components in life support devices or systems without the
; express written approval of STMicroelectronics.
; ------------------------------------------------------------------------------*/
;
; #pragma NOAREGS
;
; #include "upsd3400.h"
; #include "upsd3400_hardware.h"
; #include "upsd3400_usb.h"
; #include "upsd3400_upsd_usb.h"
; #include "upsd3400_usb_app.h"
;
; #define USB_MS_SectorSize 512
; #define USB_MS_UnitSize (USB_MS_SectorSize*9*64)
;
; extern xdata PSD_REGS UPSD_xreg;
;
; data unsigned char gbCBWCB[16];
; data unsigned long int gdwCBWTag;
; data unsigned long int gdwCBWDataTransferLength;
; data unsigned char gbCBWFlags;
; data unsigned char gbCBWLUN;
; data unsigned char gbCBWCBLength;
; data unsigned char gbCSWStatus;
; data unsigned char gbBulkPipeStage;
;
; static data unsigned int TransferLength;
; static data unsigned int PhysicalDataAddr;
;
; extern unsigned char data usbState, ep0state, ep1state;
; extern setup_buffer setupPacket;
;
; #define USB_FIFO ((unsigned char volatile xdata *) USB_BASE_ADDR)
;
; #define UMSC_IN_ENDPOINT SELEP1
; #define UMSC_OUT_ENDPOINT SELEP1
;
; #define UMSC_MASK_IN_ENDPOINT IN1F
; #define UMSC_MASK_OUT_ENDPOINT OUT1F
;
;
; void ReturnCSW(void)
RSEG ?PR?ReturnCSW?UPSD3400_USB_APP
ReturnCSW:
; SOURCE LINE # 63
; /******************************************************************************
; Function : void ReturnCSW(void)
; Parameters : none
; Description: Handle CSW package.
; Command Status Wrapper (CSW) shall start on a packet boundary
; and shall end as a short packet with exactly 13 (0Dh) bytes
; transferred. Fields appear aligned to byte offsets equal to
; a multiple of their byte size. All CSW transfers shall
; be ordered with the LSB (byte 0) first (little endian).
; ******************************************************************************/
; {
; SOURCE LINE # 74
; USEL = INDIR | UMSC_IN_ENDPOINT; //Select EP1 IN
; SOURCE LINE # 75
MOV USEL,#01H
;
; /*dCSWSignature:
; Signature that helps identify this data packet as a CSW. The signature field
; shall contain the value 53425355h (little endian), indicating CSW. */
; USB_FIFO[ 0] = 0x55; // dCSWSignature
; SOURCE LINE # 80
MOV DPTR,#07000H
MOV A,#055H
MOVX @DPTR,A
; USB_FIFO[ 1] = 0x53;
; SOURCE LINE # 81
INC DPTR
MOV A,#053H
MOVX @DPTR,A
; USB_FIFO[ 2] = 0x42;
; SOURCE LINE # 82
INC DPTR
MOV A,#042H
MOVX @DPTR,A
; USB_FIFO[ 3] = 0x53;
; SOURCE LINE # 83
INC DPTR
MOV A,#053H
MOVX @DPTR,A
; /*dCSWTag:
; The device shall set this field to the value received in the dCBWTag
; of the associated CBW.*/
; USB_FIFO[ 4] = *((uchar *)&gdwCBWTag+3); // dCSWTag, LSB read first
; SOURCE LINE # 87
INC DPTR
MOV A,gdwCBWTag+03H
MOVX @DPTR,A
; USB_FIFO[ 5] = *((uchar *)&gdwCBWTag+2);
; SOURCE LINE # 88
INC DPTR
MOV A,gdwCBWTag+02H
MOVX @DPTR,A
; USB_FIFO[ 6] = *((uchar *)&gdwCBWTag+1);
; SOURCE LINE # 89
INC DPTR
MOV A,gdwCBWTag+01H
MOVX @DPTR,A
; USB_FIFO[ 7] = *((uchar *)&gdwCBWTag+0);
; SOURCE LINE # 90
INC DPTR
MOV A,gdwCBWTag
MOVX @DPTR,A
; /*dCSWDataResidue:
; For Data-Out the device shall report in the dCSWDataResidue the difference
; between
; the amount of data expected as stated in the dCBWDataTransferLength,
; and the actual amount of data processed by the device.
; For Data-In the device shall report in the dCSWDataResidue the difference
; between the amount of data expected as stated in the dCBWDataTransferLength
; and the actual amount of relevant data sent by the device.
; The dCSWDataResidue shall not exceed the value sent in the dCBWDataTransferLength.
; We return always zero, it is simple.
; */
; USB_FIFO[ 8] = 0x00; // dCSWDataResidue
; SOURCE LINE # 102
INC DPTR
CLR A
MOVX @DPTR,A
; USB_FIFO[ 9] = 0x00;
; SOURCE LINE # 103
INC DPTR
MOVX @DPTR,A
; USB_FIFO[10] = 0x00;
; SOURCE LINE # 104
INC DPTR
MOVX @DPTR,A
; USB_FIFO[11] = 0x00;
; SOURCE LINE # 105
INC DPTR
MOVX @DPTR,A
; /*bCSWStatus:
; bCSWStatus indicates the success or failure of the command.
; The device shall set this byte to zero if the command completed successfully.
; A non-zero value shall indicate a failure during command execution according
; to the following table:
; 00h Command Passed ("good status")
; 01h Command Failed
; 02h Phase Error
; 03h and 04h Reserved (Obsolete)
; 05h to FFh Reserved
; */
; USB_FIFO[12] = gbCSWStatus; // bCSWStatus
; SOURCE LINE # 117
INC DPTR
MOV A,gbCSWStatus
MOVX @DPTR,A
;
; USIZE = 0x0D; // fire !
; SOURCE LINE # 119
MOV USIZE,#0DH
;
; gbBulkPipeStage = BS_CSW_DONE_PHASE;
; SOURCE LINE # 121
MOV gbBulkPipeStage,#03H
; }
; SOURCE LINE # 122
RET
; END OF ReturnCSW
;
; void SpecificIncrementSectorAddress(void)
RSEG ?PR?SpecificIncrementSectorAddress?UPSD3400_USB_APP
SpecificIncrementSectorAddress:
; SOURCE LINE # 124
; /******************************************************************************
; Function : void SpecificIncrementSectorAddress(void)
; Parameters : none
; Description: Increments PhysicalDataAddr of 512b (1 sector),
; adjust PAGE and TransferLength.
; Used in Read and Write Commands
; ******************************************************************************/
; {
; SOURCE LINE # 132
; PhysicalDataAddr += 64; // next sector physical address
; SOURCE LINE # 133
MOV A,#040H
ADD A,PhysicalDataAddr+01H
MOV PhysicalDataAddr+01H,A
CLR A
ADDC A,PhysicalDataAddr
MOV PhysicalDataAddr,A
; if (PhysicalDataAddr < 0x8000)
; SOURCE LINE # 134
CLR C
SUBB A,#080H
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -