Index: fw/sdk/libyc_qspi.a
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: fw/sdk/yc_ipc.h
===================================================================
--- /YC3121_SDK/fw/sdk/yc_ipc.h	(revision 621)
+++ /YC3121_SDK/fw/sdk/yc_ipc.h	(working copy)
@@ -49,7 +49,18 @@
 void IPC_TxData(HCI_TypeDef* IpcData);
 
 /**
-  * @brief   IpcReadBtData
+  * @brief   Ipc Put Bt Data
+	*
+  * @param   *buf: Conform to format HCI_TypeDefs
+  *
+	* @param   size: *buf data len(bte),max value is 0xff+3=258
+  *
+  * @retval	 TRUE or FALSE
+  */
+Boolean IPC_PutBtData(const void *buf, uint32_t size);
+
+/**
+  * @brief   IpcReadBtData(get A complete package)
 	*
   * @param   IpcData: HCI_TypeDef
   *
@@ -57,6 +68,18 @@
   */
 Boolean IPC_ReadBtData(HCI_TypeDef* IpcData);
 
+
+/**
+  * @brief   Ipc Get Bt Data
+	*
+  * @param   *buf: out data buf
+  *
+	* @param   *size:input--*buf size(byte);output--valid data len(byte)
+  *
+  * @retval	 TRUE or FALSE
+  */
+Boolean IPC_GetBtData(void *buf, uint32_t *size);
+
 /**
   * @brief   get ipc buf available size
 	*
Index: fw/sdk/yc_ipc.c
===================================================================
--- /YC3121_SDK/fw/sdk/yc_ipc.c	(revision 621)
+++ /YC3121_SDK/fw/sdk/yc_ipc.c	(working copy)
@@ -48,6 +48,29 @@
 	WAKEUP_BT &= ~(1<<WAKEUP_BT_FLAG);
 }
 
+Boolean IPC_PutBtData(const void *buf, uint32_t size)
+{
+	if(size==0||size>258)
+	{
+		return FALSE;
+	}
+	WAKEUP_BT |= (1<<WAKEUP_BT_FLAG);
+	IPC_HOLD_BT  = 1;
+	delay_ms(10);
+	uint16_t Wptr  = HR_REG_16BIT(&IpcTx->WrtiePtr);
+	uint8_t * Rptr = (uint8_t *)buf;
+	while(size--)
+	{
+		HW_IPC_REG_8BIT(Wptr,*Rptr++);
+		RB_UPDATE_PTR(Wptr, HR_REG_16BIT(&IpcTx->IpcStartAddr),  HR_REG_16BIT(&IpcTx->IpcEndAddr));	
+	}
+
+	HW_REG_16BIT(&IpcTx->WrtiePtr,(uint32_t)Wptr);
+	IPC_HOLD_BT = 0;
+	WAKEUP_BT &= ~(1<<WAKEUP_BT_FLAG);
+	return TRUE;
+}
+
 Boolean IPC_ReadBtData(HCI_TypeDef* IpcData)
 {	
 	if (HR_REG_16BIT(&IpcRx->ReadPtr) != HR_REG_16BIT(&IpcRx->WrtiePtr) )
@@ -74,6 +97,33 @@
 	}
 }
 
+Boolean IPC_GetBtData(void *buf, uint32_t *size)
+{
+	uint32_t i=0;
+	uint16_t Rptr = HR_REG_16BIT(&IpcRx->ReadPtr);
+	if(*size==0)
+	{
+		*size=0;
+		return FALSE;
+	}
+	if(TRUE == IPC_have_data())
+	{
+		while (Rptr != HR_REG_16BIT(&IpcRx->WrtiePtr) && i<(*size))
+		{
+			((uint8_t*)buf)[i++] = HR_IPC_REG_8BIT(Rptr);
+			RB_UPDATE_PTR(Rptr, HR_REG_16BIT(&IpcRx->IpcStartAddr),  HR_REG_16BIT(&IpcRx->IpcEndAddr));
+		}
+		HW_REG_16BIT(&IpcRx->ReadPtr,(uint32_t)Rptr);
+		*size=i;
+		return TRUE;
+	}
+	else
+	{
+		*size=0;
+		return FALSE;
+	}
+}
+
 static void noinline _dma_start(int ch, const void *src, int srclen, void *dest, int dstlen)
 {
 	DMA_SRC_ADDR(ch)  = (int)src;
Index: fw/sdk/yc_qspi.h
===================================================================
--- /YC3121_SDK/fw/sdk/yc_qspi.h	(revision 621)
+++ /YC3121_SDK/fw/sdk/yc_qspi.h	(working copy)
@@ -3,35 +3,17 @@
 Author       : Yichip
 Version      : V1.0
 Date         : 2019/08/24
-Description  : QSPI encapsulation.
+Description  : QSPI operation.
 */
  
 #ifndef __QSPI_H__
 #define __QSPI_H__
 
 #include "yc3121.h"
