Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
vendor.c
Package: USB_2.0.rar [view]
Upload User: ids068
Upload Date: 2013-04-04
Package Size: 639k
Code Size: 7k
Category:
USB develop
Development Platform:
C/C++
- //***********************************************************************
- // *
- // P H I L I P S P R O P R I E T A R Y *
- // *
- // COPYRIGHT (c) 1999 BY PHILIPS SINGAPORE (APIC). *
- // -- ALL RIGHTS RESERVED -- *
- // *
- // File Name : DMADebug.c *
- // Author : Albert Goh *
- // Created : 3 March 2000 *
- // *
- //***********************************************************************
- //***********************************************************************
- // *
- // GDMADebug.c is the file that contain the routine for the GDMA debug *
- // It will be able to configured as master for slave for the debugging *
- // *
- //***********************************************************************
- //***********************************************************************
- // *
- // Module History *
- // ************** *
- // *
- // Date Version Author Changes *
- // ==== ======= ====== ======= *
- // 030300 0.1 Albert Created *
- // *
- // *
- //***********************************************************************
- //***********************************************************************
- //* *
- //* Include Files Definition *
- //* *
- //***********************************************************************
- #include "standard.h"
- #include "Kernel.h"
- #include "D14.h"
- //***********************************************************************
- //* *
- //* External Variable Definition *
- //* *
- //***********************************************************************
- extern USB_DEVICE USB_Device;
- extern DMA_INT_FLAG DMA_Int_Flag;
- extern USB_INT_FLAG USB_Int_Flag;
- extern volatile D14_CNTRL_REG xdata D14_Cntrl_Reg;
- extern void Start_mSEC_Timer(Data);
- extern void rt2_process();
- extern void tt2_process();
- extern UC Data;
- extern UI Temp,PIO_Count;
- extern KERNEL Kernel_Flag;
- extern ULI bytecount;
- extern FILESIZE FileSize;
- extern UI count;
- extern UC idata Endpt_FIFO[MAX_BUF];
- extern UC Type;
- //***********************************************************************
- //* *
- //* Variable Definition *
- //* *
- //***********************************************************************
- UI Count_PIO;
- //***********************************************************************
- //* *
- //* Prototype Definition *
- //* *
- //***********************************************************************
- void DMA_Debug_Mode(void);
- void DMA_Init(void);
- void DMA_Mode(Data);
- //***********************************************************************
- //* *
- //* Routine Definition *
- //* *
- //***********************************************************************
- //***********************************************************************
- //* *
- //* Routine : DMA Debug Mode *
- //* Input : None *
- //* Output : None *
- //* Function : Generic DMA mode routine *
- //* *
- //***********************************************************************
- void DMA_Debug_Mode(void)
- {
- if(Kernel_Flag.BITS.Transfer_Start)
- {
- if(FileSize.Size.Address[0] == 0 &&
- FileSize.Size.Address[1] == 0 &&
- FileSize.Size.Address[2] == 0)
- {
- Kernel_Flag.BITS.Out_Reset_Done = 0;
- Kernel_Flag.BITS.In_Reset_Done = 0;
- }
- if(FileSize.Size.DIR == 0x00 || FileSize.Size.DIR == 0x80)
- DMA_Mode(Write);
- else
- DMA_Mode(Read);
- }
- }
- //***********************************************************************
- //* *
- //* Routine : DMA Mode *
- //* Input : DMA Controller setting *
- //* Output : None *
- //* Function : to do GDMA data transfer *
- //* *
- //***********************************************************************
- void DMA_Mode(Data)
- {
- UI Datcount;
- UC i;
- if(Data)
- {
- //read
- do
- {
- //Check for Out Token ACK interrupt
- while(!USB_Int_Flag.BITS.EP2RX);
- EA_DISABLE;
- USB_Int_Flag.BITS.EP2RX = 0;
- D14_Cntrl_Reg.D14_ENDPT_INDEX = 4;
- //Read in FIFO data
- if (bytecount > PIO_Count)
- {
- Datcount = PIO_Count;
- }
- else
- {
- Datcount = bytecount;
- }
- for(i = 0 ; i < (UC)Datcount ; i++)
- Endpt_FIFO[i] = D14_Cntrl_Reg.D14_DATA_PORT_LSB;
- EA_ENABLE;
- bytecount -= Datcount;
- }while(bytecount);
- rt2_process();
- }
- else
- {
- //write
- do
- {
- //initialize endpoint index
- D14_Cntrl_Reg.D14_ENDPT_INDEX = 5;
- //Write data to FIFO
- if (bytecount>PIO_Count)
- {
- D14_Cntrl_Reg.D14_BUFFER_LENGTH_LSB =( unsigned char ) PIO_Count;
- D14_Cntrl_Reg.D14_BUFFER_LENGTH_MSB = ( unsigned char ) (PIO_Count>>8);
- Datcount = PIO_Count;
- }
- else
- {
- D14_Cntrl_Reg.D14_BUFFER_LENGTH_LSB =( unsigned char ) bytecount;
- D14_Cntrl_Reg.D14_BUFFER_LENGTH_MSB = ( unsigned char ) (bytecount>>8);
- Datcount = bytecount;
- }
- tt2_process();
- for(Count_PIO = 0 ; Count_PIO < Datcount ; Count_PIO++)
- D14_Cntrl_Reg.D14_DATA_PORT_LSB = Endpt_FIFO[Count_PIO];
- //Check for In Token ACK
- while(!USB_Int_Flag.BITS.EP2TX)
- {
- if(USB_Int_Flag.BITS.SUSP || Kernel_Flag.BITS.Bus_Reset || USB_Int_Flag.BITS.EP0SETUP)
- break;
- }
- EA_DISABLE;
- USB_Int_Flag.BITS.EP2TX = 0;
- EA_ENABLE;
- bytecount -= Datcount;
- }while(bytecount);
- //stop DMA controller
- DMA_Start = GDMA_Stop;
- //transfewr done,reset internal variables
- DMA_Int_Flag.BITS.DMA_DONE = 0;
- Count_PIO = 0;
- }
- Kernel_Flag.BITS.Transfer_Start = 0;
- }