亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
美腿丝袜亚洲色图| 337p亚洲精品色噜噜噜| 色伊人久久综合中文字幕| 欧美日韩久久不卡| 欧美精品一区二区蜜臀亚洲| 伊人性伊人情综合网| 麻豆精品精品国产自在97香蕉| 91在线视频免费91| 日韩三级伦理片妻子的秘密按摩| 亚洲国产成人一区二区三区| 午夜精品一区二区三区三上悠亚| 激情综合亚洲精品| 欧美午夜一区二区三区免费大片| 精品盗摄一区二区三区| 亚洲美腿欧美偷拍| 国产精品原创巨作av| 欧美日本在线一区| 日本一区二区三区高清不卡| 亚洲午夜电影在线| 99精品视频一区二区三区| 国产三级精品视频| 亚洲蜜桃精久久久久久久| 国产一区二区精品久久91| 日韩一区国产二区欧美三区| 午夜精品在线看| 欧美美女直播网站| 三级久久三级久久| 91麻豆精品国产91久久久久久久久| 亚洲综合一区在线| 欧美午夜精品久久久久久超碰| 国产精品第四页| 成人aa视频在线观看| 最新国产の精品合集bt伙计| 99re热这里只有精品免费视频| 国产精品人妖ts系列视频| 高清成人在线观看| 欧美激情一区二区三区不卡| 国产精品77777竹菊影视小说| 久久精品一区二区三区四区| 国产91精品久久久久久久网曝门 | 91福利在线观看| 夜夜爽夜夜爽精品视频| 欧美日韩高清一区二区三区| 亚洲福利国产精品| 91精品国产91久久久久久一区二区 | 亚洲永久免费视频| 欧美疯狂做受xxxx富婆| 毛片基地黄久久久久久天堂| 日韩欧美在线123| 国产一区二区免费在线| 久久久精品2019中文字幕之3| 国产不卡视频在线播放| 亚洲视频资源在线| 欧美日本一道本在线视频| 婷婷丁香激情综合| 日韩精品一区二区三区视频播放| 国产美女一区二区三区| 亚洲国产成人在线| 欧美日韩一区国产| 国产中文一区二区三区| 国产精品网站在线| 欧美日本国产视频| 国产麻豆日韩欧美久久| 日韩理论片在线| 日韩一区二区三区免费看 | 欧美日本乱大交xxxxx| 狠狠色丁香久久婷婷综| 中文字幕综合网| 69av一区二区三区| 福利一区在线观看| 亚洲第一综合色| 久久久另类综合| 精品污污网站免费看| 国产麻豆精品久久一二三| 亚洲欧美国产高清| 精品国产乱码久久久久久闺蜜| av一区二区三区四区| 日韩高清一区在线| 1024成人网| 久久无码av三级| 在线观看一区日韩| 国产成人在线看| 日韩二区在线观看| 亚洲柠檬福利资源导航| 精品国产髙清在线看国产毛片| 91免费观看视频在线| 久草在线在线精品观看| 亚洲福中文字幕伊人影院| 国产欧美精品在线观看| 制服丝袜日韩国产| 欧美视频在线观看一区二区| 成人免费高清在线| 国产一区二区三区观看| 日韩综合一区二区| 成人免费在线视频观看| 国产欧美精品在线观看| 日韩一区二区三区视频在线| 欧美日韩久久不卡| 色网综合在线观看| 91视频免费看| 成人激情开心网| 国产麻豆精品一区二区| 精品夜夜嗨av一区二区三区| 日韩精品亚洲一区二区三区免费| 亚洲人成网站影音先锋播放| 亚洲国产精品成人综合| 久久综合国产精品| 精品国产精品网麻豆系列| 欧美一区二区三区四区五区| 欧美日本高清视频在线观看| 欧美大黄免费观看| 欧美日韩黄色一区二区| 欧美亚洲国产一区二区三区va | 一区二区三区精品| 亚洲欧美乱综合| 亚洲人成人一区二区在线观看| 中文字幕在线一区| 亚洲欧洲日韩一区二区三区| 国产欧美精品一区二区色综合朱莉| 久久免费视频色| 国产欧美日韩视频一区二区 | 337p粉嫩大胆色噜噜噜噜亚洲 | 一区二区三区美女| 一区二区三区视频在线观看| 亚洲日本欧美天堂| 亚洲午夜国产一区99re久久| 日韩黄色免费电影| 裸体在线国模精品偷拍| 国产主播一区二区| 成人午夜激情片| 欧美影院精品一区| 7777精品伊人久久久大香线蕉完整版| 欧美日韩一区二区三区在线| 日韩欧美中文一区| 久久精品视频在线看| 日韩美女啊v在线免费观看| 亚洲日本电影在线| 天天影视色香欲综合网老头| 另类综合日韩欧美亚洲| 国产丶欧美丶日本不卡视频| 91免费看片在线观看| 在线成人av网站| 久久久久九九视频| 亚洲三级在线看| 蜜桃av一区二区三区电影| 国产成人啪午夜精品网站男同| 91小视频免费看| 日韩亚洲欧美综合| 欧美高清在线精品一区| 午夜影院在线观看欧美| 国产成人精品亚洲午夜麻豆| 日本久久精品电影| 精品剧情v国产在线观看在线| 中文字幕一区二区三区精华液 | 欧美激情艳妇裸体舞| 一二三四区精品视频| 国产在线日韩欧美| 在线日韩国产精品| 精品国产免费视频| 夜夜嗨av一区二区三区四季av| 蜜乳av一区二区三区| 91丝袜国产在线播放| 欧美不卡一区二区三区| 一区二区三区四区在线| 国产毛片精品一区| 91精品一区二区三区久久久久久| 国产女人aaa级久久久级| 日韩精品免费专区| 色悠久久久久综合欧美99| 精品少妇一区二区三区| 国产一区二区福利视频| 欧美三级电影网| 亚洲色欲色欲www| 国产美女在线观看一区| 91精品麻豆日日躁夜夜躁| 亚洲人成电影网站色mp4| 国产精品一区二区无线| 欧美顶级少妇做爰| 亚洲综合丁香婷婷六月香| 成人动漫中文字幕| 久久一留热品黄| 美女脱光内衣内裤视频久久影院| 91九色02白丝porn| 国产精品不卡一区二区三区| 国产在线视频一区二区| 日韩欧美久久久| 日韩精品每日更新| 欧美精品国产精品| 性做久久久久久免费观看欧美| 色一情一乱一乱一91av| 日韩美女精品在线| 成人av资源网站| 国产精品久久久久久久久图文区| 国产一区二区按摩在线观看| 欧美成人高清电影在线| 久久电影网电视剧免费观看| 日韩欧美综合一区| 久久精品999| 亚洲精品一区二区三区蜜桃下载| 六月丁香综合在线视频|