-#include "rom_api.h"
+#include "yc_otp.h"
+#include "misc.h"
 
-/**
-  * @brief  enc write flash
-  * @param  flash_addr, tx buf, len  
-  * @return none
-  */
-void enc_write_flash(uint32_t flash_addr,uint8_t *buf, uint32_t len);
 
-/**
-  * @brief  get falsh physical address
-  * @param  flash_addr flash for cpu addr 
-  * @return physical addr
-  */
-uint32_t get_enc_addr(uint32_t flash_addr);
-
-/**
-  * @brief  enc read flash
-  * @param  flash_addr, rx buf, len  
-  * @return none
-  */
-void enc_read_flash(uint32_t flash_addr, uint8_t *buf, uint32_t len);
 
 /**
   * @brief  qspi flash sectorerase(4k)
@@ -61,20 +43,43 @@
   */
 uint8_t qspi_flash_read(uint32_t flash_addr, uint8_t *buf,uint32_t len);
 
+
 /**
-  * @brief  检测地址区域是否为空
-  * @param  startaddr, len  
-  * @return result ：空则返回true，非空是false
+  * @brief  enc erase flash 32yte
+  * @param  flash_addr   
+  * @return none
   */
-Boolean flash_blank_check(uint32_t startaddr,uint32_t len);
+void enc_erase_flash_32byte(uint32_t flash_addr);
 
+/**
+  * @brief  enc erase flash 32k
+  * @param  flash_addr   
+  * @return none
+  */
+void enc_erase_flash_32k(uint32_t flash_addr);
 
 /**
-  * @brief  clear app disable download flag
-  * @param  none
+  * @brief  enc write flash
+  * @param  flash_addr, tx buf, len  
   * @return none
   */
-void app_enable_download();
+void enc_write_flash(uint32_t flash_addr,uint8_t *buf, uint32_t len);
+
+
+/**
+  * @brief  enc read flash
+  * @param  flash_addr, rx buf, len  
+  * @return none
+  */
+void enc_read_flash(uint32_t flash_addr, uint8_t *buf, uint32_t len);
+
+/**
+  * @brief  检测地址区域是否为空
+  * @param  startaddr, len  
+  * @return none
+  */
+Boolean flash_blank_check(uint32_t startaddr,uint32_t len);
+
 
 /**
   * @brief  prefetch
@@ -83,13 +88,12 @@
   */
 void prefetch(void *start_addr, void *end_addr);
 
-void enc_erase_flash_32byte(uint32_t flash_addr);
 
 /**
-  * @brief  enc erase flash 32k
-  * @param  flash_addr   
+  * @brief  clear app disable download flag
+  * @param  none
   * @return none
   */
-void enc_erase_flash_32k(uint32_t flash_addr);
+void app_enable_download();
 
 #endif
Index: fw/sdk/yc_qspi.c
===================================================================
--- /YC3121_SDK/fw/sdk/yc_qspi.c	(revision 621)
+++ /YC3121_SDK/fw/sdk/yc_qspi.c	(working copy)
@@ -1,91 +1,152 @@
 #include "yc_qspi.h"
-#include "yc_otp.h"
 
-//Closed source
 
