亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? udc.bk

?? 君正早期ucos系統(只有早期的才不沒有打包成庫),MPLAYER,文件系統,圖片解碼,瀏覽,電子書,錄音,想學ucos,識貨的人就下吧 russblock fmradio explore set
?? BK
?? 第 1 頁 / 共 2 頁
字號:
#include <ucos_ii.h>#include <jz4740.h>#include "usb.h"#include "udc.h"#include "udcbus.h"#include "threadprio.h"#ifdef USE_MIDWARE#include "midware.h"#endif#define EP1_INTR_BIT 2#define EP_FIFO_NOEMPTY 2#ifdef JZ4740_LYRA#define GPIO_UDC_DETE_PIN		124 /* GPD6 */#else#define GPIO_UDC_DETE_PIN (32 * 3 + 6)#endif#define GPIO_UDC_DETE GPIO_UDC_DETE_PIN#define IRQ_GPIO_UDC_DETE (IRQ_GPIO_0 + GPIO_UDC_DETE)#define MAX_CABLE_DETE  3#define CABLE_DETE_TIME  500                //wait time in ms#define CABLE_CONNECTED          0#define CABLE_DISCONNECT         1#define DEBUGMSG 0#if DEBUGMSG#define dprintf printf#else#undef  dprintf#define dprintf(x...)#endif#define IS_CACHE(x) (x < 0xa0000000)#ifdef USE_MIDWAREvolatile static MIDSRC udcsrc;volatile static MIDSRCDTA res;volatile static u32 udcid;volatile static u32 cable_stat;volatile static u32 protocool_stat;static u8 err;#endiftypedef struct{	unsigned char ep;	unsigned char state;	unsigned short fifosize;		unsigned int curlen;	unsigned int totallen;	unsigned int data_addr;	unsigned int fifo_addr;}EPSTATE,*PEPSTATE;#define CPU_READ     0#define CPU_WRITE     1#define DMA_READ     2#define DMA_WRITE     3#define WRITE_FINISH  4#define READ_FINISH  5#define TXFIFOEP0 USB_FIFO_EP0EPSTATE epstat[3] = {	{0x00, 0,0,0,0,0,TXFIFOEP0 + 0},	{0x81, 0,0,0,0,0,TXFIFOEP0 + 4},	{0x01, 0,0,0,0,0,TXFIFOEP0 + 4}};#define GetEpState(x) (&epstat[x])static OS_EVENT *udcEvent;u8 USB_Version;volatile static unsigned char udc_irq_type = 0;PUDC_BUS local_pBus;//void (*tx_done)(void) = NULL;#define UDC_TASK_PRIO	UDC_THREAD_PRIO  //7#define UDC_TASK_STK_SIZE	1024 * 2static OS_STK udcTaskStack[UDC_TASK_STK_SIZE];#define PHYADDR(x) (x & 0x1fffffff)static void DMA_ReceiveData(PEPSTATE pep){	unsigned int size;	size = pep->totallen - (pep->totallen % pep->fifosize);	if(IS_CACHE(pep->data_addr))		dma_cache_wback_inv(pep->data_addr, pep->totallen);	//IntrOutMask = 0x0;			jz_writel(USB_REG_ADDR2,PHYADDR(pep->data_addr));	jz_writel(USB_REG_COUNT2,size);	jz_writel(USB_REG_CNTL2,0x001d);	jz_writeb(USB_REG_INDEX,1);		usb_setw(USB_REG_OUTCSR,0xa000);	//printf("dma receive %x\n",size);    	pep->curlen = size;		}static void DMA_SendData(PEPSTATE pep){	  unsigned int size;	  	  size = pep->totallen - (pep->totallen % pep->fifosize);	  	  if(IS_CACHE(pep->data_addr))		  dma_cache_wback_inv(pep->data_addr, size);	  jz_writel(USB_REG_ADDR1,PHYADDR(pep->data_addr));	  jz_writel(USB_REG_COUNT1,size);//fifosize[ep]);	  jz_writel(USB_REG_CNTL1,0x001f);	  jz_writeb(USB_REG_INDEX, 1);	  usb_setw(USB_REG_INCSR,0x9400);	  	  //printf("dma send %x\n",size);	  pep->curlen = size;}static inline void DMA_SendData_Finish(){	jz_writel(USB_REG_CNTL1,0x0);	jz_writeb(USB_REG_INDEX,1);	usb_clearw(USB_REG_INCSR,0x9400);	}static void DMA_ReceieveData_Finish(){	dprintf("\n Disable DMA!");		jz_writel(USB_REG_CNTL2,0x0);	jz_writeb(USB_REG_INDEX,1);	usb_clearw(USB_REG_OUTCSR,0xa000);}static void DisableDevice(unsigned int handle);static void udc_reset(unsigned int handle){//	PUDC_BUS pBus = (PUDC_BUS) handle;	u8 byte;	PEPSTATE pep;		//data init		//ep0state = USB_EP0_IDLE;//	IntrOutMask = 0x2;	// __cpm_stop_udc();	/* Enable the USB PHY */	//REG_CPM_SCR |= CPM_SCR_USBPHY_ENABLE;	/* Disable interrupts */	jz_writew(USB_REG_INTRINE,0);	jz_writew(USB_REG_INTROUTE, 0);	jz_writeb(USB_REG_INTRUSBE, 0);	jz_writeb(USB_REG_FADDR,0);//jz_writeb(USB_REG_POWER,0x60);   //High speed	jz_writeb(USB_REG_INDEX,0);	jz_writeb(USB_REG_CSR0,0xc0);	jz_writeb(USB_REG_INDEX,1);	jz_writew(USB_REG_INCSR,0x2048);	jz_writew(USB_REG_INMAXP,512);		jz_writeb(USB_REG_INDEX,1);	jz_writew(USB_REG_OUTCSR,0x0090);	jz_writew(USB_REG_OUTMAXP,512);	byte = jz_readb(USB_REG_POWER);	dprintf("REG_POWER: %02x\r\n",byte);	epstat[0].fifosize = 64;		if(epstat[1].state != WRITE_FINISH)		jz_readw(USB_REG_INTRIN);	if(epstat[2].state != READ_FINISH)		jz_readw(USB_REG_INTROUT);		epstat[0].state = 0;	epstat[1].state = WRITE_FINISH;	epstat[2].state = READ_FINISH;	epstat[0].curlen = 0;	epstat[1].curlen = 0;	epstat[2].curlen = 0;	epstat[0].totallen = 0;	epstat[1].totallen = 0;	epstat[2].totallen = 0;		if ((byte & 0x10)==0) 	{		jz_writeb(USB_REG_INDEX,1);		jz_writew(USB_REG_INMAXP,64);		jz_writew(USB_REG_INCSR,0x2048);		jz_writeb(USB_REG_INDEX,1);		jz_writew(USB_REG_OUTMAXP,64);		jz_writew(USB_REG_OUTCSR,0x0090);		USB_Version=USB_FS;		//fifosize[1]=64;      		epstat[1].fifosize = 64;		epstat[2].fifosize = 64;		printf("usb1.1\n");			}	else	{		jz_writeb(USB_REG_INDEX,1);		jz_writew(USB_REG_INMAXP,512);		jz_writew(USB_REG_INCSR,0x2048);		jz_writeb(USB_REG_INDEX,1);		jz_writew(USB_REG_OUTMAXP,512);		jz_writew(USB_REG_OUTCSR,0x0090);		USB_Version=USB_HS;		epstat[1].fifosize = 512;		epstat[2].fifosize = 512;		printf("usb2.0\n");			}//DMA USE	jz_writel(USB_REG_CNTL1,0);		jz_writel(USB_REG_ADDR1,0);	jz_writel(USB_REG_COUNT1,0);//fifosize[ep]);	jz_writel(USB_REG_CNTL2,0);	jz_writel(USB_REG_ADDR2,0);	jz_writel(USB_REG_COUNT2,0);//fifosize[ep]);	jz_readb(USB_REG_INTR); // clear dma interrupt	jz_writew(USB_REG_INTRINE,0x1);   //enable ep0 intr	jz_writeb(USB_REG_INTRUSBE,0x6);//	DisableDevice();	}static void udcReadFifo(PEPSTATE pep, int size){	unsigned int *ptr = (unsigned int *)(pep->data_addr + pep->curlen);	unsigned int fifo = pep->fifo_addr;	unsigned char *c;	int s = size / 4;	unsigned int x;	if(((unsigned int )ptr & 3) == 0)	{		while(s--)			*ptr++ = REG32(fifo);				}	else	{		while(s--)		{			x = REG32(fifo);			*ptr++ = (x >> 0)& 0x0ff;			*ptr++ = (x >> 8)  & 0x0ff;			*ptr++ = (x >> 16) & 0x0ff;			*ptr++ = (x >> 24) & 0xff;		}	}		s = size & 3;	c = (unsigned char *)ptr;	while(s--)		*c++ = REG8(fifo);	pep->curlen += size;		#if 0	c = (unsigned char *)(pep->data_addr + pep->curlen - size);	dprintf("recv:(%d)", size);	for (s=0;s<size;s++) {		if (s % 16 == 0)			dprintf("\n");		dprintf(" %02x", *(c+s));	}	dprintf("\n");#endif}static void udcWriteFifo(PEPSTATE pep, int size){	unsigned int *d = (unsigned int *)(pep->data_addr + pep->curlen);	unsigned int fifo = pep->fifo_addr;	u8 *c;	int s, q;#if 0	unsigned char *ptr =(unsigned char *)d;		dprintf("send:fifo(%x) = (%d)",fifo, size);	for (s=0;s<size;s++) {		if (s % 16 == 0)			dprintf("\n");		dprintf(" %02x", ptr[s]);	}	dprintf("\n");#endif		if (size > 0) {		s = size >> 2;		while (s--)			REG32(fifo) = *d++;		q = size & 3;		if (q) {			c = (u8 *)d;			while (q--)				REG8(fifo) = *c++;		}	} 	pep->curlen += size;}void EP0_Handler (unsigned int handle){    PEPSTATE pep = GetEpState(0);	unsigned char byCSR0;/* Read CSR0 */	jz_writeb(USB_REG_INDEX, 0);	byCSR0 = jz_readb(USB_REG_CSR0);   //	printf("EP0 CSR = %x\n",byCSR0);    if(byCSR0 == 0)		return;	/* Check for SentStall    if sendtall is set ,clear the sendstall bit*/	if (byCSR0 & USB_CSR0_SENTSTALL) 	{		jz_writeb(USB_REG_CSR0, (byCSR0 & ~USB_CSR0_SENDSTALL));		pep->state = CPU_READ;				printf("\nSentstall!");		return;	}/* Check for SetupEnd */	if (byCSR0 & USB_CSR0_SETUPEND) 	{		jz_writeb(USB_REG_CSR0, (byCSR0 | USB_CSR0_SVDSETUPEND));		pep->state = CPU_READ;		printf("\nSetupend!");		//return;	}/* Call relevant routines for endpoint 0 state */	if (pep->state == CPU_READ) 	{		if (byCSR0 & USB_CSR0_OUTPKTRDY)   //There are datas in fifo		{            USB_DeviceRequest dreq;			            *(unsigned int *) &dreq =  REG32(pep->fifo_addr);			*(unsigned int *) ((unsigned int)&dreq + 4)=  REG32(pep->fifo_addr);								dprintf("\nbmRequestType:%02x\nbRequest:%02x\n"					"wValue:%04x\nwIndex:%04x\n"					"wLength:%04x\n",					dreq.bmRequestType,					dreq.bRequest,					dreq.wValue,					dreq.wIndex,					dreq.wLength);			if ( dreq.bRequest == SET_CONFIGURATION )				protocool_stat = CABLE_CONNECTED;			if ( dreq.bRequest == SET_ADDRESS || dreq.bRequest == SET_CONFIGURATION || dreq.bRequest == CLEAR_FEATURE )				usb_setb(USB_REG_CSR0, 0x40 | USB_CSR0_DATAEND);//clear OUTRD bit and DATAEND			else				usb_setb(USB_REG_CSR0, 0x40);//clear OUTRD bit			BusNotify(handle,UDC_SETUP_PKG_FINISH,(unsigned char *)&dreq,8);		}		else 		{			dprintf("0:R DATA\n");					}			}		if (pep->state == CPU_WRITE) 	{		int sendsize;		sendsize = pep->totallen - pep->curlen;//		printf("send size = %d\r\n",sendsize);				if (sendsize < 64) 		{			udcWriteFifo(pep,sendsize);			pep->curlen = pep->totallen;			usb_setb(USB_REG_CSR0, USB_CSR0_INPKTRDY | USB_CSR0_DATAEND);			pep->state = CPU_READ;					} else 		{			if(sendsize)			{				udcWriteFifo(pep, 64);				usb_setb(USB_REG_CSR0, USB_CSR0_INPKTRDY);				pep->curlen += 64;							}else				pep->state = CPU_READ;					}	}//	printf("pep state = %d %d\r\n",CPU_WRITE,pep->state);	return;}void EPIN_Handler(unsigned int handle,PEPSTATE pep){	unsigned int size;   		//fifo = fifoaddr[EP];	size = pep->totallen - pep->curlen;//	printf("pep->totallen = %d size = %d \n",pep->totallen,size);	if(size == 0)	{				pep->state = WRITE_FINISH;		usb_clearw(USB_REG_INTRINE,EP1_INTR_BIT);  // close ep1 in intr		BusNotify(handle,UDC_PROTAL_SEND_FINISH,(unsigned char *)pep->data_addr,pep->curlen);//		printf("Send finish \n");		return;			}		if(size < pep->fifosize)	{		udcWriteFifo(pep,size);	}else		udcWriteFifo(pep,pep->fifosize);	usb_setb(USB_REG_INCSR, USB_INCSR_INPKTRDY);	}void EPOUT_Handler(unsigned int handle,PEPSTATE pep){    unsigned int size;		jz_writeb(USB_REG_INDEX, 1);	size = jz_readw(USB_REG_OUTCOUNT);	 	udcReadFifo(pep, size);	usb_clearb(USB_REG_OUTCSR,USB_OUTCSR_OUTPKTRDY);	pep->state = CPU_READ;	dprintf("EPOUT: totallen = %d curlen = %d",pep->totallen,pep->curlen);		if(pep->totallen == pep->curlen)	{		pep->state = READ_FINISH;		usb_clearw(USB_REG_INTROUTE,EP1_INTR_BIT);		BusNotify(handle,UDC_PROTAL_RECEIVE_FINISH,			  (unsigned char *)pep->data_addr,pep->curlen);					}		//	USB_HandleUFICmd();	dprintf("\nEPOUT_handle return!");}static int check_gpio(u32 pin){	int i ,j  = 0,k = 0;	for ( i = 0 ; i < 1000 ; i ++ )	{		if (__gpio_get_pin(pin))			j ++;		else k ++;	}	if ( j >= k ) return 1;	else return 0;}void udcIntrbhandle(unsigned int handle,unsigned char val){	unsigned char byte;		if (val & USB_INTR_RESET) 	{		printf("UDC reset intrupt!\r\n");  		if ( protocool_stat == CABLE_DISCONNECT && 		     cable_stat == CABLE_CONNECTED )		{			printf("USB cable insert! \n");			cable_stat = CABLE_CONNECTED;			udcsrc.Src = SRC_UDC;			udcsrc.Event = EVENT_USB_IN;			OSQPost(udcsrc.CurEvent1 , (void *)&udcid);			OSSemPost(udcsrc.CurEvent);			//printf("wwwwwwwwwwwwwwwwwwwwwwwww \n");			OSSemPend(udcsrc.CurEvent2 , 0, &err);			if ( res.Val == 1 )  //|| res.Val == 0xffff) //up layer said yes!			{			    BusNotify((unsigned int)local_pBus,UDC_JUDGE,0,0);			}//			else if ( res.Val == 2 )//			{//			    BusNotify((unsigned int)pBus,UDC_JUDGE,0,0);//			}			else           //up layer said no!			{				protocool_stat = CABLE_DISCONNECT;				jz_writeb(USB_REG_POWER,0x00);   //High speed					printf("As power cable insert! \n");			}		}		udc_reset(handle);				byte = jz_readb(USB_REG_POWER);		//dprintf("REG_POWER: %02x\r\n",byte);		if ((byte&0x10) ==0 ) 		{			BusNotify(handle,UDC_FULLSPEED,0,0);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国v欧美v日本v亚洲v| 亚洲精品水蜜桃| 蜜桃精品在线观看| 欧美一区二区三区在线看| 日日夜夜精品免费视频| 日韩欧美精品在线| 国产一区二区三区香蕉| 亚洲国产精华液网站w| 91香蕉视频污在线| 午夜精品免费在线| 2024国产精品视频| 91欧美一区二区| 亚洲图片欧美一区| 欧美精品一区二区三区四区| 成人国产精品免费观看动漫| 亚洲精品第1页| 日韩精品在线看片z| 成人国产精品免费观看| 亚洲福利视频一区二区| 久久综合九色综合久久久精品综合| 国产精品123| 一区二区三区自拍| 欧美一区二区美女| 91小宝寻花一区二区三区| 青青草国产成人av片免费| 欧美国产欧美综合| 欧美日本精品一区二区三区| 国产制服丝袜一区| 亚洲最色的网站| 久久综合五月天婷婷伊人| 91丨九色丨尤物| 麻豆精品视频在线| 亚洲欧美日韩国产手机在线 | 欧美肥妇毛茸茸| 欧美男男青年gay1069videost| 男女男精品视频| 亚洲欧洲制服丝袜| 久久精品免费在线观看| 欧美性感一类影片在线播放| 国产成人在线色| 日本人妖一区二区| 亚洲欧美成人一区二区三区| 久久蜜桃av一区二区天堂| 欧美综合一区二区| 东方aⅴ免费观看久久av| 青娱乐精品在线视频| 一区二区三区成人| 国产欧美精品一区| 精品国产乱子伦一区| 欧美日韩亚洲另类| 91一区在线观看| 成人黄动漫网站免费app| 韩国三级中文字幕hd久久精品| 午夜欧美2019年伦理| 亚洲精品国产成人久久av盗摄| 久久久精品影视| 精品福利一区二区三区| 欧美肥胖老妇做爰| 欧美午夜在线观看| 94-欧美-setu| 成人午夜在线免费| 国产精品一区免费视频| 精品一区二区三区香蕉蜜桃| 五月天中文字幕一区二区| 亚洲一区二区三区四区的| 亚洲欧美乱综合| 日韩久久一区二区| 亚洲欧美综合色| 韩国欧美国产一区| 蜜臀av性久久久久蜜臀aⅴ| 日韩av电影天堂| 日本在线播放一区二区三区| 亚洲成av人在线观看| 亚洲美女屁股眼交| 一区二区理论电影在线观看| 亚洲免费av高清| 亚洲一区免费观看| 亚洲国产成人精品视频| 午夜精品久久久久久久99水蜜桃 | 久久精品免费观看| 麻豆久久一区二区| 国内精品伊人久久久久影院对白| 美女视频黄 久久| 国产一区二区成人久久免费影院| 免费观看一级特黄欧美大片| 久久国产综合精品| 国产精品一二三四区| 国产精品一区二区久久不卡| 国产成人av福利| 94-欧美-setu| 51精品视频一区二区三区| 日韩午夜小视频| 久久久久久影视| 亚洲天堂久久久久久久| 亚洲午夜成aⅴ人片| 男女性色大片免费观看一区二区| 久久99精品国产麻豆不卡| 国产成人在线视频网站| 91在线丨porny丨国产| 欧洲一区在线电影| 日韩午夜在线观看视频| 久久精品夜色噜噜亚洲aⅴ| 成人欧美一区二区三区| 亚洲五码中文字幕| 极品美女销魂一区二区三区| 成人免费av网站| 欧美日韩在线直播| 久久久综合激的五月天| 一区二区三区在线免费视频| 视频在线观看91| 国产成人亚洲精品青草天美 | 欧美无乱码久久久免费午夜一区| 69堂精品视频| 欧美国产欧美综合| 午夜精品久久久久久久久 | 91在线一区二区| 欧美一区二区三区四区视频| 久久久久久久久久久电影| 亚洲男帅同性gay1069| 美女高潮久久久| 91国偷自产一区二区三区成为亚洲经典 | 欧美α欧美αv大片| 国产精品无码永久免费888| 午夜电影久久久| 成人h精品动漫一区二区三区| 欧美群妇大交群中文字幕| 欧美经典一区二区三区| 日韩极品在线观看| 99精品视频在线播放观看| 欧美一级黄色大片| 一区二区三区日本| 成人午夜看片网址| 精品捆绑美女sm三区| 亚洲大片精品永久免费| 精品一区二区在线免费观看| 国产欧美一区二区在线观看| 婷婷国产v国产偷v亚洲高清| 丁香婷婷综合激情五月色| 日韩欧美国产三级| 久久se这里有精品| 欧美人xxxx| ...中文天堂在线一区| 国产成人丝袜美腿| 欧美成人精品高清在线播放| 亚洲国产精品久久人人爱| 91一区一区三区| 一区二区三区免费在线观看| eeuss国产一区二区三区| 国产剧情一区二区三区| 欧美一级视频精品观看| 午夜视频一区在线观看| 91婷婷韩国欧美一区二区| 亚洲国产精品t66y| 国产成人综合在线播放| 久久婷婷国产综合国色天香| 久久99国内精品| 欧美一区二区大片| 久久精品国内一区二区三区| 日韩一级高清毛片| 美女一区二区久久| 日韩精品最新网址| 精品系列免费在线观看| 欧美精品一区二区三区蜜桃视频| 久久99热这里只有精品| 欧美电影免费观看完整版| 蜜臀久久99精品久久久久久9 | 一本色道久久综合精品竹菊| 国产网站一区二区| 成人久久18免费网站麻豆| 国产精品欧美综合在线| 91精品国产入口在线| 亚洲午夜免费电影| 91亚洲精品一区二区乱码| 亚洲免费视频成人| 欧美综合色免费| 一区二区三区日韩欧美| 欧美性感一区二区三区| 丝袜美腿亚洲一区| 亚洲精品在线一区二区| 国产成人综合自拍| 中文字幕综合网| 精品污污网站免费看| 石原莉奈一区二区三区在线观看| 制服丝袜成人动漫| 国产美女精品人人做人人爽 | 欧美日韩一区二区三区四区| 午夜精品在线看| 久久综合九色综合欧美98| 白白色 亚洲乱淫| 亚洲国产视频网站| 精品久久久久久综合日本欧美| 国产精品一区不卡| 亚洲人成亚洲人成在线观看图片| 在线精品视频小说1| 青青草伊人久久| 国产精品丝袜一区| 日韩福利视频网| 亚洲va在线va天堂| ...av二区三区久久精品| 国产欧美视频在线观看|