-void enc_write_flash(uint32_t flash_addr, uint8_t *buf, uint32_t len)
-{
-	__asm("CPSID i");
-	init_otp();
-	((uint8_t(*)(uint32_t flash_addr, uint8_t *buf, uint32_t len, uint8_t type, uint8_t use_pr_flash))FUNC_ENC_WRITE_FLASH_ADDR)(flash_addr,buf,len, 1, 0);
-	deinit_otp();
-	__asm("CPSIE i");
-}
-
-uint32_t get_enc_addr(uint32_t flash_addr)
-{
-	uint8_t addr_buf[4]={0};
-	uint32_t addr=0;
-	__asm("CPSID i");
-	init_otp();
-	((uint8_t(*)(uint32_t flash_addr, uint8_t *buf, uint32_t len, uint8_t type, uint8_t use_pr_flash))FUNC_ENC_WRITE_FLASH_ADDR)(flash_addr,addr_buf,4, 0, 0);
-	deinit_otp();
-	addr |=addr_buf[3];
-	addr |=addr_buf[2]<<8;
-	addr |=addr_buf[1]<<16;
-	addr |=addr_buf[0]<<24;
-	__asm("CPSIE i");
-	return addr;
-}
-
-void enc_read_flash(uint32_t flash_addr,uint8_t *buf,uint32_t len)
+void noinline setqspi(uint8_t halfclk,uint8_t div_clk)
 {
-	uint32_t i = 0;
-	if(flash_blank_check(flash_addr,len)==FALSE)
+	if(halfclk)
 	{
-		__asm("CPSID i");
-		prefetch((uint8_t*)flash_addr,(uint8_t*)(flash_addr+len));
-		for(i=0;i<len;i++)
-		{
-			buf[i] = *(uint8_t *)(flash_addr+i);
-		}
-		__asm("CPSIE i");
+			QSPI_CTRL  |=  (0x80);
 	}
 	else
 	{
-		memset(buf,0,len);
+			QSPI_CTRL  &=  (~0x80);
+	}
+	
+	SYSCTRL_HCLK_CON = (SYSCTRL_HCLK_CON & (~0xf)) | (div_clk & 0xf);
+}
+
+uint8_t noinline pre_qspi(void)
+{
+	uint8_t ret = 0;
+	uint8_t halfclk = 0;
+	uint8_t clk_div = 0;
+	
+	halfclk =  (QSPI_CTRL & 0x80);
+	clk_div =  (SYSCTRL_HCLK_CON & 0xf);
+	
+	if(halfclk)
+	{
+		ret |= 0x80;
 	}
+	
+	ret |= clk_div;
+	
+	prefetch(setqspi,setqspi+64);
+	setqspi(0,clk_div?clk_div:2);
+	return ret;
 }
 
+void noinline end_qspi(uint8_t halfclk_and_div)
+{
+	prefetch(setqspi,setqspi+64);
+	setqspi((halfclk_and_div & 0x80),(halfclk_and_div&0x0f));
+}
 uint8_t qspi_flash_sectorerase(uint32_t flash_addr)
 {
-	__asm("CPSID i");
+	uint32_t primask=get_primask();
+	if(!primask)	__asm("CPSID i");
+	uint8_t tmp = pre_qspi();
 	uint8_t result=((uint8_t(*)(uint32_t flash_addr))FUNC_QSPI_FLASH_SECTORERASE_ADDR)(flash_addr); 
-	__asm("CPSIE i");
+	end_qspi(tmp);
+	if(!primask)	__asm("CPSIE i");
 	return result;
+	
 }
 
+
 uint8_t qspi_flash_blockerase32k(uint32_t flash_addr)
 {
-    __asm("CPSID i");
+	uint32_t primask=get_primask();
+	if(!primask)	__asm("CPSID i");
+	uint8_t tmp = pre_qspi();
 	uint8_t result=((uint8_t(*)(uint32_t flash_addr))FUNC_QSPI_FLASH_BLOCKERASE_ADDR)(flash_addr); 
-	__asm("CPSIE i");
+	end_qspi(tmp);
+	if(!primask)	__asm("CPSIE i");
 	return result;
 }
 
 uint8_t qspi_flash_write(uint32_t flash_addr, uint8_t *buf, uint32_t len)
 {
-	__asm("CPSID i");
+	uint32_t primask=get_primask();
+	if(!primask)	__asm("CPSID i");
+	uint8_t tmp = pre_qspi();
 	uint8_t result=((uint8_t(*)(uint32_t flash_addr, uint32_t len, uint8_t *tbuf))FUNC_QSPI_FLASH_WRITE_ADDR)(flash_addr, len, buf);
-	__asm("CPSIE i");
+	end_qspi(tmp);
+	if(!primask)	__asm("CPSIE i");
 	return result;
 }
 
 uint8_t qspi_flash_read(uint32_t flash_addr, uint8_t *buf,uint32_t len)
 {
-	__asm("CPSID i");
+	uint32_t primask=get_primask();
+	if(!primask)	__asm("CPSID i");
 	uint8_t result=((uint8_t(*)(uint32_t flash_addr, uint32_t len, uint8_t *tbuf))FUNC_QSPI_FLASH_READ_ADDR)(flash_addr, len, buf);
-	__asm("CPSIE i");
+	if(!primask)	__asm("CPSIE i");
 	return result;
 }
 
+
+static uint32_t get_enc_addr(uint32_t flash_addr)
+{
+	uint8_t addr_buf[4]={0};
+	uint32_t addr=0;
+	uint32_t primask=get_primask();
+	if(!primask)	__asm("CPSID i");
+	init_otp();
+	((uint8_t(*)(uint32_t flash_addr, uint8_t *buf, uint32_t len, uint8_t type, uint8_t use_pr_flash))FUNC_ENC_WRITE_FLASH_ADDR)(flash_addr,addr_buf,4, 0, 0);
+	deinit_otp();
+	addr |=addr_buf[3];
+	addr |=addr_buf[2]<<8;
+	addr |=addr_buf[1]<<16;
+	addr |=addr_buf[0]<<24;
+	if(!primask)	__asm("CPSIE i");
+	return addr;
+}
+
+void enc_write_flash(uint32_t flash_addr, uint8_t *buf, uint32_t len)
+{
+	uint32_t primask=get_primask();
+	if(!primask)	__asm("CPSID i");
+	uint8_t tmp = pre_qspi();
+	init_otp();
+	((uint8_t(*)(uint32_t flash_addr, uint8_t *buf, uint32_t len, uint8_t type, uint8_t use_pr_flash))FUNC_ENC_WRITE_FLASH_ADDR)(flash_addr,buf,len, 1, 0);
+	deinit_otp();
+	end_qspi(tmp);
+	if(!primask)	__asm("CPSIE i");
+}
+
+
+void enc_read_flash(uint32_t flash_addr,uint8_t *buf,uint32_t len)
+{
+	uint32_t i = 0;
+	if(flash_blank_check(flash_addr,len)==FALSE)
+	{
+		uint32_t primask=get_primask();
+		if(!primask)	__asm("CPSID i");
+		prefetch((uint8_t*)flash_addr,(uint8_t*)(flash_addr+len));
+		for(i=0;i<len;i++)
+		{
+			buf[i] = *(volatile uint8_t *)(flash_addr+i);
+		}
+		if(!primask)	__asm("CPSIE i");
+	}
+	else
+	{
+		memset(buf,0xff,len);
+	}
+	
+	
+}
+
+
 Boolean flash_blank_check(uint32_t startaddr, uint32_t len)
 {
-	__asm("CPSID i");
+	uint32_t primask=get_primask();
+	if(!primask)	__asm("CPSID i");
 	init_otp();
 	uint8_t result=((Boolean(*)(uint32_t startaddr, uint32_t len))FUNC_FLASH_BLANK_CHECK)(((startaddr/32)*32), startaddr+len);
 	deinit_otp();
-	__asm("CPSIE i");
+	if(!primask)	__asm("CPSIE i");
 	return result;
 }
 
@@ -132,7 +193,8 @@
 
 void enc_erase_flash_32byte(uint32_t flash_addr)
 {
-	__asm("CPSID i");
+	uint32_t primask=get_primask();
+	if(!primask)	__asm("CPSID i");
 	uint32_t real_addr = 0;
 	
 	init_otp();
@@ -145,7 +207,7 @@
 	            ((real_addr >> 24) & 0xff) << 0;
 	
 	replace_w_data(real_addr);
-	__asm("CPSIE i");
+	if(!primask)	__asm("CPSIE i");
 }
 
 void enc_erase_flash_32k(uint32_t flash_addr)
Index: fw/sdk/yc_qspi.lib
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: fw/sdk/yc_usb/libraries/SCPU_USB_Device_Library/class/CDC/usbd_cdc_core.c
===================================================================
--- /YC3121_SDK/fw/sdk/yc_usb/libraries/SCPU_USB_Device_Library/class/CDC/usbd_cdc_core.c	(revision 621)
+++ /YC3121_SDK/fw/sdk/yc_usb/libraries/SCPU_USB_Device_Library/class/CDC/usbd_cdc_core.c	(working copy)
@@ -696,7 +696,9 @@
   * @param  epnum: endpoint number
   * @retval status
   */
-  uint8_t CDC_Recv_Flag;
+#define CDC_DATA_TIMEOUT	(CPU_HZ/100)	//10ms
+ uint32_t cdc_wait_data_time; 
+ uint8_t CDC_Recv_Flag;
 static uint8_t  usbd_cdc_DataOut (void *pdev, uint8_t epnum)
 {      
   uint16_t USB_Rx_Cnt;
@@ -714,7 +716,18 @@
   APP_FOPS.pIf_DataRx(USB_Rx_Buffer, USB_Rx_Cnt);
    if(USB_Rx_Cnt == CDC_DATA_OUT_PACKET_SIZE)
    {
-	my_delay_ms(1);
+	//my_delay_ms(1);
+	   
+	cdc_wait_data_time=0;
+	while(cdc_wait_data_time<CDC_DATA_TIMEOUT)
+	{
+		if(USB_OTG_READ_REG8(((USB_OTG_CORE_HANDLE*)pdev)->regs.LENREGS[CDC_OUT_EP])>=CDC_DATA_OUT_PACKET_SIZE)
+		{
+			break;
+		}
+		cdc_wait_data_time++;
+	}
+	
 	usbd_cdc_DataOut(pdev,epnum);
    }
    CDC_Recv_Flag =1;
Index: fw/sdk/yc_usb/libraries/harward_Der/usb_core.h
===================================================================
--- /YC3121_SDK/fw/sdk/yc_usb/libraries/harward_Der/usb_core.h	(revision 621)
+++ /YC3121_SDK/fw/sdk/yc_usb/libraries/harward_Der/usb_core.h	(working copy)
@@ -136,11 +136,11 @@
     /* transaction level variables*/
     uint8_t        *xfer_buff;
     uint32_t       dma_addr;  
-    uint8_t       xfer_len;
-    uint8_t       xfer_count;
+    uint32_t       xfer_len;
+    uint32_t       xfer_count;
     /* Transfer level variables*/  
-    uint8_t       rem_data_len;
-    uint8_t       total_data_len;
+    uint32_t       rem_data_len;
+    uint32_t       total_data_len;
     uint8_t       ctl_data_len;  
 
 } 
Index: fw/sdk/yc_usb/libraries/harward_Der/usb_defines.h
===================================================================
--- /YC3121_SDK/fw/sdk/yc_usb/libraries/harward_Der/usb_defines.h	(revision 621)
+++ /YC3121_SDK/fw/sdk/yc_usb/libraries/harward_Der/usb_defines.h	(working copy)
@@ -16,8 +16,7 @@
 #endif
 	
 /* Include ------------------------------------------------------------------*/
-#include "usb_conf.h"
-#include "yc3121.h"
+#include "usb_conf.h"	
 /* Exported types -----------------------------------------------------------*/
 /* Exported constants -------------------------------------------------------*/	
 /* Exported macro -----------------------------------------------------------*/	
@@ -45,12 +44,7 @@
   * @{
   */
 	
-#if (HARDWAER==M0_FPGA)
-#define CPU_MHZ        (24*1000000)
-#elif (HARDWAER==POS_CHIP)
-#define CRYSTAL_CLK (192*1000000)
-#define CPU_MHZ     ((CRYSTAL_CLK)/((SYSCTRL_HCLK_CON&0x0f)+2))
-#endif
+
 
 #define USB_STATUS_SETUP			0x10
 #define USB_STATUS_SUSPEND			0x20
Index: fw/sdk/yc_usb/scpu_usb_CDC_Device_Demo/usb_main.c
===================================================================
--- /YC3121_SDK/fw/sdk/yc_usb/scpu_usb_CDC_Device_Demo/usb_main.c	(revision 621)
+++ /YC3121_SDK/fw/sdk/yc_usb/scpu_usb_CDC_Device_Demo/usb_main.c	(working copy)
@@ -23,7 +23,7 @@
 #include "usbd_usr.h"
 #include "usbd_desc.h"
 #include "misc.h"
-#include "usbd_cdc_vcp.h"
+
 
 USB_OTG_CORE_HANDLE  USB_OTG_dev;
 extern struct APP_DATA_STRUCT_DEF APP_Gdata_param; 
@@ -49,11 +49,12 @@
 
 
 }
+ extern uint8_t CDC_Recv_Flag;
 
-uint8_t TestBuf[100];
+uint8_t Rxbuf[1024*2] = {0};
 void usb_main(void)
 {
-    
+    int rxlen = 0;
 	enable_clock(CLKCLS_BT);	
 	BT_CLKPLL_EN = 0xff;
 	enable_clock(CLKCLS_USB);
@@ -110,16 +111,21 @@
 					USB_OTG_WRITE_REG8(USB_SOFCNT,0);
 					usb_init();
 				}
-		if (APP_Gdata_param.COM_config_cmp)
+		if (CDC_Recv_Flag)
 		{
-			if (VCP_GetRxChar() != -1)
+			rxlen = VCP_GetRxBuflen();
+			if(rxlen>0)
 			{
-				MyPrintf("> Rx s.\n");
-				DCD_EP_Tx(&USB_OTG_dev,CDC_IN_EP,(uint8_t*)&TestBuf,4);
-			//	VCP_DataTx(TestBuf,4);
-			//	USB_Tx_State = 1; 
-			//	 USB_OTG_dev.dev.class_cb->DataIn(&USB_OTG_dev,1); 
-			//	usbd_cdc_DataIn(&USB_OTG_dev,1);
+				MyPrintf("rxlen =%d\n\r",rxlen);
+				for(int i=0; i<rxlen; i++)
+				{
+					Rxbuf[i] = VCP_GetRxChar();	
+				}
+
+				CDC_Recv_Flag = 0;
+			DCD_EP_Tx(&USB_OTG_dev,CDC_IN_EP,(uint8_t*)Rxbuf,rxlen);
+
+				
 			}
 		}
 	}
Index: fw/sdk/yc_usb/scpu_usb_CDC_Device_Demo/usbd_cdc_vcp.c
===================================================================
--- /YC3121_SDK/fw/sdk/yc_usb/scpu_usb_CDC_Device_Demo/usbd_cdc_vcp.c	(revision 621)
+++ /YC3121_SDK/fw/sdk/yc_usb/scpu_usb_CDC_Device_Demo/usbd_cdc_vcp.c	(working copy)
@@ -347,7 +347,7 @@
         APP_Gdata_param.tx_structure.Tx_counter--;
 		ret = (APP_Gdata_param.tx_structure.APP_Tx_Buffer[APP_Gdata_param.tx_structure.APP_Tx_ptr_out++]);
    //     NVIC_EnableIRQ(USB_IRQn);
-   	MyPrintf("ret =%x\n",ret);
+  // 	MyPrintf("ret =%x\n",ret);
         return ret;
     }
 }
Index: fw/sdk/yc_usb/scpu_usb_CDC_Device_Demo/usbd_conf.h
===================================================================
--- /YC3121_SDK/fw/sdk/yc_usb/scpu_usb_CDC_Device_Demo/usbd_conf.h	(revision 621)
+++ /YC3121_SDK/fw/sdk/yc_usb/scpu_usb_CDC_Device_Demo/usbd_conf.h	(working copy)
@@ -62,7 +62,7 @@
  #define CDC_CMD_PACKET_SZE             8    /* Control Endpoint Packet size */
 
  #define CDC_IN_FRAME_INTERVAL          5    /* Number of frames between IN transfers */
- #define APP_TX_DATA_SIZE              (1024*6)
+ #define APP_TX_DATA_SIZE              (2048)
  #define APP_RX_DATA_SIZE               2048 /* Total size of IN buffer: 
                                                 APP_RX_DATA_SIZE*8/MAX_BAUDARATE*1000 should be > CDC_IN_FRAME_INTERVAL */
 #endif /* USE_USB_OTG_HS */
Index: fw/sdk/yc_usb/scpu_usb_CDC_Device_Demo/usbd_usr.c
===================================================================
--- /YC3121_SDK/fw/sdk/yc_usb/scpu_usb_CDC_Device_Demo/usbd_usr.c	(revision 621)
+++ /YC3121_SDK/fw/sdk/yc_usb/scpu_usb_CDC_Device_Demo/usbd_usr.c	(working copy)
@@ -20,7 +20,6 @@
 #include "yc3121.h"
 #endif
 #include "usb_conf.h"
-#include "stdio.h"
 
 /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
 * @{
Index: fw/sdk/yc_usb/scpu_usb_hid_Device_Demo/usb_main.h
===================================================================
--- /YC3121_SDK/fw/sdk/yc_usb/scpu_usb_hid_Device_Demo/usb_main.h	(revision 621)
+++ /YC3121_SDK/fw/sdk/yc_usb/scpu_usb_hid_Device_Demo/usb_main.h	(working copy)
@@ -5,5 +5,14 @@
 #include <stdio.h>
 #include "usb_dcd_int.h"
 
+
+
+
+
+
+
+
 void usb_main(void);
-void usb_init(void);
+
+
+
