Index: USB_CCID/HalUSB/halBasics.h
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_CCID/HalUSB/halBasics.h	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_CCID/HalUSB/halBasics.h	(nonexistent)
@@ -1,37 +0,0 @@
-#ifndef _HAL_BASIC_H_
-#define _HAL_BASIC_H_
-
-#include "..\core\yc3121.h"
-#include "..\sdk\yc_timer.h"
-#include "..\sdk\yc_otp.h"
-#include "..\sdk\yc_sysctrl.h"
-#define u8 unsigned char
-#define u16 unsigned short
-#define u32 unsigned int
-#define s32 int
-#define s8 char
-//#define	OK			0
-//#define  ERROR      	-1
-//#define 	PARAMERR  	-2
-//#define  TIMEOUT   	-3
-
-
-//#define 	SUCCESS		0
-//#define  FAILED      	-1
-
-//#define  TRUE		0x01
-//#define  FALSE		0x00
-
-//#define 	ON        	0x01
-//#define 	OFF        	0x00
-
-
-void halMsDelay(u32 uiMs);
-void halUsDelay(u32 uiUs);
-void halClkCoreFreqSet(u32 uiFreq);
-void halInitInterrupt(void);
-void halEnableIrq(u32 uiID);
-void halDisableIrq(u32 id);
-void halGetMcuID(u8 *pucMcdID);
-
-#endif
Index: USB_CCID/HalUSB/halBasics.c
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_CCID/HalUSB/halBasics.c	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_CCID/HalUSB/halBasics.c	(nonexistent)
@@ -1,40 +0,0 @@
-#include "halBasics.h"
-#include "yc_systick.h"
-void halMsDelay(u32 uiMs)
-{
-	u32 getCurt = SysTick_GetTick();
-	while(getCurt- SysTick_GetTick()<uiMs);
-	//delay_us(uiMs*1000);
-}
-
-void halUsDelay (u32 us)
-{
-	delay_us(us);
-}
-
-void halClkCoreFreqSet(u32  uiFreq)
-{
-	u32 HCLK_Div = (CRYSTAL_CLK)/ uiFreq-2;
-	SYSCTRL_HCLKConfig(HCLK_Div);
-}
-void halInitInterrupt(void)
-{
-	for(int id=0;id<32;id++)
-	{
-		disable_intr(id);
-	}
-}
-
-void halEnableIrq(u32 uiID)
-{
-	enable_intr(uiID);
-}
-void hal_DisableIrq(u32 id)
-{
-	disable_intr(id);
-}
-void halGetMcuID(u8 *pucMcdID)
-{
-	read_chipid(pucMcdID);
-}
-
Index: USB_CCID/HalUSB/halUSB.h
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_CCID/HalUSB/halUSB.h	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_CCID/HalUSB/halUSB.h	(nonexistent)
@@ -1,62 +0,0 @@
-
-#ifndef __halUSB_H__
-#define __halUSB_H__
-#include <string.h>
-#include <stdio.h>
-#include "usb_main.h"
-#include "halBasics.h"
-#include<stdbool.h>
-
-
-
-
-
-
-void  USB_Init(void);
-void USB_Deinit(void);
-
-bool UsbBulkRecv(unsigned char *Buf, unsigned short *Len);
-
-void UsbBulkSend(unsigned char *Buf, unsigned short Len);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#endif /* __halUSB_H__ */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Index: USB_CCID/HalUSB/halUSB.c
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_CCID/HalUSB/halUSB.c	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_CCID/HalUSB/halUSB.c	(nonexistent)
@@ -1,78 +0,0 @@
-#include "usbd_ccid_core.h"
-#include "usbd_usr.h"
-#include "usbd_desc.h"
-#include <string.h>
-#include <stdio.h>
-#include<stdbool.h>
-#include "usbd_ccid_if.h"
-#include "usb_dcd_int.h"
-#include "halUSB.h"
-#include "usb_main.h"
-#include "halBasics.h"
-
-extern USB_OTG_CORE_HANDLE  USB_OTG_dev;
-extern uint8_t BulkRecv_Flag;
-extern Ccid_bulkout_data_t Ccid_out_cmd[CCID_RECV_Q_SIZE];
-extern uint32_t BulkRecv_len;
-
-
-void  USB_Init(void)
-{
-	  usb_main();
-
-}
-
-
-void USB_Deinit(void)
-{
-	disable_clock(CLKCLS_USB);	
-	disable_intr(INTR_USB); 
-
-}
-
-
-
-void UsbBulkSend(unsigned char *Buf, unsigned short Len)
-{
-
-	DCD_EP_Tx(&USB_OTG_dev, CCID_BULK_IN_EP, Buf, Len);
-	
-}
-
-bool UsbBulkRecv(unsigned char *Buf, unsigned short *Len)
-{
-
-	if(BulkRecv_Flag == 0)
-		return FALSE;
-	else
-	{
-		BulkRecv_Flag =0;
-		*Len = BulkRecv_len -10;
-		memcpy(Buf,( unsigned char *)(&Ccid_bulkout_data.abData[0]),Len);
-		return TRUE;
-	}
-
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Index: USB_CCID/prj/GCC/c.bat
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_CCID/prj/GCC/c.bat	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_CCID/prj/GCC/c.bat	(nonexistent)
@@ -1,3 +0,0 @@
-cls
-make clean
-make
\ No newline at end of file
Index: USB_CCID/prj/GCC/makefile
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_CCID/prj/GCC/makefile	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_CCID/prj/GCC/makefile	(nonexistent)
@@ -1,252 +0,0 @@
-
-ifeq ($(OS),Windows_NT)
-DIR = C:/gcc-arm-none-eabi-7-2018-q2-update-win32
-else
-DIR = /usr/gcc-arm-none-eabi-7-2018-q2-update
-endif
-
-ARCH = $(DIR)/bin/arm-none-eabi
-GCC = $(ARCH)-gcc
-LD = $(ARCH)-ld
-AS = $(ARCH)-as
-OBJCOPY = $(ARCH)-objcopy
-OBJDUMP = "$(ARCH)-objdump"
-LIB_PATH = ../../../../../Librarier
-USER_PATH = ../../user
-
-
-all : output/out.hex
-
-
-CORE_OBJS =  $(LIB_PATH)/startup/flash_start_gcc \
-             $(LIB_PATH)/core/system \
-             $(LIB_PATH)/core/misc \
-             $(LIB_PATH)/core/bt_code \
-             $(LIB_PATH)/sdk/yc_gpio \
-             $(LIB_PATH)/sdk/yc_timer \
-             $(LIB_PATH)/sdk/yc_ipc \
-             $(LIB_PATH)/sdk/yc_uart \
-             $(LIB_PATH)/sdk/yc_bt \
-             $(LIB_PATH)/sdk/yc_systick \
-             $(LIB_PATH)/sdk/yc_lpm \
-             $(LIB_PATH)/sdk/yc_otp \
-             $(LIB_PATH)/sdk/yc_sysctrl \
-             $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der/usb_core \
-             $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der/Usb_dcd \
-             $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der/Usb_dcd_init \
-             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core/usbd_core \
-             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core/usbd_ioreq \
-             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core/usbd_req \
-             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/class/ccid/usbd_ccid_cmd \
-             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/class/ccid/usbd_ccid_core \
-             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/class/ccid/usbd_ccid_if \
-             $(LIB_PATH)/sdk/yc_usb/scpu_usb_ccid_Device_Demo/usb_main \
-             $(LIB_PATH)/sdk/yc_usb/scpu_usb_ccid_Device_Demo/usbd_desc \
-             $(LIB_PATH)/sdk/yc_usb/scpu_usb_ccid_Device_Demo/usbd_usr \
-             $(LIB_PATH)/sdk/yc_usb/scpu_usb_ccid_Device_Demo/sc_itf
-
-
-USER_OBJS = $(USER_PATH)/main
-
-OBJS = $(CORE_OBJS) $(USER_OBJS)
-
-INC_DIR = -I $(LIB_PATH)/core \
-          -I $(LIB_PATH)/sdk \
-          -I $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der \
-          -I $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core \
-          -I $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/class/ccid \
-          -I $(LIB_PATH)/sdk/yc_usb/scpu_usb_ccid_Device_Demo
-
-
-CFLAG =  -mthumb -mcpu=cortex-m0 -c -g -Os $(INC_DIR) $(DEF) -fno-toplevel-reorder -ffunction-sections -fdata-sections
-LDFLAG = -T output/ld.script -Map=output/memmap -lc -lm -lgcc -L "$(DIR)/lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m"  -L "$(DIR)/arm-none-eabi/lib/thumb/v6-m"
-
-define ldscript =
-/* Linker script to configure memory regions.
- * Need modifying for a specific board.
- *   FLASH.ORIGIN: starting address of flash
- *   FLASH.LENGTH: length of flash
- *   RAM.ORIGIN: starting address of RAM bank 0
- *   RAM.LENGTH: length of RAM bank 0
- */
-MEMORY
-{
-  FLASH (rx) : ORIGIN = 0x1000000, LENGTH = 0x80000 /* 512K */
-  RAM (rwx) : ORIGIN = 0x20000, LENGTH = 0x10000 /* 64K */
-}
-
-/* Linker script to place sections and symbol values. Should be used together
- * with other linker script that defines memory regions FLASH and RAM.
- * It references following symbols, which must be defined in code:
- *   Reset_Handler : Entry of reset handler
- *
- * It defines following symbols, which code can use without definition:
- *   __exidx_start
- *   __exidx_end
- *   __copy_table_start__
- *   __copy_table_end__
- *   __zero_table_start__
- *   __zero_table_end__
- *   __etext
- *   __data_start__
- *   __preinit_array_start
- *   __preinit_array_end
- *   __init_array_start
- *   __init_array_end
- *   __fini_array_start
- *   __fini_array_end
- *   __data_end__
- *   __bss_start__
- *   __bss_end__
- *   __end__
- *   end
- *   __HeapLimit
- *   __StackLimit
- *   __StackTop
- *   __stack
- */
-ENTRY(Reset_Handler)
-
-SECTIONS
-{
-	.text :
-	{
-		*flash_start*.o
-		*(.text*)
-
-		KEEP(*(.init))
-		KEEP(*(.fini))
-
-		/* .ctors */
-		*crtbegin.o(.ctors)
-		*crtbegin?.o(.ctors)
-		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
-		*(SORT(.ctors.*))
-		*(.ctors)
-
-		/* .dtors */
- 		*crtbegin.o(.dtors)
- 		*crtbegin?.o(.dtors)
- 		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
- 		*(SORT(.dtors.*))
- 		*(.dtors)
-
-		*(.rodata*)
-
-		KEEP(*(.eh_frame*))
-	} > FLASH
-
-
-
-	.ARM.extab :
-	{
-		*(.ARM.extab* .gnu.linkonce.armextab.*)
-	} > FLASH
-
-
-	.ARM.exidx :
-	{
-		*(.ARM.exidx* .gnu.linkonce.armexidx.*)
-	} > FLASH
-
-	 . = ALIGN(4);
-	__exidx_start = .;
-
-	__etext = .;
-
-	.data : AT (__etext)
-	{
-		__data_start__ = .;
-		*(vtable)
-		*(.data*)
-
-		. = ALIGN(4);
-		/* preinit data */
-		PROVIDE_HIDDEN (__preinit_array_start = .);
-		KEEP(*(.preinit_array))
-		PROVIDE_HIDDEN (__preinit_array_end = .);
-
-		. = ALIGN(4);
-		/* init data */
-		PROVIDE_HIDDEN (__init_array_start = .);
-		KEEP(*(SORT(.init_array.*)))
-		KEEP(*(.init_array))
-		PROVIDE_HIDDEN (__init_array_end = .);
-
-
-		. = ALIGN(4);
-		/* finit data */
-		PROVIDE_HIDDEN (__fini_array_start = .);
-		KEEP(*(SORT(.fini_array.*)))
-		KEEP(*(.fini_array))
-		PROVIDE_HIDDEN (__fini_array_end = .);
-
-		KEEP(*(.jcr*))
-		. = ALIGN(4);
-		/* All data end */
-		__data_end__ = .;
-
-	} > RAM
-
-	.bss :
-	{
-		. = ALIGN(4);
-		__bss_start__ = .;
-		*(.bss*)
-		*(COMMON)
-		. = ALIGN(4);
-		__bss_end__ = .;
-	} > RAM
-
-	.heap (COPY):
-	{
-		__end__ = .;
-		PROVIDE(end = .);
-		*(.heap*)
-		__HeapLimit = .;
-	} > RAM
-
-	/* .stack_dummy section doesn't contains any symbols. It is only
-	 * used for linker to calculate size of stack sections, and assign
-	 * values to stack symbols later */
-	.stack_dummy (COPY):
-	{
-		*(.stack*)
-	} > RAM
-
-	/* Set stack top to end of RAM, and stack limit move down by
-	 * size of stack_dummy section */
-	__StackTop = ORIGIN(RAM) + LENGTH(RAM);
-	__StackLimit = __StackTop - SIZEOF(.stack_dummy);
-	PROVIDE(__stack = __StackTop);
-
-	/* Check if data + heap + stack exceeds RAM limit */
-	ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
-}
-endef
-
-
-output/out.hex : output/out
-	$(OBJCOPY) $^ -O ihex $@
-
-
-output/out : $(addprefix output/, $(addsuffix .o, $(OBJS)))
-	$(file >output/ld.script, $(ldscript))
-	$(LD) $(addprefix output/obj/,$(addsuffix .o, $(notdir $(OBJS)))) -o $@ $(LDFLAG)
-	$(OBJDUMP) -S $@ > output/disasm
-
-output/%.o : %.c
-	$(GCC) $< $(CFLAG) -o output/obj/$(notdir $@)
-
-output/%.o : %.s
-	$(AS) $^ -mthumb -mcpu=cortex-m0 -o output/obj/$(notdir $@)
-
-
-clean :
-ifeq ($(OS),Windows_NT)
-	del /Q output\*.*
-	del /Q output\obj\*.*
-else
-	rm -rf output/*
-	rm -rf output/obj/*
-endif
Index: USB_CCID/prj/MDK/Objects/YC3121_keil.sct
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_CCID/prj/MDK/Objects/YC3121_keil.sct	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_CCID/prj/MDK/Objects/YC3121_keil.sct	(nonexistent)
@@ -1,55 +0,0 @@
-; *************************************************************
-; *** Scatter-Loading Description File generated by uVision ***
-; *************************************************************
-
-LR_IROM1 0x00000000 0x0001fff  {    ; load region size_region
-  ER_IROM1 0x00000000 0x00001fff  {  ; load address = execution address
-   startup.o (RESET, +First)
-   startup.o (|.text|,+RO)
-;   *(InRoot$$Sections)
-  }
-  ;ER_IROM2 0x4000   {
-  ;rom_main.o (+RO)
-  ;}
-  
-  ;ER_IROM3 0x100000 {
-	  ;*(InRoot$$Sections)
-  ;}
-	
-  ;ER_IROM4 0x100400   {
-  ;flash_start.o (+RO)
-  ;.ANY (+RO) 
-  ;}
-  
-  ;RW_IRAM1 0x000d0000 0x0010000  {  ; RW data
-   ;.ANY (+RW +ZI)
-  ;}
-  
-;  ARM_LIB_STACK 0xE0000 EMPTY -0x10000{}
-}
-
-;LR_IROM2 0x4000 0x4000{
-;	ER_IROM2 0x4000 {
-;	  rom_main.o (+RO)
-;	}
-;}
-
-LR_IROM3 0x1000200 0x200{
-	ER_IROM3 0x1000200 {
-	  flash_start.o (|.flash_start|,+RO)
-	}
-}
-
-LR_IROM4 0x1000400 0x1000000{
-	ER_IROM4 0x1000400 {
-;	  flash_start.o (|.flash_start|,+RO)
-	  *(InRoot$$Sections)
-	  .ANY (+RO)
-	}
-	
-	
-	 RW_IRAM2 0x00020000 0x010000  {  ; RW data
-	.ANY (+RW +ZI)
-	}
-}
-
Index: USB_CCID/prj/MDK/YC3121_Keil.uvoptx
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_CCID/prj/MDK/YC3121_Keil.uvoptx	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_CCID/prj/MDK/YC3121_Keil.uvoptx	(nonexistent)
@@ -1,595 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
-<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
-
-  <SchemaVersion>1.0</SchemaVersion>
-
-  <Header>### uVision Project, (C) Keil Software</Header>
-
-  <Extensions>
-    <cExt>*.c</cExt>
-    <aExt>*.s*; *.src; *.a*</aExt>
-    <oExt>*.obj; *.o</oExt>
-    <lExt>*.lib</lExt>
-    <tExt>*.txt; *.h; *.inc</tExt>
-    <pExt>*.plm</pExt>
-    <CppX>*.cpp</CppX>
-    <nMigrate>0</nMigrate>
-  </Extensions>
-
-  <DaveTm>
-    <dwLowDateTime>0</dwLowDateTime>
-    <dwHighDateTime>0</dwHighDateTime>
-  </DaveTm>
-
-  <Target>
-    <TargetName>YC3121</TargetName>
-    <ToolsetNumber>0x4</ToolsetNumber>
-    <ToolsetName>ARM-ADS</ToolsetName>
-    <TargetOption>
-      <CLKADS>12000000</CLKADS>
-      <OPTTT>
-        <gFlags>1</gFlags>
-        <BeepAtEnd>1</BeepAtEnd>
-        <RunSim>0</RunSim>
-        <RunTarget>1</RunTarget>
-        <RunAbUc>0</RunAbUc>
-      </OPTTT>
-      <OPTHX>
-        <HexSelection>1</HexSelection>
-        <FlashByte>65535</FlashByte>
-        <HexRangeLowAddress>0</HexRangeLowAddress>
-        <HexRangeHighAddress>0</HexRangeHighAddress>
-        <HexOffset>0</HexOffset>
-      </OPTHX>
-      <OPTLEX>
-        <PageWidth>79</PageWidth>
-        <PageLength>66</PageLength>
-        <TabStop>8</TabStop>
-        <ListingPath>.\Listings\</ListingPath>
-      </OPTLEX>
-      <ListingPage>
-        <CreateCListing>1</CreateCListing>
-        <CreateAListing>1</CreateAListing>
-        <CreateLListing>1</CreateLListing>
-        <CreateIListing>0</CreateIListing>
-        <AsmCond>1</AsmCond>
-        <AsmSymb>1</AsmSymb>
-        <AsmXref>0</AsmXref>
-        <CCond>1</CCond>
-        <CCode>0</CCode>
-        <CListInc>0</CListInc>
-        <CSymb>0</CSymb>
-        <LinkerCodeListing>0</LinkerCodeListing>
-      </ListingPage>
-      <OPTXL>
-        <LMap>1</LMap>
-        <LComments>1</LComments>
-        <LGenerateSymbols>1</LGenerateSymbols>
-        <LLibSym>1</LLibSym>
-        <LLines>1</LLines>
-        <LLocSym>1</LLocSym>
-        <LPubSym>1</LPubSym>
-        <LXref>0</LXref>
-        <LExpSel>0</LExpSel>
-      </OPTXL>
-      <OPTFL>
-        <tvExp>1</tvExp>
-        <tvExpOptDlg>0</tvExpOptDlg>
-        <IsCurrentTarget>1</IsCurrentTarget>
-      </OPTFL>
-      <CpuCode>7</CpuCode>
-      <DebugOpt>
-        <uSim>0</uSim>
-        <uTrg>1</uTrg>
-        <sLdApp>1</sLdApp>
-        <sGomain>1</sGomain>
-        <sRbreak>1</sRbreak>
-        <sRwatch>1</sRwatch>
-        <sRmem>1</sRmem>
-        <sRfunc>1</sRfunc>
-        <sRbox>1</sRbox>
-        <tLdApp>1</tLdApp>
-        <tGomain>1</tGomain>
-        <tRbreak>1</tRbreak>
-        <tRwatch>1</tRwatch>
-        <tRmem>1</tRmem>
-        <tRfunc>0</tRfunc>
-        <tRbox>1</tRbox>
-        <tRtrace>1</tRtrace>
-        <sRSysVw>1</sRSysVw>
-        <tRSysVw>1</tRSysVw>
-        <sRunDeb>0</sRunDeb>
-        <sLrtime>0</sLrtime>
-        <bEvRecOn>1</bEvRecOn>
-        <bSchkAxf>0</bSchkAxf>
-        <bTchkAxf>0</bTchkAxf>
-        <nTsel>4</nTsel>
-        <sDll></sDll>
-        <sDllPa></sDllPa>
-        <sDlgDll></sDlgDll>
-        <sDlgPa></sDlgPa>
-        <sIfile></sIfile>
-        <tDll></tDll>
-        <tDllPa></tDllPa>
-        <tDlgDll></tDlgDll>
-        <tDlgPa></tDlgPa>
-        <tIfile>..\..\..\..\..\ConfigFiles\MDK\flash.ini</tIfile>
-        <pMon>Segger\JL2CM3.dll</pMon>
-      </DebugOpt>
-      <TargetDriverDllRegistry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>DLGUARM</Key>
-          <Name>d</Name>
-        </SetRegEntry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>PWSTATINFO</Key>
-          <Name>200,50,700</Name>
-        </SetRegEntry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>ARMRTXEVENTFLAGS</Key>
-          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
-        </SetRegEntry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>DLGTARM</Key>
-          <Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)</Name>
-        </SetRegEntry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>ARMDBGFLAGS</Key>
-          <Name></Name>
-        </SetRegEntry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>JL2CM3</Key>
-          <Name>-U4294967295 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(0BB11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO31 -FD20000 -FCA000 -FN1 -FF0YC3121 -FS01000000 -FL080000</Name>
-        </SetRegEntry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>UL2CM3</Key>
-          <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000)</Name>
-        </SetRegEntry>
-      </TargetDriverDllRegistry>
-      <Breakpoint>
-        <Bp>
-          <Number>0</Number>
-          <Type>0</Type>
-          <LineNumber>689</LineNumber>
-          <EnabledFlag>1</EnabledFlag>
-          <Address>16786508</Address>
-          <ByteObject>0</ByteObject>
-          <HtxType>0</HtxType>
-          <ManyObjects>0</ManyObjects>
-          <SizeOfObject>0</SizeOfObject>
-          <BreakByAccess>0</BreakByAccess>
-          <BreakIfRCount>1</BreakIfRCount>
-          <Filename>D:\2_Working\3_SecurityIC\YC3121\2_Software\YC3121_Test\Yc3121\YC3121_demo\ModuleDemo\USB\USB_CCID\user\usb_test\usb_test.c</Filename>
-          <ExecCommand></ExecCommand>
-          <Expression>\\YC3121_Keil\../../user/usb_test/usb_test.c\689</Expression>
-        </Bp>
-      </Breakpoint>
-      <Tracepoint>
-        <THDelay>0</THDelay>
-      </Tracepoint>
-      <DebugFlag>
-        <trace>0</trace>
-        <periodic>0</periodic>
-        <aLwin>1</aLwin>
-        <aCover>0</aCover>
-        <aSer1>0</aSer1>
-        <aSer2>0</aSer2>
-        <aPa>0</aPa>
-        <viewmode>1</viewmode>
-        <vrSel>0</vrSel>
-        <aSym>0</aSym>
-        <aTbox>0</aTbox>
-        <AscS1>0</AscS1>
-        <AscS2>0</AscS2>
-        <AscS3>0</AscS3>
-        <aSer3>0</aSer3>
-        <eProf>0</eProf>
-        <aLa>0</aLa>
-        <aPa1>0</aPa1>
-        <AscS4>0</AscS4>
-        <aSer4>0</aSer4>
-        <StkLoc>0</StkLoc>
-        <TrcWin>0</TrcWin>
-        <newCpu>0</newCpu>
-        <uProt>0</uProt>
-      </DebugFlag>
-      <LintExecutable></LintExecutable>
-      <LintConfigFile></LintConfigFile>
-      <bLintAuto>0</bLintAuto>
-      <bAutoGenD>0</bAutoGenD>
-      <LntExFlags>0</LntExFlags>
-      <pMisraName></pMisraName>
-      <pszMrule></pszMrule>
-      <pSingCmds></pSingCmds>
-      <pMultCmds></pMultCmds>
-      <pMisraNamep></pMisraNamep>
-      <pszMrulep></pszMrulep>
-      <pSingCmdsp></pSingCmdsp>
-      <pMultCmdsp></pMultCmdsp>
-    </TargetOption>
-  </Target>
-
-  <Group>
-    <GroupName>core</GroupName>
-    <tvExp>1</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>1</GroupNumber>
-      <FileNumber>1</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\core\misc.c</PathWithFileName>
-      <FilenameWithoutPath>misc.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>1</GroupNumber>
-      <FileNumber>2</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\core\system.c</PathWithFileName>
-      <FilenameWithoutPath>system.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>1</GroupNumber>
-      <FileNumber>3</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\core\bt_code.c</PathWithFileName>
-      <FilenameWithoutPath>bt_code.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-  </Group>
-
-  <Group>
-    <GroupName>main</GroupName>
-    <tvExp>1</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>2</GroupNumber>
-      <FileNumber>4</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\user\main.c</PathWithFileName>
-      <FilenameWithoutPath>main.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-  </Group>
-
-  <Group>
-    <GroupName>sdk</GroupName>
-    <tvExp>1</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>5</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_gpio.c</PathWithFileName>
-      <FilenameWithoutPath>yc_gpio.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>6</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_uart.c</PathWithFileName>
-      <FilenameWithoutPath>yc_uart.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>7</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_timer.c</PathWithFileName>
-      <FilenameWithoutPath>yc_timer.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>8</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_ipc.c</PathWithFileName>
-      <FilenameWithoutPath>yc_ipc.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>9</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_lpm.c</PathWithFileName>
-      <FilenameWithoutPath>yc_lpm.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>10</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_sysctrl.c</PathWithFileName>
-      <FilenameWithoutPath>yc_sysctrl.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>11</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_otp.c</PathWithFileName>
-      <FilenameWithoutPath>yc_otp.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>12</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_bt.c</PathWithFileName>
-      <FilenameWithoutPath>yc_bt.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>13</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_systick.c</PathWithFileName>
-      <FilenameWithoutPath>yc_systick.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-  </Group>
-
-  <Group>
-    <GroupName>startup</GroupName>
-    <tvExp>1</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>4</GroupNumber>
-      <FileNumber>14</FileNumber>
-      <FileType>2</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\startup\flash_start.s</PathWithFileName>
-      <FilenameWithoutPath>flash_start.s</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>4</GroupNumber>
-      <FileNumber>15</FileNumber>
-      <FileType>2</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\startup\startup.s</PathWithFileName>
-      <FilenameWithoutPath>startup.s</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-  </Group>
-
-  <Group>
-    <GroupName>USB</GroupName>
-    <tvExp>1</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>16</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\usb_core.c</PathWithFileName>
-      <FilenameWithoutPath>usb_core.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>17</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\Usb_dcd.c</PathWithFileName>
-      <FilenameWithoutPath>Usb_dcd.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>18</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\Usb_dcd_init.c</PathWithFileName>
-      <FilenameWithoutPath>Usb_dcd_init.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>19</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\ccid\usbd_ccid_cmd.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_ccid_cmd.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>20</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\ccid\usbd_ccid_core.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_ccid_core.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>21</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\ccid\usbd_ccid_if.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_ccid_if.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>22</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_core.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_core.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>23</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_ioreq.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_ioreq.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>24</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_req.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_req.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>25</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_ccid_Device_Demo\sc_itf.c</PathWithFileName>
-      <FilenameWithoutPath>sc_itf.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>26</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_ccid_Device_Demo\usb_main.c</PathWithFileName>
-      <FilenameWithoutPath>usb_main.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>27</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_ccid_Device_Demo\usbd_desc.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_desc.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>28</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_ccid_Device_Demo\usbd_usr.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_usr.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-  </Group>
-
-</ProjectOpt>
Index: USB_CCID/prj/MDK/YC3121_Keil.uvprojx
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_CCID/prj/MDK/YC3121_Keil.uvprojx	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_CCID/prj/MDK/YC3121_Keil.uvprojx	(nonexistent)
@@ -1,557 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
-<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
-
-  <SchemaVersion>2.1</SchemaVersion>
-
-  <Header>### uVision Project, (C) Keil Software</Header>
-
-  <Targets>
-    <Target>
-      <TargetName>YC3121</TargetName>
-      <ToolsetNumber>0x4</ToolsetNumber>
-      <ToolsetName>ARM-ADS</ToolsetName>
-      <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
-      <uAC6>0</uAC6>
-      <TargetOption>
-        <TargetCommonOption>
-          <Device>ARMCM0</Device>
-          <Vendor>ARM</Vendor>
-          <PackID>ARM.CMSIS.5.5.1</PackID>
-          <PackURL>http://www.keil.com/pack/</PackURL>
-          <Cpu>IRAM(0x20000000,0x00020000) IROM(0x00000000,0x00040000) CPUTYPE("Cortex-M0") CLOCK(12000000) ESEL ELITTLE</Cpu>
-          <FlashUtilSpec></FlashUtilSpec>
-          <StartupFile></StartupFile>
-          <FlashDriverDll>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000)</FlashDriverDll>
-          <DeviceId>0</DeviceId>
-          <RegisterFile>$$Device:ARMCM0$Device\ARM\ARMCM0\Include\ARMCM0.h</RegisterFile>
-          <MemoryEnv></MemoryEnv>
-          <Cmp></Cmp>
-          <Asm></Asm>
-          <Linker></Linker>
-          <OHString></OHString>
-          <InfinionOptionDll></InfinionOptionDll>
-          <SLE66CMisc></SLE66CMisc>
-          <SLE66AMisc></SLE66AMisc>
-          <SLE66LinkerMisc></SLE66LinkerMisc>
-          <SFDFile>$$Device:ARMCM0$Device\ARM\SVD\ARMCM0.svd</SFDFile>
-          <bCustSvd>0</bCustSvd>
-          <UseEnv>0</UseEnv>
-          <BinPath></BinPath>
-          <IncludePath></IncludePath>
-          <LibPath></LibPath>
-          <RegisterFilePath></RegisterFilePath>
-          <DBRegisterFilePath></DBRegisterFilePath>
-          <TargetStatus>
-            <Error>0</Error>
-            <ExitCodeStop>0</ExitCodeStop>
-            <ButtonStop>0</ButtonStop>
-            <NotGenerated>0</NotGenerated>
-            <InvalidFlash>1</InvalidFlash>
-          </TargetStatus>
-          <OutputDirectory>.\Objects\</OutputDirectory>
-          <OutputName>YC3121_Keil</OutputName>
-          <CreateExecutable>1</CreateExecutable>
-          <CreateLib>0</CreateLib>
-          <CreateHexFile>1</CreateHexFile>
-          <DebugInformation>1</DebugInformation>
-          <BrowseInformation>1</BrowseInformation>
-          <ListingPath>.\Listings\</ListingPath>
-          <HexFormatSelection>1</HexFormatSelection>
-          <Merge32K>0</Merge32K>
-          <CreateBatchFile>1</CreateBatchFile>
-          <BeforeCompile>
-            <RunUserProg1>0</RunUserProg1>
-            <RunUserProg2>0</RunUserProg2>
-            <UserProg1Name></UserProg1Name>
-            <UserProg2Name></UserProg2Name>
-            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
-            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
-            <nStopU1X>0</nStopU1X>
-            <nStopU2X>0</nStopU2X>
-          </BeforeCompile>
-          <BeforeMake>
-            <RunUserProg1>0</RunUserProg1>
-            <RunUserProg2>0</RunUserProg2>
-            <UserProg1Name></UserProg1Name>
-            <UserProg2Name></UserProg2Name>
-            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
-            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
-            <nStopB1X>0</nStopB1X>
-            <nStopB2X>0</nStopB2X>
-          </BeforeMake>
-          <AfterMake>
-            <RunUserProg1>1</RunUserProg1>
-            <RunUserProg2>0</RunUserProg2>
-            <UserProg1Name>fromelf.exe --text -a -c --output=@L_asm.txt "!L"</UserProg1Name>
-            <UserProg2Name></UserProg2Name>
-            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
-            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
-            <nStopA1X>0</nStopA1X>
-            <nStopA2X>0</nStopA2X>
-          </AfterMake>
-          <SelectedForBatchBuild>0</SelectedForBatchBuild>
-          <SVCSIdString></SVCSIdString>
-        </TargetCommonOption>
-        <CommonProperty>
-          <UseCPPCompiler>0</UseCPPCompiler>
-          <RVCTCodeConst>0</RVCTCodeConst>
-          <RVCTZI>0</RVCTZI>
-          <RVCTOtherData>0</RVCTOtherData>
-          <ModuleSelection>0</ModuleSelection>
-          <IncludeInBuild>1</IncludeInBuild>
-          <AlwaysBuild>0</AlwaysBuild>
-          <GenerateAssemblyFile>0</GenerateAssemblyFile>
-          <AssembleAssemblyFile>0</AssembleAssemblyFile>
-          <PublicsOnly>0</PublicsOnly>
-          <StopOnExitCode>3</StopOnExitCode>
-          <CustomArgument></CustomArgument>
-          <IncludeLibraryModules></IncludeLibraryModules>
-          <ComprImg>1</ComprImg>
-        </CommonProperty>
-        <DllOption>
-          <SimDllName>SARMCM3.DLL</SimDllName>
-          <SimDllArguments>  </SimDllArguments>
-          <SimDlgDll>DARMCM1.DLL</SimDlgDll>
-          <SimDlgDllArguments>-pCM0</SimDlgDllArguments>
-          <TargetDllName>SARMCM3.DLL</TargetDllName>
-          <TargetDllArguments> </TargetDllArguments>
-          <TargetDlgDll>TARMCM1.DLL</TargetDlgDll>
-          <TargetDlgDllArguments>-pCM0</TargetDlgDllArguments>
-        </DllOption>
-        <DebugOption>
-          <OPTHX>
-            <HexSelection>1</HexSelection>
-            <HexRangeLowAddress>0</HexRangeLowAddress>
-            <HexRangeHighAddress>0</HexRangeHighAddress>
-            <HexOffset>0</HexOffset>
-            <Oh166RecLen>16</Oh166RecLen>
-          </OPTHX>
-        </DebugOption>
-        <Utilities>
-          <Flash1>
-            <UseTargetDll>1</UseTargetDll>
-            <UseExternalTool>0</UseExternalTool>
-            <RunIndependent>1</RunIndependent>
-            <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
-            <Capability>1</Capability>
-            <DriverSelection>4100</DriverSelection>
-          </Flash1>
-          <bUseTDR>0</bUseTDR>
-          <Flash2>Segger\JL2CM3.dll</Flash2>
-          <Flash3>"" ()</Flash3>
-          <Flash4></Flash4>
-          <pFcarmOut></pFcarmOut>
-          <pFcarmGrp></pFcarmGrp>
-          <pFcArmRoot></pFcArmRoot>
-          <FcArmLst>0</FcArmLst>
-        </Utilities>
-        <TargetArmAds>
-          <ArmAdsMisc>
-            <GenerateListings>0</GenerateListings>
-            <asHll>1</asHll>
-            <asAsm>1</asAsm>
-            <asMacX>1</asMacX>
-            <asSyms>1</asSyms>
-            <asFals>1</asFals>
-            <asDbgD>1</asDbgD>
-            <asForm>1</asForm>
-            <ldLst>0</ldLst>
-            <ldmm>1</ldmm>
-            <ldXref>1</ldXref>
-            <BigEnd>0</BigEnd>
-            <AdsALst>1</AdsALst>
-            <AdsACrf>1</AdsACrf>
-            <AdsANop>0</AdsANop>
-            <AdsANot>0</AdsANot>
-            <AdsLLst>1</AdsLLst>
-            <AdsLmap>1</AdsLmap>
-            <AdsLcgr>1</AdsLcgr>
-            <AdsLsym>1</AdsLsym>
-            <AdsLszi>1</AdsLszi>
-            <AdsLtoi>1</AdsLtoi>
-            <AdsLsun>1</AdsLsun>
-            <AdsLven>1</AdsLven>
-            <AdsLsxf>1</AdsLsxf>
-            <RvctClst>0</RvctClst>
-            <GenPPlst>0</GenPPlst>
-            <AdsCpuType>"Cortex-M0"</AdsCpuType>
-            <RvctDeviceName></RvctDeviceName>
-            <mOS>0</mOS>
-            <uocRom>0</uocRom>
-            <uocRam>0</uocRam>
-            <hadIROM>1</hadIROM>
-            <hadIRAM>1</hadIRAM>
-            <hadXRAM>0</hadXRAM>
-            <uocXRam>0</uocXRam>
-            <RvdsVP>0</RvdsVP>
-            <RvdsMve>0</RvdsMve>
-            <hadIRAM2>0</hadIRAM2>
-            <hadIROM2>0</hadIROM2>
-            <StupSel>8</StupSel>
-            <useUlib>1</useUlib>
-            <EndSel>1</EndSel>
-            <uLtcg>0</uLtcg>
-            <nSecure>0</nSecure>
-            <RoSelD>3</RoSelD>
-            <RwSelD>3</RwSelD>
-            <CodeSel>0</CodeSel>
-            <OptFeed>0</OptFeed>
-            <NoZi1>0</NoZi1>
-            <NoZi2>0</NoZi2>
-            <NoZi3>0</NoZi3>
-            <NoZi4>0</NoZi4>
-            <NoZi5>0</NoZi5>
-            <Ro1Chk>0</Ro1Chk>
-            <Ro2Chk>0</Ro2Chk>
-            <Ro3Chk>0</Ro3Chk>
-            <Ir1Chk>1</Ir1Chk>
-            <Ir2Chk>0</Ir2Chk>
-            <Ra1Chk>0</Ra1Chk>
-            <Ra2Chk>0</Ra2Chk>
-            <Ra3Chk>0</Ra3Chk>
-            <Im1Chk>1</Im1Chk>
-            <Im2Chk>0</Im2Chk>
-            <OnChipMemories>
-              <Ocm1>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm1>
-              <Ocm2>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm2>
-              <Ocm3>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm3>
-              <Ocm4>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm4>
-              <Ocm5>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm5>
-              <Ocm6>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm6>
-              <IRAM>
-                <Type>0</Type>
-                <StartAddress>0x20000000</StartAddress>
-                <Size>0x20000</Size>
-              </IRAM>
-              <IROM>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x40000</Size>
-              </IROM>
-              <XRAM>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </XRAM>
-              <OCR_RVCT1>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT1>
-              <OCR_RVCT2>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT2>
-              <OCR_RVCT3>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT3>
-              <OCR_RVCT4>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x40000</Size>
-              </OCR_RVCT4>
-              <OCR_RVCT5>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT5>
-              <OCR_RVCT6>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT6>
-              <OCR_RVCT7>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT7>
-              <OCR_RVCT8>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT8>
-              <OCR_RVCT9>
-                <Type>0</Type>
-                <StartAddress>0x20000000</StartAddress>
-                <Size>0x20000</Size>
-              </OCR_RVCT9>
-              <OCR_RVCT10>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT10>
-            </OnChipMemories>
-            <RvctStartVector></RvctStartVector>
-          </ArmAdsMisc>
-          <Cads>
-            <interw>1</interw>
-            <Optim>3</Optim>
-            <oTime>0</oTime>
-            <SplitLS>0</SplitLS>
-            <OneElfS>0</OneElfS>
-            <Strict>0</Strict>
-            <EnumInt>0</EnumInt>
-            <PlainCh>0</PlainCh>
-            <Ropi>0</Ropi>
-            <Rwpi>0</Rwpi>
-            <wLevel>2</wLevel>
-            <uThumb>0</uThumb>
-            <uSurpInc>0</uSurpInc>
-            <uC99>1</uC99>
-            <uGnu>0</uGnu>
-            <useXO>0</useXO>
-            <v6Lang>1</v6Lang>
-            <v6LangP>1</v6LangP>
-            <vShortEn>1</vShortEn>
-            <vShortWch>1</vShortWch>
-            <v6Lto>0</v6Lto>
-            <v6WtE>0</v6WtE>
-            <v6Rtti>0</v6Rtti>
-            <VariousControls>
-              <MiscControls></MiscControls>
-              <Define>__USEKEILCOMPILE__</Define>
-              <Undefine></Undefine>
-              <IncludePath>..\..\..\..\..\Librarier\core;..\..\..\..\..\Librarier\sdk;..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der;..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\ccid;..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core;..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_ccid_Device_Demo;..\..\user</IncludePath>
-            </VariousControls>
-          </Cads>
-          <Aads>
-            <interw>1</interw>
-            <Ropi>0</Ropi>
-            <Rwpi>0</Rwpi>
-            <thumb>0</thumb>
-            <SplitLS>0</SplitLS>
-            <SwStkChk>0</SwStkChk>
-            <NoWarn>0</NoWarn>
-            <uSurpInc>0</uSurpInc>
-            <useXO>0</useXO>
-            <uClangAs>0</uClangAs>
-            <VariousControls>
-              <MiscControls></MiscControls>
-              <Define></Define>
-              <Undefine></Undefine>
-              <IncludePath></IncludePath>
-            </VariousControls>
-          </Aads>
-          <LDads>
-            <umfTarg>0</umfTarg>
-            <Ropi>0</Ropi>
-            <Rwpi>0</Rwpi>
-            <noStLib>0</noStLib>
-            <RepFail>1</RepFail>
-            <useFile>0</useFile>
-            <TextAddressRange>0x00000000</TextAddressRange>
-            <DataAddressRange>0xd0000</DataAddressRange>
-            <pXoBase></pXoBase>
-            <ScatterFile>.\Objects\YC3121_keil.sct</ScatterFile>
-            <IncludeLibs></IncludeLibs>
-            <IncludeLibsPath></IncludeLibsPath>
-            <Misc></Misc>
-            <LinkerInputFile></LinkerInputFile>
-            <DisabledWarnings></DisabledWarnings>
-          </LDads>
-        </TargetArmAds>
-      </TargetOption>
-      <Groups>
-        <Group>
-          <GroupName>core</GroupName>
-          <Files>
-            <File>
-              <FileName>misc.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\core\misc.c</FilePath>
-            </File>
-            <File>
-              <FileName>system.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\core\system.c</FilePath>
-            </File>
-            <File>
-              <FileName>bt_code.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\core\bt_code.c</FilePath>
-            </File>
-          </Files>
-        </Group>
-        <Group>
-          <GroupName>main</GroupName>
-          <Files>
-            <File>
-              <FileName>main.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\user\main.c</FilePath>
-            </File>
-          </Files>
-        </Group>
-        <Group>
-          <GroupName>sdk</GroupName>
-          <Files>
-            <File>
-              <FileName>yc_gpio.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_gpio.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_uart.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_uart.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_timer.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_timer.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_ipc.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_ipc.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_lpm.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_lpm.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_sysctrl.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_sysctrl.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_otp.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_otp.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_bt.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_bt.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_systick.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_systick.c</FilePath>
-            </File>
-          </Files>
-        </Group>
-        <Group>
-          <GroupName>startup</GroupName>
-          <Files>
-            <File>
-              <FileName>flash_start.s</FileName>
-              <FileType>2</FileType>
-              <FilePath>..\..\..\..\..\Librarier\startup\flash_start.s</FilePath>
-            </File>
-            <File>
-              <FileName>startup.s</FileName>
-              <FileType>2</FileType>
-              <FilePath>..\..\..\..\..\Librarier\startup\startup.s</FilePath>
-            </File>
-          </Files>
-        </Group>
-        <Group>
-          <GroupName>USB</GroupName>
-          <Files>
-            <File>
-              <FileName>usb_core.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\usb_core.c</FilePath>
-            </File>
-            <File>
-              <FileName>Usb_dcd.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\Usb_dcd.c</FilePath>
-            </File>
-            <File>
-              <FileName>Usb_dcd_init.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\Usb_dcd_init.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_ccid_cmd.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\ccid\usbd_ccid_cmd.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_ccid_core.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\ccid\usbd_ccid_core.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_ccid_if.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\ccid\usbd_ccid_if.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_core.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_core.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_ioreq.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_ioreq.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_req.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_req.c</FilePath>
-            </File>
-            <File>
-              <FileName>sc_itf.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_ccid_Device_Demo\sc_itf.c</FilePath>
-            </File>
-            <File>
-              <FileName>usb_main.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_ccid_Device_Demo\usb_main.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_desc.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_ccid_Device_Demo\usbd_desc.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_usr.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_ccid_Device_Demo\usbd_usr.c</FilePath>
-            </File>
-          </Files>
-        </Group>
-      </Groups>
-    </Target>
-  </Targets>
-
-  <RTE>
-    <apis/>
-    <components/>
-    <files/>
-  </RTE>
-
-</Project>
Index: USB_CCID/user/main.c
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_CCID/user/main.c	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_CCID/user/main.c	(nonexistent)
@@ -1,92 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    3121Demo_1.0V\ModuleDemo\USB\USB_CCID\user\main.c
-  * @author  Yichip Application Team
-  * @version V1.0.0
-  * @date    23-Oct-2019
-  * @brief   USB CCID test program.
-  ******************************************************************************
-  * @attention
-  *
-  * COPYRIGHT 2019 Yichip Microelectronics
-  *
-  * The purpose of this demo is to provide guidance to customers engaged in 
-	* programming work to guide them smoothly to product development, 
-	* so as to save their time.
-	*
-	* Therefore, Yichip microelectronics shall not be responsible for any direct, 
-	* indirect or consequential damages caused by any content of this demo
-	* and/or contained in this code used by the customer in its products.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "yc3121.h"
-#include "yc_gpio.h"
-#include "yc_uart.h"
-#include "yc_ipc.h"
-#include "usb_main.h"
-#include "board_config.h"
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-void UART_Configuration(void);
-
-uint8_t bt_standby = 0;
-
-#define UART_DEBUG
-
-/**
-  * @brief  Main program
-  * @param  None
-  * @retval None
-  */
-int main(void)
-{
-	UART_Configuration();
-
-	IpcInit();
-
-  MyPrintf("USB CCID Demo !\n\n");
-	
-	usb_main();
-	while (1)
-	{
-		
-	}
-}
-
-/**
-  * @brief  Serial port 0 initialization function.
-  * @param  None
-  * @retval None
-  */
-void UART_Configuration(void)
-{
-	UART_InitTypeDef UART_InitStruct;
-
-	/* Configure serial ports 0 RX and TX for IO. */
-	GPIO_Config(UART0_TX_PORT, UART0_TX_PIN, UART0_TXD);
-	GPIO_Config(UART0_RX_PORT, UART0_RX_PIN, UART0_RXD);
-
-	/* USARTx configured as follow:
-  - BaudRate = 115200 baud  
-  - Word Length = 8 Bits
-  - Stop Bit = 1 Stop Bit
-  - Parity = No Parity
-  - Hardware flow control disabled (RTS and CTS signals)
-  - Receive and transmit enabled
-  */
-	UART_InitStruct.BaudRate = UARTBAUD;			//Configure serial port baud rate, the baud rate defaults to 128000.
-	UART_InitStruct.DataBits = Databits_8b;
-	UART_InitStruct.StopBits = StopBits_1;
-	UART_InitStruct.Parity = Parity_None;
-	UART_InitStruct.FlowCtrl = FlowCtrl_None;
-	UART_InitStruct.Mode = Mode_duplex;
-	
-	UART_Init(UART0, &UART_InitStruct);
-}
-
-/************************ (C) COPYRIGHT Yichip Microelectronics *****END OF FILE****/
Index: USB_CCID/user/usb_test/usb_test.h
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_CCID/user/usb_test/usb_test.h	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_CCID/user/usb_test/usb_test.h	(nonexistent)
@@ -1,176 +0,0 @@
-#define  HCI_CLASS_REQUEST_TYPE  0x20
-
-                                       // SetReport HID Request
-#define  HID_CLASS_REQUEST_TYPE  0x21 
-
-// Standard Request Codes
-#define  GET_STATUS              0x00  // Code for Get Status
-#define  CLEAR_FEATURE           0x01  // Code for Clear Feature
-#define  SET_FEATURE             0x03  // Code for Set Feature
-#define  SET_ADDRESS             0x05  // Code for Set Address
-#define  GET_DESCRIPTOR          0x06  // Code for Get Descriptor
-#define  SET_DESCRIPTOR          0x07  // Code for Set Descriptor(not used)
-#define  GET_CONFIGURATION       0x08  // Code for Get Configuration
-#define  SET_CONFIGURATION       0x09  // Code for Set Configuration
-#define  GET_INTERFACE           0x0A  // Code for Get Interface
-#define  SET_INTERFACE           0x0B  // Code for Set Interface
-#define  SYNCH_FRAME             0x0C  // Code for Synch Frame(not used)
-
-// Standard Descriptor Types
-#define  DSC_DEVICE              0x01  // Device Descriptor
-#define  DSC_CONFIG              0x02  // Configuration Descriptor
-#define  DSC_STRING              0x03  // String Descriptor
-#define  DSC_INTERFACE           0x04  // Interface Descriptor
-#define  DSC_ENDPOINT            0x05  // Endpoint Descriptor
-
-// HID Descriptor Types
-#define  DSC_HID			     0x21  // HID Class Descriptor
-#define  DSC_HID_REPORT			 0x22  // HID Report Descriptor
-
-// Define bmRequestType bitmaps
-#define  IN_DEVICE               0x00  // Request made to device,
-                                       // direction is IN
-#define  OUT_DEVICE              0x80  // Request made to device,
-                                       // direction is OUT
-#define  IN_INTERFACE            0x01  // Request made to interface,
-                                       // direction is IN
-#define  OUT_INTERFACE           0x81  // Request made to interface,
-                                       // direction is OUT
-#define  IN_ENDPOINT             0x02  // Request made to endpoint,
-                                       // direction is IN
-#define  OUT_ENDPOINT            0x82  // Request made to endpoint,
-
-
-// HID Request Codes
-#define  GET_REPORT 		     0x01   // Code for Get Report
-#define  GET_IDLE				 0x02   // Code for Get Idle
-#define  GET_PROTOCOL			 0x03   // Code for Get Protocol
-#define  SET_REPORT				 0x09   // Code for Set Report
-#define  SET_IDLE				 0x0A   // Code for Set Idle
-#define  SET_PROTOCOL			 0x0B   // Code for Set Protocol
-
-#define  HID_RPT_ID           	0xf2
-#define  HID_RPT_SIZE         	0x3f
-
-#define  EP0_PACKET_SIZE         0x40 
-#define  EP1_PACKET_SIZE         6
-#define  HID_REPORT_DESCRIPTOR_SIZE    0x001B
-
-#define  be16(x) ((x<<8)|(x>>8))                
-
-#define USB_STATUS_FIFO0_READY		1
-#define USB_STATUS_FIFO1_READY		2
-#define USB_STATUS_FIFO3_READY		8
-#define USB_STATUS_SETUP			0x10
-#define USB_STATUS_SUSPEND			0x20
-#define USB_STATUS_NAK				0x40
-#define USB_STATUS_STALL			0x80
-
-typedef struct
-{
-	byte  bmRequestType;
-	byte  bRequest;
-	word wValue;
-	word wIndex;
-	word wLength;
-} usb_setup;
-
-//------------------------------------------
-// Standard Device Descriptor Type Defintion
-//------------------------------------------
-typedef /*code*/ struct
-{
-   byte  bLength;              // Size of this Descriptor in Bytes
-   byte  bDescriptorType;      // Descriptor Type (=1)
-   word bcdUSB;               // USB Spec Release Number in BCD
-   byte  bDeviceClass;         // Device Class Code
-   byte  bDeviceSubClass;      // Device Subclass Code
-   byte  bDeviceProtocol;      // Device Protocol Code
-   byte  bMaxPacketSize0;      // Maximum Packet Size for EP0
-   word idVendor;             // Vendor ID
-   word idProduct;            // Product ID
-   word bcdDevice;            // Device Release Number in BCD
-   byte  iManufacturer;        // Index of String Desc for Manufacturer
-   byte  iProduct;             // Index of String Desc for Product
-   byte  iSerialNumber;        // Index of String Desc for SerNo
-   byte  bNumConfigurations;   // Number of possible Configurations
-} device_descriptor;              // End of Device Descriptor Type
-
-//--------------------------------------------------
-// Standard Configuration Descriptor Type Definition
-//--------------------------------------------------
-typedef /*code*/ struct
-{
-   byte  bLength;              // Size of this Descriptor in Bytes
-   byte  bDescriptorType;      // Descriptor Type (=2)
-   word wTotalLength;         // Total Length of Data for this Conf
-   byte  bNumInterfaces;       // No of Interfaces supported by this
-                                  // Conf
-   byte  bConfigurationValue;  // Designator Value for *this*
-                                  // Configuration
-   byte  iConfiguration;       // Index of String Desc for this Conf
-   byte  bmAttributes;         // Configuration Characteristics (see below)
-   byte  bMaxPower;            // Max. Power Consumption in this
-                                  // Conf (*2mA)
-} configuration_descriptor;       // End of Configuration Descriptor Type
-
-//----------------------------------------------
-// Standard Interface Descriptor Type Definition
-//----------------------------------------------
-typedef /*code*/ struct
-{
-   byte  bLength;              // Size of this Descriptor in Bytes
-   byte  bDescriptorType;      // Descriptor Type (=4)
-   byte  bInterfaceNumber;     // Number of *this* Interface (0..)
-   byte  bAlternateSetting;    // Alternative for this Interface (if any)
-   byte  bNumEndpoints;        // No of EPs used by this IF (excl. EP0)
-   byte  bInterfaceClass;      // Interface Class Code
-   byte  bInterfaceSubClass;   // Interface Subclass Code
-   byte  bInterfaceProtocol;   // Interface Protocol Code
-   byte  iInterface;           // Index of String Desc for this Interface
-} interface_descriptor;           // End of Interface Descriptor Type
-
-//------------------------------------------
-// Standard Class Descriptor Type Definition
-//------------------------------------------
-typedef /*code */struct
-{
-   byte  bLength;              // Size of this Descriptor in Bytes (=9)
-   byte  bDescriptorType;      // Descriptor Type (HID=0x21)
-   word bcdHID;    			  // HID Class Specification
-                                  // release number (=1.01)
-   byte  bCountryCode;         // Localized country code
-   byte  bNumDescriptors;	  // Number of class descriptors to follow
-   byte  bReportDescriptorType;// Report descriptor type (HID=0x22)
-   unsigned int wItemLength;	  // Total length of report descriptor table
-} class_descriptor;               // End of Class Descriptor Type
-
-//---------------------------------------------
-// Standard Endpoint Descriptor Type Definition
-//---------------------------------------------
-typedef /*code*/ struct
-{
-   byte  bLength;              // Size of this Descriptor in Bytes
-   byte  bDescriptorType;      // Descriptor Type (=5)
-   byte  bEndpointAddress;     // Endpoint Address (Number + Direction)
-   byte  bmAttributes;         // Endpoint Attributes (Transfer Type)
-   word wMaxPacketSize;	      // Max. Endpoint Packet Size
-   byte  bInterval;            // Polling Interval (Interrupt) ms
-} endpoint_descriptor;            // End of Endpoint Descriptor Type
-
-//---------------------------------------------
-// HID Configuration Descriptor Type Definition
-//---------------------------------------------
-// From "USB Device Class Definition for Human Interface Devices (HID)".
-// Section 7.1:
-// "When a Get_Descriptor(Configuration) request is issued,
-// it returns the Configuration descriptor, all Interface descriptors,
-// all Endpoint descriptors, and the HID descriptor for each interface."
-typedef /*code*/ struct {
-	configuration_descriptor 	hid_configuration_descriptor;
-	interface_descriptor 		hid_interface_descriptor;
-	class_descriptor 			hid_descriptor;
-	endpoint_descriptor 		hid_endpoint_in_descriptor;
-	endpoint_descriptor 		hid_endpoint_out_descriptor;
-} hid_configuration_descriptor;
-
Index: USB_CCID/user/usb_test/usb_test.c
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_CCID/user/usb_test/usb_test.c	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_CCID/user/usb_test/usb_test.c	(nonexistent)
@@ -1,551 +0,0 @@
-#include "yc3121.h"
-#include "usb_test.h"
-#ifndef USB_CCID_DEMO
-
-extern void dmacopy_nowait(byte *dest, byte *src, int len);
-//extern void savelist(byte *dat);
-extern void test_display(int);
-extern byte aes[];
-#define VENDOR_ID 		0x1937
-#define PRODUCT_ID 		0x1135
-
-const device_descriptor devicedesc =
-{
-18,						//bLength
-0x01,					//bDescriptorType
-0x0002,					//bcdUSB
-0x00,					//bDeviceClass
-0x00,					//bDeviceSubClass
-0x00,					//bDeviceProtocol
-EP0_PACKET_SIZE,		//bMaxPacketSize0
-VENDOR_ID,				//idVendor
-PRODUCT_ID,			//idProduct
-0x0001,					//bcdDevice
-0x01,					//iManufacturer
-0x02,					//iProduct
-0x00,					//iSerialNumber
-0x01					//bNumConfigurations
-}; 
-
-
-const byte hidreportdesc[] =
-{
-	/*
-	0x06, 0x00, 0xff,		// USAGE_PAGE (Vendor Defined Page 1)
-	0x09, 0x01, 			// USAGE (Vendor Usage 1)
-	0xa1, 0x01,			// COLLECTION (Application)
-
-	0x85, HID_RPT_ID,	// Report ID
-	0x95, HID_RPT_SIZE,	// REPORT_COUNT ()
-	0x75,0x08,			//REPORT_SIZE(8)
-	0x26,0x00,0x01,		//LOGICAL_MAXIMUM(255)
-	0x15,0x00,			//LOGICAL_MINIMUM(0)
-	0x09,0x01,			//USAGE(VendorUsage1)
-	0x81,0x02,			//INPUT(Data,Var,Abs)
-	0x09,0x01,			//USAGE(VendorUsage1)
-	0x91,0x02,			//OUTPUT(Data,Var,Abs)
-
-	0xC0				// END Application Collection
-	*/
-	/*
-	//====================??====75====================================
-    0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)
-    0x09, 0x02,                    // USAGE (Mouse)
-    0xa1, 0x01,                    // COLLECTION (Application)
-    0x09, 0x01,                    //   USAGE (Pointer)
-    0xa1, 0x00,                    //   COLLECTION (Physical)
-    0x05, 0x09,                    //     USAGE_PAGE (Button)
-    0x19, 0x01,                    //     USAGE_MINIMUM (Button 1)
-    0x29, 0x03,                    //     USAGE_MAXIMUM (Button 3)
-    0x15, 0x00,                    //     LOGICAL_MINIMUM (0)
-    0x25, 0x01,                    //     LOGICAL_MAXIMUM (1)
-    0x95, 0x03,                    //     REPORT_COUNT (5)
-    0x75, 0x01,                    //     REPORT_SIZE (1)
-    0x81, 0x02,                    //     INPUT (Data,Var,Abs)
-    0x95, 0x01,                    //     REPORT_COUNT (1)
-    0x75, 0x05,                    //     REPORT_SIZE (3)
-    0x81, 0x03,                    //     INPUT (Cnst,Var,Abs)
-    0x05, 0x01,                    //     USAGE_PAGE (Generic Desktop)
-    0x09, 0x30,                    //     USAGE (X)
-    0x09, 0x31,                    //     USAGE (Y)
-    0x09, 0x38,                    //     USAGE (Wheel)
-    0x15, 0x81,                    //     LOGICAL_MINIMUM (-127)
-    0x25, 0x7f,                    //     LOGICAL_MAXIMUM (127)
-    0x75, 0x08,                    //     REPORT_SIZE (8)
-    0x95, 0x03,                    //     REPORT_COUNT (1)
-    0x81, 0x06,                    //     INPUT (Data,Var,Rel)  
-    0xc0,                          //   END_COLLECTION
-    0xc0,                           // END_COLLECTION
-		*/
-		0x05,0x01, // Global Generic Desktop
-		0x09,0x02, // Local Mouse
-		0xa1,0x01, // Main app collection
-		0x09,0x01, // Local Pointer
-		0xa1,0x00, // Main phy collection
-		0x95,0x03, // Global ReportCount
-		0x75,0x01, // Global ReportSize
-		0x05,0x09, // Global Button
-		0x19,0x01, // Local Usage Min
-		0x29,0x03, // Local Usage Max
-		0x15,0x00, // Global Logical Min
-		0x25,0x01, // Global Logical Max
-		0x81,0x02, // Main Input(Data,Var,Abs)
-		0x95,0x01, // Global ReportCount
-		0x75,0x05, // Global ReportSize
-		0x81,0x03, // Main Input(Cnsr,Var,Abs)
-		0x95,0x03,0x75,0x08, // Global ReportCount Global ReportSize
-		0x05,0x01, // Global Generic Desktip
-		0x09,0x30, // Local X
-		0x09,0x31, // Local Y
-		0x09,0x38, // Locak Wheel
-		0x15,0x81, // Global Logical Min
-		0x25,0x7f, // Global Logical Max
-		0x81,0x06, // Main Input(Data,Var,Rel)
-		0xc0, // Main End collection
-		0xc0 // Main End collection
-};
-
-const byte confdesc[] = {
-/*
-	// configuration
-	0x09,				// Length
-	0x02,				// Type	(configuration)
-	41,					// Totallength (= 9+9+9+7+7)
-	0x00,
-	0x01,				// NumInterfaces
-	0x01,			 	// bConfigurationValue
-	0x00,				// iConfiguration
-	0xa0,				// bmAttributes
-	0x31,  				// MaxPower (in 2mA units)
-
-// interface
-	0x09, 				// Length
-	0x04, 				// Type (interface)
-	0x00, 				// interface #0
-	0x00, 				// alternate interface #0
-	0x02, 				// number of endpoints
-	0x03, 				// Interface class (3 = HID)
-	0x00, 				// Interface subclass
-	0x02, 				// Interface protocol
-	0x00, 				// no string confdesc
-
-// hid
-	0x09, 				// Length
-	0x21, 				// Type (HID)
-	0x01, 				// bcdhid
-	0x01, 
-	0x00, 				// country code
-	0x01, 				// number of descriptors
-	0x22, 				// descriptor type
-	0x1b, 				// total length of report descriptor
-	0x00,
-
-// IN endpoint
-	0x07, 				// Length
-	0x05, 				// Type (Endpoint)
-	0x83, 				// bit7:Direction is IN, bit3-0:endpoint number 1
-	0x03, 				// bit1-0:transfer type is interrupt
-	HID_RPT_SIZE, 		// maximum packet size
-	0x00, 				 
-	0x01, 				// polling interval is 1 frame
-
-// OUT endpoint
-	0x07, 				// Length
-	0x05, 				// Type (Endpoint)
-	0x03, 				// bit7:Direction is IN, bit3-0:endpoint number 1
-	0x03, 				// bit1-0:transfer type is interrupt
-	HID_RPT_SIZE, 		// maximum packet size
-	0x00, 				 
-	0x01 				// polling interval is 1 frame
-*/	
-	
-	
-	
-	 //config
-    0x09,//0xLength	
-    0x02,//0xType
-		41,					// Totallength (= 9+9+9+7+7)
-		0x00,
-    0x01,//0xNumInterfaces
-    0x01,//0xbConfigurationValue
-    0x00,//0xstringindexConfiguration
-    0x80,//0xbmAttributes
-    0x32,//0xMaxPower0x(in0x2mA0xunits)
-
-    //0xinterface_descriptor0xhid_interface_descriptor--mouse
-    0x09,//0xbLength
-    0x04,//0xbDescriptorType
-    0x00,//0xbInterfaceNumber
-    0x00,//0xbAlternateSetting
-    0x01,//0xbNumEndpoints
-    0x03,//0xbInterfaceClass0x(30x=0xHID)
-    0x01,//0xbInterfaceSubClass
-    0x02,//0xbInterfaceProcotol0x0x01 kb; 0x0x2=mouse
-    0x00,//0xiInterface
-	     
-
-   //class_descriptor hid_descriptor--mouse 
-   0x09,		//bLength   
-   0x21,		//bDescriptorType  
-   0x10,0x01,	//bcdHID 
-   0x21,		//bCountryCode  
-   0x01,		//bNumDescriptors  
-   0x22,		//bDescriptorType
-	 sizeof(hidreportdesc)&0xff,    //wItemLength (tot. len. of report confdesc)
-	 (sizeof(hidreportdesc)>>8)&0xff,
- 
- //endpoint_descriptor hid_endpoint_in_descriptor--mouse
- 
-   0x07,		//bLength  
-   0x05,		//bDescriptorType  
-   0x81,		//bEndpointAddress  
-   0x03,		// bmAttributes  
-   EP1_PACKET_SIZE, 0x00,	//MaxPacketSize (LITTLE  ENDIAN)  
-   0x0A,		//bInterval 
-};
-
-
-
-
-
-char const string0[] = "\x4\x3\x9\x4";
-char const string1[] = "Yichip Technologies";
-char const string2[] = "yc3121 usb mouse";
-char const string3[] = "b120300001";
-
-char const * const string[] = 	{string0, string1, string2, string3};
-
-
-const byte strlength[] = {sizeof(string0), sizeof(string1), sizeof(string2), sizeof(string3)};
-
-byte const *bufptr;
-byte remain, isstr;
-usb_setup usb0_setup;
-int usblen;
-byte mcmd;
-byte usbbuf[256];
-
-static void usb0_force_stall(void)
-{
-	USB_STALL =  1;
-}
-
-static void usb_trig(int ep)
-{
-	int i;
-	USB_TRG =  1 << ep;
-	return;
-	USB_STATUS = USB_STATUS_NAK;
-	for(i = 0;i < 10000;i++)
-		if(USB_STATUS & USB_STATUS_NAK) break;
-	USB_FIFO_EMPTY = 1 << ep;
-	for(i = 0;i < 10000;i++) {
-		if(USB_FIFO_EMPTY & 1 << ep) break;
-	}
-}
-
-static void usb0_tx() 
-{
-	byte len, i;
-
-	if(remain) {
-		len = remain > EP0_PACKET_SIZE ? EP0_PACKET_SIZE : remain;
-		for(i = 0;i < len;i++) {
-			USB_EP(0) = bufptr[i];
-			if(isstr) USB_EP(0) = 0;
-		}
-//		savelist((byte*)bufptr);
-		bufptr += len;
-		remain -= len;
-		usb_trig(0);
-		GPIO_CONFIG(30) = GPCFG_OUTPUT_HIGH;
-		delay(10);
-		GPIO_CONFIG(30) = GPCFG_OUTPUT_LOW;
-		USB_INT_MASK(1) =  0xfe;
-	} else {
-		USB_INT_MASK(1) =  0xff;
-	}
-}
-
-static void usb0_respond(byte const *buff,byte size)
-{
-	if(isstr) {
-		USB_EP(0) = (size + 1)*2;
-		USB_EP(0) = 3;
-	}
-	if (size>usb0_setup.wLength)
-		size = usb0_setup.wLength;
-	bufptr = buff;
-	remain = size;
-	usb0_tx();
-}
-
-
-static void usb0_request_set_address(void)
-{
-	MyPrintf("\n usb0_request_set_address:");
-	if (usb0_setup.bmRequestType == IN_DEVICE && usb0_setup.wIndex == 0
-		&& usb0_setup.wLength == 0)
-	{
-		USB_TRG = 0x10;
-		USB_ADDR = usb0_setup.wValue;
-		MyPrintf("%02x",usb0_setup.wValue);
-	}
-	else
-	{
-		usb0_force_stall();
-	}	
-	MyPrintf("\n");
-}
-/*
-static byte strlength(char const *str)
-{
-	byte i;
-	for(i = 0;str[i];i++);
-	return i;
-}
-*/
-static void usb0_request_set_configuration(void)
-{
-	MyPrintf("\n usb0_request_set_configuration:");
-	if (usb0_setup.bmRequestType == IN_DEVICE
-		&& usb0_setup.wIndex == 0 && usb0_setup.wLength == 0
-		&& usb0_setup.wValue <= 1)
-	{
-		USB_TRG = 0x10;
-	}
-	else
-	{
-		usb0_force_stall();
-	}
-}
-
-static void usb0_request_set_interface(void)
-{
-	MyPrintf("\n usb0_request_set_interface:");
-	if (usb0_setup.bmRequestType == IN_INTERFACE
-		&& usb0_setup.wValue == 0
-		&& usb0_setup.wLength == 0)
-	{
-		USB_TRG = 0x10;
-	}
-	else
-	{
-		usb0_force_stall();	
-	}		
-}
-
-static void usb0_request_get_descriptor(void)
-{
-	MyPrintf("\n usb0_request_get_descriptor:");
-	
-	byte index;
-	isstr = 0;
-	switch(usb0_setup.wValue >> 8)
-	{
-	case DSC_DEVICE:
-		MyPrintf("DEVICE:%d\n",sizeof(devicedesc));
-		usb0_respond((byte const *)&devicedesc, sizeof(devicedesc));
-		break;
-	case DSC_CONFIG:
-		MyPrintf("CONFIG:%d\n",sizeof(confdesc));
-		usb0_respond(confdesc, sizeof(confdesc));
-		break;		
-	case DSC_STRING:
-		MyPrintf("STRING:\n");
-		index = usb0_setup.wValue  & 3;
-		isstr = index > 0;
-		usb0_respond((byte const *)string[index], strlength[index] - 1);
-		break;			
-	case DSC_HID:
-		MyPrintf("DSC_HID mou\n");
-		usb0_respond(confdesc + 18, confdesc[18]);
-		break;
-	case DSC_HID_REPORT:
-		MyPrintf("DSC_HID_REPORT mou\n");
-		usb0_respond(hidreportdesc,sizeof(hidreportdesc));
-		break;
-/*
-	case DSC_INTERFACE:
-		usb0_respond((byte*)&desc_interface,sizeof(desc_interface));		
-		break;
-	case DSC_ENDPOINT:
-		if (usb0_setup.wValue&0xFF == IN_EP1)
-		{
-			usb0_respond((byte*)&desc_ep_in,sizeof(desc_ep_in));
-		}
-		else if (usb0_setup.wValue&0xFF == OUT_EP1)
-		{
-			usb0_respond((byte*)&desc_ep_out,sizeof(desc_ep_out));	
-		}
-		else
-		{
-			usb0_force_stall();
-		}
-		break;
-*/
-	default:
-		usb0_force_stall();
-		break; 
-	}
-}
-
-void USB_IRQHandler()
-{
-	int i, j, len;
-	byte status, empty;
-	byte *buf = (byte*)&usb0_setup;
-	status = USB_STATUS;
-	empty = USB_FIFO_EMPTY;
-	USB_FIFO_EMPTY =  empty;
-	USB_STATUS =  status;
-	if(empty & 1) {
-		usb0_tx();
-	}
-	if(status & USB_STATUS_FIFO0_READY) {
-		len = USB_EP_LEN(0);
-		for(i = 0;i < len;i++)
-			buf[i] = USB_EP(0);
-//		savelist(buf);
-		if(status & USB_STATUS_SETUP) {
-			usb0_setup.wLength = usb0_setup.wLength;
-			usb0_setup.wValue = usb0_setup.wValue;
-			if ((usb0_setup.bmRequestType & ~0x80) == HCI_CLASS_REQUEST_TYPE)
-			{
-				USB_TRG = 0x10;
-			}
-			else if ((usb0_setup.bmRequestType & ~0x80) == HID_CLASS_REQUEST_TYPE)
-			{				
-				if (usb0_setup.bRequest == SET_IDLE)
-				{
-					USB_TRG = 0x10;
-				}
-				else
-				{
-				}
-			}
-			else
-			{
-				switch(usb0_setup.bRequest)
-				{
-				case SET_ADDRESS:
-					usb0_request_set_address();
-					break;
-				case GET_DESCRIPTOR:
-					usb0_request_get_descriptor();
-					break;
-				case SET_CONFIGURATION:
-					usb0_request_set_configuration();
-					break;
-				case SET_INTERFACE:
-					usb0_request_set_interface();
-					break;	
-/*
-				case GET_STATUS:
-					usb0_request_get_status();
-					break;
-			    	case CLEAR_FEATURE:
-					usb0_request_clear_feature();
-					break;
-				case SET_FEATURE:
-					usb0_request_set_feature();
-					break;
-				case GET_CONFIGURATION:
-					usb0_request_get_configuration();
-					break;	
-				case GET_INTERFACE:
-					usb0_request_get_interface();
-					break;
-*/
-				default:
-					usb0_force_stall();
-					break;																																	
-				}
-			}
-			
-		} 
-		
-	}
-	if(status & USB_STATUS_FIFO1_READY) {
-		USB_STATUS =  USB_STATUS_FIFO1_READY;
-		len = USB_EP_LEN(1);
-		usblen = len;
-		for(i = 0;i < len;i++)
-			usbbuf[i] = USB_EP(1);
-		USB_TRG = 0x20;
-		return;
-		for(i = 0;i < 64;i++)
-			USB_EP(1) = aes[i];
-		usb_trig(1);
-	}
-	if(status & USB_STATUS_FIFO3_READY) {
-		USB_STATUS =  USB_STATUS_FIFO3_READY;
-		len = USB_EP_LEN(3) | (int)USB_EP_LEN(4) << 8;
-		usblen = len;
-		for(i = 0;i < len;i++)
-			usbbuf[i] = USB_EP(3);
-		for(i = 0;i < len;i++)
-//			for(j = 0;j < 4;j++)
-				USB_EP(3) = usbbuf[i];
-		usb_trig(3);
-	}
-
-}
-
-void test_usb()
-{
-	int flag = 0;
-	remain = 0;
-	enable_clock(CLKCLS_BT);
-	enable_clock(CLKCLS_USB);
-	BT_CLKPLL_EN = 0xff;
-	SYSCTRL_HCLK_CON |= 1 << 11;
-	USB_CONFIG =  0x30;
-	USB_INT_MASK(0) =  0xf0;
-	USB_INT_MASK(1) =  0xff;
-	USB_INT_MASK(2) =  0xff;
-	enable_intr(INTR_USB);
-	
-	
-	while(1)
-	{
-		USB_EP(1) = 0x00;//report id
-		USB_EP(1) = (flag ==0)?0x02:(flag==1)?0x01:0x00;//key
-		USB_EP(1) = (flag ==0)?0x50:(flag==1)?0x00:(flag==2)?0xE2:0x00;//xlow
-		USB_EP(1) = (flag ==0)?0x00:(flag==1)?0x00:(flag==2)?0xFF:0x00;//xhigh
-		USB_EP(1) = (flag ==0)?0x00:(flag==1)?0x30:(flag==2)?0x00:0xE2;//ylow
-		USB_EP(1) = (flag ==0)?0x00:(flag==1)?0x00:(flag==2)?0x00:0xFF;//yhigh
-//		USB_EP(1) = 0x01;//wheel
-//		USB_EP(1) = 0x00;//twheel
-		usb_trig(1);
-		delay_ms(1000);
-		if(flag>2)
-		{
-			flag = 0;
-		}
-		else
-		{
-			flag++;
-		}
-	}
-	
-	
-	while(1) {
-		mcmd += 2;
-		mcmd *= 2;
-	};
-	while(1) {
-		if(mcmd) {
-			USB_EP(1) = 0;
-			USB_EP(1) = mcmd;
-			USB_EP(1) = 0;
-			USB_EP(1) = 0;
-			USB_EP(1) = 0;
-			USB_EP(1) = 0;
-			USB_TRG =  2;
-			mcmd = 0;
-		}
-	}
-}
-
-#endif
Index: USB_CDC/prj/GCC/c.bat
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_CDC/prj/GCC/c.bat	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_CDC/prj/GCC/c.bat	(nonexistent)
@@ -1,3 +0,0 @@
-cls
-make clean
-make
\ No newline at end of file
Index: USB_CDC/prj/GCC/makefile
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_CDC/prj/GCC/makefile	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_CDC/prj/GCC/makefile	(nonexistent)
@@ -1,251 +0,0 @@
-
-ifeq ($(OS),Windows_NT)
-DIR = C:/gcc-arm-none-eabi-7-2018-q2-update-win32
-else
-DIR = /usr/gcc-arm-none-eabi-7-2018-q2-update
-endif
-
-ARCH = $(DIR)/bin/arm-none-eabi
-GCC = $(ARCH)-gcc
-LD = $(ARCH)-ld
-AS = $(ARCH)-as
-OBJCOPY = $(ARCH)-objcopy
-OBJDUMP = "$(ARCH)-objdump"
-LIB_PATH = ../../../../../Librarier
-USER_PATH = ../../user
-
-
-all : output/out.hex
-
-
-CORE_OBJS =  $(LIB_PATH)/startup/flash_start_gcc \
-             $(LIB_PATH)/core/system \
-             $(LIB_PATH)/core/misc \
-             $(LIB_PATH)/core/bt_code \
-             $(LIB_PATH)/sdk/yc_gpio \
-             $(LIB_PATH)/sdk/yc_timer \
-             $(LIB_PATH)/sdk/yc_ipc \
-             $(LIB_PATH)/sdk/yc_uart \
-             $(LIB_PATH)/sdk/yc_lpm \
-             $(LIB_PATH)/sdk/yc_otp \
-             $(LIB_PATH)/sdk/yc_bt \
-             $(LIB_PATH)/sdk/yc_systick \
-             $(LIB_PATH)/sdk/yc_sysctrl \
-             $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der/usb_core \
-             $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der/Usb_dcd \
-             $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der/Usb_dcd_init \
-             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core/usbd_core \
-             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core/usbd_ioreq \
-             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core/usbd_req \
-             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/class/CDC/usbd_cdc_core \
-             $(LIB_PATH)/sdk/yc_usb/scpu_usb_CDC_Device_Demo/usb_main \
-             $(LIB_PATH)/sdk/yc_usb/scpu_usb_CDC_Device_Demo/usbd_desc \
-             $(LIB_PATH)/sdk/yc_usb/scpu_usb_CDC_Device_Demo/usbd_usr \
-             $(LIB_PATH)/sdk/yc_usb/scpu_usb_CDC_Device_Demo/usb_bsp \
-             $(LIB_PATH)/sdk/yc_usb/scpu_usb_CDC_Device_Demo/usbd_cdc_vcp
-
-
-USER_OBJS = $(USER_PATH)/main
-
-OBJS = $(CORE_OBJS) $(USER_OBJS)
-
-INC_DIR = -I $(LIB_PATH)/core \
-          -I $(LIB_PATH)/sdk \
-          -I $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der \
-          -I $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core \
-          -I $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/class/CDC \
-          -I $(LIB_PATH)/sdk/yc_usb/scpu_usb_CDC_Device_Demo
-
-
-CFLAG =  -mthumb -mcpu=cortex-m0 -c -g -Os $(INC_DIR) $(DEF) -fno-toplevel-reorder -ffunction-sections -fdata-sections
-LDFLAG = -T output/ld.script -Map=output/memmap -lc -lm -lgcc -L "$(DIR)/lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m"  -L "$(DIR)/arm-none-eabi/lib/thumb/v6-m"
-
-define ldscript =
-/* Linker script to configure memory regions.
- * Need modifying for a specific board.
- *   FLASH.ORIGIN: starting address of flash
- *   FLASH.LENGTH: length of flash
- *   RAM.ORIGIN: starting address of RAM bank 0
- *   RAM.LENGTH: length of RAM bank 0
- */
-MEMORY
-{
-  FLASH (rx) : ORIGIN = 0x1000000, LENGTH = 0x80000 /* 512K */
-  RAM (rwx) : ORIGIN = 0x20000, LENGTH = 0x10000 /* 64K */
-}
-
-/* Linker script to place sections and symbol values. Should be used together
- * with other linker script that defines memory regions FLASH and RAM.
- * It references following symbols, which must be defined in code:
- *   Reset_Handler : Entry of reset handler
- *
- * It defines following symbols, which code can use without definition:
- *   __exidx_start
- *   __exidx_end
- *   __copy_table_start__
- *   __copy_table_end__
- *   __zero_table_start__
- *   __zero_table_end__
- *   __etext
- *   __data_start__
- *   __preinit_array_start
- *   __preinit_array_end
- *   __init_array_start
- *   __init_array_end
- *   __fini_array_start
- *   __fini_array_end
- *   __data_end__
- *   __bss_start__
- *   __bss_end__
- *   __end__
- *   end
- *   __HeapLimit
- *   __StackLimit
- *   __StackTop
- *   __stack
- */
-ENTRY(Reset_Handler)
-
-SECTIONS
-{
-	.text :
-	{
-		*flash_start*.o
-		*(.text*)
-
-		KEEP(*(.init))
-		KEEP(*(.fini))
-
-		/* .ctors */
-		*crtbegin.o(.ctors)
-		*crtbegin?.o(.ctors)
-		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
-		*(SORT(.ctors.*))
-		*(.ctors)
-
-		/* .dtors */
- 		*crtbegin.o(.dtors)
- 		*crtbegin?.o(.dtors)
- 		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
- 		*(SORT(.dtors.*))
- 		*(.dtors)
-
-		*(.rodata*)
-
-		KEEP(*(.eh_frame*))
-	} > FLASH
-
-
-
-	.ARM.extab :
-	{
-		*(.ARM.extab* .gnu.linkonce.armextab.*)
-	} > FLASH
-
-
-	.ARM.exidx :
-	{
-		*(.ARM.exidx* .gnu.linkonce.armexidx.*)
-	} > FLASH
-
-	 . = ALIGN(4);
-	__exidx_start = .;
-
-	__etext = .;
-
-	.data : AT (__etext)
-	{
-		__data_start__ = .;
-		*(vtable)
-		*(.data*)
-
-		. = ALIGN(4);
-		/* preinit data */
-		PROVIDE_HIDDEN (__preinit_array_start = .);
-		KEEP(*(.preinit_array))
-		PROVIDE_HIDDEN (__preinit_array_end = .);
-
-		. = ALIGN(4);
-		/* init data */
-		PROVIDE_HIDDEN (__init_array_start = .);
-		KEEP(*(SORT(.init_array.*)))
-		KEEP(*(.init_array))
-		PROVIDE_HIDDEN (__init_array_end = .);
-
-
-		. = ALIGN(4);
-		/* finit data */
-		PROVIDE_HIDDEN (__fini_array_start = .);
-		KEEP(*(SORT(.fini_array.*)))
-		KEEP(*(.fini_array))
-		PROVIDE_HIDDEN (__fini_array_end = .);
-
-		KEEP(*(.jcr*))
-		. = ALIGN(4);
-		/* All data end */
-		__data_end__ = .;
-
-	} > RAM
-
-	.bss :
-	{
-		. = ALIGN(4);
-		__bss_start__ = .;
-		*(.bss*)
-		*(COMMON)
-		. = ALIGN(4);
-		__bss_end__ = .;
-	} > RAM
-
-	.heap (COPY):
-	{
-		__end__ = .;
-		PROVIDE(end = .);
-		*(.heap*)
-		__HeapLimit = .;
-	} > RAM
-
-	/* .stack_dummy section doesn't contains any symbols. It is only
-	 * used for linker to calculate size of stack sections, and assign
-	 * values to stack symbols later */
-	.stack_dummy (COPY):
-	{
-		*(.stack*)
-	} > RAM
-
-	/* Set stack top to end of RAM, and stack limit move down by
-	 * size of stack_dummy section */
-	__StackTop = ORIGIN(RAM) + LENGTH(RAM);
-	__StackLimit = __StackTop - SIZEOF(.stack_dummy);
-	PROVIDE(__stack = __StackTop);
-
-	/* Check if data + heap + stack exceeds RAM limit */
-	ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
-}
-endef
-
-
-output/out.hex : output/out
-	$(OBJCOPY) $^ -O ihex $@
-
-
-output/out : $(addprefix output/, $(addsuffix .o, $(OBJS)))
-	$(file >output/ld.script, $(ldscript))
-	$(LD) $(addprefix output/obj/,$(addsuffix .o, $(notdir $(OBJS)))) -o $@ $(LDFLAG)
-	$(OBJDUMP) -S $@ > output/disasm
-
-output/%.o : %.c
-	$(GCC) $< $(CFLAG) -o output/obj/$(notdir $@)
-
-output/%.o : %.s
-	$(AS) $^ -mthumb -mcpu=cortex-m0 -o output/obj/$(notdir $@)
-
-
-clean :
-ifeq ($(OS),Windows_NT)
-	del /Q output\*.*
-	del /Q output\obj\*.*
-else
-	rm -rf output/*
-	rm -rf output/obj/*
-endif
Index: USB_CDC/prj/MDK/Objects/YC3121_keil.sct
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_CDC/prj/MDK/Objects/YC3121_keil.sct	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_CDC/prj/MDK/Objects/YC3121_keil.sct	(nonexistent)
@@ -1,55 +0,0 @@
-; *************************************************************
-; *** Scatter-Loading Description File generated by uVision ***
-; *************************************************************
-
-LR_IROM1 0x00000000 0x0001fff  {    ; load region size_region
-  ER_IROM1 0x00000000 0x00001fff  {  ; load address = execution address
-   startup.o (RESET, +First)
-   startup.o (|.text|,+RO)
-;   *(InRoot$$Sections)
-  }
-  ;ER_IROM2 0x4000   {
-  ;rom_main.o (+RO)
-  ;}
-  
-  ;ER_IROM3 0x100000 {
-	  ;*(InRoot$$Sections)
-  ;}
-	
-  ;ER_IROM4 0x100400   {
-  ;flash_start.o (+RO)
-  ;.ANY (+RO) 
-  ;}
-  
-  ;RW_IRAM1 0x000d0000 0x0010000  {  ; RW data
-   ;.ANY (+RW +ZI)
-  ;}
-  
-;  ARM_LIB_STACK 0xE0000 EMPTY -0x10000{}
-}
-
-;LR_IROM2 0x4000 0x4000{
-;	ER_IROM2 0x4000 {
-;	  rom_main.o (+RO)
-;	}
-;}
-
-LR_IROM3 0x1000200 0x200{
-	ER_IROM3 0x1000200 {
-	  flash_start.o (|.flash_start|,+RO)
-	}
-}
-
-LR_IROM4 0x1000400 0x1000000{
-	ER_IROM4 0x1000400 {
-;	  flash_start.o (|.flash_start|,+RO)
-	  *(InRoot$$Sections)
-	  .ANY (+RO)
-	}
-	
-	
-	 RW_IRAM2 0x00020000 0x010000  {  ; RW data
-	.ANY (+RW +ZI)
-	}
-}
-
Index: USB_CDC/prj/MDK/YC3121_Keil.uvoptx
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_CDC/prj/MDK/YC3121_Keil.uvoptx	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_CDC/prj/MDK/YC3121_Keil.uvoptx	(nonexistent)
@@ -1,583 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
-<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
-
-  <SchemaVersion>1.0</SchemaVersion>
-
-  <Header>### uVision Project, (C) Keil Software</Header>
-
-  <Extensions>
-    <cExt>*.c</cExt>
-    <aExt>*.s*; *.src; *.a*</aExt>
-    <oExt>*.obj; *.o</oExt>
-    <lExt>*.lib</lExt>
-    <tExt>*.txt; *.h; *.inc</tExt>
-    <pExt>*.plm</pExt>
-    <CppX>*.cpp</CppX>
-    <nMigrate>0</nMigrate>
-  </Extensions>
-
-  <DaveTm>
-    <dwLowDateTime>0</dwLowDateTime>
-    <dwHighDateTime>0</dwHighDateTime>
-  </DaveTm>
-
-  <Target>
-    <TargetName>YC3121</TargetName>
-    <ToolsetNumber>0x4</ToolsetNumber>
-    <ToolsetName>ARM-ADS</ToolsetName>
-    <TargetOption>
-      <CLKADS>12000000</CLKADS>
-      <OPTTT>
-        <gFlags>1</gFlags>
-        <BeepAtEnd>1</BeepAtEnd>
-        <RunSim>0</RunSim>
-        <RunTarget>1</RunTarget>
-        <RunAbUc>0</RunAbUc>
-      </OPTTT>
-      <OPTHX>
-        <HexSelection>1</HexSelection>
-        <FlashByte>65535</FlashByte>
-        <HexRangeLowAddress>0</HexRangeLowAddress>
-        <HexRangeHighAddress>0</HexRangeHighAddress>
-        <HexOffset>0</HexOffset>
-      </OPTHX>
-      <OPTLEX>
-        <PageWidth>79</PageWidth>
-        <PageLength>66</PageLength>
-        <TabStop>8</TabStop>
-        <ListingPath>.\Listings\</ListingPath>
-      </OPTLEX>
-      <ListingPage>
-        <CreateCListing>1</CreateCListing>
-        <CreateAListing>1</CreateAListing>
-        <CreateLListing>1</CreateLListing>
-        <CreateIListing>0</CreateIListing>
-        <AsmCond>1</AsmCond>
-        <AsmSymb>1</AsmSymb>
-        <AsmXref>0</AsmXref>
-        <CCond>1</CCond>
-        <CCode>0</CCode>
-        <CListInc>0</CListInc>
-        <CSymb>0</CSymb>
-        <LinkerCodeListing>0</LinkerCodeListing>
-      </ListingPage>
-      <OPTXL>
-        <LMap>1</LMap>
-        <LComments>1</LComments>
-        <LGenerateSymbols>1</LGenerateSymbols>
-        <LLibSym>1</LLibSym>
-        <LLines>1</LLines>
-        <LLocSym>1</LLocSym>
-        <LPubSym>1</LPubSym>
-        <LXref>0</LXref>
-        <LExpSel>0</LExpSel>
-      </OPTXL>
-      <OPTFL>
-        <tvExp>1</tvExp>
-        <tvExpOptDlg>0</tvExpOptDlg>
-        <IsCurrentTarget>1</IsCurrentTarget>
-      </OPTFL>
-      <CpuCode>7</CpuCode>
-      <DebugOpt>
-        <uSim>0</uSim>
-        <uTrg>1</uTrg>
-        <sLdApp>1</sLdApp>
-        <sGomain>1</sGomain>
-        <sRbreak>1</sRbreak>
-        <sRwatch>1</sRwatch>
-        <sRmem>1</sRmem>
-        <sRfunc>1</sRfunc>
-        <sRbox>1</sRbox>
-        <tLdApp>1</tLdApp>
-        <tGomain>1</tGomain>
-        <tRbreak>1</tRbreak>
-        <tRwatch>1</tRwatch>
-        <tRmem>1</tRmem>
-        <tRfunc>0</tRfunc>
-        <tRbox>1</tRbox>
-        <tRtrace>1</tRtrace>
-        <sRSysVw>1</sRSysVw>
-        <tRSysVw>1</tRSysVw>
-        <sRunDeb>0</sRunDeb>
-        <sLrtime>0</sLrtime>
-        <bEvRecOn>1</bEvRecOn>
-        <bSchkAxf>0</bSchkAxf>
-        <bTchkAxf>0</bTchkAxf>
-        <nTsel>4</nTsel>
-        <sDll></sDll>
-        <sDllPa></sDllPa>
-        <sDlgDll></sDlgDll>
-        <sDlgPa></sDlgPa>
-        <sIfile></sIfile>
-        <tDll></tDll>
-        <tDllPa></tDllPa>
-        <tDlgDll></tDlgDll>
-        <tDlgPa></tDlgPa>
-        <tIfile>..\..\..\..\..\ConfigFiles\MDK\flash.ini</tIfile>
-        <pMon>Segger\JL2CM3.dll</pMon>
-      </DebugOpt>
-      <TargetDriverDllRegistry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>DLGUARM</Key>
-          <Name>d</Name>
-        </SetRegEntry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>PWSTATINFO</Key>
-          <Name>200,50,700</Name>
-        </SetRegEntry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>ARMRTXEVENTFLAGS</Key>
-          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
-        </SetRegEntry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>DLGTARM</Key>
-          <Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)</Name>
-        </SetRegEntry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>ARMDBGFLAGS</Key>
-          <Name></Name>
-        </SetRegEntry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>JL2CM3</Key>
-          <Name>-U4294967295 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(0BB11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO31 -FD20000 -FCA000 -FN1 -FF0YC3121 -FS01000000 -FL080000</Name>
-        </SetRegEntry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>UL2CM3</Key>
-          <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000)</Name>
-        </SetRegEntry>
-      </TargetDriverDllRegistry>
-      <Breakpoint>
-        <Bp>
-          <Number>0</Number>
-          <Type>0</Type>
-          <LineNumber>689</LineNumber>
-          <EnabledFlag>1</EnabledFlag>
-          <Address>16786508</Address>
-          <ByteObject>0</ByteObject>
-          <HtxType>0</HtxType>
-          <ManyObjects>0</ManyObjects>
-          <SizeOfObject>0</SizeOfObject>
-          <BreakByAccess>0</BreakByAccess>
-          <BreakIfRCount>1</BreakIfRCount>
-          <Filename>D:\2_Working\3_SecurityIC\YC3121\2_Software\YC3121_Test\Yc3121\YC3121_demo\ModuleDemo\USB\USB_CCID\user\usb_test\usb_test.c</Filename>
-          <ExecCommand></ExecCommand>
-          <Expression>\\YC3121_Keil\../../user/usb_test/usb_test.c\689</Expression>
-        </Bp>
-      </Breakpoint>
-      <Tracepoint>
-        <THDelay>0</THDelay>
-      </Tracepoint>
-      <DebugFlag>
-        <trace>0</trace>
-        <periodic>0</periodic>
-        <aLwin>1</aLwin>
-        <aCover>0</aCover>
-        <aSer1>0</aSer1>
-        <aSer2>0</aSer2>
-        <aPa>0</aPa>
-        <viewmode>1</viewmode>
-        <vrSel>0</vrSel>
-        <aSym>0</aSym>
-        <aTbox>0</aTbox>
-        <AscS1>0</AscS1>
-        <AscS2>0</AscS2>
-        <AscS3>0</AscS3>
-        <aSer3>0</aSer3>
-        <eProf>0</eProf>
-        <aLa>0</aLa>
-        <aPa1>0</aPa1>
-        <AscS4>0</AscS4>
-        <aSer4>0</aSer4>
-        <StkLoc>0</StkLoc>
-        <TrcWin>0</TrcWin>
-        <newCpu>0</newCpu>
-        <uProt>0</uProt>
-      </DebugFlag>
-      <LintExecutable></LintExecutable>
-      <LintConfigFile></LintConfigFile>
-      <bLintAuto>0</bLintAuto>
-      <bAutoGenD>0</bAutoGenD>
-      <LntExFlags>0</LntExFlags>
-      <pMisraName></pMisraName>
-      <pszMrule></pszMrule>
-      <pSingCmds></pSingCmds>
-      <pMultCmds></pMultCmds>
-      <pMisraNamep></pMisraNamep>
-      <pszMrulep></pszMrulep>
-      <pSingCmdsp></pSingCmdsp>
-      <pMultCmdsp></pMultCmdsp>
-    </TargetOption>
-  </Target>
-
-  <Group>
-    <GroupName>core</GroupName>
-    <tvExp>1</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>1</GroupNumber>
-      <FileNumber>1</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\core\misc.c</PathWithFileName>
-      <FilenameWithoutPath>misc.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>1</GroupNumber>
-      <FileNumber>2</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\core\system.c</PathWithFileName>
-      <FilenameWithoutPath>system.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>1</GroupNumber>
-      <FileNumber>3</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\core\bt_code.c</PathWithFileName>
-      <FilenameWithoutPath>bt_code.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-  </Group>
-
-  <Group>
-    <GroupName>main</GroupName>
-    <tvExp>1</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>2</GroupNumber>
-      <FileNumber>4</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\user\main.c</PathWithFileName>
-      <FilenameWithoutPath>main.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-  </Group>
-
-  <Group>
-    <GroupName>sdk</GroupName>
-    <tvExp>1</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>5</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_gpio.c</PathWithFileName>
-      <FilenameWithoutPath>yc_gpio.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>6</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_uart.c</PathWithFileName>
-      <FilenameWithoutPath>yc_uart.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>7</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_timer.c</PathWithFileName>
-      <FilenameWithoutPath>yc_timer.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>8</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_ipc.c</PathWithFileName>
-      <FilenameWithoutPath>yc_ipc.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>9</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_lpm.c</PathWithFileName>
-      <FilenameWithoutPath>yc_lpm.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>10</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_otp.c</PathWithFileName>
-      <FilenameWithoutPath>yc_otp.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>11</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_sysctrl.c</PathWithFileName>
-      <FilenameWithoutPath>yc_sysctrl.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>12</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_bt.c</PathWithFileName>
-      <FilenameWithoutPath>yc_bt.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>13</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_systick.c</PathWithFileName>
-      <FilenameWithoutPath>yc_systick.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-  </Group>
-
-  <Group>
-    <GroupName>startup</GroupName>
-    <tvExp>1</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>4</GroupNumber>
-      <FileNumber>14</FileNumber>
-      <FileType>2</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\startup\flash_start.s</PathWithFileName>
-      <FilenameWithoutPath>flash_start.s</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>4</GroupNumber>
-      <FileNumber>15</FileNumber>
-      <FileType>2</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\startup\startup.s</PathWithFileName>
-      <FilenameWithoutPath>startup.s</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-  </Group>
-
-  <Group>
-    <GroupName>USB</GroupName>
-    <tvExp>1</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>16</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\usb_core.c</PathWithFileName>
-      <FilenameWithoutPath>usb_core.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>17</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\Usb_dcd.c</PathWithFileName>
-      <FilenameWithoutPath>Usb_dcd.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>18</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\Usb_dcd_init.c</PathWithFileName>
-      <FilenameWithoutPath>Usb_dcd_init.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>19</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_core.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_core.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>20</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_ioreq.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_ioreq.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>21</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_req.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_req.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>22</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\CDC\usbd_cdc_core.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_cdc_core.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>23</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_CDC_Device_Demo\usb_bsp.c</PathWithFileName>
-      <FilenameWithoutPath>usb_bsp.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>24</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_CDC_Device_Demo\usbd_cdc_vcp.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_cdc_vcp.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>25</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_CDC_Device_Demo\usbd_desc.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_desc.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>26</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_CDC_Device_Demo\usbd_usr.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_usr.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>27</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>1</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_CDC_Device_Demo\usb_main.c</PathWithFileName>
-      <FilenameWithoutPath>usb_main.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-  </Group>
-
-</ProjectOpt>
Index: USB_CDC/prj/MDK/YC3121_Keil.uvprojx
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_CDC/prj/MDK/YC3121_Keil.uvprojx	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_CDC/prj/MDK/YC3121_Keil.uvprojx	(nonexistent)
@@ -1,552 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
-<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
-
-  <SchemaVersion>2.1</SchemaVersion>
-
-  <Header>### uVision Project, (C) Keil Software</Header>
-
-  <Targets>
-    <Target>
-      <TargetName>YC3121</TargetName>
-      <ToolsetNumber>0x4</ToolsetNumber>
-      <ToolsetName>ARM-ADS</ToolsetName>
-      <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
-      <uAC6>0</uAC6>
-      <TargetOption>
-        <TargetCommonOption>
-          <Device>ARMCM0</Device>
-          <Vendor>ARM</Vendor>
-          <PackID>ARM.CMSIS.5.5.1</PackID>
-          <PackURL>http://www.keil.com/pack/</PackURL>
-          <Cpu>IRAM(0x20000000,0x00020000) IROM(0x00000000,0x00040000) CPUTYPE("Cortex-M0") CLOCK(12000000) ESEL ELITTLE</Cpu>
-          <FlashUtilSpec></FlashUtilSpec>
-          <StartupFile></StartupFile>
-          <FlashDriverDll>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000)</FlashDriverDll>
-          <DeviceId>0</DeviceId>
-          <RegisterFile>$$Device:ARMCM0$Device\ARM\ARMCM0\Include\ARMCM0.h</RegisterFile>
-          <MemoryEnv></MemoryEnv>
-          <Cmp></Cmp>
-          <Asm></Asm>
-          <Linker></Linker>
-          <OHString></OHString>
-          <InfinionOptionDll></InfinionOptionDll>
-          <SLE66CMisc></SLE66CMisc>
-          <SLE66AMisc></SLE66AMisc>
-          <SLE66LinkerMisc></SLE66LinkerMisc>
-          <SFDFile>$$Device:ARMCM0$Device\ARM\SVD\ARMCM0.svd</SFDFile>
-          <bCustSvd>0</bCustSvd>
-          <UseEnv>0</UseEnv>
-          <BinPath></BinPath>
-          <IncludePath></IncludePath>
-          <LibPath></LibPath>
-          <RegisterFilePath></RegisterFilePath>
-          <DBRegisterFilePath></DBRegisterFilePath>
-          <TargetStatus>
-            <Error>0</Error>
-            <ExitCodeStop>0</ExitCodeStop>
-            <ButtonStop>0</ButtonStop>
-            <NotGenerated>0</NotGenerated>
-            <InvalidFlash>1</InvalidFlash>
-          </TargetStatus>
-          <OutputDirectory>.\Objects\</OutputDirectory>
-          <OutputName>YC3121_Keil</OutputName>
-          <CreateExecutable>1</CreateExecutable>
-          <CreateLib>0</CreateLib>
-          <CreateHexFile>1</CreateHexFile>
-          <DebugInformation>1</DebugInformation>
-          <BrowseInformation>1</BrowseInformation>
-          <ListingPath>.\Listings\</ListingPath>
-          <HexFormatSelection>1</HexFormatSelection>
-          <Merge32K>0</Merge32K>
-          <CreateBatchFile>1</CreateBatchFile>
-          <BeforeCompile>
-            <RunUserProg1>0</RunUserProg1>
-            <RunUserProg2>0</RunUserProg2>
-            <UserProg1Name></UserProg1Name>
-            <UserProg2Name></UserProg2Name>
-            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
-            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
-            <nStopU1X>0</nStopU1X>
-            <nStopU2X>0</nStopU2X>
-          </BeforeCompile>
-          <BeforeMake>
-            <RunUserProg1>0</RunUserProg1>
-            <RunUserProg2>0</RunUserProg2>
-            <UserProg1Name></UserProg1Name>
-            <UserProg2Name></UserProg2Name>
-            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
-            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
-            <nStopB1X>0</nStopB1X>
-            <nStopB2X>0</nStopB2X>
-          </BeforeMake>
-          <AfterMake>
-            <RunUserProg1>1</RunUserProg1>
-            <RunUserProg2>0</RunUserProg2>
-            <UserProg1Name>fromelf.exe --text -a -c --output=@L_asm.txt "!L"</UserProg1Name>
-            <UserProg2Name></UserProg2Name>
-            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
-            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
-            <nStopA1X>0</nStopA1X>
-            <nStopA2X>0</nStopA2X>
-          </AfterMake>
-          <SelectedForBatchBuild>0</SelectedForBatchBuild>
-          <SVCSIdString></SVCSIdString>
-        </TargetCommonOption>
-        <CommonProperty>
-          <UseCPPCompiler>0</UseCPPCompiler>
-          <RVCTCodeConst>0</RVCTCodeConst>
-          <RVCTZI>0</RVCTZI>
-          <RVCTOtherData>0</RVCTOtherData>
-          <ModuleSelection>0</ModuleSelection>
-          <IncludeInBuild>1</IncludeInBuild>
-          <AlwaysBuild>0</AlwaysBuild>
-          <GenerateAssemblyFile>0</GenerateAssemblyFile>
-          <AssembleAssemblyFile>0</AssembleAssemblyFile>
-          <PublicsOnly>0</PublicsOnly>
-          <StopOnExitCode>3</StopOnExitCode>
-          <CustomArgument></CustomArgument>
-          <IncludeLibraryModules></IncludeLibraryModules>
-          <ComprImg>1</ComprImg>
-        </CommonProperty>
-        <DllOption>
-          <SimDllName>SARMCM3.DLL</SimDllName>
-          <SimDllArguments>  </SimDllArguments>
-          <SimDlgDll>DARMCM1.DLL</SimDlgDll>
-          <SimDlgDllArguments>-pCM0</SimDlgDllArguments>
-          <TargetDllName>SARMCM3.DLL</TargetDllName>
-          <TargetDllArguments> </TargetDllArguments>
-          <TargetDlgDll>TARMCM1.DLL</TargetDlgDll>
-          <TargetDlgDllArguments>-pCM0</TargetDlgDllArguments>
-        </DllOption>
-        <DebugOption>
-          <OPTHX>
-            <HexSelection>1</HexSelection>
-            <HexRangeLowAddress>0</HexRangeLowAddress>
-            <HexRangeHighAddress>0</HexRangeHighAddress>
-            <HexOffset>0</HexOffset>
-            <Oh166RecLen>16</Oh166RecLen>
-          </OPTHX>
-        </DebugOption>
-        <Utilities>
-          <Flash1>
-            <UseTargetDll>1</UseTargetDll>
-            <UseExternalTool>0</UseExternalTool>
-            <RunIndependent>1</RunIndependent>
-            <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
-            <Capability>1</Capability>
-            <DriverSelection>4100</DriverSelection>
-          </Flash1>
-          <bUseTDR>0</bUseTDR>
-          <Flash2>Segger\JL2CM3.dll</Flash2>
-          <Flash3>"" ()</Flash3>
-          <Flash4></Flash4>
-          <pFcarmOut></pFcarmOut>
-          <pFcarmGrp></pFcarmGrp>
-          <pFcArmRoot></pFcArmRoot>
-          <FcArmLst>0</FcArmLst>
-        </Utilities>
-        <TargetArmAds>
-          <ArmAdsMisc>
-            <GenerateListings>0</GenerateListings>
-            <asHll>1</asHll>
-            <asAsm>1</asAsm>
-            <asMacX>1</asMacX>
-            <asSyms>1</asSyms>
-            <asFals>1</asFals>
-            <asDbgD>1</asDbgD>
-            <asForm>1</asForm>
-            <ldLst>0</ldLst>
-            <ldmm>1</ldmm>
-            <ldXref>1</ldXref>
-            <BigEnd>0</BigEnd>
-            <AdsALst>1</AdsALst>
-            <AdsACrf>1</AdsACrf>
-            <AdsANop>0</AdsANop>
-            <AdsANot>0</AdsANot>
-            <AdsLLst>1</AdsLLst>
-            <AdsLmap>1</AdsLmap>
-            <AdsLcgr>1</AdsLcgr>
-            <AdsLsym>1</AdsLsym>
-            <AdsLszi>1</AdsLszi>
-            <AdsLtoi>1</AdsLtoi>
-            <AdsLsun>1</AdsLsun>
-            <AdsLven>1</AdsLven>
-            <AdsLsxf>1</AdsLsxf>
-            <RvctClst>0</RvctClst>
-            <GenPPlst>0</GenPPlst>
-            <AdsCpuType>"Cortex-M0"</AdsCpuType>
-            <RvctDeviceName></RvctDeviceName>
-            <mOS>0</mOS>
-            <uocRom>0</uocRom>
-            <uocRam>0</uocRam>
-            <hadIROM>1</hadIROM>
-            <hadIRAM>1</hadIRAM>
-            <hadXRAM>0</hadXRAM>
-            <uocXRam>0</uocXRam>
-            <RvdsVP>0</RvdsVP>
-            <RvdsMve>0</RvdsMve>
-            <hadIRAM2>0</hadIRAM2>
-            <hadIROM2>0</hadIROM2>
-            <StupSel>8</StupSel>
-            <useUlib>1</useUlib>
-            <EndSel>1</EndSel>
-            <uLtcg>0</uLtcg>
-            <nSecure>0</nSecure>
-            <RoSelD>3</RoSelD>
-            <RwSelD>3</RwSelD>
-            <CodeSel>0</CodeSel>
-            <OptFeed>0</OptFeed>
-            <NoZi1>0</NoZi1>
-            <NoZi2>0</NoZi2>
-            <NoZi3>0</NoZi3>
-            <NoZi4>0</NoZi4>
-            <NoZi5>0</NoZi5>
-            <Ro1Chk>0</Ro1Chk>
-            <Ro2Chk>0</Ro2Chk>
-            <Ro3Chk>0</Ro3Chk>
-            <Ir1Chk>1</Ir1Chk>
-            <Ir2Chk>0</Ir2Chk>
-            <Ra1Chk>0</Ra1Chk>
-            <Ra2Chk>0</Ra2Chk>
-            <Ra3Chk>0</Ra3Chk>
-            <Im1Chk>1</Im1Chk>
-            <Im2Chk>0</Im2Chk>
-            <OnChipMemories>
-              <Ocm1>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm1>
-              <Ocm2>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm2>
-              <Ocm3>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm3>
-              <Ocm4>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm4>
-              <Ocm5>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm5>
-              <Ocm6>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm6>
-              <IRAM>
-                <Type>0</Type>
-                <StartAddress>0x20000000</StartAddress>
-                <Size>0x20000</Size>
-              </IRAM>
-              <IROM>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x40000</Size>
-              </IROM>
-              <XRAM>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </XRAM>
-              <OCR_RVCT1>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT1>
-              <OCR_RVCT2>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT2>
-              <OCR_RVCT3>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT3>
-              <OCR_RVCT4>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x40000</Size>
-              </OCR_RVCT4>
-              <OCR_RVCT5>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT5>
-              <OCR_RVCT6>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT6>
-              <OCR_RVCT7>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT7>
-              <OCR_RVCT8>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT8>
-              <OCR_RVCT9>
-                <Type>0</Type>
-                <StartAddress>0x20000000</StartAddress>
-                <Size>0x20000</Size>
-              </OCR_RVCT9>
-              <OCR_RVCT10>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT10>
-            </OnChipMemories>
-            <RvctStartVector></RvctStartVector>
-          </ArmAdsMisc>
-          <Cads>
-            <interw>1</interw>
-            <Optim>3</Optim>
-            <oTime>0</oTime>
-            <SplitLS>0</SplitLS>
-            <OneElfS>0</OneElfS>
-            <Strict>0</Strict>
-            <EnumInt>0</EnumInt>
-            <PlainCh>0</PlainCh>
-            <Ropi>0</Ropi>
-            <Rwpi>0</Rwpi>
-            <wLevel>2</wLevel>
-            <uThumb>0</uThumb>
-            <uSurpInc>0</uSurpInc>
-            <uC99>1</uC99>
-            <uGnu>0</uGnu>
-            <useXO>0</useXO>
-            <v6Lang>1</v6Lang>
-            <v6LangP>1</v6LangP>
-            <vShortEn>1</vShortEn>
-            <vShortWch>1</vShortWch>
-            <v6Lto>0</v6Lto>
-            <v6WtE>0</v6WtE>
-            <v6Rtti>0</v6Rtti>
-            <VariousControls>
-              <MiscControls></MiscControls>
-              <Define>__USEKEILCOMPILE__</Define>
-              <Undefine></Undefine>
-              <IncludePath>..\..\..\..\..\Librarier\core;..\..\..\..\..\Librarier\sdk;..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der;..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core;..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_CDC_Device_Demo;..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\CDC;..\..\user</IncludePath>
-            </VariousControls>
-          </Cads>
-          <Aads>
-            <interw>1</interw>
-            <Ropi>0</Ropi>
-            <Rwpi>0</Rwpi>
-            <thumb>0</thumb>
-            <SplitLS>0</SplitLS>
-            <SwStkChk>0</SwStkChk>
-            <NoWarn>0</NoWarn>
-            <uSurpInc>0</uSurpInc>
-            <useXO>0</useXO>
-            <uClangAs>0</uClangAs>
-            <VariousControls>
-              <MiscControls></MiscControls>
-              <Define></Define>
-              <Undefine></Undefine>
-              <IncludePath></IncludePath>
-            </VariousControls>
-          </Aads>
-          <LDads>
-            <umfTarg>0</umfTarg>
-            <Ropi>0</Ropi>
-            <Rwpi>0</Rwpi>
-            <noStLib>0</noStLib>
-            <RepFail>1</RepFail>
-            <useFile>0</useFile>
-            <TextAddressRange>0x00000000</TextAddressRange>
-            <DataAddressRange>0xd0000</DataAddressRange>
-            <pXoBase></pXoBase>
-            <ScatterFile>.\Objects\YC3121_keil.sct</ScatterFile>
-            <IncludeLibs></IncludeLibs>
-            <IncludeLibsPath></IncludeLibsPath>
-            <Misc></Misc>
-            <LinkerInputFile></LinkerInputFile>
-            <DisabledWarnings></DisabledWarnings>
-          </LDads>
-        </TargetArmAds>
-      </TargetOption>
-      <Groups>
-        <Group>
-          <GroupName>core</GroupName>
-          <Files>
-            <File>
-              <FileName>misc.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\core\misc.c</FilePath>
-            </File>
-            <File>
-              <FileName>system.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\core\system.c</FilePath>
-            </File>
-            <File>
-              <FileName>bt_code.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\core\bt_code.c</FilePath>
-            </File>
-          </Files>
-        </Group>
-        <Group>
-          <GroupName>main</GroupName>
-          <Files>
-            <File>
-              <FileName>main.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\user\main.c</FilePath>
-            </File>
-          </Files>
-        </Group>
-        <Group>
-          <GroupName>sdk</GroupName>
-          <Files>
-            <File>
-              <FileName>yc_gpio.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_gpio.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_uart.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_uart.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_timer.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_timer.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_ipc.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_ipc.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_lpm.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_lpm.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_otp.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_otp.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_sysctrl.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_sysctrl.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_bt.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_bt.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_systick.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_systick.c</FilePath>
-            </File>
-          </Files>
-        </Group>
-        <Group>
-          <GroupName>startup</GroupName>
-          <Files>
-            <File>
-              <FileName>flash_start.s</FileName>
-              <FileType>2</FileType>
-              <FilePath>..\..\..\..\..\Librarier\startup\flash_start.s</FilePath>
-            </File>
-            <File>
-              <FileName>startup.s</FileName>
-              <FileType>2</FileType>
-              <FilePath>..\..\..\..\..\Librarier\startup\startup.s</FilePath>
-            </File>
-          </Files>
-        </Group>
-        <Group>
-          <GroupName>USB</GroupName>
-          <Files>
-            <File>
-              <FileName>usb_core.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\usb_core.c</FilePath>
-            </File>
-            <File>
-              <FileName>Usb_dcd.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\Usb_dcd.c</FilePath>
-            </File>
-            <File>
-              <FileName>Usb_dcd_init.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\Usb_dcd_init.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_core.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_core.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_ioreq.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_ioreq.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_req.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_req.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_cdc_core.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\CDC\usbd_cdc_core.c</FilePath>
-            </File>
-            <File>
-              <FileName>usb_bsp.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_CDC_Device_Demo\usb_bsp.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_cdc_vcp.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_CDC_Device_Demo\usbd_cdc_vcp.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_desc.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_CDC_Device_Demo\usbd_desc.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_usr.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_CDC_Device_Demo\usbd_usr.c</FilePath>
-            </File>
-            <File>
-              <FileName>usb_main.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_CDC_Device_Demo\usb_main.c</FilePath>
-            </File>
-          </Files>
-        </Group>
-      </Groups>
-    </Target>
-  </Targets>
-
-  <RTE>
-    <apis/>
-    <components/>
-    <files/>
-  </RTE>
-
-</Project>
Index: USB_CDC/user/main.c
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_CDC/user/main.c	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_CDC/user/main.c	(nonexistent)
@@ -1,90 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    3121Demo_1.0V\ModuleDemo\USB\USB_CDC\user\main.c
-  * @author  Yichip Application Team
-  * @version V1.0.0
-  * @date    23-Oct-2019
-  * @brief   USB CDC test program.
-  ******************************************************************************
-  * @attention
-  *
-  * COPYRIGHT 2019 Yichip Microelectronics
-  *
-  * The purpose of this demo is to provide guidance to customers engaged in 
-	* programming work to guide them smoothly to product development, 
-	* so as to save their time.
-	*
-	* Therefore, Yichip microelectronics shall not be responsible for any direct, 
-	* indirect or consequential damages caused by any content of this demo
-	* and/or contained in this code used by the customer in its products.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "yc3121.h"
-#include "yc_gpio.h"
-#include "yc_uart.h"
-#include "yc_ipc.h"
-#include "usb_main.h"
-#include "board_config.h"
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-void UART_Configuration(void);
-
-/**
-  * @brief  Main program
-  * @param  None
-  * @retval None
-  */
-extern USB_OTG_CORE_HANDLE  USB_OTG_dev;
-
-int main(void)
-{  
-	UART_Configuration();
-
-	IpcInit();
-
-	MyPrintf("USB CDC Demo !\n\n");
-
-	usb_main();
-	while (1)
-	{
-		
-	}
-}
-
-/**
-  * @brief  Serial port 0 initialization function.
-  * @param  None
-  * @retval None
-  */
-void UART_Configuration(void)
-{
-	UART_InitTypeDef UART_InitStruct;
-
-	/* Configure serial ports 0 RX and TX for IO. */
-	GPIO_Config(UART0_TX_PORT, UART0_TX_PIN, UART0_TXD);
-	GPIO_Config(UART0_RX_PORT, UART0_RX_PIN, UART0_RXD);
-
-	/* USARTx configured as follow:
-  - BaudRate = 115200 baud  
-  - Word Length = 8 Bits
-  - Stop Bit = 1 Stop Bit
-  - Parity = No Parity
-  - Hardware flow control disabled (RTS and CTS signals)
-  - Receive and transmit enabled
-  */
-	UART_InitStruct.BaudRate = UARTBAUD;			//Configure serial port baud rate, the baud rate defaults to 128000.
-	UART_InitStruct.DataBits = Databits_8b;
-	UART_InitStruct.StopBits = StopBits_1;
-	UART_InitStruct.Parity = Parity_None;
-	UART_InitStruct.FlowCtrl = FlowCtrl_None;
-	UART_InitStruct.Mode = Mode_duplex;
-	
-	UART_Init(UART0, &UART_InitStruct);
-}
-
-/************************ (C) COPYRIGHT Yichip Microelectronics *****END OF FILE****/
Index: USB_HID/HalUSB/halBasics.h
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_HID/HalUSB/halBasics.h	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_HID/HalUSB/halBasics.h	(nonexistent)
@@ -1,41 +0,0 @@
-#ifndef _HAL_BASIC_H_
-#define _HAL_BASIC_H_
-
-#include "..\core\yc3121.h"
-#include "..\sdk\yc_timer.h"
-#include "..\sdk\yc_otp.h"
-#include "..\sdk\yc_sysctrl.h"
-#define u8 unsigned char
-#define u16 unsigned short
-#define u32 unsigned int
-#define s32 int
-#define s8 char
-
-#define  NO_DATA 0	
-#define  HAVE_DATA 1	
-#define	HAL_OK			0
-#define	HAL_ERROR      	-1
-//#define	OK			0
-//#define  ERROR      	0
-//#define 	PARAMERR  	-2
-//#define  TIMEOUT   	-3
-
-//#define 	SUCCESS		0
-//#define  FAILED      	-1
-
-//#define  TRUE		0x01
-//#define  FALSE		0x00
-
-#define 	ON        	0x01
-#define 	OFF        	0x00
-
-
-void halMsDelay(u32 uiMs);
-void halUsDelay(u32 uiUs);
-void halClkCoreFreqSet(u32 uiFreq);
-void halInitInterrupt(void);
-void halEnableIrq(u32 uiID);
-void halDisableIrq(u32 id);
-void halGetMcuID(u8 *pucMcdID);
-
-#endif
Index: USB_HID/HalUSB/halBasics.c
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_HID/HalUSB/halBasics.c	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_HID/HalUSB/halBasics.c	(nonexistent)
@@ -1,42 +0,0 @@
-#include "halBasics.h"
-#include "yc_systick.h"
-
-void halMsDelay(u32 uiMs)
-{
-	u32 getCurt = SysTick_GetTick();
-	while(getCurt- SysTick_GetTick()<uiMs);
-	//delay_us(uiMs*1000);
-}
-
-void halUsDelay (u32 us)
-{
-	delay_us(us);
-}
-
-void halClkCoreFreqSet(u32  uiFreq)
-{
-	u32 HCLK_Div = (CRYSTAL_CLK)/ uiFreq-2;
-	SYSCTRL_HCLKConfig(HCLK_Div);
-}
-void halInitInterrupt(void)
-{
-	for(int id=0;id<32;id++)
-	{
-		disable_intr(id);
-	}
-}
-
-void halEnableIrq(u32 uiID)
-{
-	enable_intr(uiID);
-}
-void hal_DisableIrq(u32 id)
-{
-	disable_intr(id);
-}
-void halGetMcuID(u8 *pucMcdID)
-{
-	read_chipid(pucMcdID);
-}
-
-
Index: USB_HID/HalUSB/halUSB.h
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_HID/HalUSB/halUSB.h	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_HID/HalUSB/halUSB.h	(nonexistent)
@@ -1,42 +0,0 @@
- 
-#ifndef __halUSB_H__
-#define __halUSB_H__
-#include <string.h>
-#include <stdio.h>
-#include "usb_main.h"
-#include "halBasics.h"
-
-
-typedef enum
-{
-	USB_MODE_HID = 0,
-}E_USB_COMM_MODE;
-
-
-
-
-
-void  halUsbInit(E_USB_COMM_MODE  eMode);
-void halUsbDeinit(void);
-
-s32 halUsbSend(u8 * pucSendData,u32 uiSendLen);
-
-s32 halUsbReceive( u8 *pucRecData,u8 uiRecLen);
-
-u8 halUsbDataAck(void);
-
-
-
-
-
-
-
-
-
-
-
-
-#endif /* __halUSB_H__ */
-
-
-
Index: USB_HID/HalUSB/halUSB.c
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_HID/HalUSB/halUSB.c	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_HID/HalUSB/halUSB.c	(nonexistent)
@@ -1,98 +0,0 @@
-#include <string.h>
-#include <stdio.h>
-#include "usbd_hid_core.h"
-#include "usbd_usr.h"
-#include "usbd_desc.h"
-#include "usb_dcd_int.h"
-#include "usb_main.h"
-#include "halBasics.h"
-#include "halUSB.h"
-
-extern USB_OTG_CORE_HANDLE  USB_OTG_dev;
-extern uint8_t receive_data_flag;
-extern uint8_t data_len;
-
-void  halUsbInit(E_USB_COMM_MODE  eMode)
-{
-
-	if(eMode != USB_MODE_HID)
-		return ;
-	  usb_main();
-
-}
-
-
-void halUsbDeinit(void)
-{
-	disable_clock(CLKCLS_USB);	
-	disable_intr(INTR_USB); 
-
-}
-
-
-
-s32 halUsbSend(u8 * pucSendData,u32 uiSendLen)
-{
-	if (USB_OTG_dev.dev.device_status_new== USB_OTG_END)
-	{
-	DCD_EP_Tx(&USB_OTG_dev, HID_IN_EP, pucSendData, uiSendLen);
-	return uiSendLen;
-	}
-	else
-	{
-         return HAL_ERROR;
-		
-	}
-	
-}
-
-s32 halUsbReceive( u8 *pucRecData,u8 uiRecLen)
-{
-
-	if(uiRecLen > HID_EPOUT_SIZE)
-		return HAL_ERROR;
-	else
-	{
-		memcpy(pucRecData,HidOut_Data_Buff,data_len);
-	//	pucRecData =  (uint8_t *)&HidOut_Data_Buff[0];
-		return data_len ;
-	}
-
-}
-
-u8 halUsbDataAck(void)
-{
-	if(receive_data_flag == 1)
-	{
-		receive_data_flag = 0;
-		return HAVE_DATA;
-	}
-	else
-	{
-
-		return NO_DATA;
-	}
-
-
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Index: USB_HID/prj/GCC/c.bat
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_HID/prj/GCC/c.bat	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_HID/prj/GCC/c.bat	(nonexistent)
@@ -1,3 +0,0 @@
-cls
-make clean
-make
\ No newline at end of file
Index: USB_HID/prj/GCC/makefile
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_HID/prj/GCC/makefile	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_HID/prj/GCC/makefile	(nonexistent)
@@ -1,251 +0,0 @@
-
-ifeq ($(OS),Windows_NT)
-DIR = C:/gcc-arm-none-eabi-7-2018-q2-update-win32
-else
-DIR = /usr/gcc-arm-none-eabi-7-2018-q2-update
-endif
-
-ARCH = $(DIR)/bin/arm-none-eabi
-GCC = $(ARCH)-gcc
-LD = $(ARCH)-ld
-AS = $(ARCH)-as
-OBJCOPY = $(ARCH)-objcopy
-OBJDUMP = "$(ARCH)-objdump"
-LIB_PATH = ../../../../../Librarier
-USER_PATH = ../../user
-
-
-all : output/out.hex
-
-
-CORE_OBJS =  $(LIB_PATH)/startup/flash_start_gcc \
-             $(LIB_PATH)/core/system \
-             $(LIB_PATH)/core/misc \
-             $(LIB_PATH)/core/bt_code \
-             $(LIB_PATH)/sdk/yc_gpio \
-             $(LIB_PATH)/sdk/yc_timer \
-             $(LIB_PATH)/sdk/yc_ipc \
-             $(LIB_PATH)/sdk/yc_uart \
-             $(LIB_PATH)/sdk/yc_lpm \
-             $(LIB_PATH)/sdk/yc_otp \
-             $(LIB_PATH)/sdk/yc_bt \
-             $(LIB_PATH)/sdk/yc_systick \
-             $(LIB_PATH)/sdk/yc_sysctrl \
-             $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der/usb_core \
-             $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der/Usb_dcd \
-             $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der/Usb_dcd_init \
-             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core/usbd_core \
-             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core/usbd_ioreq \
-             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core/usbd_req \
-             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/class/HID/usbd_hid_core \
-             $(LIB_PATH)/sdk/yc_usb/scpu_usb_hid_Device_Demo/usb_main \
-             $(LIB_PATH)/sdk/yc_usb/scpu_usb_hid_Device_Demo/usbd_desc \
-             $(LIB_PATH)/sdk/yc_usb/scpu_usb_hid_Device_Demo/usbd_usr \
-             ../../HalUSB/halUSB
-
-
-USER_OBJS = $(USER_PATH)/main
-
-OBJS = $(CORE_OBJS) $(USER_OBJS)
-
-INC_DIR = -I $(LIB_PATH)/core \
-          -I $(LIB_PATH)/sdk \
-          -I $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der \
-          -I $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core \
-          -I $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/class/HID \
-          -I $(LIB_PATH)/sdk/yc_usb/scpu_usb_hid_Device_Demo \
-          -I ../../HalUSB
-
-
-CFLAG =  -mthumb -mcpu=cortex-m0 -c -g -Os $(INC_DIR) $(DEF) -fno-toplevel-reorder -ffunction-sections -fdata-sections
-LDFLAG = -T output/ld.script -Map=output/memmap -lc -lm -lgcc -L "$(DIR)/lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m"  -L "$(DIR)/arm-none-eabi/lib/thumb/v6-m"
-
-define ldscript =
-/* Linker script to configure memory regions.
- * Need modifying for a specific board.
- *   FLASH.ORIGIN: starting address of flash
- *   FLASH.LENGTH: length of flash
- *   RAM.ORIGIN: starting address of RAM bank 0
- *   RAM.LENGTH: length of RAM bank 0
- */
-MEMORY
-{
-  FLASH (rx) : ORIGIN = 0x1000000, LENGTH = 0x80000 /* 512K */
-  RAM (rwx) : ORIGIN = 0x20000, LENGTH = 0x10000 /* 64K */
-}
-
-/* Linker script to place sections and symbol values. Should be used together
- * with other linker script that defines memory regions FLASH and RAM.
- * It references following symbols, which must be defined in code:
- *   Reset_Handler : Entry of reset handler
- *
- * It defines following symbols, which code can use without definition:
- *   __exidx_start
- *   __exidx_end
- *   __copy_table_start__
- *   __copy_table_end__
- *   __zero_table_start__
- *   __zero_table_end__
- *   __etext
- *   __data_start__
- *   __preinit_array_start
- *   __preinit_array_end
- *   __init_array_start
- *   __init_array_end
- *   __fini_array_start
- *   __fini_array_end
- *   __data_end__
- *   __bss_start__
- *   __bss_end__
- *   __end__
- *   end
- *   __HeapLimit
- *   __StackLimit
- *   __StackTop
- *   __stack
- */
-ENTRY(Reset_Handler)
-
-SECTIONS
-{
-	.text :
-	{
-		*flash_start*.o
-		*(.text*)
-
-		KEEP(*(.init))
-		KEEP(*(.fini))
-
-		/* .ctors */
-		*crtbegin.o(.ctors)
-		*crtbegin?.o(.ctors)
-		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
-		*(SORT(.ctors.*))
-		*(.ctors)
-
-		/* .dtors */
- 		*crtbegin.o(.dtors)
- 		*crtbegin?.o(.dtors)
- 		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
- 		*(SORT(.dtors.*))
- 		*(.dtors)
-
-		*(.rodata*)
-
-		KEEP(*(.eh_frame*))
-	} > FLASH
-
-
-
-	.ARM.extab :
-	{
-		*(.ARM.extab* .gnu.linkonce.armextab.*)
-	} > FLASH
-
-
-	.ARM.exidx :
-	{
-		*(.ARM.exidx* .gnu.linkonce.armexidx.*)
-	} > FLASH
-
-	 . = ALIGN(4);
-	__exidx_start = .;
-
-	__etext = .;
-
-	.data : AT (__etext)
-	{
-		__data_start__ = .;
-		*(vtable)
-		*(.data*)
-
-		. = ALIGN(4);
-		/* preinit data */
-		PROVIDE_HIDDEN (__preinit_array_start = .);
-		KEEP(*(.preinit_array))
-		PROVIDE_HIDDEN (__preinit_array_end = .);
-
-		. = ALIGN(4);
-		/* init data */
-		PROVIDE_HIDDEN (__init_array_start = .);
-		KEEP(*(SORT(.init_array.*)))
-		KEEP(*(.init_array))
-		PROVIDE_HIDDEN (__init_array_end = .);
-
-
-		. = ALIGN(4);
-		/* finit data */
-		PROVIDE_HIDDEN (__fini_array_start = .);
-		KEEP(*(SORT(.fini_array.*)))
-		KEEP(*(.fini_array))
-		PROVIDE_HIDDEN (__fini_array_end = .);
-
-		KEEP(*(.jcr*))
-		. = ALIGN(4);
-		/* All data end */
-		__data_end__ = .;
-
-	} > RAM
-
-	.bss :
-	{
-		. = ALIGN(4);
-		__bss_start__ = .;
-		*(.bss*)
-		*(COMMON)
-		. = ALIGN(4);
-		__bss_end__ = .;
-	} > RAM
-
-	.heap (COPY):
-	{
-		__end__ = .;
-		PROVIDE(end = .);
-		*(.heap*)
-		__HeapLimit = .;
-	} > RAM
-
-	/* .stack_dummy section doesn't contains any symbols. It is only
-	 * used for linker to calculate size of stack sections, and assign
-	 * values to stack symbols later */
-	.stack_dummy (COPY):
-	{
-		*(.stack*)
-	} > RAM
-
-	/* Set stack top to end of RAM, and stack limit move down by
-	 * size of stack_dummy section */
-	__StackTop = ORIGIN(RAM) + LENGTH(RAM);
-	__StackLimit = __StackTop - SIZEOF(.stack_dummy);
-	PROVIDE(__stack = __StackTop);
-
-	/* Check if data + heap + stack exceeds RAM limit */
-	ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
-}
-endef
-
-
-output/out.hex : output/out
-	$(OBJCOPY) $^ -O ihex $@
-
-
-output/out : $(addprefix output/, $(addsuffix .o, $(OBJS)))
-	$(file >output/ld.script, $(ldscript))
-	$(LD) $(addprefix output/obj/,$(addsuffix .o, $(notdir $(OBJS)))) -o $@ $(LDFLAG)
-	$(OBJDUMP) -S $@ > output/disasm
-
-output/%.o : %.c
-	$(GCC) $< $(CFLAG) -o output/obj/$(notdir $@)
-
-output/%.o : %.s
-	$(AS) $^ -mthumb -mcpu=cortex-m0 -o output/obj/$(notdir $@)
-
-
-clean :
-ifeq ($(OS),Windows_NT)
-	del /Q output\*.*
-	del /Q output\obj\*.*
-else
-	rm -rf output/*
-	rm -rf output/obj/*
-endif
Index: USB_HID/prj/MDK/Objects/YC3121_keil.sct
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_HID/prj/MDK/Objects/YC3121_keil.sct	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_HID/prj/MDK/Objects/YC3121_keil.sct	(nonexistent)
@@ -1,55 +0,0 @@
-; *************************************************************
-; *** Scatter-Loading Description File generated by uVision ***
-; *************************************************************
-
-LR_IROM1 0x00000000 0x0001fff  {    ; load region size_region
-  ER_IROM1 0x00000000 0x00001fff  {  ; load address = execution address
-   startup.o (RESET, +First)
-   startup.o (|.text|,+RO)
-;   *(InRoot$$Sections)
-  }
-  ;ER_IROM2 0x4000   {
-  ;rom_main.o (+RO)
-  ;}
-  
-  ;ER_IROM3 0x100000 {
-	  ;*(InRoot$$Sections)
-  ;}
-	
-  ;ER_IROM4 0x100400   {
-  ;flash_start.o (+RO)
-  ;.ANY (+RO) 
-  ;}
-  
-  ;RW_IRAM1 0x000d0000 0x0010000  {  ; RW data
-   ;.ANY (+RW +ZI)
-  ;}
-  
-;  ARM_LIB_STACK 0xE0000 EMPTY -0x10000{}
-}
-
-;LR_IROM2 0x4000 0x4000{
-;	ER_IROM2 0x4000 {
-;	  rom_main.o (+RO)
-;	}
-;}
-
-LR_IROM3 0x1000200 0x200{
-	ER_IROM3 0x1000200 {
-	  flash_start.o (|.flash_start|,+RO)
-	}
-}
-
-LR_IROM4 0x1000400 0x1000000{
-	ER_IROM4 0x1000400 {
-;	  flash_start.o (|.flash_start|,+RO)
-	  *(InRoot$$Sections)
-	  .ANY (+RO)
-	}
-	
-	
-	 RW_IRAM2 0x00020000 0x010000  {  ; RW data
-	.ANY (+RW +ZI)
-	}
-}
-
Index: USB_HID/prj/MDK/YC3121_Keil.uvoptx
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_HID/prj/MDK/YC3121_Keil.uvoptx	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_HID/prj/MDK/YC3121_Keil.uvoptx	(nonexistent)
@@ -1,579 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
-<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
-
-  <SchemaVersion>1.0</SchemaVersion>
-
-  <Header>### uVision Project, (C) Keil Software</Header>
-
-  <Extensions>
-    <cExt>*.c</cExt>
-    <aExt>*.s*; *.src; *.a*</aExt>
-    <oExt>*.obj; *.o</oExt>
-    <lExt>*.lib</lExt>
-    <tExt>*.txt; *.h; *.inc</tExt>
-    <pExt>*.plm</pExt>
-    <CppX>*.cpp</CppX>
-    <nMigrate>0</nMigrate>
-  </Extensions>
-
-  <DaveTm>
-    <dwLowDateTime>0</dwLowDateTime>
-    <dwHighDateTime>0</dwHighDateTime>
-  </DaveTm>
-
-  <Target>
-    <TargetName>YC3121</TargetName>
-    <ToolsetNumber>0x4</ToolsetNumber>
-    <ToolsetName>ARM-ADS</ToolsetName>
-    <TargetOption>
-      <CLKADS>12000000</CLKADS>
-      <OPTTT>
-        <gFlags>1</gFlags>
-        <BeepAtEnd>1</BeepAtEnd>
-        <RunSim>0</RunSim>
-        <RunTarget>1</RunTarget>
-        <RunAbUc>0</RunAbUc>
-      </OPTTT>
-      <OPTHX>
-        <HexSelection>1</HexSelection>
-        <FlashByte>65535</FlashByte>
-        <HexRangeLowAddress>0</HexRangeLowAddress>
-        <HexRangeHighAddress>0</HexRangeHighAddress>
-        <HexOffset>0</HexOffset>
-      </OPTHX>
-      <OPTLEX>
-        <PageWidth>79</PageWidth>
-        <PageLength>66</PageLength>
-        <TabStop>8</TabStop>
-        <ListingPath>.\Listings\</ListingPath>
-      </OPTLEX>
-      <ListingPage>
-        <CreateCListing>1</CreateCListing>
-        <CreateAListing>1</CreateAListing>
-        <CreateLListing>1</CreateLListing>
-        <CreateIListing>0</CreateIListing>
-        <AsmCond>1</AsmCond>
-        <AsmSymb>1</AsmSymb>
-        <AsmXref>0</AsmXref>
-        <CCond>1</CCond>
-        <CCode>0</CCode>
-        <CListInc>0</CListInc>
-        <CSymb>0</CSymb>
-        <LinkerCodeListing>0</LinkerCodeListing>
-      </ListingPage>
-      <OPTXL>
-        <LMap>1</LMap>
-        <LComments>1</LComments>
-        <LGenerateSymbols>1</LGenerateSymbols>
-        <LLibSym>1</LLibSym>
-        <LLines>1</LLines>
-        <LLocSym>1</LLocSym>
-        <LPubSym>1</LPubSym>
-        <LXref>0</LXref>
-        <LExpSel>0</LExpSel>
-      </OPTXL>
-      <OPTFL>
-        <tvExp>1</tvExp>
-        <tvExpOptDlg>0</tvExpOptDlg>
-        <IsCurrentTarget>1</IsCurrentTarget>
-      </OPTFL>
-      <CpuCode>7</CpuCode>
-      <DebugOpt>
-        <uSim>0</uSim>
-        <uTrg>1</uTrg>
-        <sLdApp>1</sLdApp>
-        <sGomain>1</sGomain>
-        <sRbreak>1</sRbreak>
-        <sRwatch>1</sRwatch>
-        <sRmem>1</sRmem>
-        <sRfunc>1</sRfunc>
-        <sRbox>1</sRbox>
-        <tLdApp>1</tLdApp>
-        <tGomain>1</tGomain>
-        <tRbreak>1</tRbreak>
-        <tRwatch>1</tRwatch>
-        <tRmem>1</tRmem>
-        <tRfunc>0</tRfunc>
-        <tRbox>1</tRbox>
-        <tRtrace>1</tRtrace>
-        <sRSysVw>1</sRSysVw>
-        <tRSysVw>1</tRSysVw>
-        <sRunDeb>0</sRunDeb>
-        <sLrtime>0</sLrtime>
-        <bEvRecOn>1</bEvRecOn>
-        <bSchkAxf>0</bSchkAxf>
-        <bTchkAxf>0</bTchkAxf>
-        <nTsel>4</nTsel>
-        <sDll></sDll>
-        <sDllPa></sDllPa>
-        <sDlgDll></sDlgDll>
-        <sDlgPa></sDlgPa>
-        <sIfile></sIfile>
-        <tDll></tDll>
-        <tDllPa></tDllPa>
-        <tDlgDll></tDlgDll>
-        <tDlgPa></tDlgPa>
-        <tIfile>..\..\..\..\..\ConfigFiles\MDK\flash.ini</tIfile>
-        <pMon>Segger\JL2CM3.dll</pMon>
-      </DebugOpt>
-      <TargetDriverDllRegistry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>DLGUARM</Key>
-          <Name>d</Name>
-        </SetRegEntry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>PWSTATINFO</Key>
-          <Name>200,50,700</Name>
-        </SetRegEntry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>ARMRTXEVENTFLAGS</Key>
-          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
-        </SetRegEntry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>DLGTARM</Key>
-          <Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)</Name>
-        </SetRegEntry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>ARMDBGFLAGS</Key>
-          <Name></Name>
-        </SetRegEntry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>JL2CM3</Key>
-          <Name>-U4294967295 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(0BB11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO31 -FD20000 -FCA000 -FN1 -FF0YC3121 -FS01000000 -FL080000</Name>
-        </SetRegEntry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>UL2CM3</Key>
-          <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000)</Name>
-        </SetRegEntry>
-      </TargetDriverDllRegistry>
-      <Breakpoint>
-        <Bp>
-          <Number>0</Number>
-          <Type>0</Type>
-          <LineNumber>689</LineNumber>
-          <EnabledFlag>1</EnabledFlag>
-          <Address>16786508</Address>
-          <ByteObject>0</ByteObject>
-          <HtxType>0</HtxType>
-          <ManyObjects>0</ManyObjects>
-          <SizeOfObject>0</SizeOfObject>
-          <BreakByAccess>0</BreakByAccess>
-          <BreakIfRCount>1</BreakIfRCount>
-          <Filename>D:\2_Working\3_SecurityIC\YC3121\2_Software\YC3121_Test\Yc3121\YC3121_demo\ModuleDemo\USB\USB_CCID\user\usb_test\usb_test.c</Filename>
-          <ExecCommand></ExecCommand>
-          <Expression>\\YC3121_Keil\../../user/usb_test/usb_test.c\689</Expression>
-        </Bp>
-      </Breakpoint>
-      <Tracepoint>
-        <THDelay>0</THDelay>
-      </Tracepoint>
-      <DebugFlag>
-        <trace>0</trace>
-        <periodic>0</periodic>
-        <aLwin>1</aLwin>
-        <aCover>0</aCover>
-        <aSer1>0</aSer1>
-        <aSer2>0</aSer2>
-        <aPa>0</aPa>
-        <viewmode>1</viewmode>
-        <vrSel>0</vrSel>
-        <aSym>0</aSym>
-        <aTbox>0</aTbox>
-        <AscS1>0</AscS1>
-        <AscS2>0</AscS2>
-        <AscS3>0</AscS3>
-        <aSer3>0</aSer3>
-        <eProf>0</eProf>
-        <aLa>0</aLa>
-        <aPa1>0</aPa1>
-        <AscS4>0</AscS4>
-        <aSer4>0</aSer4>
-        <StkLoc>0</StkLoc>
-        <TrcWin>0</TrcWin>
-        <newCpu>0</newCpu>
-        <uProt>0</uProt>
-      </DebugFlag>
-      <LintExecutable></LintExecutable>
-      <LintConfigFile></LintConfigFile>
-      <bLintAuto>0</bLintAuto>
-      <bAutoGenD>0</bAutoGenD>
-      <LntExFlags>0</LntExFlags>
-      <pMisraName></pMisraName>
-      <pszMrule></pszMrule>
-      <pSingCmds></pSingCmds>
-      <pMultCmds></pMultCmds>
-      <pMisraNamep></pMisraNamep>
-      <pszMrulep></pszMrulep>
-      <pSingCmdsp></pSingCmdsp>
-      <pMultCmdsp></pMultCmdsp>
-    </TargetOption>
-  </Target>
-
-  <Group>
-    <GroupName>core</GroupName>
-    <tvExp>1</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>1</GroupNumber>
-      <FileNumber>1</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\core\misc.c</PathWithFileName>
-      <FilenameWithoutPath>misc.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>1</GroupNumber>
-      <FileNumber>2</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\core\system.c</PathWithFileName>
-      <FilenameWithoutPath>system.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>1</GroupNumber>
-      <FileNumber>3</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\core\bt_code.c</PathWithFileName>
-      <FilenameWithoutPath>bt_code.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-  </Group>
-
-  <Group>
-    <GroupName>main</GroupName>
-    <tvExp>1</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>2</GroupNumber>
-      <FileNumber>4</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\user\main.c</PathWithFileName>
-      <FilenameWithoutPath>main.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-  </Group>
-
-  <Group>
-    <GroupName>sdk</GroupName>
-    <tvExp>1</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>5</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_gpio.c</PathWithFileName>
-      <FilenameWithoutPath>yc_gpio.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>6</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_uart.c</PathWithFileName>
-      <FilenameWithoutPath>yc_uart.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>7</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_timer.c</PathWithFileName>
-      <FilenameWithoutPath>yc_timer.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>8</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_ipc.c</PathWithFileName>
-      <FilenameWithoutPath>yc_ipc.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>9</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_lpm.c</PathWithFileName>
-      <FilenameWithoutPath>yc_lpm.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>10</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_otp.c</PathWithFileName>
-      <FilenameWithoutPath>yc_otp.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>11</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_sysctrl.c</PathWithFileName>
-      <FilenameWithoutPath>yc_sysctrl.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>12</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_bt.c</PathWithFileName>
-      <FilenameWithoutPath>yc_bt.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>13</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_systick.c</PathWithFileName>
-      <FilenameWithoutPath>yc_systick.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-  </Group>
-
-  <Group>
-    <GroupName>startup</GroupName>
-    <tvExp>1</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>4</GroupNumber>
-      <FileNumber>14</FileNumber>
-      <FileType>2</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\startup\flash_start.s</PathWithFileName>
-      <FilenameWithoutPath>flash_start.s</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>4</GroupNumber>
-      <FileNumber>15</FileNumber>
-      <FileType>2</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\startup\startup.s</PathWithFileName>
-      <FilenameWithoutPath>startup.s</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-  </Group>
-
-  <Group>
-    <GroupName>USB</GroupName>
-    <tvExp>1</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>16</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\usb_core.c</PathWithFileName>
-      <FilenameWithoutPath>usb_core.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>17</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\Usb_dcd.c</PathWithFileName>
-      <FilenameWithoutPath>Usb_dcd.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>18</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\Usb_dcd_init.c</PathWithFileName>
-      <FilenameWithoutPath>Usb_dcd_init.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>19</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_core.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_core.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>20</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_ioreq.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_ioreq.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>21</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_req.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_req.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>22</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_hid_Device_Demo\usb_main.c</PathWithFileName>
-      <FilenameWithoutPath>usb_main.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>23</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_hid_Device_Demo\usbd_desc.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_desc.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>24</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_hid_Device_Demo\usbd_usr.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_usr.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>25</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\HID\usbd_hid_core.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_hid_core.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-  </Group>
-
-  <Group>
-    <GroupName>USB_HAL</GroupName>
-    <tvExp>1</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>6</GroupNumber>
-      <FileNumber>26</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\HalUSB\halUSB.c</PathWithFileName>
-      <FilenameWithoutPath>halUSB.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-  </Group>
-
-</ProjectOpt>
Index: USB_HID/prj/MDK/YC3121_Keil.uvprojx
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_HID/prj/MDK/YC3121_Keil.uvprojx	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_HID/prj/MDK/YC3121_Keil.uvprojx	(nonexistent)
@@ -1,552 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
-<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
-
-  <SchemaVersion>2.1</SchemaVersion>
-
-  <Header>### uVision Project, (C) Keil Software</Header>
-
-  <Targets>
-    <Target>
-      <TargetName>YC3121</TargetName>
-      <ToolsetNumber>0x4</ToolsetNumber>
-      <ToolsetName>ARM-ADS</ToolsetName>
-      <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
-      <uAC6>0</uAC6>
-      <TargetOption>
-        <TargetCommonOption>
-          <Device>ARMCM0</Device>
-          <Vendor>ARM</Vendor>
-          <PackID>ARM.CMSIS.5.5.1</PackID>
-          <PackURL>http://www.keil.com/pack/</PackURL>
-          <Cpu>IRAM(0x20000000,0x00020000) IROM(0x00000000,0x00040000) CPUTYPE("Cortex-M0") CLOCK(12000000) ESEL ELITTLE</Cpu>
-          <FlashUtilSpec></FlashUtilSpec>
-          <StartupFile></StartupFile>
-          <FlashDriverDll>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000)</FlashDriverDll>
-          <DeviceId>0</DeviceId>
-          <RegisterFile>$$Device:ARMCM0$Device\ARM\ARMCM0\Include\ARMCM0.h</RegisterFile>
-          <MemoryEnv></MemoryEnv>
-          <Cmp></Cmp>
-          <Asm></Asm>
-          <Linker></Linker>
-          <OHString></OHString>
-          <InfinionOptionDll></InfinionOptionDll>
-          <SLE66CMisc></SLE66CMisc>
-          <SLE66AMisc></SLE66AMisc>
-          <SLE66LinkerMisc></SLE66LinkerMisc>
-          <SFDFile>$$Device:ARMCM0$Device\ARM\SVD\ARMCM0.svd</SFDFile>
-          <bCustSvd>0</bCustSvd>
-          <UseEnv>0</UseEnv>
-          <BinPath></BinPath>
-          <IncludePath></IncludePath>
-          <LibPath></LibPath>
-          <RegisterFilePath></RegisterFilePath>
-          <DBRegisterFilePath></DBRegisterFilePath>
-          <TargetStatus>
-            <Error>0</Error>
-            <ExitCodeStop>0</ExitCodeStop>
-            <ButtonStop>0</ButtonStop>
-            <NotGenerated>0</NotGenerated>
-            <InvalidFlash>1</InvalidFlash>
-          </TargetStatus>
-          <OutputDirectory>.\Objects\</OutputDirectory>
-          <OutputName>YC3121_Keil</OutputName>
-          <CreateExecutable>1</CreateExecutable>
-          <CreateLib>0</CreateLib>
-          <CreateHexFile>1</CreateHexFile>
-          <DebugInformation>1</DebugInformation>
-          <BrowseInformation>1</BrowseInformation>
-          <ListingPath>.\Listings\</ListingPath>
-          <HexFormatSelection>1</HexFormatSelection>
-          <Merge32K>0</Merge32K>
-          <CreateBatchFile>1</CreateBatchFile>
-          <BeforeCompile>
-            <RunUserProg1>0</RunUserProg1>
-            <RunUserProg2>0</RunUserProg2>
-            <UserProg1Name></UserProg1Name>
-            <UserProg2Name></UserProg2Name>
-            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
-            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
-            <nStopU1X>0</nStopU1X>
-            <nStopU2X>0</nStopU2X>
-          </BeforeCompile>
-          <BeforeMake>
-            <RunUserProg1>0</RunUserProg1>
-            <RunUserProg2>0</RunUserProg2>
-            <UserProg1Name></UserProg1Name>
-            <UserProg2Name></UserProg2Name>
-            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
-            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
-            <nStopB1X>0</nStopB1X>
-            <nStopB2X>0</nStopB2X>
-          </BeforeMake>
-          <AfterMake>
-            <RunUserProg1>1</RunUserProg1>
-            <RunUserProg2>0</RunUserProg2>
-            <UserProg1Name>fromelf.exe --text -a -c --output=@L_asm.txt "!L"</UserProg1Name>
-            <UserProg2Name></UserProg2Name>
-            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
-            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
-            <nStopA1X>0</nStopA1X>
-            <nStopA2X>0</nStopA2X>
-          </AfterMake>
-          <SelectedForBatchBuild>0</SelectedForBatchBuild>
-          <SVCSIdString></SVCSIdString>
-        </TargetCommonOption>
-        <CommonProperty>
-          <UseCPPCompiler>0</UseCPPCompiler>
-          <RVCTCodeConst>0</RVCTCodeConst>
-          <RVCTZI>0</RVCTZI>
-          <RVCTOtherData>0</RVCTOtherData>
-          <ModuleSelection>0</ModuleSelection>
-          <IncludeInBuild>1</IncludeInBuild>
-          <AlwaysBuild>0</AlwaysBuild>
-          <GenerateAssemblyFile>0</GenerateAssemblyFile>
-          <AssembleAssemblyFile>0</AssembleAssemblyFile>
-          <PublicsOnly>0</PublicsOnly>
-          <StopOnExitCode>3</StopOnExitCode>
-          <CustomArgument></CustomArgument>
-          <IncludeLibraryModules></IncludeLibraryModules>
-          <ComprImg>1</ComprImg>
-        </CommonProperty>
-        <DllOption>
-          <SimDllName>SARMCM3.DLL</SimDllName>
-          <SimDllArguments>  </SimDllArguments>
-          <SimDlgDll>DARMCM1.DLL</SimDlgDll>
-          <SimDlgDllArguments>-pCM0</SimDlgDllArguments>
-          <TargetDllName>SARMCM3.DLL</TargetDllName>
-          <TargetDllArguments> </TargetDllArguments>
-          <TargetDlgDll>TARMCM1.DLL</TargetDlgDll>
-          <TargetDlgDllArguments>-pCM0</TargetDlgDllArguments>
-        </DllOption>
-        <DebugOption>
-          <OPTHX>
-            <HexSelection>1</HexSelection>
-            <HexRangeLowAddress>0</HexRangeLowAddress>
-            <HexRangeHighAddress>0</HexRangeHighAddress>
-            <HexOffset>0</HexOffset>
-            <Oh166RecLen>16</Oh166RecLen>
-          </OPTHX>
-        </DebugOption>
-        <Utilities>
-          <Flash1>
-            <UseTargetDll>1</UseTargetDll>
-            <UseExternalTool>0</UseExternalTool>
-            <RunIndependent>1</RunIndependent>
-            <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
-            <Capability>1</Capability>
-            <DriverSelection>4100</DriverSelection>
-          </Flash1>
-          <bUseTDR>0</bUseTDR>
-          <Flash2>Segger\JL2CM3.dll</Flash2>
-          <Flash3>"" ()</Flash3>
-          <Flash4></Flash4>
-          <pFcarmOut></pFcarmOut>
-          <pFcarmGrp></pFcarmGrp>
-          <pFcArmRoot></pFcArmRoot>
-          <FcArmLst>0</FcArmLst>
-        </Utilities>
-        <TargetArmAds>
-          <ArmAdsMisc>
-            <GenerateListings>0</GenerateListings>
-            <asHll>1</asHll>
-            <asAsm>1</asAsm>
-            <asMacX>1</asMacX>
-            <asSyms>1</asSyms>
-            <asFals>1</asFals>
-            <asDbgD>1</asDbgD>
-            <asForm>1</asForm>
-            <ldLst>0</ldLst>
-            <ldmm>1</ldmm>
-            <ldXref>1</ldXref>
-            <BigEnd>0</BigEnd>
-            <AdsALst>1</AdsALst>
-            <AdsACrf>1</AdsACrf>
-            <AdsANop>0</AdsANop>
-            <AdsANot>0</AdsANot>
-            <AdsLLst>1</AdsLLst>
-            <AdsLmap>1</AdsLmap>
-            <AdsLcgr>1</AdsLcgr>
-            <AdsLsym>1</AdsLsym>
-            <AdsLszi>1</AdsLszi>
-            <AdsLtoi>1</AdsLtoi>
-            <AdsLsun>1</AdsLsun>
-            <AdsLven>1</AdsLven>
-            <AdsLsxf>1</AdsLsxf>
-            <RvctClst>0</RvctClst>
-            <GenPPlst>0</GenPPlst>
-            <AdsCpuType>"Cortex-M0"</AdsCpuType>
-            <RvctDeviceName></RvctDeviceName>
-            <mOS>0</mOS>
-            <uocRom>0</uocRom>
-            <uocRam>0</uocRam>
-            <hadIROM>1</hadIROM>
-            <hadIRAM>1</hadIRAM>
-            <hadXRAM>0</hadXRAM>
-            <uocXRam>0</uocXRam>
-            <RvdsVP>0</RvdsVP>
-            <RvdsMve>0</RvdsMve>
-            <hadIRAM2>0</hadIRAM2>
-            <hadIROM2>0</hadIROM2>
-            <StupSel>8</StupSel>
-            <useUlib>1</useUlib>
-            <EndSel>1</EndSel>
-            <uLtcg>0</uLtcg>
-            <nSecure>0</nSecure>
-            <RoSelD>3</RoSelD>
-            <RwSelD>3</RwSelD>
-            <CodeSel>0</CodeSel>
-            <OptFeed>0</OptFeed>
-            <NoZi1>0</NoZi1>
-            <NoZi2>0</NoZi2>
-            <NoZi3>0</NoZi3>
-            <NoZi4>0</NoZi4>
-            <NoZi5>0</NoZi5>
-            <Ro1Chk>0</Ro1Chk>
-            <Ro2Chk>0</Ro2Chk>
-            <Ro3Chk>0</Ro3Chk>
-            <Ir1Chk>1</Ir1Chk>
-            <Ir2Chk>0</Ir2Chk>
-            <Ra1Chk>0</Ra1Chk>
-            <Ra2Chk>0</Ra2Chk>
-            <Ra3Chk>0</Ra3Chk>
-            <Im1Chk>1</Im1Chk>
-            <Im2Chk>0</Im2Chk>
-            <OnChipMemories>
-              <Ocm1>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm1>
-              <Ocm2>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm2>
-              <Ocm3>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm3>
-              <Ocm4>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm4>
-              <Ocm5>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm5>
-              <Ocm6>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm6>
-              <IRAM>
-                <Type>0</Type>
-                <StartAddress>0x20000000</StartAddress>
-                <Size>0x20000</Size>
-              </IRAM>
-              <IROM>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x40000</Size>
-              </IROM>
-              <XRAM>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </XRAM>
-              <OCR_RVCT1>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT1>
-              <OCR_RVCT2>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT2>
-              <OCR_RVCT3>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT3>
-              <OCR_RVCT4>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x40000</Size>
-              </OCR_RVCT4>
-              <OCR_RVCT5>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT5>
-              <OCR_RVCT6>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT6>
-              <OCR_RVCT7>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT7>
-              <OCR_RVCT8>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT8>
-              <OCR_RVCT9>
-                <Type>0</Type>
-                <StartAddress>0x20000000</StartAddress>
-                <Size>0x20000</Size>
-              </OCR_RVCT9>
-              <OCR_RVCT10>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT10>
-            </OnChipMemories>
-            <RvctStartVector></RvctStartVector>
-          </ArmAdsMisc>
-          <Cads>
-            <interw>1</interw>
-            <Optim>3</Optim>
-            <oTime>0</oTime>
-            <SplitLS>0</SplitLS>
-            <OneElfS>0</OneElfS>
-            <Strict>0</Strict>
-            <EnumInt>0</EnumInt>
-            <PlainCh>0</PlainCh>
-            <Ropi>0</Ropi>
-            <Rwpi>0</Rwpi>
-            <wLevel>2</wLevel>
-            <uThumb>0</uThumb>
-            <uSurpInc>0</uSurpInc>
-            <uC99>1</uC99>
-            <uGnu>0</uGnu>
-            <useXO>0</useXO>
-            <v6Lang>1</v6Lang>
-            <v6LangP>1</v6LangP>
-            <vShortEn>1</vShortEn>
-            <vShortWch>1</vShortWch>
-            <v6Lto>0</v6Lto>
-            <v6WtE>0</v6WtE>
-            <v6Rtti>0</v6Rtti>
-            <VariousControls>
-              <MiscControls></MiscControls>
-              <Define>__USEKEILCOMPILE__</Define>
-              <Undefine></Undefine>
-              <IncludePath>..\..\..\..\..\Librarier\core;..\..\..\..\..\Librarier\sdk;..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der;..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core;..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\HID;..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_hid_Device_Demo;..\..\HalUSB;..\..\user</IncludePath>
-            </VariousControls>
-          </Cads>
-          <Aads>
-            <interw>1</interw>
-            <Ropi>0</Ropi>
-            <Rwpi>0</Rwpi>
-            <thumb>0</thumb>
-            <SplitLS>0</SplitLS>
-            <SwStkChk>0</SwStkChk>
-            <NoWarn>0</NoWarn>
-            <uSurpInc>0</uSurpInc>
-            <useXO>0</useXO>
-            <uClangAs>0</uClangAs>
-            <VariousControls>
-              <MiscControls></MiscControls>
-              <Define></Define>
-              <Undefine></Undefine>
-              <IncludePath></IncludePath>
-            </VariousControls>
-          </Aads>
-          <LDads>
-            <umfTarg>0</umfTarg>
-            <Ropi>0</Ropi>
-            <Rwpi>0</Rwpi>
-            <noStLib>0</noStLib>
-            <RepFail>1</RepFail>
-            <useFile>0</useFile>
-            <TextAddressRange>0x00000000</TextAddressRange>
-            <DataAddressRange>0xd0000</DataAddressRange>
-            <pXoBase></pXoBase>
-            <ScatterFile>.\Objects\YC3121_keil.sct</ScatterFile>
-            <IncludeLibs></IncludeLibs>
-            <IncludeLibsPath></IncludeLibsPath>
-            <Misc></Misc>
-            <LinkerInputFile></LinkerInputFile>
-            <DisabledWarnings></DisabledWarnings>
-          </LDads>
-        </TargetArmAds>
-      </TargetOption>
-      <Groups>
-        <Group>
-          <GroupName>core</GroupName>
-          <Files>
-            <File>
-              <FileName>misc.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\core\misc.c</FilePath>
-            </File>
-            <File>
-              <FileName>system.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\core\system.c</FilePath>
-            </File>
-            <File>
-              <FileName>bt_code.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\core\bt_code.c</FilePath>
-            </File>
-          </Files>
-        </Group>
-        <Group>
-          <GroupName>main</GroupName>
-          <Files>
-            <File>
-              <FileName>main.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\user\main.c</FilePath>
-            </File>
-          </Files>
-        </Group>
-        <Group>
-          <GroupName>sdk</GroupName>
-          <Files>
-            <File>
-              <FileName>yc_gpio.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_gpio.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_uart.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_uart.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_timer.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_timer.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_ipc.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_ipc.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_lpm.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_lpm.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_otp.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_otp.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_sysctrl.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_sysctrl.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_bt.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_bt.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_systick.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_systick.c</FilePath>
-            </File>
-          </Files>
-        </Group>
-        <Group>
-          <GroupName>startup</GroupName>
-          <Files>
-            <File>
-              <FileName>flash_start.s</FileName>
-              <FileType>2</FileType>
-              <FilePath>..\..\..\..\..\Librarier\startup\flash_start.s</FilePath>
-            </File>
-            <File>
-              <FileName>startup.s</FileName>
-              <FileType>2</FileType>
-              <FilePath>..\..\..\..\..\Librarier\startup\startup.s</FilePath>
-            </File>
-          </Files>
-        </Group>
-        <Group>
-          <GroupName>USB</GroupName>
-          <Files>
-            <File>
-              <FileName>usb_core.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\usb_core.c</FilePath>
-            </File>
-            <File>
-              <FileName>Usb_dcd.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\Usb_dcd.c</FilePath>
-            </File>
-            <File>
-              <FileName>Usb_dcd_init.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\Usb_dcd_init.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_core.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_core.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_ioreq.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_ioreq.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_req.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_req.c</FilePath>
-            </File>
-            <File>
-              <FileName>usb_main.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_hid_Device_Demo\usb_main.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_desc.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_hid_Device_Demo\usbd_desc.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_usr.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_hid_Device_Demo\usbd_usr.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_hid_core.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\HID\usbd_hid_core.c</FilePath>
-            </File>
-          </Files>
-        </Group>
-        <Group>
-          <GroupName>USB_HAL</GroupName>
-          <Files>
-            <File>
-              <FileName>halUSB.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\HalUSB\halUSB.c</FilePath>
-            </File>
-          </Files>
-        </Group>
-      </Groups>
-    </Target>
-  </Targets>
-
-  <RTE>
-    <apis/>
-    <components/>
-    <files/>
-  </RTE>
-
-</Project>
Index: USB_HID/user/main.c
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_HID/user/main.c	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_HID/user/main.c	(nonexistent)
@@ -1,102 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    3121Demo_1.0V\ModuleDemo\UART\UART_TX_Sendbuf\user\main.c
-  * @author  Yichip Application Team
-  * @version V1.0.0
-  * @date    23-Oct-2019
-  * @brief   USB HID test program.
-  ******************************************************************************
-  * @attention
-  *
-  * COPYRIGHT 2019 Yichip Microelectronics
-  *
-  * The purpose of this demo is to provide guidance to customers engaged in 
-	* programming work to guide them smoothly to product development, 
-	* so as to save their time.
-	*
-	* Therefore, Yichip microelectronics shall not be responsible for any direct, 
-	* indirect or consequential damages caused by any content of this demo
-	* and/or contained in this code used by the customer in its products.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "yc3121.h"
-#include "yc_gpio.h"
-#include "yc_uart.h"
-#include "yc_ipc.h"
-#include "usb_main.h"
-#include "halUSB.h"
-#include "board_config.h"
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-void UART_Configuration(void);
-
-#define UART_DEBUG
-
-/**
-  * @brief  Main program
-  * @param  None
-  * @retval None
-  */
- extern USB_OTG_CORE_HANDLE  USB_OTG_dev;
- u8  rev_data[64];
-int main(void)
-{
-	u8 len;
-	UART_Configuration();
-	
-	IpcInit();
-	
-	MyPrintf("USB HID Demo !\n\n");
-
-	halUsbInit(USB_MODE_HID);
-	while (1)
-	{
-
-		if(halUsbDataAck() == HAVE_DATA)
-		{
-			len=halUsbReceive(rev_data,64);
-			if(len == HID_EPOUT_SIZE)
-			{
-				halUsbSend(rev_data,len);
-			}
-		}
-	}
-}
-
-/**
-  * @brief  Serial port 0 initialization function.
-  * @param  None
-  * @retval None
-  */
-void UART_Configuration(void)
-{
-	UART_InitTypeDef UART_InitStruct;
-
-	/* Configure serial ports 0 RX and TX for IO. */
-	GPIO_Config(UART0_TX_PORT, UART0_TX_PIN, UART0_TXD);
-	GPIO_Config(UART0_RX_PORT, UART0_RX_PIN, UART0_RXD);
-
-	/* USARTx configured as follow:
-  - BaudRate = 115200 baud  
-  - Word Length = 8 Bits
-  - Stop Bit = 1 Stop Bit
-  - Parity = No Parity
-  - Hardware flow control disabled (RTS and CTS signals)
-  - Receive and transmit enabled
-  */
-	UART_InitStruct.BaudRate = UARTBAUD;			//Configure serial port baud rate, the baud rate defaults to 128000.
-	UART_InitStruct.DataBits = Databits_8b;
-	UART_InitStruct.StopBits = StopBits_1;
-	UART_InitStruct.Parity = Parity_None;
-	UART_InitStruct.FlowCtrl = FlowCtrl_None;
-	UART_InitStruct.Mode = Mode_duplex;
-	
-	UART_Init(UART0, &UART_InitStruct);
-}
-
-/************************ (C) COPYRIGHT Yichip Microelectronics *****END OF FILE****/
Index: USB_HID/user/usbd_desc.c
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_HID/user/usbd_desc.c	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_HID/user/usbd_desc.c	(nonexistent)
@@ -1,325 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_desc.c
-  * @author  MCD Application Team
-  * @version V1.1.0
-  * @date    19-March-2012
-  * @brief   This file provides the USBD descriptors and string formating method.
-  ******************************************************************************
-  * @attention
-  *
-  * <h2><center>&copy; COPYRIGHT 2012 STMicroelectronics</center></h2>
-  *
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
-  * You may not use this file except in compliance with the License.
-  * You may obtain a copy of the License at:
-  *
-  *        http://www.st.com/software_license_agreement_liberty_v2
-  *
-  * Unless required by applicable law or agreed to in writing, software 
-  * distributed under the License is distributed on an "AS IS" BASIS, 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  * See the License for the specific language governing permissions and
-  * limitations under the License.
-  *
-  ******************************************************************************
-  */ 
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_core.h"
-#include "usbd_desc.h"
-#include "usbd_req.h"
-#include "usbd_conf.h"
-#include "usb_regs.h"
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
-  * @{
-  */
-
-
-/** @defgroup USBD_DESC 
-  * @brief USBD descriptors module
-  * @{
-  */ 
-
-/** @defgroup USBD_DESC_Private_TypesDefinitions
-  * @{
-  */ 
-/**
-  * @}
-  */ 
-
-
-/** @defgroup USBD_DESC_Private_Defines
-  * @{
-  */ 
-
-//#define USBD_VID                     0x0483
-//#define USBD_PID                     0x5710
-#define USBD_VID                     0x0461
-#define USBD_PID                     0x4D81
-
-#define USBD_LANGID_STRING            0x0409
-#define USBD_MANUFACTURER_STRING      "MEGAHUNT"
-
-#define USBD_PRODUCT_HS_STRING        "Joystick in HS mode"
-#define USBD_SERIALNUMBER_HS_STRING   "00000000011B"
-
-#define USBD_PRODUCT_FS_STRING        "Joystick in FS Mode"
-#define USBD_SERIALNUMBER_FS_STRING   "00000000011C"
-
-#define USBD_CONFIGURATION_HS_STRING  "HID Config"
-#define USBD_INTERFACE_HS_STRING      "HID Interface"
-
-#define USBD_CONFIGURATION_FS_STRING  "HID Config"
-#define USBD_INTERFACE_FS_STRING      "HID Interface"
-/**
-  * @}
-  */ 
-
-
-/** @defgroup USBD_DESC_Private_Macros
-  * @{
-  */ 
-/**
-  * @}
-  */ 
-
-
-/** @defgroup USBD_DESC_Private_Variables
-  * @{
-  */ 
-
-USBD_DEVICE USR_desc =
-{
-  USBD_USR_DeviceDescriptor,
-  USBD_USR_LangIDStrDescriptor, 
-  USBD_USR_ManufacturerStrDescriptor,
-  USBD_USR_ProductStrDescriptor,
-  USBD_USR_SerialStrDescriptor,
-  USBD_USR_ConfigStrDescriptor,
-  USBD_USR_InterfaceStrDescriptor,
-  
-};
-
-#ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED
-  #if defined ( __ICCARM__ ) /*!< IAR Compiler */
-    #pragma data_alignment=4   
-  #endif
-#endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */
-/* USB Standard Device Descriptor */
-__ALIGN_BEGIN uint8_t USBD_DeviceDesc[USB_SIZ_DEVICE_DESC] __ALIGN_END =
-  {
-    0x12,                       /*bLength */
-    USB_DEVICE_DESCRIPTOR_TYPE, /*bDescriptorType*/
-    0x00,                       /*bcdUSB */
-    0x02,
-    0x00,                       /*bDeviceClass*/
-    0x00,                       /*bDeviceSubClass*/
-    0x00,                       /*bDeviceProtocol*/
-    USB_OTG_MAX_EP0_SIZE,      /*bMaxPacketSize*/
-    LOBYTE(USBD_VID),           /*idVendor*/
-    HIBYTE(USBD_VID),           /*idVendor*/
-    LOBYTE(USBD_PID),           /*idVendor*/
-    HIBYTE(USBD_PID),           /*idVendor*/
-    0x00,                       /*bcdDevice rel. 2.00*/
-    0x02,
-//      0,												// uint8_t		iManufacturer;
-//	2, 												// uint8_t		iProduct;
-//	0,												// uint8_t		iSerialNumber;
-//	1												// uint8_t		bNumConfigurations;
-    USBD_IDX_MFC_STR,           /*Index of manufacturer  string*/
-    USBD_IDX_PRODUCT_STR,       /*Index of product string*/
-    USBD_IDX_SERIAL_STR,        /*Index of serial number string*/
-    USBD_CFG_MAX_NUM            /*bNumConfigurations*/
-  } ; /* USB_DeviceDescriptor */
-
-#ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED
-  #if defined ( __ICCARM__ ) /*!< IAR Compiler */
-    #pragma data_alignment=4   
-  #endif
-#endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */
-/* USB Standard Device Descriptor */
-__ALIGN_BEGIN uint8_t USBD_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC] __ALIGN_END =
-{
-  USB_LEN_DEV_QUALIFIER_DESC,
-  USB_DESC_TYPE_DEVICE_QUALIFIER,
-  0x00,
-  0x02,
-  0x00,
-  0x00,
-  0x00,
-  0x40,
-  0x01,
-  0x00,
-};
-
-#ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED
-  #if defined ( __ICCARM__ ) /*!< IAR Compiler */
-    #pragma data_alignment=4   
-  #endif
-#endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */
-/* USB Standard Device Descriptor */
-__ALIGN_BEGIN uint8_t USBD_LangIDDesc[USB_SIZ_STRING_LANGID] __ALIGN_END =
-{
-     USB_SIZ_STRING_LANGID,         
-     USB_DESC_TYPE_STRING,       
-     LOBYTE(USBD_LANGID_STRING),
-     HIBYTE(USBD_LANGID_STRING), 
-};
-/**
-  * @}
-  */ 
-
-
-/** @defgroup USBD_DESC_Private_FunctionPrototypes
-  * @{
-  */ 
-/**
-  * @}
-  */ 
-
-
-/** @defgroup USBD_DESC_Private_Functions
-  * @{
-  */ 
-
-/**
-* @brief  USBD_USR_DeviceDescriptor 
-*         return the device descriptor
-* @param  speed : current device speed
-* @param  length : pointer to data length variable
-* @retval pointer to descriptor buffer
-*/
-uint8_t *  USBD_USR_DeviceDescriptor( uint8_t speed , uint16_t *length)
-{
-  *length = sizeof(USBD_DeviceDesc);
-  return USBD_DeviceDesc;
-}
-
-/**
-* @brief  USBD_USR_LangIDStrDescriptor 
-*         return the LangID string descriptor
-* @param  speed : current device speed
-* @param  length : pointer to data length variable
-* @retval pointer to descriptor buffer
-*/
-uint8_t *  USBD_USR_LangIDStrDescriptor( uint8_t speed , uint16_t *length)
-{
-  *length =  sizeof(USBD_LangIDDesc);  
-  return USBD_LangIDDesc;
-}
-
-
-/**
-* @brief  USBD_USR_ProductStrDescriptor 
-*         return the product string descriptor
-* @param  speed : current device speed
-* @param  length : pointer to data length variable
-* @retval pointer to descriptor buffer
-*/
-uint8_t *  USBD_USR_ProductStrDescriptor( uint8_t speed , uint16_t *length)
-{
- 
-  
-  if(speed == 0)
-  {   
-    USBD_GetString (USBD_PRODUCT_HS_STRING, USBD_StrDesc, length);
-  }
-  else
-  {
-    USBD_GetString (USBD_PRODUCT_FS_STRING, USBD_StrDesc, length);    
-  }
-  return USBD_StrDesc;
-}
-
-/**
-* @brief  USBD_USR_ManufacturerStrDescriptor 
-*         return the manufacturer string descriptor
-* @param  speed : current device speed
-* @param  length : pointer to data length variable
-* @retval pointer to descriptor buffer
-*/
-uint8_t *  USBD_USR_ManufacturerStrDescriptor( uint8_t speed , uint16_t *length)
-{
-  USBD_GetString (USBD_MANUFACTURER_STRING, USBD_StrDesc, length);
-  return USBD_StrDesc;
-}
-
-/**
-* @brief  USBD_USR_SerialStrDescriptor 
-*         return the serial number string descriptor
-* @param  speed : current device speed
-* @param  length : pointer to data length variable
-* @retval pointer to descriptor buffer
-*/
-uint8_t *  USBD_USR_SerialStrDescriptor( uint8_t speed , uint16_t *length)
-{
-  if(speed  == USB_OTG_SPEED_HIGH)
-  {    
-    USBD_GetString (USBD_SERIALNUMBER_HS_STRING, USBD_StrDesc, length);
-  }
-  else
-  {
-    USBD_GetString (USBD_SERIALNUMBER_FS_STRING, USBD_StrDesc, length);    
-  }
-  return USBD_StrDesc;
-}
-
-/**
-* @brief  USBD_USR_ConfigStrDescriptor 
-*         return the configuration string descriptor
-* @param  speed : current device speed
-* @param  length : pointer to data length variable
-* @retval pointer to descriptor buffer
-*/
-uint8_t *  USBD_USR_ConfigStrDescriptor( uint8_t speed , uint16_t *length)
-{
-  if(speed  == USB_OTG_SPEED_HIGH)
-  {  
-    USBD_GetString (USBD_CONFIGURATION_HS_STRING, USBD_StrDesc, length);
-  }
-  else
-  {
-    USBD_GetString (USBD_CONFIGURATION_FS_STRING, USBD_StrDesc, length); 
-  }
-  return USBD_StrDesc;  
-}
-
-
-/**
-* @brief  USBD_USR_InterfaceStrDescriptor 
-*         return the interface string descriptor
-* @param  speed : current device speed
-* @param  length : pointer to data length variable
-* @retval pointer to descriptor buffer
-*/
-uint8_t *  USBD_USR_InterfaceStrDescriptor( uint8_t speed , uint16_t *length)
-{
-  if(speed == 0)
-  {
-    USBD_GetString (USBD_INTERFACE_HS_STRING, USBD_StrDesc, length);
-  }
-  else
-  {
-    USBD_GetString (USBD_INTERFACE_FS_STRING, USBD_StrDesc, length);
-  }
-  return USBD_StrDesc;  
-}
-
-/**
-  * @}
-  */ 
-
-
-/**
-  * @}
-  */ 
-
-
-/**
-  * @}
-  */ 
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
Index: USB_HID/user/usbd_usr.c
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_HID/user/usbd_usr.c	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_HID/user/usbd_usr.c	(nonexistent)
@@ -1,278 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    usbd_usr.c
-  * @author  Megahuntmicro
-  * @version V1.0.0
-  * @date    21-October-2014
-  * @brief   This file includes the user application layer
-  ******************************************************************************
-  * @attention
-  *
-  * 
-  ******************************************************************************
-  */ 
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_usr.h"
-#include "usbd_ioreq.h"
-#include "usb_conf.h"
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
-* @{
-*/
-
-/** @defgroup USBD_USR 
-* @brief    This file includes the user application layer
-* @{
-*/ 
-
-/** @defgroup USBD_USR_Private_TypesDefinitions
-* @{
-*/ 
-/**
-* @}
-*/ 
-
-
-/** @defgroup USBD_USR_Private_Defines
-* @{
-*/ 
-/**
-* @}
-*/ 
-
-
-/** @defgroup USBD_USR_Private_Macros
-* @{
-*/ 
-/**
-* @}
-*/ 
-
-
-/** @defgroup USBD_USR_Private_Variables
-* @{
-*/ 
-
-USBD_Usr_cb_TypeDef USRD_cb =
-{
-  USBD_USR_Init,
-  USBD_USR_DeviceReset,
-  USBD_USR_DeviceConfigured,
-  USBD_USR_DeviceSuspended,
-  USBD_USR_DeviceResumed,
-  
-  USBD_USR_DeviceConnected,
-  USBD_USR_DeviceDisconnected,  
-  
-  
-};
-
-
-
-/**
-* @}
-*/
-
-/** @defgroup USBD_USR_Private_Constants
-* @{
-*/ 
-
-/**
-* @}
-*/
-
-
-
-/** @defgroup USBD_USR_Private_FunctionPrototypes
-* @{
-*/ 
-/**
-* @}
-*/ 
-
-
-/** @defgroup USBD_USR_Private_Functions
-* @{
-*/ 
-
-#define USER_INFORMATION1      "[Key]:RemoteWakeup"
-#define USER_INFORMATION2      "[Joystick]:Mouse emulation"
-
-
-/**
-* @brief  USBD_USR_Init 
-*         Displays the message on LCD for host lib initialization
-* @param  None
-* @retval None
-*/
-void USBD_USR_Init(void)
-{  
-//  /* Initialize LEDs */
-//  STM_EVAL_LEDInit(LED1);
-//  STM_EVAL_LEDInit(LED2);
-//  STM_EVAL_LEDInit(LED3);
-//  STM_EVAL_LEDInit(LED4);
-//  
-//  /* Configure the IOE on which the JoyStick is connected */
-//	IOE_Config();
-//  
-//  /* Setup SysTick Timer for 20 msec interrupts 
-//  This interrupt is used to probe the joystick */
-//  if (SysTick_Config(SystemCoreClock / 48))
-//  { 
-//    /* Capture error */ 
-//    while (1);
-//  } 
-//  /* Initialize the LCD */
-//#if defined (USE_STM322xG_EVAL)
-//  STM322xG_LCD_Init();
-//#elif defined(USE_STM324xG_EVAL)
-//  STM324xG_LCD_Init();
-//#elif defined (USE_STM3210C_EVAL)
-//  STM3210C_LCD_Init();
-//#else
-// #error "Missing define: Evaluation board (ie. USE_STM322xG_EVAL)"
-//#endif
-
-//  LCD_LOG_Init();
-
-//#ifdef USE_USB_OTG_HS 
-//  LCD_LOG_SetHeader(" USB OTG HS HID Device");
-//#else
-//  LCD_LOG_SetHeader(" USB OTG FS HID Device");
-//#endif
-//  LCD_UsrLog("> USB device library started.\n"); 
-//  LCD_LOG_SetFooter ("     USB Device Library v1.1.0" ); 
-//  
-//  /* Information panel */
-//  LCD_SetTextColor(Green);
-//  LCD_DisplayStringLine( LCD_PIXEL_HEIGHT - 42, USER_INFORMATION1);
-//  LCD_DisplayStringLine( LCD_PIXEL_HEIGHT - 30, USER_INFORMATION2);
-//  LCD_SetTextColor(LCD_LOG_DEFAULT_COLOR);
-  
-}
-
-/**
-* @brief  USBD_USR_DeviceReset 
-*         Displays the message on LCD on device Reset Event
-* @param  speed : device speed
-* @retval None
-*/
-void USBD_USR_DeviceReset(uint8_t speed )
-{
-// switch (speed)
-// {
-//   case USB_OTG_SPEED_HIGH: 
-//     LCD_LOG_SetFooter ("     USB Device Library v1.1.0 [HS]" );
-//     break;
-
-//  case USB_OTG_SPEED_FULL: 
-//     LCD_LOG_SetFooter ("     USB Device Library v1.1.0 [FS]" );
-//     break;
-// default:
-//     LCD_LOG_SetFooter ("     USB Device Library v1.1.0 [??]" );
-//     
-// }
-}
-
-
-/**
-* @brief  USBD_USR_DeviceConfigured
-*         Displays the message on LCD on device configuration Event
-* @param  None
-* @retval Staus
-*/
-void USBD_USR_DeviceConfigured (void)
-{
-//    printf("> HID Interface started.\n");
-}
-
-
-/**
-* @brief  USBD_USR_DeviceConnected
-*         Displays the message on LCD on device connection Event
-* @param  None
-* @retval Staus
-*/
-void USBD_USR_DeviceConnected (void)
-{
-//    printf("> USB Device Connected.\n");
-}
-
-
-/**
-* @brief  USBD_USR_DeviceDisonnected
-*         Displays the message on LCD on device disconnection Event
-* @param  None
-* @retval Staus
-*/
-void USBD_USR_DeviceDisconnected (void)
-{
-//    printf("> USB Device Disconnected.\n");
-}
-
-/**
-* @brief  USBD_USR_DeviceSuspended 
-*         Displays the message on LCD on device suspend Event
-* @param  None
-* @retval None
-*/
-void USBD_USR_DeviceSuspended(void)
-{
-//    printf("> USB Device in Suspend Mode.\n");
-    /* Users can do their application actions here for the USB-Reset */
-}
-
-
-/**
-* @brief  USBD_USR_DeviceResumed 
-*         Displays the message on LCD on device resume Event
-* @param  None
-* @retval None
-*/
-void USBD_USR_DeviceResumed(void)
-{
-//    printf("> USB Device in Idle Mode.\n");
-    /* Users can do their application actions here for the USB-Reset */
-}
-
-/**
-* @}
-*/ 
-
-/**
-* @}
-*/ 
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Index: USB_PRINTER/prj/GCC/c.bat
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_PRINTER/prj/GCC/c.bat	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_PRINTER/prj/GCC/c.bat	(nonexistent)
@@ -1,3 +0,0 @@
-cls
-make clean
-make
\ No newline at end of file
Index: USB_PRINTER/prj/GCC/makefile
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_PRINTER/prj/GCC/makefile	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_PRINTER/prj/GCC/makefile	(nonexistent)
@@ -1,251 +0,0 @@
-
-ifeq ($(OS),Windows_NT)
-DIR = C:/gcc-arm-none-eabi-7-2018-q2-update-win32
-else
-DIR = /usr/gcc-arm-none-eabi-7-2018-q2-update
-endif
-
-ARCH = $(DIR)/bin/arm-none-eabi
-GCC = $(ARCH)-gcc
-LD = $(ARCH)-ld
-AS = $(ARCH)-as
-OBJCOPY = $(ARCH)-objcopy
-OBJDUMP = "$(ARCH)-objdump"
-LIB_PATH = ../../../../../Librarier
-USER_PATH = ../../user
-
-
-all : output/out.hex
-
-
-CORE_OBJS =  $(LIB_PATH)/startup/flash_start_gcc \
-             $(LIB_PATH)/core/system \
-             $(LIB_PATH)/core/misc \
-             $(LIB_PATH)/core/bt_code \
-             $(LIB_PATH)/sdk/yc_gpio \
-             $(LIB_PATH)/sdk/yc_timer \
-             $(LIB_PATH)/sdk/yc_ipc \
-             $(LIB_PATH)/sdk/yc_uart \
-             $(LIB_PATH)/sdk/yc_lpm \
-             $(LIB_PATH)/sdk/yc_otp \
-             $(LIB_PATH)/sdk/yc_bt \
-             $(LIB_PATH)/sdk/yc_systick \
-             $(LIB_PATH)/sdk/yc_sysctrl \
-             $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der/usb_core \
-             $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der/Usb_dcd \
-             $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der/Usb_dcd_init \
-             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core/usbd_core \
-             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core/usbd_ioreq \
-             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core/usbd_req \
-             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/class/PRINTER/usbd_printer_core \
-             $(LIB_PATH)/sdk/yc_usb/scpu_usb_printer_Device_Demo/usb_main \
-             $(LIB_PATH)/sdk/yc_usb/scpu_usb_printer_Device_Demo/usbd_desc \
-             $(LIB_PATH)/sdk/yc_usb/scpu_usb_printer_Device_Demo/usbd_usr \
-             $(LIB_PATH)/sdk/yc_usb/scpu_usb_printer_Device_Demo/usb_bsp \
-             $(LIB_PATH)/sdk/yc_usb/scpu_usb_printer_Device_Demo/usbd_printer_vcp
-
-
-USER_OBJS = $(USER_PATH)/main
-
-OBJS = $(CORE_OBJS) $(USER_OBJS)
-
-INC_DIR = -I $(LIB_PATH)/core \
-          -I $(LIB_PATH)/sdk \
-          -I $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der \
-          -I $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core \
-          -I $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/class/PRINTER \
-          -I $(LIB_PATH)/sdk/yc_usb/scpu_usb_printer_Device_Demo
-
-
-CFLAG =  -mthumb -mcpu=cortex-m0 -c -g -Os $(INC_DIR) $(DEF) -fno-toplevel-reorder -ffunction-sections -fdata-sections
-LDFLAG = -T output/ld.script -Map=output/memmap -lc -lm -lgcc -L "$(DIR)/lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m"  -L "$(DIR)/arm-none-eabi/lib/thumb/v6-m"
-
-define ldscript =
-/* Linker script to configure memory regions.
- * Need modifying for a specific board.
- *   FLASH.ORIGIN: starting address of flash
- *   FLASH.LENGTH: length of flash
- *   RAM.ORIGIN: starting address of RAM bank 0
- *   RAM.LENGTH: length of RAM bank 0
- */
-MEMORY
-{
-  FLASH (rx) : ORIGIN = 0x1000000, LENGTH = 0x80000 /* 512K */
-  RAM (rwx) : ORIGIN = 0x20000, LENGTH = 0x10000 /* 64K */
-}
-
-/* Linker script to place sections and symbol values. Should be used together
- * with other linker script that defines memory regions FLASH and RAM.
- * It references following symbols, which must be defined in code:
- *   Reset_Handler : Entry of reset handler
- *
- * It defines following symbols, which code can use without definition:
- *   __exidx_start
- *   __exidx_end
- *   __copy_table_start__
- *   __copy_table_end__
- *   __zero_table_start__
- *   __zero_table_end__
- *   __etext
- *   __data_start__
- *   __preinit_array_start
- *   __preinit_array_end
- *   __init_array_start
- *   __init_array_end
- *   __fini_array_start
- *   __fini_array_end
- *   __data_end__
- *   __bss_start__
- *   __bss_end__
- *   __end__
- *   end
- *   __HeapLimit
- *   __StackLimit
- *   __StackTop
- *   __stack
- */
-ENTRY(Reset_Handler)
-
-SECTIONS
-{
-	.text :
-	{
-		*flash_start*.o
-		*(.text*)
-
-		KEEP(*(.init))
-		KEEP(*(.fini))
-
-		/* .ctors */
-		*crtbegin.o(.ctors)
-		*crtbegin?.o(.ctors)
-		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
-		*(SORT(.ctors.*))
-		*(.ctors)
-
-		/* .dtors */
- 		*crtbegin.o(.dtors)
- 		*crtbegin?.o(.dtors)
- 		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
- 		*(SORT(.dtors.*))
- 		*(.dtors)
-
-		*(.rodata*)
-
-		KEEP(*(.eh_frame*))
-	} > FLASH
-
-
-
-	.ARM.extab :
-	{
-		*(.ARM.extab* .gnu.linkonce.armextab.*)
-	} > FLASH
-
-
-	.ARM.exidx :
-	{
-		*(.ARM.exidx* .gnu.linkonce.armexidx.*)
-	} > FLASH
-
-	 . = ALIGN(4);
-	__exidx_start = .;
-
-	__etext = .;
-
-	.data : AT (__etext)
-	{
-		__data_start__ = .;
-		*(vtable)
-		*(.data*)
-
-		. = ALIGN(4);
-		/* preinit data */
-		PROVIDE_HIDDEN (__preinit_array_start = .);
-		KEEP(*(.preinit_array))
-		PROVIDE_HIDDEN (__preinit_array_end = .);
-
-		. = ALIGN(4);
-		/* init data */
-		PROVIDE_HIDDEN (__init_array_start = .);
-		KEEP(*(SORT(.init_array.*)))
-		KEEP(*(.init_array))
-		PROVIDE_HIDDEN (__init_array_end = .);
-
-
-		. = ALIGN(4);
-		/* finit data */
-		PROVIDE_HIDDEN (__fini_array_start = .);
-		KEEP(*(SORT(.fini_array.*)))
-		KEEP(*(.fini_array))
-		PROVIDE_HIDDEN (__fini_array_end = .);
-
-		KEEP(*(.jcr*))
-		. = ALIGN(4);
-		/* All data end */
-		__data_end__ = .;
-
-	} > RAM
-
-	.bss :
-	{
-		. = ALIGN(4);
-		__bss_start__ = .;
-		*(.bss*)
-		*(COMMON)
-		. = ALIGN(4);
-		__bss_end__ = .;
-	} > RAM
-
-	.heap (COPY):
-	{
-		__end__ = .;
-		PROVIDE(end = .);
-		*(.heap*)
-		__HeapLimit = .;
-	} > RAM
-
-	/* .stack_dummy section doesn't contains any symbols. It is only
-	 * used for linker to calculate size of stack sections, and assign
-	 * values to stack symbols later */
-	.stack_dummy (COPY):
-	{
-		*(.stack*)
-	} > RAM
-
-	/* Set stack top to end of RAM, and stack limit move down by
-	 * size of stack_dummy section */
-	__StackTop = ORIGIN(RAM) + LENGTH(RAM);
-	__StackLimit = __StackTop - SIZEOF(.stack_dummy);
-	PROVIDE(__stack = __StackTop);
-
-	/* Check if data + heap + stack exceeds RAM limit */
-	ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
-}
-endef
-
-
-output/out.hex : output/out
-	$(OBJCOPY) $^ -O ihex $@
-
-
-output/out : $(addprefix output/, $(addsuffix .o, $(OBJS)))
-	$(file >output/ld.script, $(ldscript))
-	$(LD) $(addprefix output/obj/,$(addsuffix .o, $(notdir $(OBJS)))) -o $@ $(LDFLAG)
-	$(OBJDUMP) -S $@ > output/disasm
-
-output/%.o : %.c
-	$(GCC) $< $(CFLAG) -o output/obj/$(notdir $@)
-
-output/%.o : %.s
-	$(AS) $^ -mthumb -mcpu=cortex-m0 -o output/obj/$(notdir $@)
-
-
-clean :
-ifeq ($(OS),Windows_NT)
-	del /Q output\*.*
-	del /Q output\obj\*.*
-else
-	rm -rf output/*
-	rm -rf output/obj/*
-endif
Index: USB_PRINTER/prj/MDK/Objects/YC3121_keil.sct
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_PRINTER/prj/MDK/Objects/YC3121_keil.sct	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_PRINTER/prj/MDK/Objects/YC3121_keil.sct	(nonexistent)
@@ -1,55 +0,0 @@
-; *************************************************************
-; *** Scatter-Loading Description File generated by uVision ***
-; *************************************************************
-
-LR_IROM1 0x00000000 0x0001fff  {    ; load region size_region
-  ER_IROM1 0x00000000 0x00001fff  {  ; load address = execution address
-   startup.o (RESET, +First)
-   startup.o (|.text|,+RO)
-;   *(InRoot$$Sections)
-  }
-  ;ER_IROM2 0x4000   {
-  ;rom_main.o (+RO)
-  ;}
-  
-  ;ER_IROM3 0x100000 {
-	  ;*(InRoot$$Sections)
-  ;}
-	
-  ;ER_IROM4 0x100400   {
-  ;flash_start.o (+RO)
-  ;.ANY (+RO) 
-  ;}
-  
-  ;RW_IRAM1 0x000d0000 0x0010000  {  ; RW data
-   ;.ANY (+RW +ZI)
-  ;}
-  
-;  ARM_LIB_STACK 0xE0000 EMPTY -0x10000{}
-}
-
-;LR_IROM2 0x4000 0x4000{
-;	ER_IROM2 0x4000 {
-;	  rom_main.o (+RO)
-;	}
-;}
-
-LR_IROM3 0x1000200 0x200{
-	ER_IROM3 0x1000200 {
-	  flash_start.o (|.flash_start|,+RO)
-	}
-}
-
-LR_IROM4 0x1000400 0x1000000{
-	ER_IROM4 0x1000400 {
-;	  flash_start.o (|.flash_start|,+RO)
-	  *(InRoot$$Sections)
-	  .ANY (+RO)
-	}
-	
-	
-	 RW_IRAM2 0x00020000 0x010000  {  ; RW data
-	.ANY (+RW +ZI)
-	}
-}
-
Index: USB_PRINTER/prj/MDK/YC3121_Keil.uvoptx
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_PRINTER/prj/MDK/YC3121_Keil.uvoptx	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_PRINTER/prj/MDK/YC3121_Keil.uvoptx	(nonexistent)
@@ -1,607 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
-<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
-
-  <SchemaVersion>1.0</SchemaVersion>
-
-  <Header>### uVision Project, (C) Keil Software</Header>
-
-  <Extensions>
-    <cExt>*.c</cExt>
-    <aExt>*.s*; *.src; *.a*</aExt>
-    <oExt>*.obj; *.o</oExt>
-    <lExt>*.lib</lExt>
-    <tExt>*.txt; *.h; *.inc</tExt>
-    <pExt>*.plm</pExt>
-    <CppX>*.cpp</CppX>
-    <nMigrate>0</nMigrate>
-  </Extensions>
-
-  <DaveTm>
-    <dwLowDateTime>0</dwLowDateTime>
-    <dwHighDateTime>0</dwHighDateTime>
-  </DaveTm>
-
-  <Target>
-    <TargetName>YC3121</TargetName>
-    <ToolsetNumber>0x4</ToolsetNumber>
-    <ToolsetName>ARM-ADS</ToolsetName>
-    <TargetOption>
-      <CLKADS>12000000</CLKADS>
-      <OPTTT>
-        <gFlags>1</gFlags>
-        <BeepAtEnd>1</BeepAtEnd>
-        <RunSim>0</RunSim>
-        <RunTarget>1</RunTarget>
-        <RunAbUc>0</RunAbUc>
-      </OPTTT>
-      <OPTHX>
-        <HexSelection>1</HexSelection>
-        <FlashByte>65535</FlashByte>
-        <HexRangeLowAddress>0</HexRangeLowAddress>
-        <HexRangeHighAddress>0</HexRangeHighAddress>
-        <HexOffset>0</HexOffset>
-      </OPTHX>
-      <OPTLEX>
-        <PageWidth>79</PageWidth>
-        <PageLength>66</PageLength>
-        <TabStop>8</TabStop>
-        <ListingPath>.\Listings\</ListingPath>
-      </OPTLEX>
-      <ListingPage>
-        <CreateCListing>1</CreateCListing>
-        <CreateAListing>1</CreateAListing>
-        <CreateLListing>1</CreateLListing>
-        <CreateIListing>0</CreateIListing>
-        <AsmCond>1</AsmCond>
-        <AsmSymb>1</AsmSymb>
-        <AsmXref>0</AsmXref>
-        <CCond>1</CCond>
-        <CCode>0</CCode>
-        <CListInc>0</CListInc>
-        <CSymb>0</CSymb>
-        <LinkerCodeListing>0</LinkerCodeListing>
-      </ListingPage>
-      <OPTXL>
-        <LMap>1</LMap>
-        <LComments>1</LComments>
-        <LGenerateSymbols>1</LGenerateSymbols>
-        <LLibSym>1</LLibSym>
-        <LLines>1</LLines>
-        <LLocSym>1</LLocSym>
-        <LPubSym>1</LPubSym>
-        <LXref>0</LXref>
-        <LExpSel>0</LExpSel>
-      </OPTXL>
-      <OPTFL>
-        <tvExp>1</tvExp>
-        <tvExpOptDlg>0</tvExpOptDlg>
-        <IsCurrentTarget>1</IsCurrentTarget>
-      </OPTFL>
-      <CpuCode>7</CpuCode>
-      <DebugOpt>
-        <uSim>0</uSim>
-        <uTrg>1</uTrg>
-        <sLdApp>1</sLdApp>
-        <sGomain>1</sGomain>
-        <sRbreak>1</sRbreak>
-        <sRwatch>1</sRwatch>
-        <sRmem>1</sRmem>
-        <sRfunc>1</sRfunc>
-        <sRbox>1</sRbox>
-        <tLdApp>1</tLdApp>
-        <tGomain>1</tGomain>
-        <tRbreak>1</tRbreak>
-        <tRwatch>1</tRwatch>
-        <tRmem>1</tRmem>
-        <tRfunc>0</tRfunc>
-        <tRbox>1</tRbox>
-        <tRtrace>1</tRtrace>
-        <sRSysVw>1</sRSysVw>
-        <tRSysVw>1</tRSysVw>
-        <sRunDeb>0</sRunDeb>
-        <sLrtime>0</sLrtime>
-        <bEvRecOn>1</bEvRecOn>
-        <bSchkAxf>0</bSchkAxf>
-        <bTchkAxf>0</bTchkAxf>
-        <nTsel>4</nTsel>
-        <sDll></sDll>
-        <sDllPa></sDllPa>
-        <sDlgDll></sDlgDll>
-        <sDlgPa></sDlgPa>
-        <sIfile></sIfile>
-        <tDll></tDll>
-        <tDllPa></tDllPa>
-        <tDlgDll></tDlgDll>
-        <tDlgPa></tDlgPa>
-        <tIfile>..\..\..\..\..\ConfigFiles\MDK\flash.ini</tIfile>
-        <pMon>Segger\JL2CM3.dll</pMon>
-      </DebugOpt>
-      <TargetDriverDllRegistry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>DLGUARM</Key>
-          <Name>d</Name>
-        </SetRegEntry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>PWSTATINFO</Key>
-          <Name>200,50,700</Name>
-        </SetRegEntry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>ARMRTXEVENTFLAGS</Key>
-          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
-        </SetRegEntry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>DLGTARM</Key>
-          <Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)</Name>
-        </SetRegEntry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>ARMDBGFLAGS</Key>
-          <Name></Name>
-        </SetRegEntry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>JL2CM3</Key>
-          <Name>-U4294967295 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(0BB11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO31 -FD20000 -FCA000 -FN1 -FF0YC3121 -FS01000000 -FL080000</Name>
-        </SetRegEntry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>UL2CM3</Key>
-          <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000)</Name>
-        </SetRegEntry>
-      </TargetDriverDllRegistry>
-      <Breakpoint>
-        <Bp>
-          <Number>0</Number>
-          <Type>0</Type>
-          <LineNumber>689</LineNumber>
-          <EnabledFlag>1</EnabledFlag>
-          <Address>16786508</Address>
-          <ByteObject>0</ByteObject>
-          <HtxType>0</HtxType>
-          <ManyObjects>0</ManyObjects>
-          <SizeOfObject>0</SizeOfObject>
-          <BreakByAccess>0</BreakByAccess>
-          <BreakIfRCount>1</BreakIfRCount>
-          <Filename>D:\2_Working\3_SecurityIC\YC3121\2_Software\YC3121_Test\Yc3121\YC3121_demo\ModuleDemo\USB\USB_CCID\user\usb_test\usb_test.c</Filename>
-          <ExecCommand></ExecCommand>
-          <Expression>\\YC3121_Keil\../../user/usb_test/usb_test.c\689</Expression>
-        </Bp>
-      </Breakpoint>
-      <Tracepoint>
-        <THDelay>0</THDelay>
-      </Tracepoint>
-      <DebugFlag>
-        <trace>0</trace>
-        <periodic>0</periodic>
-        <aLwin>1</aLwin>
-        <aCover>0</aCover>
-        <aSer1>0</aSer1>
-        <aSer2>0</aSer2>
-        <aPa>0</aPa>
-        <viewmode>1</viewmode>
-        <vrSel>0</vrSel>
-        <aSym>0</aSym>
-        <aTbox>0</aTbox>
-        <AscS1>0</AscS1>
-        <AscS2>0</AscS2>
-        <AscS3>0</AscS3>
-        <aSer3>0</aSer3>
-        <eProf>0</eProf>
-        <aLa>0</aLa>
-        <aPa1>0</aPa1>
-        <AscS4>0</AscS4>
-        <aSer4>0</aSer4>
-        <StkLoc>0</StkLoc>
-        <TrcWin>0</TrcWin>
-        <newCpu>0</newCpu>
-        <uProt>0</uProt>
-      </DebugFlag>
-      <LintExecutable></LintExecutable>
-      <LintConfigFile></LintConfigFile>
-      <bLintAuto>0</bLintAuto>
-      <bAutoGenD>0</bAutoGenD>
-      <LntExFlags>0</LntExFlags>
-      <pMisraName></pMisraName>
-      <pszMrule></pszMrule>
-      <pSingCmds></pSingCmds>
-      <pMultCmds></pMultCmds>
-      <pMisraNamep></pMisraNamep>
-      <pszMrulep></pszMrulep>
-      <pSingCmdsp></pSingCmdsp>
-      <pMultCmdsp></pMultCmdsp>
-    </TargetOption>
-  </Target>
-
-  <Group>
-    <GroupName>core</GroupName>
-    <tvExp>1</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>1</GroupNumber>
-      <FileNumber>1</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\core\misc.c</PathWithFileName>
-      <FilenameWithoutPath>misc.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>1</GroupNumber>
-      <FileNumber>2</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\core\system.c</PathWithFileName>
-      <FilenameWithoutPath>system.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>1</GroupNumber>
-      <FileNumber>3</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\core\bt_code.c</PathWithFileName>
-      <FilenameWithoutPath>bt_code.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-  </Group>
-
-  <Group>
-    <GroupName>main</GroupName>
-    <tvExp>1</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>2</GroupNumber>
-      <FileNumber>4</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\user\main.c</PathWithFileName>
-      <FilenameWithoutPath>main.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-  </Group>
-
-  <Group>
-    <GroupName>sdk</GroupName>
-    <tvExp>1</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>5</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_gpio.c</PathWithFileName>
-      <FilenameWithoutPath>yc_gpio.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>6</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_uart.c</PathWithFileName>
-      <FilenameWithoutPath>yc_uart.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>7</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_timer.c</PathWithFileName>
-      <FilenameWithoutPath>yc_timer.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>8</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_ipc.c</PathWithFileName>
-      <FilenameWithoutPath>yc_ipc.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>9</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_lpm.c</PathWithFileName>
-      <FilenameWithoutPath>yc_lpm.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>10</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_otp.c</PathWithFileName>
-      <FilenameWithoutPath>yc_otp.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>11</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_sysctrl.c</PathWithFileName>
-      <FilenameWithoutPath>yc_sysctrl.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>12</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_bt.c</PathWithFileName>
-      <FilenameWithoutPath>yc_bt.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>3</GroupNumber>
-      <FileNumber>13</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_systick.c</PathWithFileName>
-      <FilenameWithoutPath>yc_systick.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-  </Group>
-
-  <Group>
-    <GroupName>startup</GroupName>
-    <tvExp>1</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>4</GroupNumber>
-      <FileNumber>14</FileNumber>
-      <FileType>2</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\startup\flash_start.s</PathWithFileName>
-      <FilenameWithoutPath>flash_start.s</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>4</GroupNumber>
-      <FileNumber>15</FileNumber>
-      <FileType>2</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\startup\startup.s</PathWithFileName>
-      <FilenameWithoutPath>startup.s</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-  </Group>
-
-  <Group>
-    <GroupName>yc_usb\scpu_usb_printer_Device_Demo</GroupName>
-    <tvExp>1</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>16</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_printer_Device_Demo\usb_bsp.c</PathWithFileName>
-      <FilenameWithoutPath>usb_bsp.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>17</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_printer_Device_Demo\usb_main.c</PathWithFileName>
-      <FilenameWithoutPath>usb_main.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>18</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_printer_Device_Demo\usbd_desc.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_desc.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>19</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_printer_Device_Demo\usbd_usr.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_usr.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>20</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_printer_Device_Demo\usbd_printer_vcp.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_printer_vcp.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-  </Group>
-
-  <Group>
-    <GroupName>yc_usb\libraries\harward_Der</GroupName>
-    <tvExp>1</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>6</GroupNumber>
-      <FileNumber>21</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\usb_core.c</PathWithFileName>
-      <FilenameWithoutPath>usb_core.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>6</GroupNumber>
-      <FileNumber>22</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\Usb_dcd.c</PathWithFileName>
-      <FilenameWithoutPath>Usb_dcd.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>6</GroupNumber>
-      <FileNumber>23</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\Usb_dcd_init.c</PathWithFileName>
-      <FilenameWithoutPath>Usb_dcd_init.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-  </Group>
-
-  <Group>
-    <GroupName>yc_usb\libraries\SCPU_USB_Device_Library\class\PRINTER</GroupName>
-    <tvExp>1</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>7</GroupNumber>
-      <FileNumber>24</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\PRINTER\usbd_printer_core.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_printer_core.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-  </Group>
-
-  <Group>
-    <GroupName>yc_usb\libraries\SCPU_USB_Device_Library\core</GroupName>
-    <tvExp>1</tvExp>
-    <tvExpOptDlg>0</tvExpOptDlg>
-    <cbSel>0</cbSel>
-    <RteFlg>0</RteFlg>
-    <File>
-      <GroupNumber>8</GroupNumber>
-      <FileNumber>25</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_core.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_core.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>8</GroupNumber>
-      <FileNumber>26</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_ioreq.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_ioreq.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>8</GroupNumber>
-      <FileNumber>27</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_req.c</PathWithFileName>
-      <FilenameWithoutPath>usbd_req.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-  </Group>
-
-</ProjectOpt>
Index: USB_PRINTER/prj/MDK/YC3121_Keil.uvprojx
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_PRINTER/prj/MDK/YC3121_Keil.uvprojx	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_PRINTER/prj/MDK/YC3121_Keil.uvprojx	(nonexistent)
@@ -1,567 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
-<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
-
-  <SchemaVersion>2.1</SchemaVersion>
-
-  <Header>### uVision Project, (C) Keil Software</Header>
-
-  <Targets>
-    <Target>
-      <TargetName>YC3121</TargetName>
-      <ToolsetNumber>0x4</ToolsetNumber>
-      <ToolsetName>ARM-ADS</ToolsetName>
-      <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
-      <uAC6>0</uAC6>
-      <TargetOption>
-        <TargetCommonOption>
-          <Device>ARMCM0</Device>
-          <Vendor>ARM</Vendor>
-          <PackID>ARM.CMSIS.5.5.1</PackID>
-          <PackURL>http://www.keil.com/pack/</PackURL>
-          <Cpu>IRAM(0x20000000,0x00020000) IROM(0x00000000,0x00040000) CPUTYPE("Cortex-M0") CLOCK(12000000) ESEL ELITTLE</Cpu>
-          <FlashUtilSpec></FlashUtilSpec>
-          <StartupFile></StartupFile>
-          <FlashDriverDll>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000)</FlashDriverDll>
-          <DeviceId>0</DeviceId>
-          <RegisterFile>$$Device:ARMCM0$Device\ARM\ARMCM0\Include\ARMCM0.h</RegisterFile>
-          <MemoryEnv></MemoryEnv>
-          <Cmp></Cmp>
-          <Asm></Asm>
-          <Linker></Linker>
-          <OHString></OHString>
-          <InfinionOptionDll></InfinionOptionDll>
-          <SLE66CMisc></SLE66CMisc>
-          <SLE66AMisc></SLE66AMisc>
-          <SLE66LinkerMisc></SLE66LinkerMisc>
-          <SFDFile>$$Device:ARMCM0$Device\ARM\SVD\ARMCM0.svd</SFDFile>
-          <bCustSvd>0</bCustSvd>
-          <UseEnv>0</UseEnv>
-          <BinPath></BinPath>
-          <IncludePath></IncludePath>
-          <LibPath></LibPath>
-          <RegisterFilePath></RegisterFilePath>
-          <DBRegisterFilePath></DBRegisterFilePath>
-          <TargetStatus>
-            <Error>0</Error>
-            <ExitCodeStop>0</ExitCodeStop>
-            <ButtonStop>0</ButtonStop>
-            <NotGenerated>0</NotGenerated>
-            <InvalidFlash>1</InvalidFlash>
-          </TargetStatus>
-          <OutputDirectory>.\Objects\</OutputDirectory>
-          <OutputName>YC3121_Keil</OutputName>
-          <CreateExecutable>1</CreateExecutable>
-          <CreateLib>0</CreateLib>
-          <CreateHexFile>1</CreateHexFile>
-          <DebugInformation>1</DebugInformation>
-          <BrowseInformation>1</BrowseInformation>
-          <ListingPath>.\Listings\</ListingPath>
-          <HexFormatSelection>1</HexFormatSelection>
-          <Merge32K>0</Merge32K>
-          <CreateBatchFile>1</CreateBatchFile>
-          <BeforeCompile>
-            <RunUserProg1>0</RunUserProg1>
-            <RunUserProg2>0</RunUserProg2>
-            <UserProg1Name></UserProg1Name>
-            <UserProg2Name></UserProg2Name>
-            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
-            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
-            <nStopU1X>0</nStopU1X>
-            <nStopU2X>0</nStopU2X>
-          </BeforeCompile>
-          <BeforeMake>
-            <RunUserProg1>0</RunUserProg1>
-            <RunUserProg2>0</RunUserProg2>
-            <UserProg1Name></UserProg1Name>
-            <UserProg2Name></UserProg2Name>
-            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
-            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
-            <nStopB1X>0</nStopB1X>
-            <nStopB2X>0</nStopB2X>
-          </BeforeMake>
-          <AfterMake>
-            <RunUserProg1>1</RunUserProg1>
-            <RunUserProg2>0</RunUserProg2>
-            <UserProg1Name>fromelf.exe --text -a -c --output=@L_asm.txt "!L"</UserProg1Name>
-            <UserProg2Name></UserProg2Name>
-            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
-            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
-            <nStopA1X>0</nStopA1X>
-            <nStopA2X>0</nStopA2X>
-          </AfterMake>
-          <SelectedForBatchBuild>0</SelectedForBatchBuild>
-          <SVCSIdString></SVCSIdString>
-        </TargetCommonOption>
-        <CommonProperty>
-          <UseCPPCompiler>0</UseCPPCompiler>
-          <RVCTCodeConst>0</RVCTCodeConst>
-          <RVCTZI>0</RVCTZI>
-          <RVCTOtherData>0</RVCTOtherData>
-          <ModuleSelection>0</ModuleSelection>
-          <IncludeInBuild>1</IncludeInBuild>
-          <AlwaysBuild>0</AlwaysBuild>
-          <GenerateAssemblyFile>0</GenerateAssemblyFile>
-          <AssembleAssemblyFile>0</AssembleAssemblyFile>
-          <PublicsOnly>0</PublicsOnly>
-          <StopOnExitCode>3</StopOnExitCode>
-          <CustomArgument></CustomArgument>
-          <IncludeLibraryModules></IncludeLibraryModules>
-          <ComprImg>1</ComprImg>
-        </CommonProperty>
-        <DllOption>
-          <SimDllName>SARMCM3.DLL</SimDllName>
-          <SimDllArguments>  </SimDllArguments>
-          <SimDlgDll>DARMCM1.DLL</SimDlgDll>
-          <SimDlgDllArguments>-pCM0</SimDlgDllArguments>
-          <TargetDllName>SARMCM3.DLL</TargetDllName>
-          <TargetDllArguments> </TargetDllArguments>
-          <TargetDlgDll>TARMCM1.DLL</TargetDlgDll>
-          <TargetDlgDllArguments>-pCM0</TargetDlgDllArguments>
-        </DllOption>
-        <DebugOption>
-          <OPTHX>
-            <HexSelection>1</HexSelection>
-            <HexRangeLowAddress>0</HexRangeLowAddress>
-            <HexRangeHighAddress>0</HexRangeHighAddress>
-            <HexOffset>0</HexOffset>
-            <Oh166RecLen>16</Oh166RecLen>
-          </OPTHX>
-        </DebugOption>
-        <Utilities>
-          <Flash1>
-            <UseTargetDll>1</UseTargetDll>
-            <UseExternalTool>0</UseExternalTool>
-            <RunIndependent>1</RunIndependent>
-            <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
-            <Capability>1</Capability>
-            <DriverSelection>4100</DriverSelection>
-          </Flash1>
-          <bUseTDR>0</bUseTDR>
-          <Flash2>Segger\JL2CM3.dll</Flash2>
-          <Flash3>"" ()</Flash3>
-          <Flash4></Flash4>
-          <pFcarmOut></pFcarmOut>
-          <pFcarmGrp></pFcarmGrp>
-          <pFcArmRoot></pFcArmRoot>
-          <FcArmLst>0</FcArmLst>
-        </Utilities>
-        <TargetArmAds>
-          <ArmAdsMisc>
-            <GenerateListings>0</GenerateListings>
-            <asHll>1</asHll>
-            <asAsm>1</asAsm>
-            <asMacX>1</asMacX>
-            <asSyms>1</asSyms>
-            <asFals>1</asFals>
-            <asDbgD>1</asDbgD>
-            <asForm>1</asForm>
-            <ldLst>0</ldLst>
-            <ldmm>1</ldmm>
-            <ldXref>1</ldXref>
-            <BigEnd>0</BigEnd>
-            <AdsALst>1</AdsALst>
-            <AdsACrf>1</AdsACrf>
-            <AdsANop>0</AdsANop>
-            <AdsANot>0</AdsANot>
-            <AdsLLst>1</AdsLLst>
-            <AdsLmap>1</AdsLmap>
-            <AdsLcgr>1</AdsLcgr>
-            <AdsLsym>1</AdsLsym>
-            <AdsLszi>1</AdsLszi>
-            <AdsLtoi>1</AdsLtoi>
-            <AdsLsun>1</AdsLsun>
-            <AdsLven>1</AdsLven>
-            <AdsLsxf>1</AdsLsxf>
-            <RvctClst>0</RvctClst>
-            <GenPPlst>0</GenPPlst>
-            <AdsCpuType>"Cortex-M0"</AdsCpuType>
-            <RvctDeviceName></RvctDeviceName>
-            <mOS>0</mOS>
-            <uocRom>0</uocRom>
-            <uocRam>0</uocRam>
-            <hadIROM>1</hadIROM>
-            <hadIRAM>1</hadIRAM>
-            <hadXRAM>0</hadXRAM>
-            <uocXRam>0</uocXRam>
-            <RvdsVP>0</RvdsVP>
-            <RvdsMve>0</RvdsMve>
-            <hadIRAM2>0</hadIRAM2>
-            <hadIROM2>0</hadIROM2>
-            <StupSel>8</StupSel>
-            <useUlib>1</useUlib>
-            <EndSel>1</EndSel>
-            <uLtcg>0</uLtcg>
-            <nSecure>0</nSecure>
-            <RoSelD>3</RoSelD>
-            <RwSelD>3</RwSelD>
-            <CodeSel>0</CodeSel>
-            <OptFeed>0</OptFeed>
-            <NoZi1>0</NoZi1>
-            <NoZi2>0</NoZi2>
-            <NoZi3>0</NoZi3>
-            <NoZi4>0</NoZi4>
-            <NoZi5>0</NoZi5>
-            <Ro1Chk>0</Ro1Chk>
-            <Ro2Chk>0</Ro2Chk>
-            <Ro3Chk>0</Ro3Chk>
-            <Ir1Chk>1</Ir1Chk>
-            <Ir2Chk>0</Ir2Chk>
-            <Ra1Chk>0</Ra1Chk>
-            <Ra2Chk>0</Ra2Chk>
-            <Ra3Chk>0</Ra3Chk>
-            <Im1Chk>1</Im1Chk>
-            <Im2Chk>0</Im2Chk>
-            <OnChipMemories>
-              <Ocm1>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm1>
-              <Ocm2>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm2>
-              <Ocm3>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm3>
-              <Ocm4>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm4>
-              <Ocm5>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm5>
-              <Ocm6>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </Ocm6>
-              <IRAM>
-                <Type>0</Type>
-                <StartAddress>0x20000000</StartAddress>
-                <Size>0x20000</Size>
-              </IRAM>
-              <IROM>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x40000</Size>
-              </IROM>
-              <XRAM>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </XRAM>
-              <OCR_RVCT1>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT1>
-              <OCR_RVCT2>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT2>
-              <OCR_RVCT3>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT3>
-              <OCR_RVCT4>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x40000</Size>
-              </OCR_RVCT4>
-              <OCR_RVCT5>
-                <Type>1</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT5>
-              <OCR_RVCT6>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT6>
-              <OCR_RVCT7>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT7>
-              <OCR_RVCT8>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT8>
-              <OCR_RVCT9>
-                <Type>0</Type>
-                <StartAddress>0x20000000</StartAddress>
-                <Size>0x20000</Size>
-              </OCR_RVCT9>
-              <OCR_RVCT10>
-                <Type>0</Type>
-                <StartAddress>0x0</StartAddress>
-                <Size>0x0</Size>
-              </OCR_RVCT10>
-            </OnChipMemories>
-            <RvctStartVector></RvctStartVector>
-          </ArmAdsMisc>
-          <Cads>
-            <interw>1</interw>
-            <Optim>3</Optim>
-            <oTime>0</oTime>
-            <SplitLS>0</SplitLS>
-            <OneElfS>0</OneElfS>
-            <Strict>0</Strict>
-            <EnumInt>0</EnumInt>
-            <PlainCh>0</PlainCh>
-            <Ropi>0</Ropi>
-            <Rwpi>0</Rwpi>
-            <wLevel>1</wLevel>
-            <uThumb>0</uThumb>
-            <uSurpInc>0</uSurpInc>
-            <uC99>1</uC99>
-            <uGnu>0</uGnu>
-            <useXO>0</useXO>
-            <v6Lang>1</v6Lang>
-            <v6LangP>1</v6LangP>
-            <vShortEn>1</vShortEn>
-            <vShortWch>1</vShortWch>
-            <v6Lto>0</v6Lto>
-            <v6WtE>0</v6WtE>
-            <v6Rtti>0</v6Rtti>
-            <VariousControls>
-              <MiscControls></MiscControls>
-              <Define>__USEKEILCOMPILE__</Define>
-              <Undefine></Undefine>
-              <IncludePath>..\..\..\..\..\Librarier\core;..\..\..\..\..\Librarier\sdk;..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der;..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core;..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_printer_Device_Demo;..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\PRINTER;..\..\user</IncludePath>
-            </VariousControls>
-          </Cads>
-          <Aads>
-            <interw>1</interw>
-            <Ropi>0</Ropi>
-            <Rwpi>0</Rwpi>
-            <thumb>0</thumb>
-            <SplitLS>0</SplitLS>
-            <SwStkChk>0</SwStkChk>
-            <NoWarn>0</NoWarn>
-            <uSurpInc>0</uSurpInc>
-            <useXO>0</useXO>
-            <uClangAs>0</uClangAs>
-            <VariousControls>
-              <MiscControls></MiscControls>
-              <Define></Define>
-              <Undefine></Undefine>
-              <IncludePath></IncludePath>
-            </VariousControls>
-          </Aads>
-          <LDads>
-            <umfTarg>0</umfTarg>
-            <Ropi>0</Ropi>
-            <Rwpi>0</Rwpi>
-            <noStLib>0</noStLib>
-            <RepFail>1</RepFail>
-            <useFile>0</useFile>
-            <TextAddressRange>0x00000000</TextAddressRange>
-            <DataAddressRange>0xd0000</DataAddressRange>
-            <pXoBase></pXoBase>
-            <ScatterFile>.\Objects\YC3121_keil.sct</ScatterFile>
-            <IncludeLibs></IncludeLibs>
-            <IncludeLibsPath></IncludeLibsPath>
-            <Misc></Misc>
-            <LinkerInputFile></LinkerInputFile>
-            <DisabledWarnings></DisabledWarnings>
-          </LDads>
-        </TargetArmAds>
-      </TargetOption>
-      <Groups>
-        <Group>
-          <GroupName>core</GroupName>
-          <Files>
-            <File>
-              <FileName>misc.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\core\misc.c</FilePath>
-            </File>
-            <File>
-              <FileName>system.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\core\system.c</FilePath>
-            </File>
-            <File>
-              <FileName>bt_code.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\core\bt_code.c</FilePath>
-            </File>
-          </Files>
-        </Group>
-        <Group>
-          <GroupName>main</GroupName>
-          <Files>
-            <File>
-              <FileName>main.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\user\main.c</FilePath>
-            </File>
-          </Files>
-        </Group>
-        <Group>
-          <GroupName>sdk</GroupName>
-          <Files>
-            <File>
-              <FileName>yc_gpio.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_gpio.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_uart.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_uart.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_timer.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_timer.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_ipc.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_ipc.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_lpm.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_lpm.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_otp.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_otp.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_sysctrl.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_sysctrl.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_bt.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_bt.c</FilePath>
-            </File>
-            <File>
-              <FileName>yc_systick.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_systick.c</FilePath>
-            </File>
-          </Files>
-        </Group>
-        <Group>
-          <GroupName>startup</GroupName>
-          <Files>
-            <File>
-              <FileName>flash_start.s</FileName>
-              <FileType>2</FileType>
-              <FilePath>..\..\..\..\..\Librarier\startup\flash_start.s</FilePath>
-            </File>
-            <File>
-              <FileName>startup.s</FileName>
-              <FileType>2</FileType>
-              <FilePath>..\..\..\..\..\Librarier\startup\startup.s</FilePath>
-            </File>
-          </Files>
-        </Group>
-        <Group>
-          <GroupName>yc_usb\scpu_usb_printer_Device_Demo</GroupName>
-          <Files>
-            <File>
-              <FileName>usb_bsp.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_printer_Device_Demo\usb_bsp.c</FilePath>
-            </File>
-            <File>
-              <FileName>usb_main.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_printer_Device_Demo\usb_main.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_desc.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_printer_Device_Demo\usbd_desc.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_usr.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_printer_Device_Demo\usbd_usr.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_printer_vcp.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_printer_Device_Demo\usbd_printer_vcp.c</FilePath>
-            </File>
-          </Files>
-        </Group>
-        <Group>
-          <GroupName>yc_usb\libraries\harward_Der</GroupName>
-          <Files>
-            <File>
-              <FileName>usb_core.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\usb_core.c</FilePath>
-            </File>
-            <File>
-              <FileName>Usb_dcd.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\Usb_dcd.c</FilePath>
-            </File>
-            <File>
-              <FileName>Usb_dcd_init.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\Usb_dcd_init.c</FilePath>
-            </File>
-          </Files>
-        </Group>
-        <Group>
-          <GroupName>yc_usb\libraries\SCPU_USB_Device_Library\class\PRINTER</GroupName>
-          <Files>
-            <File>
-              <FileName>usbd_printer_core.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\PRINTER\usbd_printer_core.c</FilePath>
-            </File>
-          </Files>
-        </Group>
-        <Group>
-          <GroupName>yc_usb\libraries\SCPU_USB_Device_Library\core</GroupName>
-          <Files>
-            <File>
-              <FileName>usbd_core.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_core.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_ioreq.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_ioreq.c</FilePath>
-            </File>
-            <File>
-              <FileName>usbd_req.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_req.c</FilePath>
-            </File>
-          </Files>
-        </Group>
-      </Groups>
-    </Target>
-  </Targets>
-
-  <RTE>
-    <apis/>
-    <components/>
-    <files/>
-  </RTE>
-
-</Project>
Index: USB_PRINTER/user/main.c
===================================================================
--- /YC3121_demo/ModuleDemo/USB/USB_PRINTER/user/main.c	(revision 974)
+++ /YC3121_demo/ModuleDemo/USB/USB_PRINTER/user/main.c	(nonexistent)
@@ -1,90 +0,0 @@
-/**
-  ******************************************************************************
-  * @file    3121Demo_1.0V\ModuleDemo\USB\USB_CDC\user\main.c
-  * @author  Yichip Application Team
-  * @version V1.0.0
-  * @date    23-Oct-2019
-  * @brief   USB CDC test program.
-  ******************************************************************************
-  * @attention
-  *
-  * COPYRIGHT 2019 Yichip Microelectronics
-  *
-  * The purpose of this demo is to provide guidance to customers engaged in 
-	* programming work to guide them smoothly to product development, 
-	* so as to save their time.
-	*
-	* Therefore, Yichip microelectronics shall not be responsible for any direct, 
-	* indirect or consequential damages caused by any content of this demo
-	* and/or contained in this code used by the customer in its products.
-  *
-  ******************************************************************************
-  */
-
-/* Includes ------------------------------------------------------------------*/
-#include "yc3121.h"
-#include "yc_gpio.h"
-#include "yc_uart.h"
-#include "yc_ipc.h"
-#include "usb_main.h"
-#include "board_config.h"
-
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-void UART_Configuration(void);
-
-/**
-  * @brief  Main program
-  * @param  None
-  * @retval None
-  */
-extern USB_OTG_CORE_HANDLE  USB_OTG_dev;
-
-int main(void)
-{ 
-	UART_Configuration();
-	IpcInit();
-
-	MyPrintf("USB printer Demo !\n\n");
-
-	usb_main();
-
-	while (1)
-	{
-		
-	}
-}
-
-/**
-  * @brief  Serial port 0 initialization function.
-  * @param  None
-  * @retval None
-  */
-void UART_Configuration(void)
-{
-	UART_InitTypeDef UART_InitStruct;
-
-	/* Configure serial ports 0 RX and TX for IO. */
-	GPIO_Config(UART0_TX_PORT, UART0_TX_PIN, UART0_TXD);
-	GPIO_Config(UART0_RX_PORT, UART0_RX_PIN, UART0_RXD);
-
-	/* USARTx configured as follow:
-  - BaudRate = 115200 baud  
-  - Word Length = 8 Bits
-  - Stop Bit = 1 Stop Bit
-  - Parity = No Parity
-  - Hardware flow control disabled (RTS and CTS signals)
-  - Receive and transmit enabled
-  */
-	UART_InitStruct.BaudRate = UARTBAUD;			//Configure serial port baud rate, the baud rate defaults to 128000.
-	UART_InitStruct.DataBits = Databits_8b;
-	UART_InitStruct.StopBits = StopBits_1;
-	UART_InitStruct.Parity = Parity_None;
-	UART_InitStruct.FlowCtrl = FlowCtrl_None;
-	UART_InitStruct.Mode = Mode_duplex;
-	
-	UART_Init(UART0, &UART_InitStruct);
-}
-
-/************************ (C) COPYRIGHT Yichip Microelectronics *****END OF FILE****/
Index: usb_ccid/prj/GCC/c.bat
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_ccid/prj/GCC/c.bat	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_ccid/prj/GCC/c.bat	(working copy)
@@ -0,0 +1,3 @@
+cls
+make clean
+make
\ No newline at end of file
Index: usb_ccid/prj/GCC/makefile
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_ccid/prj/GCC/makefile	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_ccid/prj/GCC/makefile	(working copy)
@@ -0,0 +1,250 @@
+
+ifeq ($(OS),Windows_NT)
+DIR = C:/gcc-arm-none-eabi-7-2018-q2-update-win32
+else
+DIR = /usr/gcc-arm-none-eabi-7-2018-q2-update
+endif
+
+ARCH = $(DIR)/bin/arm-none-eabi
+GCC = $(ARCH)-gcc
+LD = $(ARCH)-ld
+AS = $(ARCH)-as
+OBJCOPY = $(ARCH)-objcopy
+OBJDUMP = "$(ARCH)-objdump"
+LIB_PATH = ../../../../../Librarier
+USER_PATH = ../../user
+
+
+all : output/out.hex
+
+
+CORE_OBJS =  $(LIB_PATH)/startup/flash_start_gcc \
+             $(LIB_PATH)/core/system \
+             $(LIB_PATH)/core/misc \
+             $(LIB_PATH)/core/bt_code \
+             $(LIB_PATH)/sdk/yc_gpio \
+             $(LIB_PATH)/sdk/yc_timer \
+             $(LIB_PATH)/sdk/yc_ipc \
+             $(LIB_PATH)/sdk/yc_uart \
+             $(LIB_PATH)/sdk/yc_lpm \
+             $(LIB_PATH)/sdk/yc_otp \
+             $(LIB_PATH)/sdk/yc_sysctrl \
+             $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der/usb_core \
+             $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der/Usb_dcd \
+             $(LIB_PATH)/sdk/yc_usb/scpu_usb_ccid_Device_Demo/Usb_dcd_init \
+             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core/usbd_core \
+             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core/usbd_ioreq \
+             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core/usbd_req \
+             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/class/ccid/usbd_ccid_cmd \
+             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/class/ccid/usbd_ccid_core \
+             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/class/ccid/usbd_ccid_if \
+             $(LIB_PATH)/sdk/yc_usb/scpu_usb_ccid_Device_Demo/usb_main \
+             $(LIB_PATH)/sdk/yc_usb/scpu_usb_ccid_Device_Demo/usbd_desc \
+             $(LIB_PATH)/sdk/yc_usb/scpu_usb_ccid_Device_Demo/usbd_usr \
+             $(LIB_PATH)/sdk/yc_usb/scpu_usb_ccid_Device_Demo/sc_itf
+
+             
+USER_OBJS = $(USER_PATH)/main
+			
+OBJS = $(CORE_OBJS) $(USER_OBJS)
+
+INC_DIR = -I $(LIB_PATH)/core \
+          -I $(LIB_PATH)/sdk \
+          -I $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der \
+          -I $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core \
+          -I $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/class/ccid \
+          -I $(LIB_PATH)/sdk/yc_usb/scpu_usb_ccid_Device_Demo
+
+
+CFLAG =  -mthumb -mcpu=cortex-m0 -c -g -Os $(INC_DIR) $(DEF) -fno-toplevel-reorder -ffunction-sections -fdata-sections
+LDFLAG = -T output/ld.script -Map=output/memmap -lc -lm -lgcc -L "$(DIR)/lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m"  -L "$(DIR)/arm-none-eabi/lib/thumb/v6-m"
+
+define ldscript = 
+/* Linker script to configure memory regions. 
+ * Need modifying for a specific board. 
+ *   FLASH.ORIGIN: starting address of flash
+ *   FLASH.LENGTH: length of flash
+ *   RAM.ORIGIN: starting address of RAM bank 0
+ *   RAM.LENGTH: length of RAM bank 0
+ */
+MEMORY
+{
+  FLASH (rx) : ORIGIN = 0x1000000, LENGTH = 0x80000 /* 512K */
+  RAM (rwx) : ORIGIN = 0x20000, LENGTH = 0x10000 /* 64K */
+}
+
+/* Linker script to place sections and symbol values. Should be used together
+ * with other linker script that defines memory regions FLASH and RAM.
+ * It references following symbols, which must be defined in code:
+ *   Reset_Handler : Entry of reset handler
+ * 
+ * It defines following symbols, which code can use without definition:
+ *   __exidx_start
+ *   __exidx_end
+ *   __copy_table_start__
+ *   __copy_table_end__
+ *   __zero_table_start__
+ *   __zero_table_end__
+ *   __etext
+ *   __data_start__
+ *   __preinit_array_start
+ *   __preinit_array_end
+ *   __init_array_start
+ *   __init_array_end
+ *   __fini_array_start
+ *   __fini_array_end
+ *   __data_end__
+ *   __bss_start__
+ *   __bss_end__
+ *   __end__
+ *   end
+ *   __HeapLimit
+ *   __StackLimit
+ *   __StackTop
+ *   __stack
+ */
+ENTRY(Reset_Handler)
+
+SECTIONS
+{
+	.text :
+	{
+		*flash_start*.o
+		*(.text*)
+
+		KEEP(*(.init))
+		KEEP(*(.fini))
+
+		/* .ctors */
+		*crtbegin.o(.ctors)
+		*crtbegin?.o(.ctors)
+		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
+		*(SORT(.ctors.*))
+		*(.ctors)
+
+		/* .dtors */
+ 		*crtbegin.o(.dtors)
+ 		*crtbegin?.o(.dtors)
+ 		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
+ 		*(SORT(.dtors.*))
+ 		*(.dtors)
+
+		*(.rodata*)
+
+		KEEP(*(.eh_frame*))
+	} > FLASH
+	
+	
+
+	.ARM.extab : 
+	{
+		*(.ARM.extab* .gnu.linkonce.armextab.*)
+	} > FLASH
+
+	
+	.ARM.exidx :
+	{
+		*(.ARM.exidx* .gnu.linkonce.armexidx.*)
+	} > FLASH
+
+	 . = ALIGN(4);
+	__exidx_start = .;
+
+	__etext = .;
+		
+	.data : AT (__etext)
+	{
+		__data_start__ = .;
+		*(vtable)
+		*(.data*)
+
+		. = ALIGN(4);
+		/* preinit data */
+		PROVIDE_HIDDEN (__preinit_array_start = .);
+		KEEP(*(.preinit_array))
+		PROVIDE_HIDDEN (__preinit_array_end = .);
+
+		. = ALIGN(4);
+		/* init data */
+		PROVIDE_HIDDEN (__init_array_start = .);
+		KEEP(*(SORT(.init_array.*)))
+		KEEP(*(.init_array))
+		PROVIDE_HIDDEN (__init_array_end = .);
+
+
+		. = ALIGN(4);
+		/* finit data */
+		PROVIDE_HIDDEN (__fini_array_start = .);
+		KEEP(*(SORT(.fini_array.*)))
+		KEEP(*(.fini_array))
+		PROVIDE_HIDDEN (__fini_array_end = .);
+
+		KEEP(*(.jcr*))
+		. = ALIGN(4);
+		/* All data end */
+		__data_end__ = .;
+
+	} > RAM
+
+	.bss :
+	{
+		. = ALIGN(4);
+		__bss_start__ = .;
+		*(.bss*)
+		*(COMMON)
+		. = ALIGN(4);
+		__bss_end__ = .;
+	} > RAM
+	
+	.heap (COPY):
+	{
+		__end__ = .;
+		PROVIDE(end = .);
+		*(.heap*)
+		__HeapLimit = .;
+	} > RAM
+
+	/* .stack_dummy section doesn't contains any symbols. It is only
+	 * used for linker to calculate size of stack sections, and assign
+	 * values to stack symbols later */
+	.stack_dummy (COPY):
+	{
+		*(.stack*)
+	} > RAM
+
+	/* Set stack top to end of RAM, and stack limit move down by
+	 * size of stack_dummy section */
+	__StackTop = ORIGIN(RAM) + LENGTH(RAM);
+	__StackLimit = __StackTop - SIZEOF(.stack_dummy);
+	PROVIDE(__stack = __StackTop);
+	
+	/* Check if data + heap + stack exceeds RAM limit */
+	ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
+}
+endef
+
+
+output/out.hex : output/out
+	$(OBJCOPY) $^ -O ihex $@
+
+
+output/out : $(addprefix output/, $(addsuffix .o, $(OBJS)))
+	$(file >output/ld.script, $(ldscript))
+	$(LD) $(addprefix output/obj/,$(addsuffix .o, $(notdir $(OBJS)))) -o $@ $(LDFLAG)
+	$(OBJDUMP) -S $@ > output/disasm
+
+output/%.o : %.c
+	$(GCC) $< $(CFLAG) -o output/obj/$(notdir $@)
+
+output/%.o : %.s
+	$(AS) $^ -mthumb -mcpu=cortex-m0 -o output/obj/$(notdir $@)
+
+
+clean :
+ifeq ($(OS),Windows_NT)
+	del /Q output\*.*
+	del /Q output\obj\*.*
+else
+	rm -rf output/*
+	rm -rf output/obj/*
+endif
Index: usb_ccid/prj/MDK/Objects/YC3121_keil.sct
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_ccid/prj/MDK/Objects/YC3121_keil.sct	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_ccid/prj/MDK/Objects/YC3121_keil.sct	(working copy)
@@ -0,0 +1,55 @@
+; *************************************************************
+; *** Scatter-Loading Description File generated by uVision ***
+; *************************************************************
+
+LR_IROM1 0x00000000 0x0001fff  {    ; load region size_region
+  ER_IROM1 0x00000000 0x00001fff  {  ; load address = execution address
+   startup.o (RESET, +First)
+   startup.o (|.text|,+RO)
+;   *(InRoot$$Sections)
+  }
+  ;ER_IROM2 0x4000   {
+  ;rom_main.o (+RO)
+  ;}
+  
+  ;ER_IROM3 0x100000 {
+	  ;*(InRoot$$Sections)
+  ;}
+	
+  ;ER_IROM4 0x100400   {
+  ;flash_start.o (+RO)
+  ;.ANY (+RO) 
+  ;}
+  
+  ;RW_IRAM1 0x000d0000 0x0010000  {  ; RW data
+   ;.ANY (+RW +ZI)
+  ;}
+  
+;  ARM_LIB_STACK 0xE0000 EMPTY -0x10000{}
+}
+
+;LR_IROM2 0x4000 0x4000{
+;	ER_IROM2 0x4000 {
+;	  rom_main.o (+RO)
+;	}
+;}
+
+LR_IROM3 0x1000200 0x200{
+	ER_IROM3 0x1000200 {
+	  flash_start.o (|.flash_start|,+RO)
+	}
+}
+
+LR_IROM4 0x1000400 0x1000000{
+	ER_IROM4 0x1000400 {
+;	  flash_start.o (|.flash_start|,+RO)
+	  *(InRoot$$Sections)
+	  .ANY (+RO)
+	}
+	
+	
+	 RW_IRAM2 0x00020000 0x010000  {  ; RW data
+	.ANY (+RW +ZI)
+	}
+}
+
Index: usb_ccid/prj/MDK/YC3121_Keil.uvoptx
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_ccid/prj/MDK/YC3121_Keil.uvoptx	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_ccid/prj/MDK/YC3121_Keil.uvoptx	(working copy)
@@ -0,0 +1,571 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
+
+  <SchemaVersion>1.0</SchemaVersion>
+
+  <Header>### uVision Project, (C) Keil Software</Header>
+
+  <Extensions>
+    <cExt>*.c</cExt>
+    <aExt>*.s*; *.src; *.a*</aExt>
+    <oExt>*.obj; *.o</oExt>
+    <lExt>*.lib</lExt>
+    <tExt>*.txt; *.h; *.inc</tExt>
+    <pExt>*.plm</pExt>
+    <CppX>*.cpp</CppX>
+    <nMigrate>0</nMigrate>
+  </Extensions>
+
+  <DaveTm>
+    <dwLowDateTime>0</dwLowDateTime>
+    <dwHighDateTime>0</dwHighDateTime>
+  </DaveTm>
+
+  <Target>
+    <TargetName>YC3121</TargetName>
+    <ToolsetNumber>0x4</ToolsetNumber>
+    <ToolsetName>ARM-ADS</ToolsetName>
+    <TargetOption>
+      <CLKADS>12000000</CLKADS>
+      <OPTTT>
+        <gFlags>1</gFlags>
+        <BeepAtEnd>1</BeepAtEnd>
+        <RunSim>0</RunSim>
+        <RunTarget>1</RunTarget>
+        <RunAbUc>0</RunAbUc>
+      </OPTTT>
+      <OPTHX>
+        <HexSelection>1</HexSelection>
+        <FlashByte>65535</FlashByte>
+        <HexRangeLowAddress>0</HexRangeLowAddress>
+        <HexRangeHighAddress>0</HexRangeHighAddress>
+        <HexOffset>0</HexOffset>
+      </OPTHX>
+      <OPTLEX>
+        <PageWidth>79</PageWidth>
+        <PageLength>66</PageLength>
+        <TabStop>8</TabStop>
+        <ListingPath>.\Listings\</ListingPath>
+      </OPTLEX>
+      <ListingPage>
+        <CreateCListing>1</CreateCListing>
+        <CreateAListing>1</CreateAListing>
+        <CreateLListing>1</CreateLListing>
+        <CreateIListing>0</CreateIListing>
+        <AsmCond>1</AsmCond>
+        <AsmSymb>1</AsmSymb>
+        <AsmXref>0</AsmXref>
+        <CCond>1</CCond>
+        <CCode>0</CCode>
+        <CListInc>0</CListInc>
+        <CSymb>0</CSymb>
+        <LinkerCodeListing>0</LinkerCodeListing>
+      </ListingPage>
+      <OPTXL>
+        <LMap>1</LMap>
+        <LComments>1</LComments>
+        <LGenerateSymbols>1</LGenerateSymbols>
+        <LLibSym>1</LLibSym>
+        <LLines>1</LLines>
+        <LLocSym>1</LLocSym>
+        <LPubSym>1</LPubSym>
+        <LXref>0</LXref>
+        <LExpSel>0</LExpSel>
+      </OPTXL>
+      <OPTFL>
+        <tvExp>1</tvExp>
+        <tvExpOptDlg>0</tvExpOptDlg>
+        <IsCurrentTarget>1</IsCurrentTarget>
+      </OPTFL>
+      <CpuCode>7</CpuCode>
+      <DebugOpt>
+        <uSim>0</uSim>
+        <uTrg>1</uTrg>
+        <sLdApp>1</sLdApp>
+        <sGomain>1</sGomain>
+        <sRbreak>1</sRbreak>
+        <sRwatch>1</sRwatch>
+        <sRmem>1</sRmem>
+        <sRfunc>1</sRfunc>
+        <sRbox>1</sRbox>
+        <tLdApp>1</tLdApp>
+        <tGomain>1</tGomain>
+        <tRbreak>1</tRbreak>
+        <tRwatch>1</tRwatch>
+        <tRmem>1</tRmem>
+        <tRfunc>0</tRfunc>
+        <tRbox>1</tRbox>
+        <tRtrace>1</tRtrace>
+        <sRSysVw>1</sRSysVw>
+        <tRSysVw>1</tRSysVw>
+        <sRunDeb>0</sRunDeb>
+        <sLrtime>0</sLrtime>
+        <bEvRecOn>1</bEvRecOn>
+        <bSchkAxf>0</bSchkAxf>
+        <bTchkAxf>0</bTchkAxf>
+        <nTsel>4</nTsel>
+        <sDll></sDll>
+        <sDllPa></sDllPa>
+        <sDlgDll></sDlgDll>
+        <sDlgPa></sDlgPa>
+        <sIfile></sIfile>
+        <tDll></tDll>
+        <tDllPa></tDllPa>
+        <tDlgDll></tDlgDll>
+        <tDlgPa></tDlgPa>
+        <tIfile>..\..\..\..\..\ConfigFiles\MDK\flash.ini</tIfile>
+        <pMon>Segger\JL2CM3.dll</pMon>
+      </DebugOpt>
+      <TargetDriverDllRegistry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>DLGUARM</Key>
+          <Name>d</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>PWSTATINFO</Key>
+          <Name>200,50,700</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>ARMRTXEVENTFLAGS</Key>
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>DLGTARM</Key>
+          <Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>ARMDBGFLAGS</Key>
+          <Name></Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>JL2CM3</Key>
+          <Name>-U4294967295 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(0BB11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO31 -FD20000 -FCA000 -FN1 -FF0YC3121 -FS01000000 -FL080000</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>UL2CM3</Key>
+          <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000)</Name>
+        </SetRegEntry>
+      </TargetDriverDllRegistry>
+      <Breakpoint>
+        <Bp>
+          <Number>0</Number>
+          <Type>0</Type>
+          <LineNumber>689</LineNumber>
+          <EnabledFlag>1</EnabledFlag>
+          <Address>16786508</Address>
+          <ByteObject>0</ByteObject>
+          <HtxType>0</HtxType>
+          <ManyObjects>0</ManyObjects>
+          <SizeOfObject>0</SizeOfObject>
+          <BreakByAccess>0</BreakByAccess>
+          <BreakIfRCount>1</BreakIfRCount>
+          <Filename>D:\2_Working\3_SecurityIC\YC3121\2_Software\YC3121_Test\Yc3121\YC3121_demo\ModuleDemo\USB\USB_CCID\user\usb_test\usb_test.c</Filename>
+          <ExecCommand></ExecCommand>
+          <Expression>\\YC3121_Keil\../../user/usb_test/usb_test.c\689</Expression>
+        </Bp>
+      </Breakpoint>
+      <Tracepoint>
+        <THDelay>0</THDelay>
+      </Tracepoint>
+      <DebugFlag>
+        <trace>0</trace>
+        <periodic>0</periodic>
+        <aLwin>1</aLwin>
+        <aCover>0</aCover>
+        <aSer1>0</aSer1>
+        <aSer2>0</aSer2>
+        <aPa>0</aPa>
+        <viewmode>1</viewmode>
+        <vrSel>0</vrSel>
+        <aSym>0</aSym>
+        <aTbox>0</aTbox>
+        <AscS1>0</AscS1>
+        <AscS2>0</AscS2>
+        <AscS3>0</AscS3>
+        <aSer3>0</aSer3>
+        <eProf>0</eProf>
+        <aLa>0</aLa>
+        <aPa1>0</aPa1>
+        <AscS4>0</AscS4>
+        <aSer4>0</aSer4>
+        <StkLoc>0</StkLoc>
+        <TrcWin>0</TrcWin>
+        <newCpu>0</newCpu>
+        <uProt>0</uProt>
+      </DebugFlag>
+      <LintExecutable></LintExecutable>
+      <LintConfigFile></LintConfigFile>
+      <bLintAuto>0</bLintAuto>
+      <bAutoGenD>0</bAutoGenD>
+      <LntExFlags>0</LntExFlags>
+      <pMisraName></pMisraName>
+      <pszMrule></pszMrule>
+      <pSingCmds></pSingCmds>
+      <pMultCmds></pMultCmds>
+      <pMisraNamep></pMisraNamep>
+      <pszMrulep></pszMrulep>
+      <pSingCmdsp></pSingCmdsp>
+      <pMultCmdsp></pMultCmdsp>
+    </TargetOption>
+  </Target>
+
+  <Group>
+    <GroupName>core</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>1</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\core\misc.c</PathWithFileName>
+      <FilenameWithoutPath>misc.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>2</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\core\system.c</PathWithFileName>
+      <FilenameWithoutPath>system.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>3</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\core\bt_code.c</PathWithFileName>
+      <FilenameWithoutPath>bt_code.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>main</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>2</GroupNumber>
+      <FileNumber>4</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\user\main.c</PathWithFileName>
+      <FilenameWithoutPath>main.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>sdk</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>5</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_gpio.c</PathWithFileName>
+      <FilenameWithoutPath>yc_gpio.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>6</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_uart.c</PathWithFileName>
+      <FilenameWithoutPath>yc_uart.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>7</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_timer.c</PathWithFileName>
+      <FilenameWithoutPath>yc_timer.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>8</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_ipc.c</PathWithFileName>
+      <FilenameWithoutPath>yc_ipc.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>9</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_otp.c</PathWithFileName>
+      <FilenameWithoutPath>yc_otp.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>10</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_sysctrl.c</PathWithFileName>
+      <FilenameWithoutPath>yc_sysctrl.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>11</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_lpm.c</PathWithFileName>
+      <FilenameWithoutPath>yc_lpm.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>startup</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>12</FileNumber>
+      <FileType>2</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\startup\flash_start.s</PathWithFileName>
+      <FilenameWithoutPath>flash_start.s</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>13</FileNumber>
+      <FileType>2</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\startup\startup.s</PathWithFileName>
+      <FilenameWithoutPath>startup.s</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>USB</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>5</GroupNumber>
+      <FileNumber>14</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\usb_core.c</PathWithFileName>
+      <FilenameWithoutPath>usb_core.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>5</GroupNumber>
+      <FileNumber>15</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\Usb_dcd.c</PathWithFileName>
+      <FilenameWithoutPath>Usb_dcd.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>5</GroupNumber>
+      <FileNumber>16</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\ccid\usbd_ccid_cmd.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_ccid_cmd.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>5</GroupNumber>
+      <FileNumber>17</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\ccid\usbd_ccid_core.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_ccid_core.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>5</GroupNumber>
+      <FileNumber>18</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\ccid\usbd_ccid_if.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_ccid_if.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>5</GroupNumber>
+      <FileNumber>19</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_core.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_core.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>5</GroupNumber>
+      <FileNumber>20</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_ioreq.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_ioreq.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>5</GroupNumber>
+      <FileNumber>21</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_req.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_req.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>5</GroupNumber>
+      <FileNumber>22</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_ccid_Device_Demo\sc_itf.c</PathWithFileName>
+      <FilenameWithoutPath>sc_itf.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>5</GroupNumber>
+      <FileNumber>23</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_ccid_Device_Demo\usb_main.c</PathWithFileName>
+      <FilenameWithoutPath>usb_main.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>5</GroupNumber>
+      <FileNumber>24</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_ccid_Device_Demo\usbd_desc.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_desc.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>5</GroupNumber>
+      <FileNumber>25</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_ccid_Device_Demo\usbd_usr.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_usr.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>5</GroupNumber>
+      <FileNumber>26</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_ccid_Device_Demo\Usb_dcd_init.c</PathWithFileName>
+      <FilenameWithoutPath>Usb_dcd_init.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+</ProjectOpt>
Index: usb_ccid/prj/MDK/YC3121_Keil.uvprojx
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_ccid/prj/MDK/YC3121_Keil.uvprojx	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_ccid/prj/MDK/YC3121_Keil.uvprojx	(working copy)
@@ -0,0 +1,547 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
+
+  <SchemaVersion>2.1</SchemaVersion>
+
+  <Header>### uVision Project, (C) Keil Software</Header>
+
+  <Targets>
+    <Target>
+      <TargetName>YC3121</TargetName>
+      <ToolsetNumber>0x4</ToolsetNumber>
+      <ToolsetName>ARM-ADS</ToolsetName>
+      <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
+      <uAC6>0</uAC6>
+      <TargetOption>
+        <TargetCommonOption>
+          <Device>ARMCM0</Device>
+          <Vendor>ARM</Vendor>
+          <PackID>ARM.CMSIS.5.5.1</PackID>
+          <PackURL>http://www.keil.com/pack/</PackURL>
+          <Cpu>IRAM(0x20000000,0x00020000) IROM(0x00000000,0x00040000) CPUTYPE("Cortex-M0") CLOCK(12000000) ESEL ELITTLE</Cpu>
+          <FlashUtilSpec></FlashUtilSpec>
+          <StartupFile></StartupFile>
+          <FlashDriverDll>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000)</FlashDriverDll>
+          <DeviceId>0</DeviceId>
+          <RegisterFile>$$Device:ARMCM0$Device\ARM\ARMCM0\Include\ARMCM0.h</RegisterFile>
+          <MemoryEnv></MemoryEnv>
+          <Cmp></Cmp>
+          <Asm></Asm>
+          <Linker></Linker>
+          <OHString></OHString>
+          <InfinionOptionDll></InfinionOptionDll>
+          <SLE66CMisc></SLE66CMisc>
+          <SLE66AMisc></SLE66AMisc>
+          <SLE66LinkerMisc></SLE66LinkerMisc>
+          <SFDFile>$$Device:ARMCM0$Device\ARM\SVD\ARMCM0.svd</SFDFile>
+          <bCustSvd>0</bCustSvd>
+          <UseEnv>0</UseEnv>
+          <BinPath></BinPath>
+          <IncludePath></IncludePath>
+          <LibPath></LibPath>
+          <RegisterFilePath></RegisterFilePath>
+          <DBRegisterFilePath></DBRegisterFilePath>
+          <TargetStatus>
+            <Error>0</Error>
+            <ExitCodeStop>0</ExitCodeStop>
+            <ButtonStop>0</ButtonStop>
+            <NotGenerated>0</NotGenerated>
+            <InvalidFlash>1</InvalidFlash>
+          </TargetStatus>
+          <OutputDirectory>.\Objects\</OutputDirectory>
+          <OutputName>YC3121_Keil</OutputName>
+          <CreateExecutable>1</CreateExecutable>
+          <CreateLib>0</CreateLib>
+          <CreateHexFile>1</CreateHexFile>
+          <DebugInformation>1</DebugInformation>
+          <BrowseInformation>1</BrowseInformation>
+          <ListingPath>.\Listings\</ListingPath>
+          <HexFormatSelection>1</HexFormatSelection>
+          <Merge32K>0</Merge32K>
+          <CreateBatchFile>1</CreateBatchFile>
+          <BeforeCompile>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopU1X>0</nStopU1X>
+            <nStopU2X>0</nStopU2X>
+          </BeforeCompile>
+          <BeforeMake>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopB1X>0</nStopB1X>
+            <nStopB2X>0</nStopB2X>
+          </BeforeMake>
+          <AfterMake>
+            <RunUserProg1>1</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name>fromelf.exe --text -a -c --output=@L_asm.txt "!L"</UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopA1X>0</nStopA1X>
+            <nStopA2X>0</nStopA2X>
+          </AfterMake>
+          <SelectedForBatchBuild>0</SelectedForBatchBuild>
+          <SVCSIdString></SVCSIdString>
+        </TargetCommonOption>
+        <CommonProperty>
+          <UseCPPCompiler>0</UseCPPCompiler>
+          <RVCTCodeConst>0</RVCTCodeConst>
+          <RVCTZI>0</RVCTZI>
+          <RVCTOtherData>0</RVCTOtherData>
+          <ModuleSelection>0</ModuleSelection>
+          <IncludeInBuild>1</IncludeInBuild>
+          <AlwaysBuild>0</AlwaysBuild>
+          <GenerateAssemblyFile>0</GenerateAssemblyFile>
+          <AssembleAssemblyFile>0</AssembleAssemblyFile>
+          <PublicsOnly>0</PublicsOnly>
+          <StopOnExitCode>3</StopOnExitCode>
+          <CustomArgument></CustomArgument>
+          <IncludeLibraryModules></IncludeLibraryModules>
+          <ComprImg>1</ComprImg>
+        </CommonProperty>
+        <DllOption>
+          <SimDllName>SARMCM3.DLL</SimDllName>
+          <SimDllArguments>  </SimDllArguments>
+          <SimDlgDll>DARMCM1.DLL</SimDlgDll>
+          <SimDlgDllArguments>-pCM0</SimDlgDllArguments>
+          <TargetDllName>SARMCM3.DLL</TargetDllName>
+          <TargetDllArguments> </TargetDllArguments>
+          <TargetDlgDll>TARMCM1.DLL</TargetDlgDll>
+          <TargetDlgDllArguments>-pCM0</TargetDlgDllArguments>
+        </DllOption>
+        <DebugOption>
+          <OPTHX>
+            <HexSelection>1</HexSelection>
+            <HexRangeLowAddress>0</HexRangeLowAddress>
+            <HexRangeHighAddress>0</HexRangeHighAddress>
+            <HexOffset>0</HexOffset>
+            <Oh166RecLen>16</Oh166RecLen>
+          </OPTHX>
+        </DebugOption>
+        <Utilities>
+          <Flash1>
+            <UseTargetDll>1</UseTargetDll>
+            <UseExternalTool>0</UseExternalTool>
+            <RunIndependent>1</RunIndependent>
+            <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
+            <Capability>1</Capability>
+            <DriverSelection>4100</DriverSelection>
+          </Flash1>
+          <bUseTDR>0</bUseTDR>
+          <Flash2>Segger\JL2CM3.dll</Flash2>
+          <Flash3>"" ()</Flash3>
+          <Flash4></Flash4>
+          <pFcarmOut></pFcarmOut>
+          <pFcarmGrp></pFcarmGrp>
+          <pFcArmRoot></pFcArmRoot>
+          <FcArmLst>0</FcArmLst>
+        </Utilities>
+        <TargetArmAds>
+          <ArmAdsMisc>
+            <GenerateListings>0</GenerateListings>
+            <asHll>1</asHll>
+            <asAsm>1</asAsm>
+            <asMacX>1</asMacX>
+            <asSyms>1</asSyms>
+            <asFals>1</asFals>
+            <asDbgD>1</asDbgD>
+            <asForm>1</asForm>
+            <ldLst>0</ldLst>
+            <ldmm>1</ldmm>
+            <ldXref>1</ldXref>
+            <BigEnd>0</BigEnd>
+            <AdsALst>1</AdsALst>
+            <AdsACrf>1</AdsACrf>
+            <AdsANop>0</AdsANop>
+            <AdsANot>0</AdsANot>
+            <AdsLLst>1</AdsLLst>
+            <AdsLmap>1</AdsLmap>
+            <AdsLcgr>1</AdsLcgr>
+            <AdsLsym>1</AdsLsym>
+            <AdsLszi>1</AdsLszi>
+            <AdsLtoi>1</AdsLtoi>
+            <AdsLsun>1</AdsLsun>
+            <AdsLven>1</AdsLven>
+            <AdsLsxf>1</AdsLsxf>
+            <RvctClst>0</RvctClst>
+            <GenPPlst>0</GenPPlst>
+            <AdsCpuType>"Cortex-M0"</AdsCpuType>
+            <RvctDeviceName></RvctDeviceName>
+            <mOS>0</mOS>
+            <uocRom>0</uocRom>
+            <uocRam>0</uocRam>
+            <hadIROM>1</hadIROM>
+            <hadIRAM>1</hadIRAM>
+            <hadXRAM>0</hadXRAM>
+            <uocXRam>0</uocXRam>
+            <RvdsVP>0</RvdsVP>
+            <RvdsMve>0</RvdsMve>
+            <hadIRAM2>0</hadIRAM2>
+            <hadIROM2>0</hadIROM2>
+            <StupSel>8</StupSel>
+            <useUlib>1</useUlib>
+            <EndSel>1</EndSel>
+            <uLtcg>0</uLtcg>
+            <nSecure>0</nSecure>
+            <RoSelD>3</RoSelD>
+            <RwSelD>3</RwSelD>
+            <CodeSel>0</CodeSel>
+            <OptFeed>0</OptFeed>
+            <NoZi1>0</NoZi1>
+            <NoZi2>0</NoZi2>
+            <NoZi3>0</NoZi3>
+            <NoZi4>0</NoZi4>
+            <NoZi5>0</NoZi5>
+            <Ro1Chk>0</Ro1Chk>
+            <Ro2Chk>0</Ro2Chk>
+            <Ro3Chk>0</Ro3Chk>
+            <Ir1Chk>1</Ir1Chk>
+            <Ir2Chk>0</Ir2Chk>
+            <Ra1Chk>0</Ra1Chk>
+            <Ra2Chk>0</Ra2Chk>
+            <Ra3Chk>0</Ra3Chk>
+            <Im1Chk>1</Im1Chk>
+            <Im2Chk>0</Im2Chk>
+            <OnChipMemories>
+              <Ocm1>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm1>
+              <Ocm2>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm2>
+              <Ocm3>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm3>
+              <Ocm4>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm4>
+              <Ocm5>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm5>
+              <Ocm6>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm6>
+              <IRAM>
+                <Type>0</Type>
+                <StartAddress>0x20000000</StartAddress>
+                <Size>0x20000</Size>
+              </IRAM>
+              <IROM>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x40000</Size>
+              </IROM>
+              <XRAM>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </XRAM>
+              <OCR_RVCT1>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT1>
+              <OCR_RVCT2>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT2>
+              <OCR_RVCT3>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT3>
+              <OCR_RVCT4>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x40000</Size>
+              </OCR_RVCT4>
+              <OCR_RVCT5>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT5>
+              <OCR_RVCT6>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT6>
+              <OCR_RVCT7>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT7>
+              <OCR_RVCT8>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT8>
+              <OCR_RVCT9>
+                <Type>0</Type>
+                <StartAddress>0x20000000</StartAddress>
+                <Size>0x20000</Size>
+              </OCR_RVCT9>
+              <OCR_RVCT10>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT10>
+            </OnChipMemories>
+            <RvctStartVector></RvctStartVector>
+          </ArmAdsMisc>
+          <Cads>
+            <interw>1</interw>
+            <Optim>3</Optim>
+            <oTime>0</oTime>
+            <SplitLS>0</SplitLS>
+            <OneElfS>0</OneElfS>
+            <Strict>0</Strict>
+            <EnumInt>0</EnumInt>
+            <PlainCh>0</PlainCh>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <wLevel>1</wLevel>
+            <uThumb>0</uThumb>
+            <uSurpInc>0</uSurpInc>
+            <uC99>1</uC99>
+            <uGnu>0</uGnu>
+            <useXO>0</useXO>
+            <v6Lang>1</v6Lang>
+            <v6LangP>1</v6LangP>
+            <vShortEn>1</vShortEn>
+            <vShortWch>1</vShortWch>
+            <v6Lto>0</v6Lto>
+            <v6WtE>0</v6WtE>
+            <v6Rtti>0</v6Rtti>
+            <VariousControls>
+              <MiscControls></MiscControls>
+              <Define>__USEKEILCOMPILE__</Define>
+              <Undefine></Undefine>
+              <IncludePath>..\..\..\..\..\Librarier\core;..\..\..\..\..\Librarier\sdk;..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der;..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\ccid;..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core;..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_ccid_Device_Demo;..\..\user</IncludePath>
+            </VariousControls>
+          </Cads>
+          <Aads>
+            <interw>1</interw>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <thumb>0</thumb>
+            <SplitLS>0</SplitLS>
+            <SwStkChk>0</SwStkChk>
+            <NoWarn>0</NoWarn>
+            <uSurpInc>0</uSurpInc>
+            <useXO>0</useXO>
+            <uClangAs>0</uClangAs>
+            <VariousControls>
+              <MiscControls></MiscControls>
+              <Define></Define>
+              <Undefine></Undefine>
+              <IncludePath></IncludePath>
+            </VariousControls>
+          </Aads>
+          <LDads>
+            <umfTarg>0</umfTarg>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <noStLib>0</noStLib>
+            <RepFail>1</RepFail>
+            <useFile>0</useFile>
+            <TextAddressRange>0x00000000</TextAddressRange>
+            <DataAddressRange>0xd0000</DataAddressRange>
+            <pXoBase></pXoBase>
+            <ScatterFile>.\Objects\YC3121_keil.sct</ScatterFile>
+            <IncludeLibs></IncludeLibs>
+            <IncludeLibsPath></IncludeLibsPath>
+            <Misc></Misc>
+            <LinkerInputFile></LinkerInputFile>
+            <DisabledWarnings></DisabledWarnings>
+          </LDads>
+        </TargetArmAds>
+      </TargetOption>
+      <Groups>
+        <Group>
+          <GroupName>core</GroupName>
+          <Files>
+            <File>
+              <FileName>misc.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\core\misc.c</FilePath>
+            </File>
+            <File>
+              <FileName>system.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\core\system.c</FilePath>
+            </File>
+            <File>
+              <FileName>bt_code.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\core\bt_code.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>main</GroupName>
+          <Files>
+            <File>
+              <FileName>main.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\user\main.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>sdk</GroupName>
+          <Files>
+            <File>
+              <FileName>yc_gpio.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_gpio.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_uart.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_uart.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_timer.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_timer.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_ipc.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_ipc.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_otp.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_otp.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_sysctrl.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_sysctrl.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_lpm.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_lpm.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>startup</GroupName>
+          <Files>
+            <File>
+              <FileName>flash_start.s</FileName>
+              <FileType>2</FileType>
+              <FilePath>..\..\..\..\..\Librarier\startup\flash_start.s</FilePath>
+            </File>
+            <File>
+              <FileName>startup.s</FileName>
+              <FileType>2</FileType>
+              <FilePath>..\..\..\..\..\Librarier\startup\startup.s</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>USB</GroupName>
+          <Files>
+            <File>
+              <FileName>usb_core.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\usb_core.c</FilePath>
+            </File>
+            <File>
+              <FileName>Usb_dcd.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\Usb_dcd.c</FilePath>
+            </File>
+            <File>
+              <FileName>usbd_ccid_cmd.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\ccid\usbd_ccid_cmd.c</FilePath>
+            </File>
+            <File>
+              <FileName>usbd_ccid_core.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\ccid\usbd_ccid_core.c</FilePath>
+            </File>
+            <File>
+              <FileName>usbd_ccid_if.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\ccid\usbd_ccid_if.c</FilePath>
+            </File>
+            <File>
+              <FileName>usbd_core.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_core.c</FilePath>
+            </File>
+            <File>
+              <FileName>usbd_ioreq.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_ioreq.c</FilePath>
+            </File>
+            <File>
+              <FileName>usbd_req.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_req.c</FilePath>
+            </File>
+            <File>
+              <FileName>sc_itf.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_ccid_Device_Demo\sc_itf.c</FilePath>
+            </File>
+            <File>
+              <FileName>usb_main.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_ccid_Device_Demo\usb_main.c</FilePath>
+            </File>
+            <File>
+              <FileName>usbd_desc.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_ccid_Device_Demo\usbd_desc.c</FilePath>
+            </File>
+            <File>
+              <FileName>usbd_usr.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_ccid_Device_Demo\usbd_usr.c</FilePath>
+            </File>
+            <File>
+              <FileName>Usb_dcd_init.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_ccid_Device_Demo\Usb_dcd_init.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+      </Groups>
+    </Target>
+  </Targets>
+
+  <RTE>
+    <apis/>
+    <components/>
+    <files/>
+  </RTE>
+
+</Project>
Index: usb_ccid/user/main.c
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_ccid/user/main.c	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_ccid/user/main.c	(working copy)
@@ -0,0 +1,93 @@
+/**
+  ******************************************************************************
+  * @file    3121Demo_1.0V\ModuleDemo\USB\USB_CCID\user\main.c
+  * @author  Yichip Application Team
+  * @version V1.0.0
+  * @date    23-Oct-2019
+  * @brief   USB CCID test program.
+  ******************************************************************************
+  * @attention
+  *
+  * COPYRIGHT 2019 Yichip Microelectronics
+  *
+  * The purpose of this demo is to provide guidance to customers engaged in
+  * programming work to guide them smoothly to product development,
+  * so as to save their time.
+  *
+  * Therefore, Yichip microelectronics shall not be responsible for any direct,
+  * indirect or consequential damages caused by any content of this demo
+  * and/or contained in this code used by the customer in its products.
+  *
+  ******************************************************************************
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "yc3121.h"
+#include "yc_gpio.h"
+#include "yc_uart.h"
+#include "yc_ipc.h"
+#include "usb_main.h"
+#include "board_config.h"
+
+/* Private macro -------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+/* Private function prototypes -----------------------------------------------*/
+void UART_Configuration(void);
+
+uint8_t bt_standby = 0;
+
+#define UART_DEBUG
+
+/**
+  * @brief  Main program
+  * @param  None
+  * @retval None
+  */
+int main(void)
+{
+  UART_Configuration();
+
+  IpcInit();
+
+  MyPrintf("USB CCID Demo !\n\n");
+
+  usb_main();
+
+  while (1)
+  {
+
+  }
+}
+
+/**
+  * @brief  Serial port 0 initialization function.
+  * @param  None
+  * @retval None
+  */
+void UART_Configuration(void)
+{
+  UART_InitTypeDef UART_InitStruct;
+
+	/* Configure serial ports 0 RX and TX for IO. */
+	GPIO_Config(UART0_TX_PORT, UART0_TX_PIN, UART0_TXD);
+	GPIO_Config(UART0_RX_PORT, UART0_RX_PIN, UART0_RXD);
+
+  /* USARTx configured as follow:
+  - BaudRate = 115200 baud
+  - Word Length = 8 Bits
+  - Stop Bit = 1 Stop Bit
+  - Parity = No Parity
+  - Hardware flow control disabled (RTS and CTS signals)
+  - Receive and transmit enabled
+  */
+	UART_InitStruct.BaudRate = UARTBAUD;			//Configure serial port baud rate, the baud rate defaults to 128000.
+	UART_InitStruct.DataBits = Databits_8b;
+	UART_InitStruct.StopBits = StopBits_1;
+	UART_InitStruct.Parity = Parity_None;
+	UART_InitStruct.FlowCtrl = FlowCtrl_None;
+	UART_InitStruct.Mode = Mode_duplex;
+	
+	UART_Init(UART0, &UART_InitStruct);
+}
+
+/************************ (C) COPYRIGHT Yichip Microelectronics *****END OF FILE****/
Index: usb_ccid/user/usb_test/usb_test.h
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_ccid/user/usb_test/usb_test.h	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_ccid/user/usb_test/usb_test.h	(working copy)
@@ -0,0 +1,176 @@
+#define  HCI_CLASS_REQUEST_TYPE  0x20
+
+                                       // SetReport HID Request
+#define  HID_CLASS_REQUEST_TYPE  0x21 
+
+// Standard Request Codes
+#define  GET_STATUS              0x00  // Code for Get Status
+#define  CLEAR_FEATURE           0x01  // Code for Clear Feature
+#define  SET_FEATURE             0x03  // Code for Set Feature
+#define  SET_ADDRESS             0x05  // Code for Set Address
+#define  GET_DESCRIPTOR          0x06  // Code for Get Descriptor
+#define  SET_DESCRIPTOR          0x07  // Code for Set Descriptor(not used)
+#define  GET_CONFIGURATION       0x08  // Code for Get Configuration
+#define  SET_CONFIGURATION       0x09  // Code for Set Configuration
+#define  GET_INTERFACE           0x0A  // Code for Get Interface
+#define  SET_INTERFACE           0x0B  // Code for Set Interface
+#define  SYNCH_FRAME             0x0C  // Code for Synch Frame(not used)
+
+// Standard Descriptor Types
+#define  DSC_DEVICE              0x01  // Device Descriptor
+#define  DSC_CONFIG              0x02  // Configuration Descriptor
+#define  DSC_STRING              0x03  // String Descriptor
+#define  DSC_INTERFACE           0x04  // Interface Descriptor
+#define  DSC_ENDPOINT            0x05  // Endpoint Descriptor
+
+// HID Descriptor Types
+#define  DSC_HID			     0x21  // HID Class Descriptor
+#define  DSC_HID_REPORT			 0x22  // HID Report Descriptor
+
+// Define bmRequestType bitmaps
+#define  IN_DEVICE               0x00  // Request made to device,
+                                       // direction is IN
+#define  OUT_DEVICE              0x80  // Request made to device,
+                                       // direction is OUT
+#define  IN_INTERFACE            0x01  // Request made to interface,
+                                       // direction is IN
+#define  OUT_INTERFACE           0x81  // Request made to interface,
+                                       // direction is OUT
+#define  IN_ENDPOINT             0x02  // Request made to endpoint,
+                                       // direction is IN
+#define  OUT_ENDPOINT            0x82  // Request made to endpoint,
+
+
+// HID Request Codes
+#define  GET_REPORT 		     0x01   // Code for Get Report
+#define  GET_IDLE				 0x02   // Code for Get Idle
+#define  GET_PROTOCOL			 0x03   // Code for Get Protocol
+#define  SET_REPORT				 0x09   // Code for Set Report
+#define  SET_IDLE				 0x0A   // Code for Set Idle
+#define  SET_PROTOCOL			 0x0B   // Code for Set Protocol
+
+#define  HID_RPT_ID           	0xf2
+#define  HID_RPT_SIZE         	0x3f
+
+#define  EP0_PACKET_SIZE         0x40 
+#define  EP1_PACKET_SIZE         6
+#define  HID_REPORT_DESCRIPTOR_SIZE    0x001B
+
+#define  be16(x) ((x<<8)|(x>>8))                
+
+#define USB_STATUS_FIFO0_READY		1
+#define USB_STATUS_FIFO1_READY		2
+#define USB_STATUS_FIFO3_READY		8
+#define USB_STATUS_SETUP			0x10
+#define USB_STATUS_SUSPEND			0x20
+#define USB_STATUS_NAK				0x40
+#define USB_STATUS_STALL			0x80
+
+typedef struct
+{
+	byte  bmRequestType;
+	byte  bRequest;
+	word wValue;
+	word wIndex;
+	word wLength;
+} usb_setup;
+
+//------------------------------------------
+// Standard Device Descriptor Type Defintion
+//------------------------------------------
+typedef /*code*/ struct
+{
+   byte  bLength;              // Size of this Descriptor in Bytes
+   byte  bDescriptorType;      // Descriptor Type (=1)
+   word bcdUSB;               // USB Spec Release Number in BCD
+   byte  bDeviceClass;         // Device Class Code
+   byte  bDeviceSubClass;      // Device Subclass Code
+   byte  bDeviceProtocol;      // Device Protocol Code
+   byte  bMaxPacketSize0;      // Maximum Packet Size for EP0
+   word idVendor;             // Vendor ID
+   word idProduct;            // Product ID
+   word bcdDevice;            // Device Release Number in BCD
+   byte  iManufacturer;        // Index of String Desc for Manufacturer
+   byte  iProduct;             // Index of String Desc for Product
+   byte  iSerialNumber;        // Index of String Desc for SerNo
+   byte  bNumConfigurations;   // Number of possible Configurations
+} device_descriptor;              // End of Device Descriptor Type
+
+//--------------------------------------------------
+// Standard Configuration Descriptor Type Definition
+//--------------------------------------------------
+typedef /*code*/ struct
+{
+   byte  bLength;              // Size of this Descriptor in Bytes
+   byte  bDescriptorType;      // Descriptor Type (=2)
+   word wTotalLength;         // Total Length of Data for this Conf
+   byte  bNumInterfaces;       // No of Interfaces supported by this
+                                  // Conf
+   byte  bConfigurationValue;  // Designator Value for *this*
+                                  // Configuration
+   byte  iConfiguration;       // Index of String Desc for this Conf
+   byte  bmAttributes;         // Configuration Characteristics (see below)
+   byte  bMaxPower;            // Max. Power Consumption in this
+                                  // Conf (*2mA)
+} configuration_descriptor;       // End of Configuration Descriptor Type
+
+//----------------------------------------------
+// Standard Interface Descriptor Type Definition
+//----------------------------------------------
+typedef /*code*/ struct
+{
+   byte  bLength;              // Size of this Descriptor in Bytes
+   byte  bDescriptorType;      // Descriptor Type (=4)
+   byte  bInterfaceNumber;     // Number of *this* Interface (0..)
+   byte  bAlternateSetting;    // Alternative for this Interface (if any)
+   byte  bNumEndpoints;        // No of EPs used by this IF (excl. EP0)
+   byte  bInterfaceClass;      // Interface Class Code
+   byte  bInterfaceSubClass;   // Interface Subclass Code
+   byte  bInterfaceProtocol;   // Interface Protocol Code
+   byte  iInterface;           // Index of String Desc for this Interface
+} interface_descriptor;           // End of Interface Descriptor Type
+
+//------------------------------------------
+// Standard Class Descriptor Type Definition
+//------------------------------------------
+typedef /*code */struct
+{
+   byte  bLength;              // Size of this Descriptor in Bytes (=9)
+   byte  bDescriptorType;      // Descriptor Type (HID=0x21)
+   word bcdHID;    			  // HID Class Specification
+                                  // release number (=1.01)
+   byte  bCountryCode;         // Localized country code
+   byte  bNumDescriptors;	  // Number of class descriptors to follow
+   byte  bReportDescriptorType;// Report descriptor type (HID=0x22)
+   unsigned int wItemLength;	  // Total length of report descriptor table
+} class_descriptor;               // End of Class Descriptor Type
+
+//---------------------------------------------
+// Standard Endpoint Descriptor Type Definition
+//---------------------------------------------
+typedef /*code*/ struct
+{
+   byte  bLength;              // Size of this Descriptor in Bytes
+   byte  bDescriptorType;      // Descriptor Type (=5)
+   byte  bEndpointAddress;     // Endpoint Address (Number + Direction)
+   byte  bmAttributes;         // Endpoint Attributes (Transfer Type)
+   word wMaxPacketSize;	      // Max. Endpoint Packet Size
+   byte  bInterval;            // Polling Interval (Interrupt) ms
+} endpoint_descriptor;            // End of Endpoint Descriptor Type
+
+//---------------------------------------------
+// HID Configuration Descriptor Type Definition
+//---------------------------------------------
+// From "USB Device Class Definition for Human Interface Devices (HID)".
+// Section 7.1:
+// "When a Get_Descriptor(Configuration) request is issued,
+// it returns the Configuration descriptor, all Interface descriptors,
+// all Endpoint descriptors, and the HID descriptor for each interface."
+typedef /*code*/ struct {
+	configuration_descriptor 	hid_configuration_descriptor;
+	interface_descriptor 		hid_interface_descriptor;
+	class_descriptor 			hid_descriptor;
+	endpoint_descriptor 		hid_endpoint_in_descriptor;
+	endpoint_descriptor 		hid_endpoint_out_descriptor;
+} hid_configuration_descriptor;
+
Index: usb_ccid/user/usb_test/usb_test.c
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_ccid/user/usb_test/usb_test.c	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_ccid/user/usb_test/usb_test.c	(working copy)
@@ -0,0 +1,625 @@
+#include "yc3121.h"
+#include "usb_test.h"
+#ifndef USB_CCID_DEMO
+
+extern void dmacopy_nowait(byte* dest, byte* src, int len);
+//extern void savelist(byte *dat);
+extern void test_display(int);
+extern byte aes[];
+#define VENDOR_ID     0x1937
+#define PRODUCT_ID    0x1135
+
+const device_descriptor devicedesc =
+{
+  18,           //bLength
+  0x01,         //bDescriptorType
+  0x0002,         //bcdUSB
+  0x00,         //bDeviceClass
+  0x00,         //bDeviceSubClass
+  0x00,         //bDeviceProtocol
+  EP0_PACKET_SIZE,    //bMaxPacketSize0
+  VENDOR_ID,        //idVendor
+  PRODUCT_ID,     //idProduct
+  0x0001,         //bcdDevice
+  0x01,         //iManufacturer
+  0x02,         //iProduct
+  0x00,         //iSerialNumber
+  0x01          //bNumConfigurations
+};
+
+
+const byte hidreportdesc[] =
+{
+  /*
+  0x06, 0x00, 0xff,   // USAGE_PAGE (Vendor Defined Page 1)
+  0x09, 0x01,       // USAGE (Vendor Usage 1)
+  0xa1, 0x01,     // COLLECTION (Application)
+
+  0x85, HID_RPT_ID, // Report ID
+  0x95, HID_RPT_SIZE, // REPORT_COUNT ()
+  0x75,0x08,      //REPORT_SIZE(8)
+  0x26,0x00,0x01,   //LOGICAL_MAXIMUM(255)
+  0x15,0x00,      //LOGICAL_MINIMUM(0)
+  0x09,0x01,      //USAGE(VendorUsage1)
+  0x81,0x02,      //INPUT(Data,Var,Abs)
+  0x09,0x01,      //USAGE(VendorUsage1)
+  0x91,0x02,      //OUTPUT(Data,Var,Abs)
+
+  0xC0        // END Application Collection
+  */
+  /*
+  //====================??====75====================================
+    0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)
+    0x09, 0x02,                    // USAGE (Mouse)
+    0xa1, 0x01,                    // COLLECTION (Application)
+    0x09, 0x01,                    //   USAGE (Pointer)
+    0xa1, 0x00,                    //   COLLECTION (Physical)
+    0x05, 0x09,                    //     USAGE_PAGE (Button)
+    0x19, 0x01,                    //     USAGE_MINIMUM (Button 1)
+    0x29, 0x03,                    //     USAGE_MAXIMUM (Button 3)
+    0x15, 0x00,                    //     LOGICAL_MINIMUM (0)
+    0x25, 0x01,                    //     LOGICAL_MAXIMUM (1)
+    0x95, 0x03,                    //     REPORT_COUNT (5)
+    0x75, 0x01,                    //     REPORT_SIZE (1)
+    0x81, 0x02,                    //     INPUT (Data,Var,Abs)
+    0x95, 0x01,                    //     REPORT_COUNT (1)
+    0x75, 0x05,                    //     REPORT_SIZE (3)
+    0x81, 0x03,                    //     INPUT (Cnst,Var,Abs)
+    0x05, 0x01,                    //     USAGE_PAGE (Generic Desktop)
+    0x09, 0x30,                    //     USAGE (X)
+    0x09, 0x31,                    //     USAGE (Y)
+    0x09, 0x38,                    //     USAGE (Wheel)
+    0x15, 0x81,                    //     LOGICAL_MINIMUM (-127)
+    0x25, 0x7f,                    //     LOGICAL_MAXIMUM (127)
+    0x75, 0x08,                    //     REPORT_SIZE (8)
+    0x95, 0x03,                    //     REPORT_COUNT (1)
+    0x81, 0x06,                    //     INPUT (Data,Var,Rel)
+    0xc0,                          //   END_COLLECTION
+    0xc0,                           // END_COLLECTION
+    */
+  0x05, 0x01, // Global Generic Desktop
+  0x09, 0x02, // Local Mouse
+  0xa1, 0x01, // Main app collection
+  0x09, 0x01, // Local Pointer
+  0xa1, 0x00, // Main phy collection
+  0x95, 0x03, // Global ReportCount
+  0x75, 0x01, // Global ReportSize
+  0x05, 0x09, // Global Button
+  0x19, 0x01, // Local Usage Min
+  0x29, 0x03, // Local Usage Max
+  0x15, 0x00, // Global Logical Min
+  0x25, 0x01, // Global Logical Max
+  0x81, 0x02, // Main Input(Data,Var,Abs)
+  0x95, 0x01, // Global ReportCount
+  0x75, 0x05, // Global ReportSize
+  0x81, 0x03, // Main Input(Cnsr,Var,Abs)
+  0x95, 0x03, 0x75, 0x08, // Global ReportCount Global ReportSize
+  0x05, 0x01, // Global Generic Desktip
+  0x09, 0x30, // Local X
+  0x09, 0x31, // Local Y
+  0x09, 0x38, // Locak Wheel
+  0x15, 0x81, // Global Logical Min
+  0x25, 0x7f, // Global Logical Max
+  0x81, 0x06, // Main Input(Data,Var,Rel)
+  0xc0, // Main End collection
+  0xc0 // Main End collection
+};
+
+const byte confdesc[] =
+{
+  /*
+    // configuration
+    0x09,       // Length
+    0x02,       // Type (configuration)
+    41,         // Totallength (= 9+9+9+7+7)
+    0x00,
+    0x01,       // NumInterfaces
+    0x01,       // bConfigurationValue
+    0x00,       // iConfiguration
+    0xa0,       // bmAttributes
+    0x31,         // MaxPower (in 2mA units)
+
+  // interface
+    0x09,         // Length
+    0x04,         // Type (interface)
+    0x00,         // interface #0
+    0x00,         // alternate interface #0
+    0x02,         // number of endpoints
+    0x03,         // Interface class (3 = HID)
+    0x00,         // Interface subclass
+    0x02,         // Interface protocol
+    0x00,         // no string confdesc
+
+  // hid
+    0x09,         // Length
+    0x21,         // Type (HID)
+    0x01,         // bcdhid
+    0x01,
+    0x00,         // country code
+    0x01,         // number of descriptors
+    0x22,         // descriptor type
+    0x1b,         // total length of report descriptor
+    0x00,
+
+  // IN endpoint
+    0x07,         // Length
+    0x05,         // Type (Endpoint)
+    0x83,         // bit7:Direction is IN, bit3-0:endpoint number 1
+    0x03,         // bit1-0:transfer type is interrupt
+    HID_RPT_SIZE,     // maximum packet size
+    0x00,
+    0x01,         // polling interval is 1 frame
+
+  // OUT endpoint
+    0x07,         // Length
+    0x05,         // Type (Endpoint)
+    0x03,         // bit7:Direction is IN, bit3-0:endpoint number 1
+    0x03,         // bit1-0:transfer type is interrupt
+    HID_RPT_SIZE,     // maximum packet size
+    0x00,
+    0x01        // polling interval is 1 frame
+  */
+
+
+
+  //config
+  0x09,//0xLength
+  0x02,//0xType
+  41,         // Totallength (= 9+9+9+7+7)
+  0x00,
+  0x01,//0xNumInterfaces
+  0x01,//0xbConfigurationValue
+  0x00,//0xstringindexConfiguration
+  0x80,//0xbmAttributes
+  0x32,//0xMaxPower0x(in0x2mA0xunits)
+
+  //0xinterface_descriptor0xhid_interface_descriptor--mouse
+  0x09,//0xbLength
+  0x04,//0xbDescriptorType
+  0x00,//0xbInterfaceNumber
+  0x00,//0xbAlternateSetting
+  0x01,//0xbNumEndpoints
+  0x03,//0xbInterfaceClass0x(30x=0xHID)
+  0x01,//0xbInterfaceSubClass
+  0x02,//0xbInterfaceProcotol0x0x01 kb; 0x0x2=mouse
+  0x00,//0xiInterface
+
+
+  //class_descriptor hid_descriptor--mouse
+  0x09,    //bLength
+  0x21,    //bDescriptorType
+  0x10, 0x01, //bcdHID
+  0x21,    //bCountryCode
+  0x01,    //bNumDescriptors
+  0x22,    //bDescriptorType
+  sizeof(hidreportdesc) & 0xff,  //wItemLength (tot. len. of report confdesc)
+  (sizeof(hidreportdesc) >> 8) & 0xff,
+
+  //endpoint_descriptor hid_endpoint_in_descriptor--mouse
+
+  0x07,    //bLength
+  0x05,    //bDescriptorType
+  0x81,    //bEndpointAddress
+  0x03,    // bmAttributes
+  EP1_PACKET_SIZE, 0x00, //MaxPacketSize (LITTLE  ENDIAN)
+  0x0A,    //bInterval
+};
+
+
+
+
+
+char const string0[] = "\x4\x3\x9\x4";
+char const string1[] = "Yichip Technologies";
+char const string2[] = "yc3121 usb mouse";
+char const string3[] = "b120300001";
+
+char const* const string[] =   {string0, string1, string2, string3};
+
+
+const byte strlength[] = {sizeof(string0), sizeof(string1), sizeof(string2), sizeof(string3)};
+
+byte const* bufptr;
+byte remain, isstr;
+usb_setup usb0_setup;
+int usblen;
+byte mcmd;
+byte usbbuf[256];
+
+static void usb0_force_stall(void)
+{
+  USB_STALL =  1;
+}
+
+static void usb_trig(int ep)
+{
+  int i;
+  USB_TRG =  1 << ep;
+  return;
+  USB_STATUS = USB_STATUS_NAK;
+
+  for (i = 0; i < 10000; i++)
+    if (USB_STATUS & USB_STATUS_NAK)
+    {
+      break;
+    }
+
+  USB_FIFO_EMPTY = 1 << ep;
+
+  for (i = 0; i < 10000; i++)
+  {
+    if (USB_FIFO_EMPTY & 1 << ep)
+    {
+      break;
+    }
+  }
+}
+
+static void usb0_tx()
+{
+  byte len, i;
+
+  if (remain)
+  {
+    len = remain > EP0_PACKET_SIZE ? EP0_PACKET_SIZE : remain;
+
+    for (i = 0; i < len; i++)
+    {
+      USB_EP(0) = bufptr[i];
+
+      if (isstr)
+      {
+        USB_EP(0) = 0;
+      }
+    }
+
+    //    savelist((byte*)bufptr);
+    bufptr += len;
+    remain -= len;
+    usb_trig(0);
+    GPIO_CONFIG(30) = GPCFG_OUTPUT_HIGH;
+    delay(10);
+    GPIO_CONFIG(30) = GPCFG_OUTPUT_LOW;
+    USB_INT_MASK(1) =  0xfe;
+  }
+  else
+  {
+    USB_INT_MASK(1) =  0xff;
+  }
+}
+
+static void usb0_respond(byte const* buff, byte size)
+{
+  if (isstr)
+  {
+    USB_EP(0) = (size + 1) * 2;
+    USB_EP(0) = 3;
+  }
+
+  if (size > usb0_setup.wLength)
+  {
+    size = usb0_setup.wLength;
+  }
+
+  bufptr = buff;
+  remain = size;
+  usb0_tx();
+}
+
+
+static void usb0_request_set_address(void)
+{
+  MyPrintf("\n usb0_request_set_address:");
+
+  if (usb0_setup.bmRequestType == IN_DEVICE && usb0_setup.wIndex == 0
+      && usb0_setup.wLength == 0)
+  {
+    USB_TRG = 0x10;
+    USB_ADDR = usb0_setup.wValue;
+    MyPrintf("%02x", usb0_setup.wValue);
+  }
+  else
+  {
+    usb0_force_stall();
+  }
+
+  MyPrintf("\n");
+}
+/*
+static byte strlength(char const *str)
+{
+  byte i;
+  for(i = 0;str[i];i++);
+  return i;
+}
+*/
+static void usb0_request_set_configuration(void)
+{
+  MyPrintf("\n usb0_request_set_configuration:");
+
+  if (usb0_setup.bmRequestType == IN_DEVICE
+      && usb0_setup.wIndex == 0 && usb0_setup.wLength == 0
+      && usb0_setup.wValue <= 1)
+  {
+    USB_TRG = 0x10;
+  }
+  else
+  {
+    usb0_force_stall();
+  }
+}
+
+static void usb0_request_set_interface(void)
+{
+  MyPrintf("\n usb0_request_set_interface:");
+
+  if (usb0_setup.bmRequestType == IN_INTERFACE
+      && usb0_setup.wValue == 0
+      && usb0_setup.wLength == 0)
+  {
+    USB_TRG = 0x10;
+  }
+  else
+  {
+    usb0_force_stall();
+  }
+}
+
+static void usb0_request_get_descriptor(void)
+{
+  MyPrintf("\n usb0_request_get_descriptor:");
+
+  byte index;
+  isstr = 0;
+
+  switch (usb0_setup.wValue >> 8)
+  {
+    case DSC_DEVICE:
+      MyPrintf("DEVICE:%d\n", sizeof(devicedesc));
+      usb0_respond((byte const*)&devicedesc, sizeof(devicedesc));
+      break;
+
+    case DSC_CONFIG:
+      MyPrintf("CONFIG:%d\n", sizeof(confdesc));
+      usb0_respond(confdesc, sizeof(confdesc));
+      break;
+
+    case DSC_STRING:
+      MyPrintf("STRING:\n");
+      index = usb0_setup.wValue  & 3;
+      isstr = index > 0;
+      usb0_respond((byte const*)string[index], strlength[index] - 1);
+      break;
+
+    case DSC_HID:
+      MyPrintf("DSC_HID mou\n");
+      usb0_respond(confdesc + 18, confdesc[18]);
+      break;
+
+    case DSC_HID_REPORT:
+      MyPrintf("DSC_HID_REPORT mou\n");
+      usb0_respond(hidreportdesc, sizeof(hidreportdesc));
+      break;
+
+    /*
+      case DSC_INTERFACE:
+        usb0_respond((byte*)&desc_interface,sizeof(desc_interface));
+        break;
+      case DSC_ENDPOINT:
+        if (usb0_setup.wValue&0xFF == IN_EP1)
+        {
+          usb0_respond((byte*)&desc_ep_in,sizeof(desc_ep_in));
+        }
+        else if (usb0_setup.wValue&0xFF == OUT_EP1)
+        {
+          usb0_respond((byte*)&desc_ep_out,sizeof(desc_ep_out));
+        }
+        else
+        {
+          usb0_force_stall();
+        }
+        break;
+    */
+    default:
+      usb0_force_stall();
+      break;
+  }
+}
+
+void USB_IRQHandler()
+{
+  int i, j, len;
+  byte status, empty;
+  byte* buf = (byte*)&usb0_setup;
+  status = USB_STATUS;
+  empty = USB_FIFO_EMPTY;
+  USB_FIFO_EMPTY =  empty;
+  USB_STATUS =  status;
+
+  if (empty & 1)
+  {
+    usb0_tx();
+  }
+
+  if (status & USB_STATUS_FIFO0_READY)
+  {
+    len = USB_EP_LEN(0);
+
+    for (i = 0; i < len; i++)
+    {
+      buf[i] = USB_EP(0);
+    }
+
+    //    savelist(buf);
+    if (status & USB_STATUS_SETUP)
+    {
+      usb0_setup.wLength = usb0_setup.wLength;
+      usb0_setup.wValue = usb0_setup.wValue;
+
+      if ((usb0_setup.bmRequestType & ~0x80) == HCI_CLASS_REQUEST_TYPE)
+      {
+        USB_TRG = 0x10;
+      }
+      else if ((usb0_setup.bmRequestType & ~0x80) == HID_CLASS_REQUEST_TYPE)
+      {
+        if (usb0_setup.bRequest == SET_IDLE)
+        {
+          USB_TRG = 0x10;
+        }
+        else
+        {
+        }
+      }
+      else
+      {
+        switch (usb0_setup.bRequest)
+        {
+          case SET_ADDRESS:
+            usb0_request_set_address();
+            break;
+
+          case GET_DESCRIPTOR:
+            usb0_request_get_descriptor();
+            break;
+
+          case SET_CONFIGURATION:
+            usb0_request_set_configuration();
+            break;
+
+          case SET_INTERFACE:
+            usb0_request_set_interface();
+            break;
+
+          /*
+                  case GET_STATUS:
+                    usb0_request_get_status();
+                    break;
+                      case CLEAR_FEATURE:
+                    usb0_request_clear_feature();
+                    break;
+                  case SET_FEATURE:
+                    usb0_request_set_feature();
+                    break;
+                  case GET_CONFIGURATION:
+                    usb0_request_get_configuration();
+                    break;
+                  case GET_INTERFACE:
+                    usb0_request_get_interface();
+                    break;
+          */
+          default:
+            usb0_force_stall();
+            break;
+        }
+      }
+
+    }
+
+  }
+
+  if (status & USB_STATUS_FIFO1_READY)
+  {
+    USB_STATUS =  USB_STATUS_FIFO1_READY;
+    len = USB_EP_LEN(1);
+    usblen = len;
+
+    for (i = 0; i < len; i++)
+    {
+      usbbuf[i] = USB_EP(1);
+    }
+
+    USB_TRG = 0x20;
+    return;
+
+    for (i = 0; i < 64; i++)
+    {
+      USB_EP(1) = aes[i];
+    }
+
+    usb_trig(1);
+  }
+
+  if (status & USB_STATUS_FIFO3_READY)
+  {
+    USB_STATUS =  USB_STATUS_FIFO3_READY;
+    len = USB_EP_LEN(3) | (int)USB_EP_LEN(4) << 8;
+    usblen = len;
+
+    for (i = 0; i < len; i++)
+    {
+      usbbuf[i] = USB_EP(3);
+    }
+
+    for (i = 0; i < len; i++)
+      //      for(j = 0;j < 4;j++)
+    {
+      USB_EP(3) = usbbuf[i];
+    }
+
+    usb_trig(3);
+  }
+
+}
+
+void test_usb()
+{
+  int flag = 0;
+  remain = 0;
+  enable_clock(CLKCLS_BT);
+  enable_clock(CLKCLS_USB);
+  BT_CLKPLL_EN = 0xff;
+  SYSCTRL_HCLK_CON |= 1 << 11;
+  USB_CONFIG =  0x30;
+  USB_INT_MASK(0) =  0xf0;
+  USB_INT_MASK(1) =  0xff;
+  USB_INT_MASK(2) =  0xff;
+  enable_intr(INTR_USB);
+
+
+  while (1)
+  {
+    USB_EP(1) = 0x00;//report id
+    USB_EP(1) = (flag == 0) ? 0x02 : (flag == 1) ? 0x01 : 0x00; //key
+    USB_EP(1) = (flag == 0) ? 0x50 : (flag == 1) ? 0x00 : (flag == 2) ? 0xE2 : 0x00; //xlow
+    USB_EP(1) = (flag == 0) ? 0x00 : (flag == 1) ? 0x00 : (flag == 2) ? 0xFF : 0x00; //xhigh
+    USB_EP(1) = (flag == 0) ? 0x00 : (flag == 1) ? 0x30 : (flag == 2) ? 0x00 : 0xE2; //ylow
+    USB_EP(1) = (flag == 0) ? 0x00 : (flag == 1) ? 0x00 : (flag == 2) ? 0x00 : 0xFF; //yhigh
+    //    USB_EP(1) = 0x01;//wheel
+    //    USB_EP(1) = 0x00;//twheel
+    usb_trig(1);
+    delay_ms(1000);
+
+    if (flag > 2)
+    {
+      flag = 0;
+    }
+    else
+    {
+      flag++;
+    }
+  }
+
+
+  while (1)
+  {
+    mcmd += 2;
+    mcmd *= 2;
+  };
+
+  while (1)
+  {
+    if (mcmd)
+    {
+      USB_EP(1) = 0;
+      USB_EP(1) = mcmd;
+      USB_EP(1) = 0;
+      USB_EP(1) = 0;
+      USB_EP(1) = 0;
+      USB_EP(1) = 0;
+      USB_TRG =  2;
+      mcmd = 0;
+    }
+  }
+}
+
+#endif
Index: usb_cdc/prj/GCC/c.bat
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_cdc/prj/GCC/c.bat	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_cdc/prj/GCC/c.bat	(working copy)
@@ -0,0 +1,3 @@
+cls
+make clean
+make
\ No newline at end of file
Index: usb_cdc/prj/GCC/makefile
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_cdc/prj/GCC/makefile	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_cdc/prj/GCC/makefile	(working copy)
@@ -0,0 +1,249 @@
+
+ifeq ($(OS),Windows_NT)
+DIR = C:/gcc-arm-none-eabi-7-2018-q2-update-win32
+else
+DIR = /usr/gcc-arm-none-eabi-7-2018-q2-update
+endif
+
+ARCH = $(DIR)/bin/arm-none-eabi
+GCC = $(ARCH)-gcc
+LD = $(ARCH)-ld
+AS = $(ARCH)-as
+OBJCOPY = $(ARCH)-objcopy
+OBJDUMP = "$(ARCH)-objdump"
+LIB_PATH = ../../../../../Librarier
+USER_PATH = ../../user
+
+
+all : output/out.hex
+
+
+CORE_OBJS =  $(LIB_PATH)/startup/flash_start_gcc \
+             $(LIB_PATH)/core/system \
+             $(LIB_PATH)/core/misc \
+             $(LIB_PATH)/core/bt_code \
+             $(LIB_PATH)/sdk/yc_gpio \
+             $(LIB_PATH)/sdk/yc_timer \
+             $(LIB_PATH)/sdk/yc_ipc \
+             $(LIB_PATH)/sdk/yc_uart \
+             $(LIB_PATH)/sdk/yc_lpm \
+             $(LIB_PATH)/sdk/yc_otp \
+             $(LIB_PATH)/sdk/yc_sysctrl \
+             $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der/usb_core \
+             $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der/Usb_dcd \
+             $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der/Usb_dcd_init \
+             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core/usbd_core \
+             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core/usbd_ioreq \
+             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core/usbd_req \
+             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/class/CDC/usbd_cdc_core \
+             $(LIB_PATH)/sdk/yc_usb/scpu_usb_CDC_Device_Demo/usb_main \
+             $(LIB_PATH)/sdk/yc_usb/scpu_usb_CDC_Device_Demo/usbd_desc \
+             $(LIB_PATH)/sdk/yc_usb/scpu_usb_CDC_Device_Demo/usbd_usr \
+             $(LIB_PATH)/sdk/yc_usb/scpu_usb_CDC_Device_Demo/usb_bsp \
+             $(LIB_PATH)/sdk/yc_usb/scpu_usb_CDC_Device_Demo/usbd_cdc_vcp
+
+             
+USER_OBJS = $(USER_PATH)/main
+			
+OBJS = $(CORE_OBJS) $(USER_OBJS)
+
+INC_DIR = -I $(LIB_PATH)/core \
+          -I $(LIB_PATH)/sdk \
+          -I $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der \
+          -I $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core \
+          -I $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/class/CDC \
+          -I $(LIB_PATH)/sdk/yc_usb/scpu_usb_CDC_Device_Demo
+
+
+CFLAG =  -mthumb -mcpu=cortex-m0 -c -g -Os $(INC_DIR) $(DEF) -fno-toplevel-reorder -ffunction-sections -fdata-sections
+LDFLAG = -T output/ld.script -Map=output/memmap -lc -lm -lgcc -L "$(DIR)/lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m"  -L "$(DIR)/arm-none-eabi/lib/thumb/v6-m"
+
+define ldscript = 
+/* Linker script to configure memory regions. 
+ * Need modifying for a specific board. 
+ *   FLASH.ORIGIN: starting address of flash
+ *   FLASH.LENGTH: length of flash
+ *   RAM.ORIGIN: starting address of RAM bank 0
+ *   RAM.LENGTH: length of RAM bank 0
+ */
+MEMORY
+{
+  FLASH (rx) : ORIGIN = 0x1000000, LENGTH = 0x80000 /* 512K */
+  RAM (rwx) : ORIGIN = 0x20000, LENGTH = 0x10000 /* 64K */
+}
+
+/* Linker script to place sections and symbol values. Should be used together
+ * with other linker script that defines memory regions FLASH and RAM.
+ * It references following symbols, which must be defined in code:
+ *   Reset_Handler : Entry of reset handler
+ * 
+ * It defines following symbols, which code can use without definition:
+ *   __exidx_start
+ *   __exidx_end
+ *   __copy_table_start__
+ *   __copy_table_end__
+ *   __zero_table_start__
+ *   __zero_table_end__
+ *   __etext
+ *   __data_start__
+ *   __preinit_array_start
+ *   __preinit_array_end
+ *   __init_array_start
+ *   __init_array_end
+ *   __fini_array_start
+ *   __fini_array_end
+ *   __data_end__
+ *   __bss_start__
+ *   __bss_end__
+ *   __end__
+ *   end
+ *   __HeapLimit
+ *   __StackLimit
+ *   __StackTop
+ *   __stack
+ */
+ENTRY(Reset_Handler)
+
+SECTIONS
+{
+	.text :
+	{
+		*flash_start*.o
+		*(.text*)
+
+		KEEP(*(.init))
+		KEEP(*(.fini))
+
+		/* .ctors */
+		*crtbegin.o(.ctors)
+		*crtbegin?.o(.ctors)
+		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
+		*(SORT(.ctors.*))
+		*(.ctors)
+
+		/* .dtors */
+ 		*crtbegin.o(.dtors)
+ 		*crtbegin?.o(.dtors)
+ 		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
+ 		*(SORT(.dtors.*))
+ 		*(.dtors)
+
+		*(.rodata*)
+
+		KEEP(*(.eh_frame*))
+	} > FLASH
+	
+	
+
+	.ARM.extab : 
+	{
+		*(.ARM.extab* .gnu.linkonce.armextab.*)
+	} > FLASH
+
+	
+	.ARM.exidx :
+	{
+		*(.ARM.exidx* .gnu.linkonce.armexidx.*)
+	} > FLASH
+
+	 . = ALIGN(4);
+	__exidx_start = .;
+
+	__etext = .;
+		
+	.data : AT (__etext)
+	{
+		__data_start__ = .;
+		*(vtable)
+		*(.data*)
+
+		. = ALIGN(4);
+		/* preinit data */
+		PROVIDE_HIDDEN (__preinit_array_start = .);
+		KEEP(*(.preinit_array))
+		PROVIDE_HIDDEN (__preinit_array_end = .);
+
+		. = ALIGN(4);
+		/* init data */
+		PROVIDE_HIDDEN (__init_array_start = .);
+		KEEP(*(SORT(.init_array.*)))
+		KEEP(*(.init_array))
+		PROVIDE_HIDDEN (__init_array_end = .);
+
+
+		. = ALIGN(4);
+		/* finit data */
+		PROVIDE_HIDDEN (__fini_array_start = .);
+		KEEP(*(SORT(.fini_array.*)))
+		KEEP(*(.fini_array))
+		PROVIDE_HIDDEN (__fini_array_end = .);
+
+		KEEP(*(.jcr*))
+		. = ALIGN(4);
+		/* All data end */
+		__data_end__ = .;
+
+	} > RAM
+
+	.bss :
+	{
+		. = ALIGN(4);
+		__bss_start__ = .;
+		*(.bss*)
+		*(COMMON)
+		. = ALIGN(4);
+		__bss_end__ = .;
+	} > RAM
+	
+	.heap (COPY):
+	{
+		__end__ = .;
+		PROVIDE(end = .);
+		*(.heap*)
+		__HeapLimit = .;
+	} > RAM
+
+	/* .stack_dummy section doesn't contains any symbols. It is only
+	 * used for linker to calculate size of stack sections, and assign
+	 * values to stack symbols later */
+	.stack_dummy (COPY):
+	{
+		*(.stack*)
+	} > RAM
+
+	/* Set stack top to end of RAM, and stack limit move down by
+	 * size of stack_dummy section */
+	__StackTop = ORIGIN(RAM) + LENGTH(RAM);
+	__StackLimit = __StackTop - SIZEOF(.stack_dummy);
+	PROVIDE(__stack = __StackTop);
+	
+	/* Check if data + heap + stack exceeds RAM limit */
+	ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
+}
+endef
+
+
+output/out.hex : output/out
+	$(OBJCOPY) $^ -O ihex $@
+
+
+output/out : $(addprefix output/, $(addsuffix .o, $(OBJS)))
+	$(file >output/ld.script, $(ldscript))
+	$(LD) $(addprefix output/obj/,$(addsuffix .o, $(notdir $(OBJS)))) -o $@ $(LDFLAG)
+	$(OBJDUMP) -S $@ > output/disasm
+
+output/%.o : %.c
+	$(GCC) $< $(CFLAG) -o output/obj/$(notdir $@)
+
+output/%.o : %.s
+	$(AS) $^ -mthumb -mcpu=cortex-m0 -o output/obj/$(notdir $@)
+
+
+clean :
+ifeq ($(OS),Windows_NT)
+	del /Q output\*.*
+	del /Q output\obj\*.*
+else
+	rm -rf output/*
+	rm -rf output/obj/*
+endif
Index: usb_cdc/prj/MDK/Objects/YC3121_keil.sct
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_cdc/prj/MDK/Objects/YC3121_keil.sct	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_cdc/prj/MDK/Objects/YC3121_keil.sct	(working copy)
@@ -0,0 +1,55 @@
+; *************************************************************
+; *** Scatter-Loading Description File generated by uVision ***
+; *************************************************************
+
+LR_IROM1 0x00000000 0x0001fff  {    ; load region size_region
+  ER_IROM1 0x00000000 0x00001fff  {  ; load address = execution address
+   startup.o (RESET, +First)
+   startup.o (|.text|,+RO)
+;   *(InRoot$$Sections)
+  }
+  ;ER_IROM2 0x4000   {
+  ;rom_main.o (+RO)
+  ;}
+  
+  ;ER_IROM3 0x100000 {
+	  ;*(InRoot$$Sections)
+  ;}
+	
+  ;ER_IROM4 0x100400   {
+  ;flash_start.o (+RO)
+  ;.ANY (+RO) 
+  ;}
+  
+  ;RW_IRAM1 0x000d0000 0x0010000  {  ; RW data
+   ;.ANY (+RW +ZI)
+  ;}
+  
+;  ARM_LIB_STACK 0xE0000 EMPTY -0x10000{}
+}
+
+;LR_IROM2 0x4000 0x4000{
+;	ER_IROM2 0x4000 {
+;	  rom_main.o (+RO)
+;	}
+;}
+
+LR_IROM3 0x1000200 0x200{
+	ER_IROM3 0x1000200 {
+	  flash_start.o (|.flash_start|,+RO)
+	}
+}
+
+LR_IROM4 0x1000400 0x1000000{
+	ER_IROM4 0x1000400 {
+;	  flash_start.o (|.flash_start|,+RO)
+	  *(InRoot$$Sections)
+	  .ANY (+RO)
+	}
+	
+	
+	 RW_IRAM2 0x00020000 0x010000  {  ; RW data
+	.ANY (+RW +ZI)
+	}
+}
+
Index: usb_cdc/prj/MDK/YC3121_Keil.uvoptx
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_cdc/prj/MDK/YC3121_Keil.uvoptx	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_cdc/prj/MDK/YC3121_Keil.uvoptx	(working copy)
@@ -0,0 +1,583 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
+
+  <SchemaVersion>1.0</SchemaVersion>
+
+  <Header>### uVision Project, (C) Keil Software</Header>
+
+  <Extensions>
+    <cExt>*.c</cExt>
+    <aExt>*.s*; *.src; *.a*</aExt>
+    <oExt>*.obj; *.o</oExt>
+    <lExt>*.lib</lExt>
+    <tExt>*.txt; *.h; *.inc</tExt>
+    <pExt>*.plm</pExt>
+    <CppX>*.cpp</CppX>
+    <nMigrate>0</nMigrate>
+  </Extensions>
+
+  <DaveTm>
+    <dwLowDateTime>0</dwLowDateTime>
+    <dwHighDateTime>0</dwHighDateTime>
+  </DaveTm>
+
+  <Target>
+    <TargetName>YC3121</TargetName>
+    <ToolsetNumber>0x4</ToolsetNumber>
+    <ToolsetName>ARM-ADS</ToolsetName>
+    <TargetOption>
+      <CLKADS>12000000</CLKADS>
+      <OPTTT>
+        <gFlags>1</gFlags>
+        <BeepAtEnd>1</BeepAtEnd>
+        <RunSim>0</RunSim>
+        <RunTarget>1</RunTarget>
+        <RunAbUc>0</RunAbUc>
+      </OPTTT>
+      <OPTHX>
+        <HexSelection>1</HexSelection>
+        <FlashByte>65535</FlashByte>
+        <HexRangeLowAddress>0</HexRangeLowAddress>
+        <HexRangeHighAddress>0</HexRangeHighAddress>
+        <HexOffset>0</HexOffset>
+      </OPTHX>
+      <OPTLEX>
+        <PageWidth>79</PageWidth>
+        <PageLength>66</PageLength>
+        <TabStop>8</TabStop>
+        <ListingPath>.\Listings\</ListingPath>
+      </OPTLEX>
+      <ListingPage>
+        <CreateCListing>1</CreateCListing>
+        <CreateAListing>1</CreateAListing>
+        <CreateLListing>1</CreateLListing>
+        <CreateIListing>0</CreateIListing>
+        <AsmCond>1</AsmCond>
+        <AsmSymb>1</AsmSymb>
+        <AsmXref>0</AsmXref>
+        <CCond>1</CCond>
+        <CCode>0</CCode>
+        <CListInc>0</CListInc>
+        <CSymb>0</CSymb>
+        <LinkerCodeListing>0</LinkerCodeListing>
+      </ListingPage>
+      <OPTXL>
+        <LMap>1</LMap>
+        <LComments>1</LComments>
+        <LGenerateSymbols>1</LGenerateSymbols>
+        <LLibSym>1</LLibSym>
+        <LLines>1</LLines>
+        <LLocSym>1</LLocSym>
+        <LPubSym>1</LPubSym>
+        <LXref>0</LXref>
+        <LExpSel>0</LExpSel>
+      </OPTXL>
+      <OPTFL>
+        <tvExp>1</tvExp>
+        <tvExpOptDlg>0</tvExpOptDlg>
+        <IsCurrentTarget>1</IsCurrentTarget>
+      </OPTFL>
+      <CpuCode>7</CpuCode>
+      <DebugOpt>
+        <uSim>0</uSim>
+        <uTrg>1</uTrg>
+        <sLdApp>1</sLdApp>
+        <sGomain>1</sGomain>
+        <sRbreak>1</sRbreak>
+        <sRwatch>1</sRwatch>
+        <sRmem>1</sRmem>
+        <sRfunc>1</sRfunc>
+        <sRbox>1</sRbox>
+        <tLdApp>1</tLdApp>
+        <tGomain>1</tGomain>
+        <tRbreak>1</tRbreak>
+        <tRwatch>1</tRwatch>
+        <tRmem>1</tRmem>
+        <tRfunc>0</tRfunc>
+        <tRbox>1</tRbox>
+        <tRtrace>1</tRtrace>
+        <sRSysVw>1</sRSysVw>
+        <tRSysVw>1</tRSysVw>
+        <sRunDeb>0</sRunDeb>
+        <sLrtime>0</sLrtime>
+        <bEvRecOn>1</bEvRecOn>
+        <bSchkAxf>0</bSchkAxf>
+        <bTchkAxf>0</bTchkAxf>
+        <nTsel>4</nTsel>
+        <sDll></sDll>
+        <sDllPa></sDllPa>
+        <sDlgDll></sDlgDll>
+        <sDlgPa></sDlgPa>
+        <sIfile></sIfile>
+        <tDll></tDll>
+        <tDllPa></tDllPa>
+        <tDlgDll></tDlgDll>
+        <tDlgPa></tDlgPa>
+        <tIfile>..\..\..\..\..\ConfigFiles\MDK\flash.ini</tIfile>
+        <pMon>Segger\JL2CM3.dll</pMon>
+      </DebugOpt>
+      <TargetDriverDllRegistry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>DLGUARM</Key>
+          <Name>d</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>PWSTATINFO</Key>
+          <Name>200,50,700</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>ARMRTXEVENTFLAGS</Key>
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>DLGTARM</Key>
+          <Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>ARMDBGFLAGS</Key>
+          <Name></Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>JL2CM3</Key>
+          <Name>-U4294967295 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(0BB11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO31 -FD20000 -FCA000 -FN1 -FF0YC3121 -FS01000000 -FL080000</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>UL2CM3</Key>
+          <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000)</Name>
+        </SetRegEntry>
+      </TargetDriverDllRegistry>
+      <Breakpoint>
+        <Bp>
+          <Number>0</Number>
+          <Type>0</Type>
+          <LineNumber>689</LineNumber>
+          <EnabledFlag>1</EnabledFlag>
+          <Address>16786508</Address>
+          <ByteObject>0</ByteObject>
+          <HtxType>0</HtxType>
+          <ManyObjects>0</ManyObjects>
+          <SizeOfObject>0</SizeOfObject>
+          <BreakByAccess>0</BreakByAccess>
+          <BreakIfRCount>1</BreakIfRCount>
+          <Filename>D:\2_Working\3_SecurityIC\YC3121\2_Software\YC3121_Test\Yc3121\YC3121_demo\ModuleDemo\USB\USB_CCID\user\usb_test\usb_test.c</Filename>
+          <ExecCommand></ExecCommand>
+          <Expression>\\YC3121_Keil\../../user/usb_test/usb_test.c\689</Expression>
+        </Bp>
+      </Breakpoint>
+      <Tracepoint>
+        <THDelay>0</THDelay>
+      </Tracepoint>
+      <DebugFlag>
+        <trace>0</trace>
+        <periodic>0</periodic>
+        <aLwin>1</aLwin>
+        <aCover>0</aCover>
+        <aSer1>0</aSer1>
+        <aSer2>0</aSer2>
+        <aPa>0</aPa>
+        <viewmode>1</viewmode>
+        <vrSel>0</vrSel>
+        <aSym>0</aSym>
+        <aTbox>0</aTbox>
+        <AscS1>0</AscS1>
+        <AscS2>0</AscS2>
+        <AscS3>0</AscS3>
+        <aSer3>0</aSer3>
+        <eProf>0</eProf>
+        <aLa>0</aLa>
+        <aPa1>0</aPa1>
+        <AscS4>0</AscS4>
+        <aSer4>0</aSer4>
+        <StkLoc>0</StkLoc>
+        <TrcWin>0</TrcWin>
+        <newCpu>0</newCpu>
+        <uProt>0</uProt>
+      </DebugFlag>
+      <LintExecutable></LintExecutable>
+      <LintConfigFile></LintConfigFile>
+      <bLintAuto>0</bLintAuto>
+      <bAutoGenD>0</bAutoGenD>
+      <LntExFlags>0</LntExFlags>
+      <pMisraName></pMisraName>
+      <pszMrule></pszMrule>
+      <pSingCmds></pSingCmds>
+      <pMultCmds></pMultCmds>
+      <pMisraNamep></pMisraNamep>
+      <pszMrulep></pszMrulep>
+      <pSingCmdsp></pSingCmdsp>
+      <pMultCmdsp></pMultCmdsp>
+    </TargetOption>
+  </Target>
+
+  <Group>
+    <GroupName>core</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>1</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\core\misc.c</PathWithFileName>
+      <FilenameWithoutPath>misc.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>2</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\core\system.c</PathWithFileName>
+      <FilenameWithoutPath>system.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>3</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\core\bt_code.c</PathWithFileName>
+      <FilenameWithoutPath>bt_code.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>main</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>2</GroupNumber>
+      <FileNumber>4</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\user\main.c</PathWithFileName>
+      <FilenameWithoutPath>main.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>sdk</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>5</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_gpio.c</PathWithFileName>
+      <FilenameWithoutPath>yc_gpio.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>6</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_uart.c</PathWithFileName>
+      <FilenameWithoutPath>yc_uart.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>7</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_timer.c</PathWithFileName>
+      <FilenameWithoutPath>yc_timer.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>8</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_ipc.c</PathWithFileName>
+      <FilenameWithoutPath>yc_ipc.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>9</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_lpm.c</PathWithFileName>
+      <FilenameWithoutPath>yc_lpm.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>10</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_otp.c</PathWithFileName>
+      <FilenameWithoutPath>yc_otp.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>11</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_sysctrl.c</PathWithFileName>
+      <FilenameWithoutPath>yc_sysctrl.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>startup</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>12</FileNumber>
+      <FileType>2</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\startup\flash_start.s</PathWithFileName>
+      <FilenameWithoutPath>flash_start.s</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>13</FileNumber>
+      <FileType>2</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\startup\startup.s</PathWithFileName>
+      <FilenameWithoutPath>startup.s</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>yc_usb\libraries\harward_Der</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>5</GroupNumber>
+      <FileNumber>14</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\usb_core.c</PathWithFileName>
+      <FilenameWithoutPath>usb_core.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>5</GroupNumber>
+      <FileNumber>15</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\Usb_dcd.c</PathWithFileName>
+      <FilenameWithoutPath>Usb_dcd.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>5</GroupNumber>
+      <FileNumber>16</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_CDC_Device_Demo\usb_bsp.c</PathWithFileName>
+      <FilenameWithoutPath>usb_bsp.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>yc_usb\libraries\SCPU_USB_Device_Library\core</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>17</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_core.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_core.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>18</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_req.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_req.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>19</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_ioreq.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_ioreq.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>yc_usb\libraries\SCPU_USB_Device_Library\class\cdc</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>20</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\CDC\usbd_cdc_core.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_cdc_core.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>21</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_CDC_Device_Demo\usbd_cdc_vcp.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_cdc_vcp.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>yc_usb\scpu_usb_cdc_Device_Demo</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>22</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_CDC_Device_Demo\Usb_dcd_init.c</PathWithFileName>
+      <FilenameWithoutPath>Usb_dcd_init.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>23</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_CDC_Device_Demo\usb_main.c</PathWithFileName>
+      <FilenameWithoutPath>usb_main.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>24</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_CDC_Device_Demo\usbd_desc.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_desc.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>25</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_CDC_Device_Demo\usbd_usr.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_usr.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+</ProjectOpt>
Index: usb_cdc/prj/MDK/YC3121_Keil.uvprojx
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_cdc/prj/MDK/YC3121_Keil.uvprojx	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_cdc/prj/MDK/YC3121_Keil.uvprojx	(working copy)
@@ -0,0 +1,557 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
+
+  <SchemaVersion>2.1</SchemaVersion>
+
+  <Header>### uVision Project, (C) Keil Software</Header>
+
+  <Targets>
+    <Target>
+      <TargetName>YC3121</TargetName>
+      <ToolsetNumber>0x4</ToolsetNumber>
+      <ToolsetName>ARM-ADS</ToolsetName>
+      <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
+      <uAC6>0</uAC6>
+      <TargetOption>
+        <TargetCommonOption>
+          <Device>ARMCM0</Device>
+          <Vendor>ARM</Vendor>
+          <PackID>ARM.CMSIS.5.5.1</PackID>
+          <PackURL>http://www.keil.com/pack/</PackURL>
+          <Cpu>IRAM(0x20000000,0x00020000) IROM(0x00000000,0x00040000) CPUTYPE("Cortex-M0") CLOCK(12000000) ESEL ELITTLE</Cpu>
+          <FlashUtilSpec></FlashUtilSpec>
+          <StartupFile></StartupFile>
+          <FlashDriverDll>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000)</FlashDriverDll>
+          <DeviceId>0</DeviceId>
+          <RegisterFile>$$Device:ARMCM0$Device\ARM\ARMCM0\Include\ARMCM0.h</RegisterFile>
+          <MemoryEnv></MemoryEnv>
+          <Cmp></Cmp>
+          <Asm></Asm>
+          <Linker></Linker>
+          <OHString></OHString>
+          <InfinionOptionDll></InfinionOptionDll>
+          <SLE66CMisc></SLE66CMisc>
+          <SLE66AMisc></SLE66AMisc>
+          <SLE66LinkerMisc></SLE66LinkerMisc>
+          <SFDFile>$$Device:ARMCM0$Device\ARM\SVD\ARMCM0.svd</SFDFile>
+          <bCustSvd>0</bCustSvd>
+          <UseEnv>0</UseEnv>
+          <BinPath></BinPath>
+          <IncludePath></IncludePath>
+          <LibPath></LibPath>
+          <RegisterFilePath></RegisterFilePath>
+          <DBRegisterFilePath></DBRegisterFilePath>
+          <TargetStatus>
+            <Error>0</Error>
+            <ExitCodeStop>0</ExitCodeStop>
+            <ButtonStop>0</ButtonStop>
+            <NotGenerated>0</NotGenerated>
+            <InvalidFlash>1</InvalidFlash>
+          </TargetStatus>
+          <OutputDirectory>.\Objects\</OutputDirectory>
+          <OutputName>YC3121_Keil</OutputName>
+          <CreateExecutable>1</CreateExecutable>
+          <CreateLib>0</CreateLib>
+          <CreateHexFile>1</CreateHexFile>
+          <DebugInformation>1</DebugInformation>
+          <BrowseInformation>1</BrowseInformation>
+          <ListingPath>.\Listings\</ListingPath>
+          <HexFormatSelection>1</HexFormatSelection>
+          <Merge32K>0</Merge32K>
+          <CreateBatchFile>1</CreateBatchFile>
+          <BeforeCompile>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopU1X>0</nStopU1X>
+            <nStopU2X>0</nStopU2X>
+          </BeforeCompile>
+          <BeforeMake>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopB1X>0</nStopB1X>
+            <nStopB2X>0</nStopB2X>
+          </BeforeMake>
+          <AfterMake>
+            <RunUserProg1>1</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name>fromelf.exe --text -a -c --output=@L_asm.txt "!L"</UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopA1X>0</nStopA1X>
+            <nStopA2X>0</nStopA2X>
+          </AfterMake>
+          <SelectedForBatchBuild>0</SelectedForBatchBuild>
+          <SVCSIdString></SVCSIdString>
+        </TargetCommonOption>
+        <CommonProperty>
+          <UseCPPCompiler>0</UseCPPCompiler>
+          <RVCTCodeConst>0</RVCTCodeConst>
+          <RVCTZI>0</RVCTZI>
+          <RVCTOtherData>0</RVCTOtherData>
+          <ModuleSelection>0</ModuleSelection>
+          <IncludeInBuild>1</IncludeInBuild>
+          <AlwaysBuild>0</AlwaysBuild>
+          <GenerateAssemblyFile>0</GenerateAssemblyFile>
+          <AssembleAssemblyFile>0</AssembleAssemblyFile>
+          <PublicsOnly>0</PublicsOnly>
+          <StopOnExitCode>3</StopOnExitCode>
+          <CustomArgument></CustomArgument>
+          <IncludeLibraryModules></IncludeLibraryModules>
+          <ComprImg>1</ComprImg>
+        </CommonProperty>
+        <DllOption>
+          <SimDllName>SARMCM3.DLL</SimDllName>
+          <SimDllArguments>  </SimDllArguments>
+          <SimDlgDll>DARMCM1.DLL</SimDlgDll>
+          <SimDlgDllArguments>-pCM0</SimDlgDllArguments>
+          <TargetDllName>SARMCM3.DLL</TargetDllName>
+          <TargetDllArguments> </TargetDllArguments>
+          <TargetDlgDll>TARMCM1.DLL</TargetDlgDll>
+          <TargetDlgDllArguments>-pCM0</TargetDlgDllArguments>
+        </DllOption>
+        <DebugOption>
+          <OPTHX>
+            <HexSelection>1</HexSelection>
+            <HexRangeLowAddress>0</HexRangeLowAddress>
+            <HexRangeHighAddress>0</HexRangeHighAddress>
+            <HexOffset>0</HexOffset>
+            <Oh166RecLen>16</Oh166RecLen>
+          </OPTHX>
+        </DebugOption>
+        <Utilities>
+          <Flash1>
+            <UseTargetDll>1</UseTargetDll>
+            <UseExternalTool>0</UseExternalTool>
+            <RunIndependent>1</RunIndependent>
+            <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
+            <Capability>1</Capability>
+            <DriverSelection>4100</DriverSelection>
+          </Flash1>
+          <bUseTDR>0</bUseTDR>
+          <Flash2>Segger\JL2CM3.dll</Flash2>
+          <Flash3>"" ()</Flash3>
+          <Flash4></Flash4>
+          <pFcarmOut></pFcarmOut>
+          <pFcarmGrp></pFcarmGrp>
+          <pFcArmRoot></pFcArmRoot>
+          <FcArmLst>0</FcArmLst>
+        </Utilities>
+        <TargetArmAds>
+          <ArmAdsMisc>
+            <GenerateListings>0</GenerateListings>
+            <asHll>1</asHll>
+            <asAsm>1</asAsm>
+            <asMacX>1</asMacX>
+            <asSyms>1</asSyms>
+            <asFals>1</asFals>
+            <asDbgD>1</asDbgD>
+            <asForm>1</asForm>
+            <ldLst>0</ldLst>
+            <ldmm>1</ldmm>
+            <ldXref>1</ldXref>
+            <BigEnd>0</BigEnd>
+            <AdsALst>1</AdsALst>
+            <AdsACrf>1</AdsACrf>
+            <AdsANop>0</AdsANop>
+            <AdsANot>0</AdsANot>
+            <AdsLLst>1</AdsLLst>
+            <AdsLmap>1</AdsLmap>
+            <AdsLcgr>1</AdsLcgr>
+            <AdsLsym>1</AdsLsym>
+            <AdsLszi>1</AdsLszi>
+            <AdsLtoi>1</AdsLtoi>
+            <AdsLsun>1</AdsLsun>
+            <AdsLven>1</AdsLven>
+            <AdsLsxf>1</AdsLsxf>
+            <RvctClst>0</RvctClst>
+            <GenPPlst>0</GenPPlst>
+            <AdsCpuType>"Cortex-M0"</AdsCpuType>
+            <RvctDeviceName></RvctDeviceName>
+            <mOS>0</mOS>
+            <uocRom>0</uocRom>
+            <uocRam>0</uocRam>
+            <hadIROM>1</hadIROM>
+            <hadIRAM>1</hadIRAM>
+            <hadXRAM>0</hadXRAM>
+            <uocXRam>0</uocXRam>
+            <RvdsVP>0</RvdsVP>
+            <RvdsMve>0</RvdsMve>
+            <hadIRAM2>0</hadIRAM2>
+            <hadIROM2>0</hadIROM2>
+            <StupSel>8</StupSel>
+            <useUlib>1</useUlib>
+            <EndSel>1</EndSel>
+            <uLtcg>0</uLtcg>
+            <nSecure>0</nSecure>
+            <RoSelD>3</RoSelD>
+            <RwSelD>3</RwSelD>
+            <CodeSel>0</CodeSel>
+            <OptFeed>0</OptFeed>
+            <NoZi1>0</NoZi1>
+            <NoZi2>0</NoZi2>
+            <NoZi3>0</NoZi3>
+            <NoZi4>0</NoZi4>
+            <NoZi5>0</NoZi5>
+            <Ro1Chk>0</Ro1Chk>
+            <Ro2Chk>0</Ro2Chk>
+            <Ro3Chk>0</Ro3Chk>
+            <Ir1Chk>1</Ir1Chk>
+            <Ir2Chk>0</Ir2Chk>
+            <Ra1Chk>0</Ra1Chk>
+            <Ra2Chk>0</Ra2Chk>
+            <Ra3Chk>0</Ra3Chk>
+            <Im1Chk>1</Im1Chk>
+            <Im2Chk>0</Im2Chk>
+            <OnChipMemories>
+              <Ocm1>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm1>
+              <Ocm2>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm2>
+              <Ocm3>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm3>
+              <Ocm4>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm4>
+              <Ocm5>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm5>
+              <Ocm6>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm6>
+              <IRAM>
+                <Type>0</Type>
+                <StartAddress>0x20000000</StartAddress>
+                <Size>0x20000</Size>
+              </IRAM>
+              <IROM>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x40000</Size>
+              </IROM>
+              <XRAM>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </XRAM>
+              <OCR_RVCT1>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT1>
+              <OCR_RVCT2>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT2>
+              <OCR_RVCT3>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT3>
+              <OCR_RVCT4>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x40000</Size>
+              </OCR_RVCT4>
+              <OCR_RVCT5>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT5>
+              <OCR_RVCT6>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT6>
+              <OCR_RVCT7>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT7>
+              <OCR_RVCT8>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT8>
+              <OCR_RVCT9>
+                <Type>0</Type>
+                <StartAddress>0x20000000</StartAddress>
+                <Size>0x20000</Size>
+              </OCR_RVCT9>
+              <OCR_RVCT10>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT10>
+            </OnChipMemories>
+            <RvctStartVector></RvctStartVector>
+          </ArmAdsMisc>
+          <Cads>
+            <interw>1</interw>
+            <Optim>4</Optim>
+            <oTime>1</oTime>
+            <SplitLS>0</SplitLS>
+            <OneElfS>0</OneElfS>
+            <Strict>0</Strict>
+            <EnumInt>0</EnumInt>
+            <PlainCh>0</PlainCh>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <wLevel>1</wLevel>
+            <uThumb>0</uThumb>
+            <uSurpInc>0</uSurpInc>
+            <uC99>1</uC99>
+            <uGnu>0</uGnu>
+            <useXO>0</useXO>
+            <v6Lang>1</v6Lang>
+            <v6LangP>1</v6LangP>
+            <vShortEn>1</vShortEn>
+            <vShortWch>1</vShortWch>
+            <v6Lto>0</v6Lto>
+            <v6WtE>0</v6WtE>
+            <v6Rtti>0</v6Rtti>
+            <VariousControls>
+              <MiscControls></MiscControls>
+              <Define>__USEKEILCOMPILE__</Define>
+              <Undefine></Undefine>
+              <IncludePath>..\..\..\..\..\Librarier\core;..\..\..\..\..\Librarier\sdk;..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der;..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core;..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_CDC_Device_Demo;..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\CDC;..\..\user</IncludePath>
+            </VariousControls>
+          </Cads>
+          <Aads>
+            <interw>1</interw>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <thumb>0</thumb>
+            <SplitLS>0</SplitLS>
+            <SwStkChk>0</SwStkChk>
+            <NoWarn>0</NoWarn>
+            <uSurpInc>0</uSurpInc>
+            <useXO>0</useXO>
+            <uClangAs>0</uClangAs>
+            <VariousControls>
+              <MiscControls></MiscControls>
+              <Define></Define>
+              <Undefine></Undefine>
+              <IncludePath></IncludePath>
+            </VariousControls>
+          </Aads>
+          <LDads>
+            <umfTarg>0</umfTarg>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <noStLib>0</noStLib>
+            <RepFail>1</RepFail>
+            <useFile>0</useFile>
+            <TextAddressRange>0x00000000</TextAddressRange>
+            <DataAddressRange>0xd0000</DataAddressRange>
+            <pXoBase></pXoBase>
+            <ScatterFile>.\Objects\YC3121_keil.sct</ScatterFile>
+            <IncludeLibs></IncludeLibs>
+            <IncludeLibsPath></IncludeLibsPath>
+            <Misc></Misc>
+            <LinkerInputFile></LinkerInputFile>
+            <DisabledWarnings></DisabledWarnings>
+          </LDads>
+        </TargetArmAds>
+      </TargetOption>
+      <Groups>
+        <Group>
+          <GroupName>core</GroupName>
+          <Files>
+            <File>
+              <FileName>misc.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\core\misc.c</FilePath>
+            </File>
+            <File>
+              <FileName>system.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\core\system.c</FilePath>
+            </File>
+            <File>
+              <FileName>bt_code.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\core\bt_code.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>main</GroupName>
+          <Files>
+            <File>
+              <FileName>main.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\user\main.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>sdk</GroupName>
+          <Files>
+            <File>
+              <FileName>yc_gpio.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_gpio.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_uart.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_uart.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_timer.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_timer.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_ipc.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_ipc.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_lpm.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_lpm.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_otp.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_otp.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_sysctrl.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_sysctrl.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>startup</GroupName>
+          <Files>
+            <File>
+              <FileName>flash_start.s</FileName>
+              <FileType>2</FileType>
+              <FilePath>..\..\..\..\..\Librarier\startup\flash_start.s</FilePath>
+            </File>
+            <File>
+              <FileName>startup.s</FileName>
+              <FileType>2</FileType>
+              <FilePath>..\..\..\..\..\Librarier\startup\startup.s</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>yc_usb\libraries\harward_Der</GroupName>
+          <Files>
+            <File>
+              <FileName>usb_core.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\usb_core.c</FilePath>
+            </File>
+            <File>
+              <FileName>Usb_dcd.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\Usb_dcd.c</FilePath>
+            </File>
+            <File>
+              <FileName>usb_bsp.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_CDC_Device_Demo\usb_bsp.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>yc_usb\libraries\SCPU_USB_Device_Library\core</GroupName>
+          <Files>
+            <File>
+              <FileName>usbd_core.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_core.c</FilePath>
+            </File>
+            <File>
+              <FileName>usbd_req.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_req.c</FilePath>
+            </File>
+            <File>
+              <FileName>usbd_ioreq.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_ioreq.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>yc_usb\libraries\SCPU_USB_Device_Library\class\cdc</GroupName>
+          <Files>
+            <File>
+              <FileName>usbd_cdc_core.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\CDC\usbd_cdc_core.c</FilePath>
+            </File>
+            <File>
+              <FileName>usbd_cdc_vcp.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_CDC_Device_Demo\usbd_cdc_vcp.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>yc_usb\scpu_usb_cdc_Device_Demo</GroupName>
+          <Files>
+            <File>
+              <FileName>Usb_dcd_init.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_CDC_Device_Demo\Usb_dcd_init.c</FilePath>
+            </File>
+            <File>
+              <FileName>usb_main.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_CDC_Device_Demo\usb_main.c</FilePath>
+            </File>
+            <File>
+              <FileName>usbd_desc.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_CDC_Device_Demo\usbd_desc.c</FilePath>
+            </File>
+            <File>
+              <FileName>usbd_usr.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_CDC_Device_Demo\usbd_usr.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+      </Groups>
+    </Target>
+  </Targets>
+
+  <RTE>
+    <apis/>
+    <components/>
+    <files/>
+  </RTE>
+
+</Project>
Index: usb_cdc/user/main.c
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_cdc/user/main.c	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_cdc/user/main.c	(working copy)
@@ -0,0 +1,92 @@
+/**
+  ******************************************************************************
+  * @file    3121Demo_1.0V\ModuleDemo\USB\USB_CDC\user\main.c
+  * @author  Yichip Application Team
+  * @version V1.0.0
+  * @date    23-Oct-2019
+  * @brief   USB CDC test program.
+  ******************************************************************************
+  * @attention
+  *
+  * COPYRIGHT 2019 Yichip Microelectronics
+  *
+  * The purpose of this demo is to provide guidance to customers engaged in
+  * programming work to guide them smoothly to product development,
+  * so as to save their time.
+  *
+  * Therefore, Yichip microelectronics shall not be responsible for any direct,
+  * indirect or consequential damages caused by any content of this demo
+  * and/or contained in this code used by the customer in its products.
+  *
+  ******************************************************************************
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "yc3121.h"
+#include "yc_gpio.h"
+#include "yc_uart.h"
+#include "yc_ipc.h"
+#include "usb_main.h"
+#include "board_config.h"
+
+/* Private macro -------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+/* Private function prototypes -----------------------------------------------*/
+void UART_Configuration(void);
+
+/**
+  * @brief  Main program
+  * @param  None
+  * @retval None
+  */
+extern USB_OTG_CORE_HANDLE  USB_OTG_dev;
+
+int main(void)
+{
+    
+  UART_Configuration();
+    
+  IpcInit();
+
+  MyPrintf("USB CDC Demo !\n\n");
+
+  usb_main();
+
+  while (1)
+  {
+
+  }
+}
+
+/**
+  * @brief  Serial port 0 initialization function.
+  * @param  None
+  * @retval None
+  */
+void UART_Configuration(void)
+{
+  UART_InitTypeDef UART_InitStruct;
+
+	/* Configure serial ports 0 RX and TX for IO. */
+	GPIO_Config(UART0_TX_PORT, UART0_TX_PIN, UART0_TXD);
+	GPIO_Config(UART0_RX_PORT, UART0_RX_PIN, UART0_RXD);
+
+  /* USARTx configured as follow:
+  - BaudRate = 115200 baud
+  - Word Length = 8 Bits
+  - Stop Bit = 1 Stop Bit
+  - Parity = No Parity
+  - Hardware flow control disabled (RTS and CTS signals)
+  - Receive and transmit enabled
+  */
+	UART_InitStruct.BaudRate = UARTBAUD;			//Configure serial port baud rate, the baud rate defaults to 128000.
+	UART_InitStruct.DataBits = Databits_8b;
+	UART_InitStruct.StopBits = StopBits_1;
+	UART_InitStruct.Parity = Parity_None;
+	UART_InitStruct.FlowCtrl = FlowCtrl_None;
+	UART_InitStruct.Mode = Mode_duplex;
+	
+	UART_Init(UART0, &UART_InitStruct);
+}
+
+/************************ (C) COPYRIGHT Yichip Microelectronics *****END OF FILE****/
Index: usb_hid/prj/GCC/c.bat
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_hid/prj/GCC/c.bat	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_hid/prj/GCC/c.bat	(working copy)
@@ -0,0 +1,3 @@
+cls
+make clean
+make
\ No newline at end of file
Index: usb_hid/prj/GCC/makefile
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_hid/prj/GCC/makefile	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_hid/prj/GCC/makefile	(working copy)
@@ -0,0 +1,249 @@
+
+ifeq ($(OS),Windows_NT)
+DIR = C:/gcc-arm-none-eabi-7-2018-q2-update-win32
+else
+DIR = /usr/gcc-arm-none-eabi-7-2018-q2-update
+endif
+
+ARCH = $(DIR)/bin/arm-none-eabi
+GCC = $(ARCH)-gcc
+LD = $(ARCH)-ld
+AS = $(ARCH)-as
+OBJCOPY = $(ARCH)-objcopy
+OBJDUMP = "$(ARCH)-objdump"
+LIB_PATH = ../../../../../Librarier
+USER_PATH = ../../user
+
+
+all : output/out.hex
+
+
+CORE_OBJS =  $(LIB_PATH)/startup/flash_start_gcc \
+             $(LIB_PATH)/core/system \
+             $(LIB_PATH)/core/misc \
+             $(LIB_PATH)/core/bt_code \
+             $(LIB_PATH)/sdk/yc_gpio \
+             $(LIB_PATH)/sdk/yc_timer \
+             $(LIB_PATH)/sdk/yc_ipc \
+             $(LIB_PATH)/sdk/yc_uart \
+             $(LIB_PATH)/sdk/yc_lpm \
+             $(LIB_PATH)/sdk/yc_otp \
+             $(LIB_PATH)/sdk/yc_sysctrl \
+             $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der/usb_core \
+             $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der/Usb_dcd \
+             $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der/Usb_dcd_init \
+             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core/usbd_core \
+             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core/usbd_ioreq \
+             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core/usbd_req \
+             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/class/HID/usbd_hid_core \
+             $(LIB_PATH)/sdk/yc_usb/scpu_usb_hid_Device_Demo/usb_main \
+             $(LIB_PATH)/sdk/yc_usb/scpu_usb_hid_Device_Demo/usbd_desc \
+             $(LIB_PATH)/sdk/yc_usb/scpu_usb_hid_Device_Demo/usbd_usr \
+             ../../HalUSB/halUSB
+
+             
+USER_OBJS = $(USER_PATH)/main
+			
+OBJS = $(CORE_OBJS) $(USER_OBJS)
+
+INC_DIR = -I $(LIB_PATH)/core \
+          -I $(LIB_PATH)/sdk \
+          -I $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der \
+          -I $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core \
+          -I $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/class/HID \
+          -I $(LIB_PATH)/sdk/yc_usb/scpu_usb_hid_Device_Demo \
+          -I ../../HalUSB
+
+
+CFLAG =  -mthumb -mcpu=cortex-m0 -c -g -Os $(INC_DIR) $(DEF) -fno-toplevel-reorder -ffunction-sections -fdata-sections
+LDFLAG = -T output/ld.script -Map=output/memmap -lc -lm -lgcc -L "$(DIR)/lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m"  -L "$(DIR)/arm-none-eabi/lib/thumb/v6-m"
+
+define ldscript = 
+/* Linker script to configure memory regions. 
+ * Need modifying for a specific board. 
+ *   FLASH.ORIGIN: starting address of flash
+ *   FLASH.LENGTH: length of flash
+ *   RAM.ORIGIN: starting address of RAM bank 0
+ *   RAM.LENGTH: length of RAM bank 0
+ */
+MEMORY
+{
+  FLASH (rx) : ORIGIN = 0x1000000, LENGTH = 0x80000 /* 512K */
+  RAM (rwx) : ORIGIN = 0x20000, LENGTH = 0x10000 /* 64K */
+}
+
+/* Linker script to place sections and symbol values. Should be used together
+ * with other linker script that defines memory regions FLASH and RAM.
+ * It references following symbols, which must be defined in code:
+ *   Reset_Handler : Entry of reset handler
+ * 
+ * It defines following symbols, which code can use without definition:
+ *   __exidx_start
+ *   __exidx_end
+ *   __copy_table_start__
+ *   __copy_table_end__
+ *   __zero_table_start__
+ *   __zero_table_end__
+ *   __etext
+ *   __data_start__
+ *   __preinit_array_start
+ *   __preinit_array_end
+ *   __init_array_start
+ *   __init_array_end
+ *   __fini_array_start
+ *   __fini_array_end
+ *   __data_end__
+ *   __bss_start__
+ *   __bss_end__
+ *   __end__
+ *   end
+ *   __HeapLimit
+ *   __StackLimit
+ *   __StackTop
+ *   __stack
+ */
+ENTRY(Reset_Handler)
+
+SECTIONS
+{
+	.text :
+	{
+		*flash_start*.o
+		*(.text*)
+
+		KEEP(*(.init))
+		KEEP(*(.fini))
+
+		/* .ctors */
+		*crtbegin.o(.ctors)
+		*crtbegin?.o(.ctors)
+		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
+		*(SORT(.ctors.*))
+		*(.ctors)
+
+		/* .dtors */
+ 		*crtbegin.o(.dtors)
+ 		*crtbegin?.o(.dtors)
+ 		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
+ 		*(SORT(.dtors.*))
+ 		*(.dtors)
+
+		*(.rodata*)
+
+		KEEP(*(.eh_frame*))
+	} > FLASH
+	
+	
+
+	.ARM.extab : 
+	{
+		*(.ARM.extab* .gnu.linkonce.armextab.*)
+	} > FLASH
+
+	
+	.ARM.exidx :
+	{
+		*(.ARM.exidx* .gnu.linkonce.armexidx.*)
+	} > FLASH
+
+	 . = ALIGN(4);
+	__exidx_start = .;
+
+	__etext = .;
+		
+	.data : AT (__etext)
+	{
+		__data_start__ = .;
+		*(vtable)
+		*(.data*)
+
+		. = ALIGN(4);
+		/* preinit data */
+		PROVIDE_HIDDEN (__preinit_array_start = .);
+		KEEP(*(.preinit_array))
+		PROVIDE_HIDDEN (__preinit_array_end = .);
+
+		. = ALIGN(4);
+		/* init data */
+		PROVIDE_HIDDEN (__init_array_start = .);
+		KEEP(*(SORT(.init_array.*)))
+		KEEP(*(.init_array))
+		PROVIDE_HIDDEN (__init_array_end = .);
+
+
+		. = ALIGN(4);
+		/* finit data */
+		PROVIDE_HIDDEN (__fini_array_start = .);
+		KEEP(*(SORT(.fini_array.*)))
+		KEEP(*(.fini_array))
+		PROVIDE_HIDDEN (__fini_array_end = .);
+
+		KEEP(*(.jcr*))
+		. = ALIGN(4);
+		/* All data end */
+		__data_end__ = .;
+
+	} > RAM
+
+	.bss :
+	{
+		. = ALIGN(4);
+		__bss_start__ = .;
+		*(.bss*)
+		*(COMMON)
+		. = ALIGN(4);
+		__bss_end__ = .;
+	} > RAM
+	
+	.heap (COPY):
+	{
+		__end__ = .;
+		PROVIDE(end = .);
+		*(.heap*)
+		__HeapLimit = .;
+	} > RAM
+
+	/* .stack_dummy section doesn't contains any symbols. It is only
+	 * used for linker to calculate size of stack sections, and assign
+	 * values to stack symbols later */
+	.stack_dummy (COPY):
+	{
+		*(.stack*)
+	} > RAM
+
+	/* Set stack top to end of RAM, and stack limit move down by
+	 * size of stack_dummy section */
+	__StackTop = ORIGIN(RAM) + LENGTH(RAM);
+	__StackLimit = __StackTop - SIZEOF(.stack_dummy);
+	PROVIDE(__stack = __StackTop);
+	
+	/* Check if data + heap + stack exceeds RAM limit */
+	ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
+}
+endef
+
+
+output/out.hex : output/out
+	$(OBJCOPY) $^ -O ihex $@
+
+
+output/out : $(addprefix output/, $(addsuffix .o, $(OBJS)))
+	$(file >output/ld.script, $(ldscript))
+	$(LD) $(addprefix output/obj/,$(addsuffix .o, $(notdir $(OBJS)))) -o $@ $(LDFLAG)
+	$(OBJDUMP) -S $@ > output/disasm
+
+output/%.o : %.c
+	$(GCC) $< $(CFLAG) -o output/obj/$(notdir $@)
+
+output/%.o : %.s
+	$(AS) $^ -mthumb -mcpu=cortex-m0 -o output/obj/$(notdir $@)
+
+
+clean :
+ifeq ($(OS),Windows_NT)
+	del /Q output\*.*
+	del /Q output\obj\*.*
+else
+	rm -rf output/*
+	rm -rf output/obj/*
+endif
Index: usb_hid/prj/MDK/Objects/YC3121_keil.sct
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_hid/prj/MDK/Objects/YC3121_keil.sct	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_hid/prj/MDK/Objects/YC3121_keil.sct	(working copy)
@@ -0,0 +1,55 @@
+; *************************************************************
+; *** Scatter-Loading Description File generated by uVision ***
+; *************************************************************
+
+LR_IROM1 0x00000000 0x0001fff  {    ; load region size_region
+  ER_IROM1 0x00000000 0x00001fff  {  ; load address = execution address
+   startup.o (RESET, +First)
+   startup.o (|.text|,+RO)
+;   *(InRoot$$Sections)
+  }
+  ;ER_IROM2 0x4000   {
+  ;rom_main.o (+RO)
+  ;}
+  
+  ;ER_IROM3 0x100000 {
+	  ;*(InRoot$$Sections)
+  ;}
+	
+  ;ER_IROM4 0x100400   {
+  ;flash_start.o (+RO)
+  ;.ANY (+RO) 
+  ;}
+  
+  ;RW_IRAM1 0x000d0000 0x0010000  {  ; RW data
+   ;.ANY (+RW +ZI)
+  ;}
+  
+;  ARM_LIB_STACK 0xE0000 EMPTY -0x10000{}
+}
+
+;LR_IROM2 0x4000 0x4000{
+;	ER_IROM2 0x4000 {
+;	  rom_main.o (+RO)
+;	}
+;}
+
+LR_IROM3 0x1000200 0x200{
+	ER_IROM3 0x1000200 {
+	  flash_start.o (|.flash_start|,+RO)
+	}
+}
+
+LR_IROM4 0x1000400 0x1000000{
+	ER_IROM4 0x1000400 {
+;	  flash_start.o (|.flash_start|,+RO)
+	  *(InRoot$$Sections)
+	  .ANY (+RO)
+	}
+	
+	
+	 RW_IRAM2 0x00020000 0x010000  {  ; RW data
+	.ANY (+RW +ZI)
+	}
+}
+
Index: usb_hid/prj/MDK/YC3121_Keil.uvoptx
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_hid/prj/MDK/YC3121_Keil.uvoptx	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_hid/prj/MDK/YC3121_Keil.uvoptx	(working copy)
@@ -0,0 +1,571 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
+
+  <SchemaVersion>1.0</SchemaVersion>
+
+  <Header>### uVision Project, (C) Keil Software</Header>
+
+  <Extensions>
+    <cExt>*.c</cExt>
+    <aExt>*.s*; *.src; *.a*</aExt>
+    <oExt>*.obj; *.o</oExt>
+    <lExt>*.lib</lExt>
+    <tExt>*.txt; *.h; *.inc</tExt>
+    <pExt>*.plm</pExt>
+    <CppX>*.cpp</CppX>
+    <nMigrate>0</nMigrate>
+  </Extensions>
+
+  <DaveTm>
+    <dwLowDateTime>0</dwLowDateTime>
+    <dwHighDateTime>0</dwHighDateTime>
+  </DaveTm>
+
+  <Target>
+    <TargetName>YC3121</TargetName>
+    <ToolsetNumber>0x4</ToolsetNumber>
+    <ToolsetName>ARM-ADS</ToolsetName>
+    <TargetOption>
+      <CLKADS>12000000</CLKADS>
+      <OPTTT>
+        <gFlags>1</gFlags>
+        <BeepAtEnd>1</BeepAtEnd>
+        <RunSim>0</RunSim>
+        <RunTarget>1</RunTarget>
+        <RunAbUc>0</RunAbUc>
+      </OPTTT>
+      <OPTHX>
+        <HexSelection>1</HexSelection>
+        <FlashByte>65535</FlashByte>
+        <HexRangeLowAddress>0</HexRangeLowAddress>
+        <HexRangeHighAddress>0</HexRangeHighAddress>
+        <HexOffset>0</HexOffset>
+      </OPTHX>
+      <OPTLEX>
+        <PageWidth>79</PageWidth>
+        <PageLength>66</PageLength>
+        <TabStop>8</TabStop>
+        <ListingPath>.\Listings\</ListingPath>
+      </OPTLEX>
+      <ListingPage>
+        <CreateCListing>1</CreateCListing>
+        <CreateAListing>1</CreateAListing>
+        <CreateLListing>1</CreateLListing>
+        <CreateIListing>0</CreateIListing>
+        <AsmCond>1</AsmCond>
+        <AsmSymb>1</AsmSymb>
+        <AsmXref>0</AsmXref>
+        <CCond>1</CCond>
+        <CCode>0</CCode>
+        <CListInc>0</CListInc>
+        <CSymb>0</CSymb>
+        <LinkerCodeListing>0</LinkerCodeListing>
+      </ListingPage>
+      <OPTXL>
+        <LMap>1</LMap>
+        <LComments>1</LComments>
+        <LGenerateSymbols>1</LGenerateSymbols>
+        <LLibSym>1</LLibSym>
+        <LLines>1</LLines>
+        <LLocSym>1</LLocSym>
+        <LPubSym>1</LPubSym>
+        <LXref>0</LXref>
+        <LExpSel>0</LExpSel>
+      </OPTXL>
+      <OPTFL>
+        <tvExp>1</tvExp>
+        <tvExpOptDlg>0</tvExpOptDlg>
+        <IsCurrentTarget>1</IsCurrentTarget>
+      </OPTFL>
+      <CpuCode>7</CpuCode>
+      <DebugOpt>
+        <uSim>0</uSim>
+        <uTrg>1</uTrg>
+        <sLdApp>1</sLdApp>
+        <sGomain>1</sGomain>
+        <sRbreak>1</sRbreak>
+        <sRwatch>1</sRwatch>
+        <sRmem>1</sRmem>
+        <sRfunc>1</sRfunc>
+        <sRbox>1</sRbox>
+        <tLdApp>1</tLdApp>
+        <tGomain>1</tGomain>
+        <tRbreak>1</tRbreak>
+        <tRwatch>1</tRwatch>
+        <tRmem>1</tRmem>
+        <tRfunc>0</tRfunc>
+        <tRbox>1</tRbox>
+        <tRtrace>1</tRtrace>
+        <sRSysVw>1</sRSysVw>
+        <tRSysVw>1</tRSysVw>
+        <sRunDeb>0</sRunDeb>
+        <sLrtime>0</sLrtime>
+        <bEvRecOn>1</bEvRecOn>
+        <bSchkAxf>0</bSchkAxf>
+        <bTchkAxf>0</bTchkAxf>
+        <nTsel>4</nTsel>
+        <sDll></sDll>
+        <sDllPa></sDllPa>
+        <sDlgDll></sDlgDll>
+        <sDlgPa></sDlgPa>
+        <sIfile></sIfile>
+        <tDll></tDll>
+        <tDllPa></tDllPa>
+        <tDlgDll></tDlgDll>
+        <tDlgPa></tDlgPa>
+        <tIfile>..\..\..\..\..\ConfigFiles\MDK\flash.ini</tIfile>
+        <pMon>Segger\JL2CM3.dll</pMon>
+      </DebugOpt>
+      <TargetDriverDllRegistry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>DLGUARM</Key>
+          <Name>d</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>PWSTATINFO</Key>
+          <Name>200,50,700</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>ARMRTXEVENTFLAGS</Key>
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>DLGTARM</Key>
+          <Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>ARMDBGFLAGS</Key>
+          <Name></Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>JL2CM3</Key>
+          <Name>-U4294967295 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(0BB11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO31 -FD20000 -FCA000 -FN1 -FF0YC3121 -FS01000000 -FL080000</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>UL2CM3</Key>
+          <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000)</Name>
+        </SetRegEntry>
+      </TargetDriverDllRegistry>
+      <Breakpoint>
+        <Bp>
+          <Number>0</Number>
+          <Type>0</Type>
+          <LineNumber>689</LineNumber>
+          <EnabledFlag>1</EnabledFlag>
+          <Address>16786508</Address>
+          <ByteObject>0</ByteObject>
+          <HtxType>0</HtxType>
+          <ManyObjects>0</ManyObjects>
+          <SizeOfObject>0</SizeOfObject>
+          <BreakByAccess>0</BreakByAccess>
+          <BreakIfRCount>1</BreakIfRCount>
+          <Filename>D:\2_Working\3_SecurityIC\YC3121\2_Software\YC3121_Test\Yc3121\YC3121_demo\ModuleDemo\USB\USB_CCID\user\usb_test\usb_test.c</Filename>
+          <ExecCommand></ExecCommand>
+          <Expression>\\YC3121_Keil\../../user/usb_test/usb_test.c\689</Expression>
+        </Bp>
+      </Breakpoint>
+      <Tracepoint>
+        <THDelay>0</THDelay>
+      </Tracepoint>
+      <DebugFlag>
+        <trace>0</trace>
+        <periodic>0</periodic>
+        <aLwin>1</aLwin>
+        <aCover>0</aCover>
+        <aSer1>0</aSer1>
+        <aSer2>0</aSer2>
+        <aPa>0</aPa>
+        <viewmode>1</viewmode>
+        <vrSel>0</vrSel>
+        <aSym>0</aSym>
+        <aTbox>0</aTbox>
+        <AscS1>0</AscS1>
+        <AscS2>0</AscS2>
+        <AscS3>0</AscS3>
+        <aSer3>0</aSer3>
+        <eProf>0</eProf>
+        <aLa>0</aLa>
+        <aPa1>0</aPa1>
+        <AscS4>0</AscS4>
+        <aSer4>0</aSer4>
+        <StkLoc>0</StkLoc>
+        <TrcWin>0</TrcWin>
+        <newCpu>0</newCpu>
+        <uProt>0</uProt>
+      </DebugFlag>
+      <LintExecutable></LintExecutable>
+      <LintConfigFile></LintConfigFile>
+      <bLintAuto>0</bLintAuto>
+      <bAutoGenD>0</bAutoGenD>
+      <LntExFlags>0</LntExFlags>
+      <pMisraName></pMisraName>
+      <pszMrule></pszMrule>
+      <pSingCmds></pSingCmds>
+      <pMultCmds></pMultCmds>
+      <pMisraNamep></pMisraNamep>
+      <pszMrulep></pszMrulep>
+      <pSingCmdsp></pSingCmdsp>
+      <pMultCmdsp></pMultCmdsp>
+    </TargetOption>
+  </Target>
+
+  <Group>
+    <GroupName>core</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>1</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\core\misc.c</PathWithFileName>
+      <FilenameWithoutPath>misc.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>2</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\core\system.c</PathWithFileName>
+      <FilenameWithoutPath>system.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>3</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\core\bt_code.c</PathWithFileName>
+      <FilenameWithoutPath>bt_code.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>main</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>2</GroupNumber>
+      <FileNumber>4</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\user\main.c</PathWithFileName>
+      <FilenameWithoutPath>main.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>sdk</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>5</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_gpio.c</PathWithFileName>
+      <FilenameWithoutPath>yc_gpio.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>6</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_uart.c</PathWithFileName>
+      <FilenameWithoutPath>yc_uart.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>7</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_timer.c</PathWithFileName>
+      <FilenameWithoutPath>yc_timer.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>8</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_ipc.c</PathWithFileName>
+      <FilenameWithoutPath>yc_ipc.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>9</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_lpm.c</PathWithFileName>
+      <FilenameWithoutPath>yc_lpm.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>10</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_sysctrl.c</PathWithFileName>
+      <FilenameWithoutPath>yc_sysctrl.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>11</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_otp.c</PathWithFileName>
+      <FilenameWithoutPath>yc_otp.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>startup</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>12</FileNumber>
+      <FileType>2</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\startup\flash_start.s</PathWithFileName>
+      <FilenameWithoutPath>flash_start.s</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>13</FileNumber>
+      <FileType>2</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\startup\startup.s</PathWithFileName>
+      <FilenameWithoutPath>startup.s</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>yc_usb\libraries\harward_Der</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>5</GroupNumber>
+      <FileNumber>14</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\usb_core.c</PathWithFileName>
+      <FilenameWithoutPath>usb_core.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>5</GroupNumber>
+      <FileNumber>15</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\Usb_dcd.c</PathWithFileName>
+      <FilenameWithoutPath>Usb_dcd.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>yc_usb\libraries\SCPU_USB_Device_Library\core</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>16</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_core.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_core.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>17</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_req.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_req.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>18</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_ioreq.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_ioreq.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>yc_usb\libraries\SCPU_USB_Device_Library\class\hid</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>19</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\hid\halUSB.c</PathWithFileName>
+      <FilenameWithoutPath>halUSB.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>20</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\HID\usbd_hid_core.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_hid_core.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>yc_usb\scpu_usb_hid_Device_Demo</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>21</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_hid_Device_Demo\Usb_dcd_init.c</PathWithFileName>
+      <FilenameWithoutPath>Usb_dcd_init.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>22</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_hid_Device_Demo\usb_main.c</PathWithFileName>
+      <FilenameWithoutPath>usb_main.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>23</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_hid_Device_Demo\usbd_desc.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_desc.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>24</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_hid_Device_Demo\usbd_usr.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_usr.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+</ProjectOpt>
Index: usb_hid/prj/MDK/YC3121_Keil.uvprojx
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_hid/prj/MDK/YC3121_Keil.uvprojx	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_hid/prj/MDK/YC3121_Keil.uvprojx	(working copy)
@@ -0,0 +1,552 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
+
+  <SchemaVersion>2.1</SchemaVersion>
+
+  <Header>### uVision Project, (C) Keil Software</Header>
+
+  <Targets>
+    <Target>
+      <TargetName>YC3121</TargetName>
+      <ToolsetNumber>0x4</ToolsetNumber>
+      <ToolsetName>ARM-ADS</ToolsetName>
+      <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
+      <uAC6>0</uAC6>
+      <TargetOption>
+        <TargetCommonOption>
+          <Device>ARMCM0</Device>
+          <Vendor>ARM</Vendor>
+          <PackID>ARM.CMSIS.5.5.1</PackID>
+          <PackURL>http://www.keil.com/pack/</PackURL>
+          <Cpu>IRAM(0x20000000,0x00020000) IROM(0x00000000,0x00040000) CPUTYPE("Cortex-M0") CLOCK(12000000) ESEL ELITTLE</Cpu>
+          <FlashUtilSpec></FlashUtilSpec>
+          <StartupFile></StartupFile>
+          <FlashDriverDll>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000)</FlashDriverDll>
+          <DeviceId>0</DeviceId>
+          <RegisterFile>$$Device:ARMCM0$Device\ARM\ARMCM0\Include\ARMCM0.h</RegisterFile>
+          <MemoryEnv></MemoryEnv>
+          <Cmp></Cmp>
+          <Asm></Asm>
+          <Linker></Linker>
+          <OHString></OHString>
+          <InfinionOptionDll></InfinionOptionDll>
+          <SLE66CMisc></SLE66CMisc>
+          <SLE66AMisc></SLE66AMisc>
+          <SLE66LinkerMisc></SLE66LinkerMisc>
+          <SFDFile>$$Device:ARMCM0$Device\ARM\SVD\ARMCM0.svd</SFDFile>
+          <bCustSvd>0</bCustSvd>
+          <UseEnv>0</UseEnv>
+          <BinPath></BinPath>
+          <IncludePath></IncludePath>
+          <LibPath></LibPath>
+          <RegisterFilePath></RegisterFilePath>
+          <DBRegisterFilePath></DBRegisterFilePath>
+          <TargetStatus>
+            <Error>0</Error>
+            <ExitCodeStop>0</ExitCodeStop>
+            <ButtonStop>0</ButtonStop>
+            <NotGenerated>0</NotGenerated>
+            <InvalidFlash>1</InvalidFlash>
+          </TargetStatus>
+          <OutputDirectory>.\Objects\</OutputDirectory>
+          <OutputName>YC3121_Keil</OutputName>
+          <CreateExecutable>1</CreateExecutable>
+          <CreateLib>0</CreateLib>
+          <CreateHexFile>1</CreateHexFile>
+          <DebugInformation>1</DebugInformation>
+          <BrowseInformation>1</BrowseInformation>
+          <ListingPath>.\Listings\</ListingPath>
+          <HexFormatSelection>1</HexFormatSelection>
+          <Merge32K>0</Merge32K>
+          <CreateBatchFile>1</CreateBatchFile>
+          <BeforeCompile>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopU1X>0</nStopU1X>
+            <nStopU2X>0</nStopU2X>
+          </BeforeCompile>
+          <BeforeMake>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopB1X>0</nStopB1X>
+            <nStopB2X>0</nStopB2X>
+          </BeforeMake>
+          <AfterMake>
+            <RunUserProg1>1</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name>fromelf.exe --text -a -c --output=@L_asm.txt "!L"</UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopA1X>0</nStopA1X>
+            <nStopA2X>0</nStopA2X>
+          </AfterMake>
+          <SelectedForBatchBuild>0</SelectedForBatchBuild>
+          <SVCSIdString></SVCSIdString>
+        </TargetCommonOption>
+        <CommonProperty>
+          <UseCPPCompiler>0</UseCPPCompiler>
+          <RVCTCodeConst>0</RVCTCodeConst>
+          <RVCTZI>0</RVCTZI>
+          <RVCTOtherData>0</RVCTOtherData>
+          <ModuleSelection>0</ModuleSelection>
+          <IncludeInBuild>1</IncludeInBuild>
+          <AlwaysBuild>0</AlwaysBuild>
+          <GenerateAssemblyFile>0</GenerateAssemblyFile>
+          <AssembleAssemblyFile>0</AssembleAssemblyFile>
+          <PublicsOnly>0</PublicsOnly>
+          <StopOnExitCode>3</StopOnExitCode>
+          <CustomArgument></CustomArgument>
+          <IncludeLibraryModules></IncludeLibraryModules>
+          <ComprImg>1</ComprImg>
+        </CommonProperty>
+        <DllOption>
+          <SimDllName>SARMCM3.DLL</SimDllName>
+          <SimDllArguments>  </SimDllArguments>
+          <SimDlgDll>DARMCM1.DLL</SimDlgDll>
+          <SimDlgDllArguments>-pCM0</SimDlgDllArguments>
+          <TargetDllName>SARMCM3.DLL</TargetDllName>
+          <TargetDllArguments> </TargetDllArguments>
+          <TargetDlgDll>TARMCM1.DLL</TargetDlgDll>
+          <TargetDlgDllArguments>-pCM0</TargetDlgDllArguments>
+        </DllOption>
+        <DebugOption>
+          <OPTHX>
+            <HexSelection>1</HexSelection>
+            <HexRangeLowAddress>0</HexRangeLowAddress>
+            <HexRangeHighAddress>0</HexRangeHighAddress>
+            <HexOffset>0</HexOffset>
+            <Oh166RecLen>16</Oh166RecLen>
+          </OPTHX>
+        </DebugOption>
+        <Utilities>
+          <Flash1>
+            <UseTargetDll>1</UseTargetDll>
+            <UseExternalTool>0</UseExternalTool>
+            <RunIndependent>1</RunIndependent>
+            <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
+            <Capability>1</Capability>
+            <DriverSelection>4100</DriverSelection>
+          </Flash1>
+          <bUseTDR>0</bUseTDR>
+          <Flash2>Segger\JL2CM3.dll</Flash2>
+          <Flash3>"" ()</Flash3>
+          <Flash4></Flash4>
+          <pFcarmOut></pFcarmOut>
+          <pFcarmGrp></pFcarmGrp>
+          <pFcArmRoot></pFcArmRoot>
+          <FcArmLst>0</FcArmLst>
+        </Utilities>
+        <TargetArmAds>
+          <ArmAdsMisc>
+            <GenerateListings>0</GenerateListings>
+            <asHll>1</asHll>
+            <asAsm>1</asAsm>
+            <asMacX>1</asMacX>
+            <asSyms>1</asSyms>
+            <asFals>1</asFals>
+            <asDbgD>1</asDbgD>
+            <asForm>1</asForm>
+            <ldLst>0</ldLst>
+            <ldmm>1</ldmm>
+            <ldXref>1</ldXref>
+            <BigEnd>0</BigEnd>
+            <AdsALst>1</AdsALst>
+            <AdsACrf>1</AdsACrf>
+            <AdsANop>0</AdsANop>
+            <AdsANot>0</AdsANot>
+            <AdsLLst>1</AdsLLst>
+            <AdsLmap>1</AdsLmap>
+            <AdsLcgr>1</AdsLcgr>
+            <AdsLsym>1</AdsLsym>
+            <AdsLszi>1</AdsLszi>
+            <AdsLtoi>1</AdsLtoi>
+            <AdsLsun>1</AdsLsun>
+            <AdsLven>1</AdsLven>
+            <AdsLsxf>1</AdsLsxf>
+            <RvctClst>0</RvctClst>
+            <GenPPlst>0</GenPPlst>
+            <AdsCpuType>"Cortex-M0"</AdsCpuType>
+            <RvctDeviceName></RvctDeviceName>
+            <mOS>0</mOS>
+            <uocRom>0</uocRom>
+            <uocRam>0</uocRam>
+            <hadIROM>1</hadIROM>
+            <hadIRAM>1</hadIRAM>
+            <hadXRAM>0</hadXRAM>
+            <uocXRam>0</uocXRam>
+            <RvdsVP>0</RvdsVP>
+            <RvdsMve>0</RvdsMve>
+            <hadIRAM2>0</hadIRAM2>
+            <hadIROM2>0</hadIROM2>
+            <StupSel>8</StupSel>
+            <useUlib>1</useUlib>
+            <EndSel>1</EndSel>
+            <uLtcg>0</uLtcg>
+            <nSecure>0</nSecure>
+            <RoSelD>3</RoSelD>
+            <RwSelD>3</RwSelD>
+            <CodeSel>0</CodeSel>
+            <OptFeed>0</OptFeed>
+            <NoZi1>0</NoZi1>
+            <NoZi2>0</NoZi2>
+            <NoZi3>0</NoZi3>
+            <NoZi4>0</NoZi4>
+            <NoZi5>0</NoZi5>
+            <Ro1Chk>0</Ro1Chk>
+            <Ro2Chk>0</Ro2Chk>
+            <Ro3Chk>0</Ro3Chk>
+            <Ir1Chk>1</Ir1Chk>
+            <Ir2Chk>0</Ir2Chk>
+            <Ra1Chk>0</Ra1Chk>
+            <Ra2Chk>0</Ra2Chk>
+            <Ra3Chk>0</Ra3Chk>
+            <Im1Chk>1</Im1Chk>
+            <Im2Chk>0</Im2Chk>
+            <OnChipMemories>
+              <Ocm1>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm1>
+              <Ocm2>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm2>
+              <Ocm3>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm3>
+              <Ocm4>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm4>
+              <Ocm5>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm5>
+              <Ocm6>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm6>
+              <IRAM>
+                <Type>0</Type>
+                <StartAddress>0x20000000</StartAddress>
+                <Size>0x20000</Size>
+              </IRAM>
+              <IROM>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x40000</Size>
+              </IROM>
+              <XRAM>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </XRAM>
+              <OCR_RVCT1>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT1>
+              <OCR_RVCT2>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT2>
+              <OCR_RVCT3>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT3>
+              <OCR_RVCT4>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x40000</Size>
+              </OCR_RVCT4>
+              <OCR_RVCT5>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT5>
+              <OCR_RVCT6>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT6>
+              <OCR_RVCT7>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT7>
+              <OCR_RVCT8>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT8>
+              <OCR_RVCT9>
+                <Type>0</Type>
+                <StartAddress>0x20000000</StartAddress>
+                <Size>0x20000</Size>
+              </OCR_RVCT9>
+              <OCR_RVCT10>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT10>
+            </OnChipMemories>
+            <RvctStartVector></RvctStartVector>
+          </ArmAdsMisc>
+          <Cads>
+            <interw>1</interw>
+            <Optim>3</Optim>
+            <oTime>0</oTime>
+            <SplitLS>0</SplitLS>
+            <OneElfS>0</OneElfS>
+            <Strict>0</Strict>
+            <EnumInt>0</EnumInt>
+            <PlainCh>0</PlainCh>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <wLevel>1</wLevel>
+            <uThumb>0</uThumb>
+            <uSurpInc>0</uSurpInc>
+            <uC99>1</uC99>
+            <uGnu>0</uGnu>
+            <useXO>0</useXO>
+            <v6Lang>1</v6Lang>
+            <v6LangP>1</v6LangP>
+            <vShortEn>1</vShortEn>
+            <vShortWch>1</vShortWch>
+            <v6Lto>0</v6Lto>
+            <v6WtE>0</v6WtE>
+            <v6Rtti>0</v6Rtti>
+            <VariousControls>
+              <MiscControls></MiscControls>
+              <Define>__USEKEILCOMPILE__</Define>
+              <Undefine></Undefine>
+              <IncludePath>..\..\..\..\..\Librarier\core;..\..\..\..\..\Librarier\sdk;..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der;..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core;..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\HID;..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_hid_Device_Demo;..\..\HalUSB;..\..\user</IncludePath>
+            </VariousControls>
+          </Cads>
+          <Aads>
+            <interw>1</interw>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <thumb>0</thumb>
+            <SplitLS>0</SplitLS>
+            <SwStkChk>0</SwStkChk>
+            <NoWarn>0</NoWarn>
+            <uSurpInc>0</uSurpInc>
+            <useXO>0</useXO>
+            <uClangAs>0</uClangAs>
+            <VariousControls>
+              <MiscControls></MiscControls>
+              <Define></Define>
+              <Undefine></Undefine>
+              <IncludePath></IncludePath>
+            </VariousControls>
+          </Aads>
+          <LDads>
+            <umfTarg>0</umfTarg>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <noStLib>0</noStLib>
+            <RepFail>1</RepFail>
+            <useFile>0</useFile>
+            <TextAddressRange>0x00000000</TextAddressRange>
+            <DataAddressRange>0xd0000</DataAddressRange>
+            <pXoBase></pXoBase>
+            <ScatterFile>.\Objects\YC3121_keil.sct</ScatterFile>
+            <IncludeLibs></IncludeLibs>
+            <IncludeLibsPath></IncludeLibsPath>
+            <Misc></Misc>
+            <LinkerInputFile></LinkerInputFile>
+            <DisabledWarnings></DisabledWarnings>
+          </LDads>
+        </TargetArmAds>
+      </TargetOption>
+      <Groups>
+        <Group>
+          <GroupName>core</GroupName>
+          <Files>
+            <File>
+              <FileName>misc.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\core\misc.c</FilePath>
+            </File>
+            <File>
+              <FileName>system.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\core\system.c</FilePath>
+            </File>
+            <File>
+              <FileName>bt_code.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\core\bt_code.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>main</GroupName>
+          <Files>
+            <File>
+              <FileName>main.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\user\main.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>sdk</GroupName>
+          <Files>
+            <File>
+              <FileName>yc_gpio.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_gpio.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_uart.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_uart.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_timer.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_timer.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_ipc.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_ipc.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_lpm.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_lpm.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_sysctrl.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_sysctrl.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_otp.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_otp.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>startup</GroupName>
+          <Files>
+            <File>
+              <FileName>flash_start.s</FileName>
+              <FileType>2</FileType>
+              <FilePath>..\..\..\..\..\Librarier\startup\flash_start.s</FilePath>
+            </File>
+            <File>
+              <FileName>startup.s</FileName>
+              <FileType>2</FileType>
+              <FilePath>..\..\..\..\..\Librarier\startup\startup.s</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>yc_usb\libraries\harward_Der</GroupName>
+          <Files>
+            <File>
+              <FileName>usb_core.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\usb_core.c</FilePath>
+            </File>
+            <File>
+              <FileName>Usb_dcd.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\Usb_dcd.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>yc_usb\libraries\SCPU_USB_Device_Library\core</GroupName>
+          <Files>
+            <File>
+              <FileName>usbd_core.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_core.c</FilePath>
+            </File>
+            <File>
+              <FileName>usbd_req.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_req.c</FilePath>
+            </File>
+            <File>
+              <FileName>usbd_ioreq.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_ioreq.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>yc_usb\libraries\SCPU_USB_Device_Library\class\hid</GroupName>
+          <Files>
+            <File>
+              <FileName>halUSB.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\hid\halUSB.c</FilePath>
+            </File>
+            <File>
+              <FileName>usbd_hid_core.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\HID\usbd_hid_core.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>yc_usb\scpu_usb_hid_Device_Demo</GroupName>
+          <Files>
+            <File>
+              <FileName>Usb_dcd_init.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_hid_Device_Demo\Usb_dcd_init.c</FilePath>
+            </File>
+            <File>
+              <FileName>usb_main.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_hid_Device_Demo\usb_main.c</FilePath>
+            </File>
+            <File>
+              <FileName>usbd_desc.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_hid_Device_Demo\usbd_desc.c</FilePath>
+            </File>
+            <File>
+              <FileName>usbd_usr.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_hid_Device_Demo\usbd_usr.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+      </Groups>
+    </Target>
+  </Targets>
+
+  <RTE>
+    <apis/>
+    <components/>
+    <files/>
+  </RTE>
+
+</Project>
Index: usb_hid/user/main.c
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_hid/user/main.c	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_hid/user/main.c	(working copy)
@@ -0,0 +1,133 @@
+/**
+  ******************************************************************************
+  * @file    3121Demo_1.0V\ModuleDemo\UART\UART_TX_Sendbuf\user\main.c
+  * @author  Yichip Application Team
+  * @version V1.0.0
+  * @date    23-Oct-2019
+  * @brief   USB HID test program.
+  ******************************************************************************
+  * @attention
+  *
+  * COPYRIGHT 2019 Yichip Microelectronics
+  *
+  * The purpose of this demo is to provide guidance to customers engaged in
+    * programming work to guide them smoothly to product development,
+    * so as to save their time.
+    *
+    * Therefore, Yichip microelectronics shall not be responsible for any direct,
+    * indirect or consequential damages caused by any content of this demo
+    * and/or contained in this code used by the customer in its products.
+  *
+  ******************************************************************************
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "yc3121.h"
+#include "yc_gpio.h"
+#include "yc_uart.h"
+#include "yc_ipc.h"
+#include "usb_main.h"
+#include "halUSB.h"
+#include "board_config.h"
+
+/* Private macro -------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+/* Private function prototypes -----------------------------------------------*/
+void UART_Configuration(void);
+#define UART_DEBUG
+/**
+  * @brief  Main program
+  * @param  None
+  * @retval None
+  */
+extern USB_OTG_CORE_HANDLE  USB_OTG_dev;
+USB_OTG_CORE_HANDLE *pdev;
+uint8_t  rev_data[64];
+volatile uint8_t tx_sendflag = 1;
+int main(void)
+{
+    uint8_t  len, uartretval;
+    uint8_t  tx_sendbuffer[128] = {0};
+    uint32_t count = 0xFFFFFFFF;
+    UART_Configuration();
+
+    IpcInit();
+    MyPrintf("YICHIP SCPU HID Device Demo V1.0.\n");
+    MyPrintf(" 1: HID send data 64byte\n");
+
+    halUsbInit(USB_MODE_HID);
+
+    while (1)
+    {
+        if (UART_IsRXFIFONotEmpty(UART0))
+        {
+            uartretval = UART_ReceiveData(UART0);
+
+            switch (uartretval)
+            {
+            case '1':
+                while (count --)
+                {
+                    if (tx_sendflag == 1)
+                    {
+                        /* ep1 send data*/
+                        tx_sendflag = 0;
+                        DCD_EP_Tx(&USB_OTG_dev, HID_IN_EP, tx_sendbuffer, 64);
+                    }
+                }
+                break;
+
+            default:
+                break;
+            }
+
+            uartretval = 0;
+        }
+
+        /* receive data and send data*/
+        if (halUsbDataAck() == HAVE_DATA)
+        {
+            len = halUsbReceive(rev_data, 64);
+
+            if (len == HID_EPOUT_SIZE)
+            {
+                halUsbSend(rev_data, len);
+            }
+        }
+
+    }
+}
+
+/**
+  * @brief  Serial port 0 initialization function.
+  * @param  None
+  * @retval None
+  */
+void UART_Configuration(void)
+{
+    UART_InitTypeDef UART_InitStruct;
+
+	/* Configure serial ports 0 RX and TX for IO. */
+	GPIO_Config(UART0_TX_PORT, UART0_TX_PIN, UART0_TXD);
+	GPIO_Config(UART0_RX_PORT, UART0_RX_PIN, UART0_RXD);
+
+	/* USARTx configured as follow:
+    - BaudRate = 115200 baud
+    - Word Length = 8 Bits
+    - Stop Bit = 1 Stop Bit
+    - Parity = No Parity
+    - Hardware flow control disabled (RTS and CTS signals)
+    - Receive and transmit enabled
+  */
+	UART_InitStruct.BaudRate = UARTBAUD;			//Configure serial port baud rate, the baud rate defaults to 128000.
+	UART_InitStruct.DataBits = Databits_8b;
+	UART_InitStruct.StopBits = StopBits_1;
+	UART_InitStruct.Parity = Parity_None;
+	UART_InitStruct.FlowCtrl = FlowCtrl_None;
+	UART_InitStruct.Mode = Mode_duplex;
+
+	UART_Init(UART0, &UART_InitStruct);
+}
+
+
+/************************ (C) COPYRIGHT Yichip Microelectronics *****END OF FILE****/
Index: usb_msc/prj/GCC/c.bat
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_msc/prj/GCC/c.bat	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_msc/prj/GCC/c.bat	(working copy)
@@ -0,0 +1,3 @@
+cls
+make clean
+make
\ No newline at end of file
Index: usb_msc/prj/GCC/makefile
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_msc/prj/GCC/makefile	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_msc/prj/GCC/makefile	(working copy)
@@ -0,0 +1,251 @@
+
+ifeq ($(OS),Windows_NT)
+DIR = C:/gcc-arm-none-eabi-7-2018-q2-update-win32
+else
+DIR = /usr/gcc-arm-none-eabi-7-2018-q2-update
+endif
+
+ARCH = $(DIR)/bin/arm-none-eabi
+GCC = $(ARCH)-gcc
+LD = $(ARCH)-ld
+AS = $(ARCH)-as
+OBJCOPY = $(ARCH)-objcopy
+OBJDUMP = "$(ARCH)-objdump"
+LIB_PATH = ../../../../../Librarier
+USER_PATH = ../../user
+
+
+all : output/out.hex
+
+
+CORE_OBJS =  $(LIB_PATH)/startup/flash_start_gcc \
+             $(LIB_PATH)/core/system \
+             $(LIB_PATH)/core/misc \
+             $(LIB_PATH)/core/bt_code \
+             $(LIB_PATH)/sdk/yc_gpio \
+             $(LIB_PATH)/sdk/yc_uart \
+             $(LIB_PATH)/sdk/yc_timer \
+             $(LIB_PATH)/sdk/yc_ipc \
+             $(LIB_PATH)/sdk/yc_lpm \
+             $(LIB_PATH)/sdk/yc_otp \
+             $(LIB_PATH)/sdk/yc_sysctrl \
+             $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der/usb_core \
+             $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der/Usb_dcd \
+             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core/usbd_core \
+             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core/usbd_ioreq \
+             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core/usbd_req \
+             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/class/msc/usbd_msc_core \
+             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/class/msc/usbd_msc_bot \
+             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/class/msc/usbd_msc_scsi \
+             $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/class/msc/usbd_msc_data \
+             $(LIB_PATH)/sdk/yc_usb/scpu_usb_msc_Device_Demo/Usb_dcd_init \
+             $(LIB_PATH)/sdk/yc_usb/scpu_usb_msc_Device_Demo/usb_main \
+             $(LIB_PATH)/sdk/yc_usb/scpu_usb_msc_Device_Demo/usbd_desc \
+             $(LIB_PATH)/sdk/yc_usb/scpu_usb_msc_Device_Demo/usbd_usr \
+             $(LIB_PATH)/sdk/yc_usb/scpu_usb_msc_Device_Demo/usbd_storage_msd
+
+
+USER_OBJS = $(USER_PATH)/main
+
+OBJS = $(CORE_OBJS) $(USER_OBJS)
+
+INC_DIR = -I $(LIB_PATH)/core \
+          -I $(LIB_PATH)/sdk \
+          -I $(LIB_PATH)/sdk/yc_usb/libraries/harward_Der \
+          -I $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/core \
+          -I $(LIB_PATH)/sdk/yc_usb/libraries/SCPU_USB_Device_Library/class/msc \
+          -I $(LIB_PATH)/sdk/yc_usb/scpu_usb_msc_Device_Demo
+
+
+CFLAG =  -mthumb -mcpu=cortex-m0 -c -g -Os $(INC_DIR) $(DEF) -fno-toplevel-reorder -ffunction-sections -fdata-sections
+LDFLAG = -T output/ld.script -Map=output/memmap -lc -lm -lgcc -L "$(DIR)/lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m"  -L "$(DIR)/arm-none-eabi/lib/thumb/v6-m"
+
+define ldscript =
+/* Linker script to configure memory regions.
+ * Need modifying for a specific board.
+ *   FLASH.ORIGIN: starting address of flash
+ *   FLASH.LENGTH: length of flash
+ *   RAM.ORIGIN: starting address of RAM bank 0
+ *   RAM.LENGTH: length of RAM bank 0
+ */
+MEMORY
+{
+  FLASH (rx) : ORIGIN = 0x1000000, LENGTH = 0x80000 /* 512K */
+  RAM (rwx) : ORIGIN = 0x20000, LENGTH = 0x10000 /* 64K */
+}
+
+/* Linker script to place sections and symbol values. Should be used together
+ * with other linker script that defines memory regions FLASH and RAM.
+ * It references following symbols, which must be defined in code:
+ *   Reset_Handler : Entry of reset handler
+ *
+ * It defines following symbols, which code can use without definition:
+ *   __exidx_start
+ *   __exidx_end
+ *   __copy_table_start__
+ *   __copy_table_end__
+ *   __zero_table_start__
+ *   __zero_table_end__
+ *   __etext
+ *   __data_start__
+ *   __preinit_array_start
+ *   __preinit_array_end
+ *   __init_array_start
+ *   __init_array_end
+ *   __fini_array_start
+ *   __fini_array_end
+ *   __data_end__
+ *   __bss_start__
+ *   __bss_end__
+ *   __end__
+ *   end
+ *   __HeapLimit
+ *   __StackLimit
+ *   __StackTop
+ *   __stack
+ */
+ENTRY(Reset_Handler)
+
+SECTIONS
+{
+	.text :
+	{
+		*flash_start*.o
+		*(.text*)
+
+		KEEP(*(.init))
+		KEEP(*(.fini))
+
+		/* .ctors */
+		*crtbegin.o(.ctors)
+		*crtbegin?.o(.ctors)
+		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
+		*(SORT(.ctors.*))
+		*(.ctors)
+
+		/* .dtors */
+ 		*crtbegin.o(.dtors)
+ 		*crtbegin?.o(.dtors)
+ 		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
+ 		*(SORT(.dtors.*))
+ 		*(.dtors)
+
+		*(.rodata*)
+
+		KEEP(*(.eh_frame*))
+	} > FLASH
+
+
+
+	.ARM.extab :
+	{
+		*(.ARM.extab* .gnu.linkonce.armextab.*)
+	} > FLASH
+
+
+	.ARM.exidx :
+	{
+		*(.ARM.exidx* .gnu.linkonce.armexidx.*)
+	} > FLASH
+
+	 . = ALIGN(4);
+	__exidx_start = .;
+
+	__etext = .;
+
+	.data : AT (__etext)
+	{
+		__data_start__ = .;
+		*(vtable)
+		*(.data*)
+
+		. = ALIGN(4);
+		/* preinit data */
+		PROVIDE_HIDDEN (__preinit_array_start = .);
+		KEEP(*(.preinit_array))
+		PROVIDE_HIDDEN (__preinit_array_end = .);
+
+		. = ALIGN(4);
+		/* init data */
+		PROVIDE_HIDDEN (__init_array_start = .);
+		KEEP(*(SORT(.init_array.*)))
+		KEEP(*(.init_array))
+		PROVIDE_HIDDEN (__init_array_end = .);
+
+
+		. = ALIGN(4);
+		/* finit data */
+		PROVIDE_HIDDEN (__fini_array_start = .);
+		KEEP(*(SORT(.fini_array.*)))
+		KEEP(*(.fini_array))
+		PROVIDE_HIDDEN (__fini_array_end = .);
+
+		KEEP(*(.jcr*))
+		. = ALIGN(4);
+		/* All data end */
+		__data_end__ = .;
+
+	} > RAM
+
+	.bss :
+	{
+		. = ALIGN(4);
+		__bss_start__ = .;
+		*(.bss*)
+		*(COMMON)
+		. = ALIGN(4);
+		__bss_end__ = .;
+	} > RAM
+
+	.heap (COPY):
+	{
+		__end__ = .;
+		PROVIDE(end = .);
+		*(.heap*)
+		__HeapLimit = .;
+	} > RAM
+
+	/* .stack_dummy section doesn't contains any symbols. It is only
+	 * used for linker to calculate size of stack sections, and assign
+	 * values to stack symbols later */
+	.stack_dummy (COPY):
+	{
+		*(.stack*)
+	} > RAM
+
+	/* Set stack top to end of RAM, and stack limit move down by
+	 * size of stack_dummy section */
+	__StackTop = ORIGIN(RAM) + LENGTH(RAM);
+	__StackLimit = __StackTop - SIZEOF(.stack_dummy);
+	PROVIDE(__stack = __StackTop);
+
+	/* Check if data + heap + stack exceeds RAM limit */
+	ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
+}
+endef
+
+
+output/out.hex : output/out
+	$(OBJCOPY) $^ -O ihex $@
+
+
+output/out : $(addprefix output/, $(addsuffix .o, $(OBJS)))
+	$(file >output/ld.script, $(ldscript))
+	$(LD) $(addprefix output/obj/,$(addsuffix .o, $(notdir $(OBJS)))) -o $@ $(LDFLAG)
+	$(OBJDUMP) -S $@ > output/disasm
+
+output/%.o : %.c
+	$(GCC) $< $(CFLAG) -o output/obj/$(notdir $@)
+
+output/%.o : %.s
+	$(AS) $^ -mthumb -mcpu=cortex-m0 -o output/obj/$(notdir $@)
+
+
+clean :
+ifeq ($(OS),Windows_NT)
+	del /Q output\*.*
+	del /Q output\obj\*.*
+else
+	rm -rf output/*
+	rm -rf output/obj/*
+endif
Index: usb_msc/prj/MDK/Objects/YC3121_keil.sct
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_msc/prj/MDK/Objects/YC3121_keil.sct	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_msc/prj/MDK/Objects/YC3121_keil.sct	(working copy)
@@ -0,0 +1,55 @@
+; *************************************************************
+; *** Scatter-Loading Description File generated by uVision ***
+; *************************************************************
+
+LR_IROM1 0x00000000 0x0001fff  {    ; load region size_region
+  ER_IROM1 0x00000000 0x00001fff  {  ; load address = execution address
+   startup.o (RESET, +First)
+   startup.o (|.text|,+RO)
+;   *(InRoot$$Sections)
+  }
+  ;ER_IROM2 0x4000   {
+  ;rom_main.o (+RO)
+  ;}
+  
+  ;ER_IROM3 0x100000 {
+	  ;*(InRoot$$Sections)
+  ;}
+	
+  ;ER_IROM4 0x100400   {
+  ;flash_start.o (+RO)
+  ;.ANY (+RO) 
+  ;}
+  
+  ;RW_IRAM1 0x000d0000 0x0010000  {  ; RW data
+   ;.ANY (+RW +ZI)
+  ;}
+  
+;  ARM_LIB_STACK 0xE0000 EMPTY -0x10000{}
+}
+
+;LR_IROM2 0x4000 0x4000{
+;	ER_IROM2 0x4000 {
+;	  rom_main.o (+RO)
+;	}
+;}
+
+LR_IROM3 0x1000200 0x200{
+	ER_IROM3 0x1000200 {
+	  flash_start.o (|.flash_start|,+RO)
+	}
+}
+
+LR_IROM4 0x1000400 0x1000000{
+	ER_IROM4 0x1000400 {
+;	  flash_start.o (|.flash_start|,+RO)
+	  *(InRoot$$Sections)
+	  .ANY (+RO)
+	}
+	
+	
+	 RW_IRAM2 0x00020000 0x010000  {  ; RW data
+	.ANY (+RW +ZI)
+	}
+}
+
Index: usb_msc/prj/MDK/YC3121_Keil.uvoptx
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_msc/prj/MDK/YC3121_Keil.uvoptx	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_msc/prj/MDK/YC3121_Keil.uvoptx	(working copy)
@@ -0,0 +1,602 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
+
+  <SchemaVersion>1.0</SchemaVersion>
+
+  <Header>### uVision Project, (C) Keil Software</Header>
+
+  <Extensions>
+    <cExt>*.c</cExt>
+    <aExt>*.s*; *.src; *.a*</aExt>
+    <oExt>*.obj; *.o</oExt>
+    <lExt>*.lib</lExt>
+    <tExt>*.txt; *.h; *.inc</tExt>
+    <pExt>*.plm</pExt>
+    <CppX>*.cpp</CppX>
+    <nMigrate>0</nMigrate>
+  </Extensions>
+
+  <DaveTm>
+    <dwLowDateTime>0</dwLowDateTime>
+    <dwHighDateTime>0</dwHighDateTime>
+  </DaveTm>
+
+  <Target>
+    <TargetName>YC3121</TargetName>
+    <ToolsetNumber>0x4</ToolsetNumber>
+    <ToolsetName>ARM-ADS</ToolsetName>
+    <TargetOption>
+      <CLKADS>12000000</CLKADS>
+      <OPTTT>
+        <gFlags>1</gFlags>
+        <BeepAtEnd>1</BeepAtEnd>
+        <RunSim>0</RunSim>
+        <RunTarget>1</RunTarget>
+        <RunAbUc>0</RunAbUc>
+      </OPTTT>
+      <OPTHX>
+        <HexSelection>1</HexSelection>
+        <FlashByte>65535</FlashByte>
+        <HexRangeLowAddress>0</HexRangeLowAddress>
+        <HexRangeHighAddress>0</HexRangeHighAddress>
+        <HexOffset>0</HexOffset>
+      </OPTHX>
+      <OPTLEX>
+        <PageWidth>79</PageWidth>
+        <PageLength>66</PageLength>
+        <TabStop>8</TabStop>
+        <ListingPath>.\Listings\</ListingPath>
+      </OPTLEX>
+      <ListingPage>
+        <CreateCListing>1</CreateCListing>
+        <CreateAListing>1</CreateAListing>
+        <CreateLListing>1</CreateLListing>
+        <CreateIListing>0</CreateIListing>
+        <AsmCond>1</AsmCond>
+        <AsmSymb>1</AsmSymb>
+        <AsmXref>0</AsmXref>
+        <CCond>1</CCond>
+        <CCode>0</CCode>
+        <CListInc>0</CListInc>
+        <CSymb>0</CSymb>
+        <LinkerCodeListing>0</LinkerCodeListing>
+      </ListingPage>
+      <OPTXL>
+        <LMap>1</LMap>
+        <LComments>1</LComments>
+        <LGenerateSymbols>1</LGenerateSymbols>
+        <LLibSym>1</LLibSym>
+        <LLines>1</LLines>
+        <LLocSym>1</LLocSym>
+        <LPubSym>1</LPubSym>
+        <LXref>0</LXref>
+        <LExpSel>0</LExpSel>
+      </OPTXL>
+      <OPTFL>
+        <tvExp>1</tvExp>
+        <tvExpOptDlg>0</tvExpOptDlg>
+        <IsCurrentTarget>1</IsCurrentTarget>
+      </OPTFL>
+      <CpuCode>7</CpuCode>
+      <DebugOpt>
+        <uSim>0</uSim>
+        <uTrg>1</uTrg>
+        <sLdApp>1</sLdApp>
+        <sGomain>1</sGomain>
+        <sRbreak>1</sRbreak>
+        <sRwatch>1</sRwatch>
+        <sRmem>1</sRmem>
+        <sRfunc>1</sRfunc>
+        <sRbox>1</sRbox>
+        <tLdApp>1</tLdApp>
+        <tGomain>1</tGomain>
+        <tRbreak>1</tRbreak>
+        <tRwatch>1</tRwatch>
+        <tRmem>1</tRmem>
+        <tRfunc>0</tRfunc>
+        <tRbox>1</tRbox>
+        <tRtrace>1</tRtrace>
+        <sRSysVw>1</sRSysVw>
+        <tRSysVw>1</tRSysVw>
+        <sRunDeb>0</sRunDeb>
+        <sLrtime>0</sLrtime>
+        <bEvRecOn>1</bEvRecOn>
+        <bSchkAxf>0</bSchkAxf>
+        <bTchkAxf>0</bTchkAxf>
+        <nTsel>4</nTsel>
+        <sDll></sDll>
+        <sDllPa></sDllPa>
+        <sDlgDll></sDlgDll>
+        <sDlgPa></sDlgPa>
+        <sIfile></sIfile>
+        <tDll></tDll>
+        <tDllPa></tDllPa>
+        <tDlgDll></tDlgDll>
+        <tDlgPa></tDlgPa>
+        <tIfile>..\..\..\..\..\ConfigFiles\MDK\flash.ini</tIfile>
+        <pMon>Segger\JL2CM3.dll</pMon>
+      </DebugOpt>
+      <TargetDriverDllRegistry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>DLGUARM</Key>
+          <Name>d</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>PWSTATINFO</Key>
+          <Name>200,50,700</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>ARMRTXEVENTFLAGS</Key>
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>DLGTARM</Key>
+          <Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>ARMDBGFLAGS</Key>
+          <Name></Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>JL2CM3</Key>
+          <Name>-U788594195 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(0BB11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO31 -FD20000 -FCA000 -FN1 -FF0YC3121 -FS01000000 -FL080000</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>UL2CM3</Key>
+          <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000)</Name>
+        </SetRegEntry>
+      </TargetDriverDllRegistry>
+      <Breakpoint/>
+      <Tracepoint>
+        <THDelay>0</THDelay>
+      </Tracepoint>
+      <DebugFlag>
+        <trace>0</trace>
+        <periodic>0</periodic>
+        <aLwin>1</aLwin>
+        <aCover>0</aCover>
+        <aSer1>0</aSer1>
+        <aSer2>0</aSer2>
+        <aPa>0</aPa>
+        <viewmode>1</viewmode>
+        <vrSel>0</vrSel>
+        <aSym>0</aSym>
+        <aTbox>0</aTbox>
+        <AscS1>0</AscS1>
+        <AscS2>0</AscS2>
+        <AscS3>0</AscS3>
+        <aSer3>0</aSer3>
+        <eProf>0</eProf>
+        <aLa>0</aLa>
+        <aPa1>0</aPa1>
+        <AscS4>0</AscS4>
+        <aSer4>0</aSer4>
+        <StkLoc>0</StkLoc>
+        <TrcWin>0</TrcWin>
+        <newCpu>0</newCpu>
+        <uProt>0</uProt>
+      </DebugFlag>
+      <LintExecutable></LintExecutable>
+      <LintConfigFile></LintConfigFile>
+      <bLintAuto>0</bLintAuto>
+      <bAutoGenD>0</bAutoGenD>
+      <LntExFlags>0</LntExFlags>
+      <pMisraName></pMisraName>
+      <pszMrule></pszMrule>
+      <pSingCmds></pSingCmds>
+      <pMultCmds></pMultCmds>
+      <pMisraNamep></pMisraNamep>
+      <pszMrulep></pszMrulep>
+      <pSingCmdsp></pSingCmdsp>
+      <pMultCmdsp></pMultCmdsp>
+    </TargetOption>
+  </Target>
+
+  <Group>
+    <GroupName>core</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>1</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\core\misc.c</PathWithFileName>
+      <FilenameWithoutPath>misc.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>2</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\core\system.c</PathWithFileName>
+      <FilenameWithoutPath>system.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>3</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\core\bt_code.c</PathWithFileName>
+      <FilenameWithoutPath>bt_code.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>main</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>2</GroupNumber>
+      <FileNumber>4</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\user\main.c</PathWithFileName>
+      <FilenameWithoutPath>main.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>sdk</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>5</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_gpio.c</PathWithFileName>
+      <FilenameWithoutPath>yc_gpio.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>6</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_uart.c</PathWithFileName>
+      <FilenameWithoutPath>yc_uart.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>7</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_timer.c</PathWithFileName>
+      <FilenameWithoutPath>yc_timer.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>8</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_ipc.c</PathWithFileName>
+      <FilenameWithoutPath>yc_ipc.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>9</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_lpm.c</PathWithFileName>
+      <FilenameWithoutPath>yc_lpm.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>10</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_sysctrl.c</PathWithFileName>
+      <FilenameWithoutPath>yc_sysctrl.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>11</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_otp.c</PathWithFileName>
+      <FilenameWithoutPath>yc_otp.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>12</FileNumber>
+      <FileType>4</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_qspi.lib</PathWithFileName>
+      <FilenameWithoutPath>yc_qspi.lib</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>startup</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>13</FileNumber>
+      <FileType>2</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\startup\flash_start.s</PathWithFileName>
+      <FilenameWithoutPath>flash_start.s</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>14</FileNumber>
+      <FileType>2</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\startup\startup.s</PathWithFileName>
+      <FilenameWithoutPath>startup.s</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>yc_usb\libraries\harward_Der</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>5</GroupNumber>
+      <FileNumber>15</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\usb_core.c</PathWithFileName>
+      <FilenameWithoutPath>usb_core.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>5</GroupNumber>
+      <FileNumber>16</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\Usb_dcd.c</PathWithFileName>
+      <FilenameWithoutPath>Usb_dcd.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>yc_usb\libraries\SCPU_USB_Device_Library\core</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>17</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_core.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_core.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>18</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_req.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_req.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>6</GroupNumber>
+      <FileNumber>19</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_ioreq.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_ioreq.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>yc_usb\libraries\SCPU_USB_Device_Library\class\msc</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>20</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\msc\usbd_msc_core.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_msc_core.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>21</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\msc\usbd_msc_bot.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_msc_bot.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>22</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\msc\usbd_msc_scsi.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_msc_scsi.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>7</GroupNumber>
+      <FileNumber>23</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\msc\usbd_msc_data.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_msc_data.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>yc_usb\scpu_usb_msc_Device_Demo</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>24</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_msc_Device_Demo\Usb_dcd_init.c</PathWithFileName>
+      <FilenameWithoutPath>Usb_dcd_init.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>25</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_msc_Device_Demo\usb_main.c</PathWithFileName>
+      <FilenameWithoutPath>usb_main.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>26</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_msc_Device_Demo\usbd_desc.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_desc.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>27</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_msc_Device_Demo\usbd_usr.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_usr.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>8</GroupNumber>
+      <FileNumber>28</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_msc_Device_Demo\usbd_storage_msd.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_storage_msd.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+</ProjectOpt>
Index: usb_msc/prj/MDK/YC3121_Keil.uvprojx
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_msc/prj/MDK/YC3121_Keil.uvprojx	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_msc/prj/MDK/YC3121_Keil.uvprojx	(working copy)
@@ -0,0 +1,572 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
+
+  <SchemaVersion>2.1</SchemaVersion>
+
+  <Header>### uVision Project, (C) Keil Software</Header>
+
+  <Targets>
+    <Target>
+      <TargetName>YC3121</TargetName>
+      <ToolsetNumber>0x4</ToolsetNumber>
+      <ToolsetName>ARM-ADS</ToolsetName>
+      <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
+      <uAC6>0</uAC6>
+      <TargetOption>
+        <TargetCommonOption>
+          <Device>ARMCM0</Device>
+          <Vendor>ARM</Vendor>
+          <PackID>ARM.CMSIS.5.5.1</PackID>
+          <PackURL>http://www.keil.com/pack/</PackURL>
+          <Cpu>IRAM(0x20000000,0x00020000) IROM(0x00000000,0x00040000) CPUTYPE("Cortex-M0") CLOCK(12000000) ESEL ELITTLE</Cpu>
+          <FlashUtilSpec></FlashUtilSpec>
+          <StartupFile></StartupFile>
+          <FlashDriverDll>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000)</FlashDriverDll>
+          <DeviceId>0</DeviceId>
+          <RegisterFile>$$Device:ARMCM0$Device\ARM\ARMCM0\Include\ARMCM0.h</RegisterFile>
+          <MemoryEnv></MemoryEnv>
+          <Cmp></Cmp>
+          <Asm></Asm>
+          <Linker></Linker>
+          <OHString></OHString>
+          <InfinionOptionDll></InfinionOptionDll>
+          <SLE66CMisc></SLE66CMisc>
+          <SLE66AMisc></SLE66AMisc>
+          <SLE66LinkerMisc></SLE66LinkerMisc>
+          <SFDFile>$$Device:ARMCM0$Device\ARM\SVD\ARMCM0.svd</SFDFile>
+          <bCustSvd>0</bCustSvd>
+          <UseEnv>0</UseEnv>
+          <BinPath></BinPath>
+          <IncludePath></IncludePath>
+          <LibPath></LibPath>
+          <RegisterFilePath></RegisterFilePath>
+          <DBRegisterFilePath></DBRegisterFilePath>
+          <TargetStatus>
+            <Error>0</Error>
+            <ExitCodeStop>0</ExitCodeStop>
+            <ButtonStop>0</ButtonStop>
+            <NotGenerated>0</NotGenerated>
+            <InvalidFlash>1</InvalidFlash>
+          </TargetStatus>
+          <OutputDirectory>.\Objects\</OutputDirectory>
+          <OutputName>YC3121_Keil</OutputName>
+          <CreateExecutable>1</CreateExecutable>
+          <CreateLib>0</CreateLib>
+          <CreateHexFile>1</CreateHexFile>
+          <DebugInformation>1</DebugInformation>
+          <BrowseInformation>1</BrowseInformation>
+          <ListingPath>.\Listings\</ListingPath>
+          <HexFormatSelection>1</HexFormatSelection>
+          <Merge32K>0</Merge32K>
+          <CreateBatchFile>1</CreateBatchFile>
+          <BeforeCompile>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopU1X>0</nStopU1X>
+            <nStopU2X>0</nStopU2X>
+          </BeforeCompile>
+          <BeforeMake>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopB1X>0</nStopB1X>
+            <nStopB2X>0</nStopB2X>
+          </BeforeMake>
+          <AfterMake>
+            <RunUserProg1>1</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name>fromelf.exe --text -a -c --output=@L_asm.txt "!L"</UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopA1X>0</nStopA1X>
+            <nStopA2X>0</nStopA2X>
+          </AfterMake>
+          <SelectedForBatchBuild>0</SelectedForBatchBuild>
+          <SVCSIdString></SVCSIdString>
+        </TargetCommonOption>
+        <CommonProperty>
+          <UseCPPCompiler>0</UseCPPCompiler>
+          <RVCTCodeConst>0</RVCTCodeConst>
+          <RVCTZI>0</RVCTZI>
+          <RVCTOtherData>0</RVCTOtherData>
+          <ModuleSelection>0</ModuleSelection>
+          <IncludeInBuild>1</IncludeInBuild>
+          <AlwaysBuild>0</AlwaysBuild>
+          <GenerateAssemblyFile>0</GenerateAssemblyFile>
+          <AssembleAssemblyFile>0</AssembleAssemblyFile>
+          <PublicsOnly>0</PublicsOnly>
+          <StopOnExitCode>3</StopOnExitCode>
+          <CustomArgument></CustomArgument>
+          <IncludeLibraryModules></IncludeLibraryModules>
+          <ComprImg>1</ComprImg>
+        </CommonProperty>
+        <DllOption>
+          <SimDllName>SARMCM3.DLL</SimDllName>
+          <SimDllArguments>  </SimDllArguments>
+          <SimDlgDll>DARMCM1.DLL</SimDlgDll>
+          <SimDlgDllArguments>-pCM0</SimDlgDllArguments>
+          <TargetDllName>SARMCM3.DLL</TargetDllName>
+          <TargetDllArguments> </TargetDllArguments>
+          <TargetDlgDll>TARMCM1.DLL</TargetDlgDll>
+          <TargetDlgDllArguments>-pCM0</TargetDlgDllArguments>
+        </DllOption>
+        <DebugOption>
+          <OPTHX>
+            <HexSelection>1</HexSelection>
+            <HexRangeLowAddress>0</HexRangeLowAddress>
+            <HexRangeHighAddress>0</HexRangeHighAddress>
+            <HexOffset>0</HexOffset>
+            <Oh166RecLen>16</Oh166RecLen>
+          </OPTHX>
+        </DebugOption>
+        <Utilities>
+          <Flash1>
+            <UseTargetDll>1</UseTargetDll>
+            <UseExternalTool>0</UseExternalTool>
+            <RunIndependent>1</RunIndependent>
+            <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
+            <Capability>1</Capability>
+            <DriverSelection>4100</DriverSelection>
+          </Flash1>
+          <bUseTDR>0</bUseTDR>
+          <Flash2>Segger\JL2CM3.dll</Flash2>
+          <Flash3>"" ()</Flash3>
+          <Flash4></Flash4>
+          <pFcarmOut></pFcarmOut>
+          <pFcarmGrp></pFcarmGrp>
+          <pFcArmRoot></pFcArmRoot>
+          <FcArmLst>0</FcArmLst>
+        </Utilities>
+        <TargetArmAds>
+          <ArmAdsMisc>
+            <GenerateListings>0</GenerateListings>
+            <asHll>1</asHll>
+            <asAsm>1</asAsm>
+            <asMacX>1</asMacX>
+            <asSyms>1</asSyms>
+            <asFals>1</asFals>
+            <asDbgD>1</asDbgD>
+            <asForm>1</asForm>
+            <ldLst>0</ldLst>
+            <ldmm>1</ldmm>
+            <ldXref>1</ldXref>
+            <BigEnd>0</BigEnd>
+            <AdsALst>1</AdsALst>
+            <AdsACrf>1</AdsACrf>
+            <AdsANop>0</AdsANop>
+            <AdsANot>0</AdsANot>
+            <AdsLLst>1</AdsLLst>
+            <AdsLmap>1</AdsLmap>
+            <AdsLcgr>1</AdsLcgr>
+            <AdsLsym>1</AdsLsym>
+            <AdsLszi>1</AdsLszi>
+            <AdsLtoi>1</AdsLtoi>
+            <AdsLsun>1</AdsLsun>
+            <AdsLven>1</AdsLven>
+            <AdsLsxf>1</AdsLsxf>
+            <RvctClst>0</RvctClst>
+            <GenPPlst>0</GenPPlst>
+            <AdsCpuType>"Cortex-M0"</AdsCpuType>
+            <RvctDeviceName></RvctDeviceName>
+            <mOS>0</mOS>
+            <uocRom>0</uocRom>
+            <uocRam>0</uocRam>
+            <hadIROM>1</hadIROM>
+            <hadIRAM>1</hadIRAM>
+            <hadXRAM>0</hadXRAM>
+            <uocXRam>0</uocXRam>
+            <RvdsVP>0</RvdsVP>
+            <RvdsMve>0</RvdsMve>
+            <hadIRAM2>0</hadIRAM2>
+            <hadIROM2>0</hadIROM2>
+            <StupSel>8</StupSel>
+            <useUlib>1</useUlib>
+            <EndSel>1</EndSel>
+            <uLtcg>0</uLtcg>
+            <nSecure>0</nSecure>
+            <RoSelD>3</RoSelD>
+            <RwSelD>3</RwSelD>
+            <CodeSel>0</CodeSel>
+            <OptFeed>0</OptFeed>
+            <NoZi1>0</NoZi1>
+            <NoZi2>0</NoZi2>
+            <NoZi3>0</NoZi3>
+            <NoZi4>0</NoZi4>
+            <NoZi5>0</NoZi5>
+            <Ro1Chk>0</Ro1Chk>
+            <Ro2Chk>0</Ro2Chk>
+            <Ro3Chk>0</Ro3Chk>
+            <Ir1Chk>1</Ir1Chk>
+            <Ir2Chk>0</Ir2Chk>
+            <Ra1Chk>0</Ra1Chk>
+            <Ra2Chk>0</Ra2Chk>
+            <Ra3Chk>0</Ra3Chk>
+            <Im1Chk>1</Im1Chk>
+            <Im2Chk>0</Im2Chk>
+            <OnChipMemories>
+              <Ocm1>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm1>
+              <Ocm2>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm2>
+              <Ocm3>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm3>
+              <Ocm4>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm4>
+              <Ocm5>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm5>
+              <Ocm6>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm6>
+              <IRAM>
+                <Type>0</Type>
+                <StartAddress>0x20000000</StartAddress>
+                <Size>0x20000</Size>
+              </IRAM>
+              <IROM>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x40000</Size>
+              </IROM>
+              <XRAM>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </XRAM>
+              <OCR_RVCT1>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT1>
+              <OCR_RVCT2>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT2>
+              <OCR_RVCT3>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT3>
+              <OCR_RVCT4>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x40000</Size>
+              </OCR_RVCT4>
+              <OCR_RVCT5>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT5>
+              <OCR_RVCT6>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT6>
+              <OCR_RVCT7>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT7>
+              <OCR_RVCT8>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT8>
+              <OCR_RVCT9>
+                <Type>0</Type>
+                <StartAddress>0x20000000</StartAddress>
+                <Size>0x20000</Size>
+              </OCR_RVCT9>
+              <OCR_RVCT10>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT10>
+            </OnChipMemories>
+            <RvctStartVector></RvctStartVector>
+          </ArmAdsMisc>
+          <Cads>
+            <interw>1</interw>
+            <Optim>3</Optim>
+            <oTime>0</oTime>
+            <SplitLS>0</SplitLS>
+            <OneElfS>0</OneElfS>
+            <Strict>0</Strict>
+            <EnumInt>0</EnumInt>
+            <PlainCh>0</PlainCh>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <wLevel>1</wLevel>
+            <uThumb>0</uThumb>
+            <uSurpInc>0</uSurpInc>
+            <uC99>1</uC99>
+            <uGnu>0</uGnu>
+            <useXO>0</useXO>
+            <v6Lang>1</v6Lang>
+            <v6LangP>1</v6LangP>
+            <vShortEn>1</vShortEn>
+            <vShortWch>1</vShortWch>
+            <v6Lto>0</v6Lto>
+            <v6WtE>0</v6WtE>
+            <v6Rtti>0</v6Rtti>
+            <VariousControls>
+              <MiscControls></MiscControls>
+              <Define>__USEKEILCOMPILE__</Define>
+              <Undefine></Undefine>
+              <IncludePath>..\..\..\..\..\Librarier\core;..\..\..\..\..\Librarier\sdk;..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der;..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core;..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\msc;..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_msc_Device_Demo;..\..\user</IncludePath>
+            </VariousControls>
+          </Cads>
+          <Aads>
+            <interw>1</interw>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <thumb>0</thumb>
+            <SplitLS>0</SplitLS>
+            <SwStkChk>0</SwStkChk>
+            <NoWarn>0</NoWarn>
+            <uSurpInc>0</uSurpInc>
+            <useXO>0</useXO>
+            <uClangAs>0</uClangAs>
+            <VariousControls>
+              <MiscControls></MiscControls>
+              <Define></Define>
+              <Undefine></Undefine>
+              <IncludePath></IncludePath>
+            </VariousControls>
+          </Aads>
+          <LDads>
+            <umfTarg>0</umfTarg>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <noStLib>0</noStLib>
+            <RepFail>1</RepFail>
+            <useFile>0</useFile>
+            <TextAddressRange>0x00000000</TextAddressRange>
+            <DataAddressRange>0xd0000</DataAddressRange>
+            <pXoBase></pXoBase>
+            <ScatterFile>.\Objects\YC3121_keil.sct</ScatterFile>
+            <IncludeLibs></IncludeLibs>
+            <IncludeLibsPath></IncludeLibsPath>
+            <Misc></Misc>
+            <LinkerInputFile></LinkerInputFile>
+            <DisabledWarnings></DisabledWarnings>
+          </LDads>
+        </TargetArmAds>
+      </TargetOption>
+      <Groups>
+        <Group>
+          <GroupName>core</GroupName>
+          <Files>
+            <File>
+              <FileName>misc.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\core\misc.c</FilePath>
+            </File>
+            <File>
+              <FileName>system.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\core\system.c</FilePath>
+            </File>
+            <File>
+              <FileName>bt_code.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\core\bt_code.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>main</GroupName>
+          <Files>
+            <File>
+              <FileName>main.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\user\main.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>sdk</GroupName>
+          <Files>
+            <File>
+              <FileName>yc_gpio.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_gpio.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_uart.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_uart.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_timer.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_timer.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_ipc.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_ipc.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_lpm.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_lpm.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_sysctrl.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_sysctrl.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_otp.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_otp.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_qspi.lib</FileName>
+              <FileType>4</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_qspi.lib</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>startup</GroupName>
+          <Files>
+            <File>
+              <FileName>flash_start.s</FileName>
+              <FileType>2</FileType>
+              <FilePath>..\..\..\..\..\Librarier\startup\flash_start.s</FilePath>
+            </File>
+            <File>
+              <FileName>startup.s</FileName>
+              <FileType>2</FileType>
+              <FilePath>..\..\..\..\..\Librarier\startup\startup.s</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>yc_usb\libraries\harward_Der</GroupName>
+          <Files>
+            <File>
+              <FileName>usb_core.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\usb_core.c</FilePath>
+            </File>
+            <File>
+              <FileName>Usb_dcd.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\Usb_dcd.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>yc_usb\libraries\SCPU_USB_Device_Library\core</GroupName>
+          <Files>
+            <File>
+              <FileName>usbd_core.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_core.c</FilePath>
+            </File>
+            <File>
+              <FileName>usbd_req.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_req.c</FilePath>
+            </File>
+            <File>
+              <FileName>usbd_ioreq.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\core\usbd_ioreq.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>yc_usb\libraries\SCPU_USB_Device_Library\class\msc</GroupName>
+          <Files>
+            <File>
+              <FileName>usbd_msc_core.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\msc\usbd_msc_core.c</FilePath>
+            </File>
+            <File>
+              <FileName>usbd_msc_bot.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\msc\usbd_msc_bot.c</FilePath>
+            </File>
+            <File>
+              <FileName>usbd_msc_scsi.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\msc\usbd_msc_scsi.c</FilePath>
+            </File>
+            <File>
+              <FileName>usbd_msc_data.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\msc\usbd_msc_data.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>yc_usb\scpu_usb_msc_Device_Demo</GroupName>
+          <Files>
+            <File>
+              <FileName>Usb_dcd_init.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_msc_Device_Demo\Usb_dcd_init.c</FilePath>
+            </File>
+            <File>
+              <FileName>usb_main.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_msc_Device_Demo\usb_main.c</FilePath>
+            </File>
+            <File>
+              <FileName>usbd_desc.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_msc_Device_Demo\usbd_desc.c</FilePath>
+            </File>
+            <File>
+              <FileName>usbd_usr.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_msc_Device_Demo\usbd_usr.c</FilePath>
+            </File>
+            <File>
+              <FileName>usbd_storage_msd.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\scpu_usb_msc_Device_Demo\usbd_storage_msd.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+      </Groups>
+    </Target>
+  </Targets>
+
+  <RTE>
+    <apis/>
+    <components/>
+    <files/>
+  </RTE>
+
+</Project>
Index: usb_msc/user/main.c
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_msc/user/main.c	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_msc/user/main.c	(working copy)
@@ -0,0 +1,86 @@
+/**
+  ******************************************************************************
+  * @file    3121Demo_1.0V\ModuleDemo\UART\UART_TX_Sendbuf\user\main.c
+  * @author  Yichip Application Team
+  * @version V1.0.0
+  * @date    23-Oct-2019
+  * @brief   USB HID test program.
+  ******************************************************************************
+  * @attention
+  *
+  * COPYRIGHT 2019 Yichip Microelectronics
+  *
+  * The purpose of this demo is to provide guidance to customers engaged in
+    * programming work to guide them smoothly to product development,
+    * so as to save their time.
+    *
+    * Therefore, Yichip microelectronics shall not be responsible for any direct,
+    * indirect or consequential damages caused by any content of this demo
+    * and/or contained in this code used by the customer in its products.
+  *
+  ******************************************************************************
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "yc3121.h"
+#include "yc_gpio.h"
+#include "yc_uart.h"
+#include "yc_ipc.h"
+#include "usb_main.h"
+#include "board_config.h"
+
+/* Private macro -------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+/* Private function prototypes -----------------------------------------------*/
+void UART_Configuration(void);
+#define UART_DEBUG
+/**
+  * @brief  Main program
+  * @param  None
+  * @retval None
+  */
+int main(void)
+{
+    UART_Configuration();
+    MyPrintf("yichip msc demo\r\n");
+    IpcInit();
+    usb_main();
+    while (1)
+    {
+        
+    }
+}
+
+/**
+  * @brief  Serial port 0 initialization function.
+  * @param  None
+  * @retval None
+  */
+void UART_Configuration(void)
+{
+    UART_InitTypeDef UART_InitStruct;
+
+	/* Configure serial ports 0 RX and TX for IO. */
+	GPIO_Config(UART0_TX_PORT, UART0_TX_PIN, UART0_TXD);
+	GPIO_Config(UART0_RX_PORT, UART0_RX_PIN, UART0_RXD);
+
+	/* USARTx configured as follow:
+    - BaudRate = 115200 baud
+    - Word Length = 8 Bits
+    - Stop Bit = 1 Stop Bit
+    - Parity = No Parity
+    - Hardware flow control disabled (RTS and CTS signals)
+    - Receive and transmit enabled
+  */
+	UART_InitStruct.BaudRate = UARTBAUD;			//Configure serial port baud rate, the baud rate defaults to 128000.
+	UART_InitStruct.DataBits = Databits_8b;
+	UART_InitStruct.StopBits = StopBits_1;
+	UART_InitStruct.Parity = Parity_None;
+	UART_InitStruct.FlowCtrl = FlowCtrl_None;
+	UART_InitStruct.Mode = Mode_duplex;
+
+	UART_Init(UART0, &UART_InitStruct);
+}
+
+
+/************************ (C) COPYRIGHT Yichip Microelectronics *****END OF FILE****/
Index: usb_printer/prj/GCC/c.bat
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_printer/prj/GCC/c.bat	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_printer/prj/GCC/c.bat	(working copy)
@@ -0,0 +1,3 @@
+cls
+make clean
+make
\ No newline at end of file
Index: usb_printer/prj/GCC/makefile
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_printer/prj/GCC/makefile	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_printer/prj/GCC/makefile	(working copy)
@@ -0,0 +1,229 @@
+
+ifeq ($(OS),Windows_NT)
+DIR = C:/gcc-arm-none-eabi-7-2018-q2-update-win32
+else
+DIR = /usr/gcc-arm-none-eabi-7-2018-q2-update
+endif
+
+ARCH = $(DIR)/bin/arm-none-eabi
+GCC = $(ARCH)-gcc
+LD = $(ARCH)-ld
+AS = $(ARCH)-as
+OBJCOPY = $(ARCH)-objcopy
+OBJDUMP = "$(ARCH)-objdump"
+LIB_PATH = ../../../../../Librarier
+USER_PATH = ../../user
+
+
+all : output/out.hex
+
+
+CORE_OBJS =  $(LIB_PATH)/startup/flash_start_gcc \
+             $(LIB_PATH)/core/system \
+             $(LIB_PATH)/core/misc \
+             $(LIB_PATH)/sdk/yc_gpio \
+             $(LIB_PATH)/sdk/yc_uart \
+			 $(LIB_PATH)/sdk/yc_sysctrl \
+			 $(LIB_PATH)/sdk/yc_timer \
+             $(USER_PATH)/usb
+
+USER_OBJS = $(USER_PATH)/main
+
+OBJS = $(CORE_OBJS) $(USER_OBJS)
+
+INC_DIR = -I $(LIB_PATH)/core \
+          -I $(LIB_PATH)/sdk
+
+
+CFLAG =  -mthumb -mcpu=cortex-m0 -c -g -Os $(INC_DIR) $(DEF) -fno-toplevel-reorder -ffunction-sections -fdata-sections
+LDFLAG = -T output/ld.script -Map=output/memmap -lc -lm -lgcc -L "$(DIR)/lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m"  -L "$(DIR)/arm-none-eabi/lib/thumb/v6-m"
+
+define ldscript =
+/* Linker script to configure memory regions.
+ * Need modifying for a specific board.
+ *   FLASH.ORIGIN: starting address of flash
+ *   FLASH.LENGTH: length of flash
+ *   RAM.ORIGIN: starting address of RAM bank 0
+ *   RAM.LENGTH: length of RAM bank 0
+ */
+MEMORY
+{
+  FLASH (rx) : ORIGIN = 0x1000000, LENGTH = 0x80000 /* 512K */
+  RAM (rwx) : ORIGIN = 0x20000, LENGTH = 0x10000 /* 64K */
+}
+
+/* Linker script to place sections and symbol values. Should be used together
+ * with other linker script that defines memory regions FLASH and RAM.
+ * It references following symbols, which must be defined in code:
+ *   Reset_Handler : Entry of reset handler
+ *
+ * It defines following symbols, which code can use without definition:
+ *   __exidx_start
+ *   __exidx_end
+ *   __copy_table_start__
+ *   __copy_table_end__
+ *   __zero_table_start__
+ *   __zero_table_end__
+ *   __etext
+ *   __data_start__
+ *   __preinit_array_start
+ *   __preinit_array_end
+ *   __init_array_start
+ *   __init_array_end
+ *   __fini_array_start
+ *   __fini_array_end
+ *   __data_end__
+ *   __bss_start__
+ *   __bss_end__
+ *   __end__
+ *   end
+ *   __HeapLimit
+ *   __StackLimit
+ *   __StackTop
+ *   __stack
+ */
+ENTRY(Reset_Handler)
+
+SECTIONS
+{
+	.text :
+	{
+		*flash_start*.o
+		*(.text*)
+
+		KEEP(*(.init))
+		KEEP(*(.fini))
+
+		/* .ctors */
+		*crtbegin.o(.ctors)
+		*crtbegin?.o(.ctors)
+		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
+		*(SORT(.ctors.*))
+		*(.ctors)
+
+		/* .dtors */
+ 		*crtbegin.o(.dtors)
+ 		*crtbegin?.o(.dtors)
+ 		*(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
+ 		*(SORT(.dtors.*))
+ 		*(.dtors)
+
+		*(.rodata*)
+
+		KEEP(*(.eh_frame*))
+	} > FLASH
+
+
+
+	.ARM.extab :
+	{
+		*(.ARM.extab* .gnu.linkonce.armextab.*)
+	} > FLASH
+
+
+	.ARM.exidx :
+	{
+		*(.ARM.exidx* .gnu.linkonce.armexidx.*)
+	} > FLASH
+
+	 . = ALIGN(4);
+	__exidx_start = .;
+
+	__etext = .;
+
+	.data : AT (__etext)
+	{
+		__data_start__ = .;
+		*(vtable)
+		*(.data*)
+
+		. = ALIGN(4);
+		/* preinit data */
+		PROVIDE_HIDDEN (__preinit_array_start = .);
+		KEEP(*(.preinit_array))
+		PROVIDE_HIDDEN (__preinit_array_end = .);
+
+		. = ALIGN(4);
+		/* init data */
+		PROVIDE_HIDDEN (__init_array_start = .);
+		KEEP(*(SORT(.init_array.*)))
+		KEEP(*(.init_array))
+		PROVIDE_HIDDEN (__init_array_end = .);
+
+
+		. = ALIGN(4);
+		/* finit data */
+		PROVIDE_HIDDEN (__fini_array_start = .);
+		KEEP(*(SORT(.fini_array.*)))
+		KEEP(*(.fini_array))
+		PROVIDE_HIDDEN (__fini_array_end = .);
+
+		KEEP(*(.jcr*))
+		. = ALIGN(4);
+		/* All data end */
+		__data_end__ = .;
+
+	} > RAM
+
+	.bss :
+	{
+		. = ALIGN(4);
+		__bss_start__ = .;
+		*(.bss*)
+		*(COMMON)
+		. = ALIGN(4);
+		__bss_end__ = .;
+	} > RAM
+
+	.heap (COPY):
+	{
+		__end__ = .;
+		PROVIDE(end = .);
+		*(.heap*)
+		__HeapLimit = .;
+	} > RAM
+
+	/* .stack_dummy section doesn't contains any symbols. It is only
+	 * used for linker to calculate size of stack sections, and assign
+	 * values to stack symbols later */
+	.stack_dummy (COPY):
+	{
+		*(.stack*)
+	} > RAM
+
+	/* Set stack top to end of RAM, and stack limit move down by
+	 * size of stack_dummy section */
+	__StackTop = ORIGIN(RAM) + LENGTH(RAM);
+	__StackLimit = __StackTop - SIZEOF(.stack_dummy);
+	PROVIDE(__stack = __StackTop);
+
+	/* Check if data + heap + stack exceeds RAM limit */
+	ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
+}
+endef
+
+
+output/out.hex : output/out
+	$(OBJCOPY) $^ -O ihex $@
+
+
+output/out : $(addprefix output/, $(addsuffix .o, $(OBJS)))
+	$(file >output/ld.script, $(ldscript))
+	$(LD) $(addprefix output/obj/,$(addsuffix .o, $(notdir $(OBJS)))) -o $@ $(LDFLAG)
+	$(OBJDUMP) -S $@ > output/disasm
+
+output/%.o : %.c
+	$(GCC) $< $(CFLAG) -o output/obj/$(notdir $@)
+
+output/%.o : %.s
+	$(AS) $^ -mthumb -mcpu=cortex-m0 -o output/obj/$(notdir $@)
+
+
+clean :
+ifeq ($(OS),Windows_NT)
+	del /Q output\*.*
+	del /Q output\obj\*.*
+else
+	rm -rf output/*
+	rm -rf output/obj/*
+endif
Index: usb_printer/prj/MDK/Objects/YC3121_keil.sct
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_printer/prj/MDK/Objects/YC3121_keil.sct	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_printer/prj/MDK/Objects/YC3121_keil.sct	(working copy)
@@ -0,0 +1,55 @@
+; *************************************************************
+; *** Scatter-Loading Description File generated by uVision ***
+; *************************************************************
+
+LR_IROM1 0x00000000 0x0001fff  {    ; load region size_region
+  ER_IROM1 0x00000000 0x00001fff  {  ; load address = execution address
+   startup.o (RESET, +First)
+   startup.o (|.text|,+RO)
+;   *(InRoot$$Sections)
+  }
+  ;ER_IROM2 0x4000   {
+  ;rom_main.o (+RO)
+  ;}
+  
+  ;ER_IROM3 0x100000 {
+	  ;*(InRoot$$Sections)
+  ;}
+	
+  ;ER_IROM4 0x100400   {
+  ;flash_start.o (+RO)
+  ;.ANY (+RO) 
+  ;}
+  
+  ;RW_IRAM1 0x000d0000 0x0010000  {  ; RW data
+   ;.ANY (+RW +ZI)
+  ;}
+  
+;  ARM_LIB_STACK 0xE0000 EMPTY -0x10000{}
+}
+
+;LR_IROM2 0x4000 0x4000{
+;	ER_IROM2 0x4000 {
+;	  rom_main.o (+RO)
+;	}
+;}
+
+LR_IROM3 0x1000200 0x200{
+	ER_IROM3 0x1000200 {
+	  flash_start.o (|.flash_start|,+RO)
+	}
+}
+
+LR_IROM4 0x1000400 0x1000000{
+	ER_IROM4 0x1000400 {
+;	  flash_start.o (|.flash_start|,+RO)
+	  *(InRoot$$Sections)
+	  .ANY (+RO)
+	}
+	
+	
+	 RW_IRAM2 0x00020000 0x010000  {  ; RW data
+	.ANY (+RW +ZI)
+	}
+}
+
Index: usb_printer/prj/MDK/YC3121_Keil.uvoptx
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_printer/prj/MDK/YC3121_Keil.uvoptx	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_printer/prj/MDK/YC3121_Keil.uvoptx	(working copy)
@@ -0,0 +1,369 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
+
+  <SchemaVersion>1.0</SchemaVersion>
+
+  <Header>### uVision Project, (C) Keil Software</Header>
+
+  <Extensions>
+    <cExt>*.c</cExt>
+    <aExt>*.s*; *.src; *.a*</aExt>
+    <oExt>*.obj; *.o</oExt>
+    <lExt>*.lib</lExt>
+    <tExt>*.txt; *.h; *.inc</tExt>
+    <pExt>*.plm</pExt>
+    <CppX>*.cpp</CppX>
+    <nMigrate>0</nMigrate>
+  </Extensions>
+
+  <DaveTm>
+    <dwLowDateTime>0</dwLowDateTime>
+    <dwHighDateTime>0</dwHighDateTime>
+  </DaveTm>
+
+  <Target>
+    <TargetName>YC3121</TargetName>
+    <ToolsetNumber>0x4</ToolsetNumber>
+    <ToolsetName>ARM-ADS</ToolsetName>
+    <TargetOption>
+      <CLKADS>12000000</CLKADS>
+      <OPTTT>
+        <gFlags>1</gFlags>
+        <BeepAtEnd>1</BeepAtEnd>
+        <RunSim>0</RunSim>
+        <RunTarget>1</RunTarget>
+        <RunAbUc>0</RunAbUc>
+      </OPTTT>
+      <OPTHX>
+        <HexSelection>1</HexSelection>
+        <FlashByte>65535</FlashByte>
+        <HexRangeLowAddress>0</HexRangeLowAddress>
+        <HexRangeHighAddress>0</HexRangeHighAddress>
+        <HexOffset>0</HexOffset>
+      </OPTHX>
+      <OPTLEX>
+        <PageWidth>79</PageWidth>
+        <PageLength>66</PageLength>
+        <TabStop>8</TabStop>
+        <ListingPath>.\Listings\</ListingPath>
+      </OPTLEX>
+      <ListingPage>
+        <CreateCListing>1</CreateCListing>
+        <CreateAListing>1</CreateAListing>
+        <CreateLListing>1</CreateLListing>
+        <CreateIListing>0</CreateIListing>
+        <AsmCond>1</AsmCond>
+        <AsmSymb>1</AsmSymb>
+        <AsmXref>0</AsmXref>
+        <CCond>1</CCond>
+        <CCode>0</CCode>
+        <CListInc>0</CListInc>
+        <CSymb>0</CSymb>
+        <LinkerCodeListing>0</LinkerCodeListing>
+      </ListingPage>
+      <OPTXL>
+        <LMap>1</LMap>
+        <LComments>1</LComments>
+        <LGenerateSymbols>1</LGenerateSymbols>
+        <LLibSym>1</LLibSym>
+        <LLines>1</LLines>
+        <LLocSym>1</LLocSym>
+        <LPubSym>1</LPubSym>
+        <LXref>0</LXref>
+        <LExpSel>0</LExpSel>
+      </OPTXL>
+      <OPTFL>
+        <tvExp>1</tvExp>
+        <tvExpOptDlg>0</tvExpOptDlg>
+        <IsCurrentTarget>1</IsCurrentTarget>
+      </OPTFL>
+      <CpuCode>7</CpuCode>
+      <DebugOpt>
+        <uSim>0</uSim>
+        <uTrg>1</uTrg>
+        <sLdApp>1</sLdApp>
+        <sGomain>1</sGomain>
+        <sRbreak>1</sRbreak>
+        <sRwatch>1</sRwatch>
+        <sRmem>1</sRmem>
+        <sRfunc>1</sRfunc>
+        <sRbox>1</sRbox>
+        <tLdApp>1</tLdApp>
+        <tGomain>1</tGomain>
+        <tRbreak>1</tRbreak>
+        <tRwatch>1</tRwatch>
+        <tRmem>1</tRmem>
+        <tRfunc>0</tRfunc>
+        <tRbox>1</tRbox>
+        <tRtrace>1</tRtrace>
+        <sRSysVw>1</sRSysVw>
+        <tRSysVw>1</tRSysVw>
+        <sRunDeb>0</sRunDeb>
+        <sLrtime>0</sLrtime>
+        <bEvRecOn>1</bEvRecOn>
+        <bSchkAxf>0</bSchkAxf>
+        <bTchkAxf>0</bTchkAxf>
+        <nTsel>4</nTsel>
+        <sDll></sDll>
+        <sDllPa></sDllPa>
+        <sDlgDll></sDlgDll>
+        <sDlgPa></sDlgPa>
+        <sIfile></sIfile>
+        <tDll></tDll>
+        <tDllPa></tDllPa>
+        <tDlgDll></tDlgDll>
+        <tDlgPa></tDlgPa>
+        <tIfile>..\..\..\..\..\ConfigFiles\MDK\flash.ini</tIfile>
+        <pMon>Segger\JL2CM3.dll</pMon>
+      </DebugOpt>
+      <TargetDriverDllRegistry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>PWSTATINFO</Key>
+          <Name>200,50,700</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>ARMRTXEVENTFLAGS</Key>
+          <Name>-L70 -Z18 -C0 -M0 -T1</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>DLGTARM</Key>
+          <Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>ARMDBGFLAGS</Key>
+          <Name></Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>JL2CM3</Key>
+          <Name>-U4294967295 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(0BB11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO31 -FD20000 -FCA000 -FN1 -FF0YC3121 -FS01000200 -FL01000000</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>UL2CM3</Key>
+          <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000)</Name>
+        </SetRegEntry>
+      </TargetDriverDllRegistry>
+      <Breakpoint/>
+      <Tracepoint>
+        <THDelay>0</THDelay>
+      </Tracepoint>
+      <DebugFlag>
+        <trace>0</trace>
+        <periodic>0</periodic>
+        <aLwin>1</aLwin>
+        <aCover>0</aCover>
+        <aSer1>0</aSer1>
+        <aSer2>0</aSer2>
+        <aPa>0</aPa>
+        <viewmode>1</viewmode>
+        <vrSel>0</vrSel>
+        <aSym>0</aSym>
+        <aTbox>0</aTbox>
+        <AscS1>0</AscS1>
+        <AscS2>0</AscS2>
+        <AscS3>0</AscS3>
+        <aSer3>0</aSer3>
+        <eProf>0</eProf>
+        <aLa>0</aLa>
+        <aPa1>0</aPa1>
+        <AscS4>0</AscS4>
+        <aSer4>0</aSer4>
+        <StkLoc>0</StkLoc>
+        <TrcWin>0</TrcWin>
+        <newCpu>0</newCpu>
+        <uProt>0</uProt>
+      </DebugFlag>
+      <LintExecutable></LintExecutable>
+      <LintConfigFile></LintConfigFile>
+      <bLintAuto>0</bLintAuto>
+      <bAutoGenD>0</bAutoGenD>
+      <LntExFlags>0</LntExFlags>
+      <pMisraName></pMisraName>
+      <pszMrule></pszMrule>
+      <pSingCmds></pSingCmds>
+      <pMultCmds></pMultCmds>
+      <pMisraNamep></pMisraNamep>
+      <pszMrulep></pszMrulep>
+      <pSingCmdsp></pSingCmdsp>
+      <pMultCmdsp></pMultCmdsp>
+    </TargetOption>
+  </Target>
+
+  <Group>
+    <GroupName>core</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>1</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\core\misc.c</PathWithFileName>
+      <FilenameWithoutPath>misc.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>1</GroupNumber>
+      <FileNumber>2</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\core\system.c</PathWithFileName>
+      <FilenameWithoutPath>system.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>main</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>2</GroupNumber>
+      <FileNumber>3</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\user\main.c</PathWithFileName>
+      <FilenameWithoutPath>main.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>sdk</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>4</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_gpio.c</PathWithFileName>
+      <FilenameWithoutPath>yc_gpio.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>5</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_uart.c</PathWithFileName>
+      <FilenameWithoutPath>yc_uart.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>6</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_dma.c</PathWithFileName>
+      <FilenameWithoutPath>yc_dma.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>7</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_sysctrl.c</PathWithFileName>
+      <FilenameWithoutPath>yc_sysctrl.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>8</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_timer.c</PathWithFileName>
+      <FilenameWithoutPath>yc_timer.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>startup</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>9</FileNumber>
+      <FileType>2</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\startup\flash_start.s</PathWithFileName>
+      <FilenameWithoutPath>flash_start.s</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>4</GroupNumber>
+      <FileNumber>10</FileNumber>
+      <FileType>2</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\..\..\..\Librarier\startup\startup.s</PathWithFileName>
+      <FilenameWithoutPath>startup.s</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+  <Group>
+    <GroupName>usb</GroupName>
+    <tvExp>1</tvExp>
+    <tvExpOptDlg>0</tvExpOptDlg>
+    <cbSel>0</cbSel>
+    <RteFlg>0</RteFlg>
+    <File>
+      <GroupNumber>5</GroupNumber>
+      <FileNumber>11</FileNumber>
+      <FileType>1</FileType>
+      <tvExp>0</tvExp>
+      <tvExpOptDlg>0</tvExpOptDlg>
+      <bDave2>0</bDave2>
+      <PathWithFileName>..\..\user\usb.c</PathWithFileName>
+      <FilenameWithoutPath>usb.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+  </Group>
+
+</ProjectOpt>
Index: usb_printer/prj/MDK/YC3121_Keil.uvprojx
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_printer/prj/MDK/YC3121_Keil.uvprojx	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_printer/prj/MDK/YC3121_Keil.uvprojx	(working copy)
@@ -0,0 +1,472 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_projx.xsd">
+
+  <SchemaVersion>2.1</SchemaVersion>
+
+  <Header>### uVision Project, (C) Keil Software</Header>
+
+  <Targets>
+    <Target>
+      <TargetName>YC3121</TargetName>
+      <ToolsetNumber>0x4</ToolsetNumber>
+      <ToolsetName>ARM-ADS</ToolsetName>
+      <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
+      <uAC6>0</uAC6>
+      <TargetOption>
+        <TargetCommonOption>
+          <Device>ARMCM0</Device>
+          <Vendor>ARM</Vendor>
+          <PackID>ARM.CMSIS.5.5.1</PackID>
+          <PackURL>http://www.keil.com/pack/</PackURL>
+          <Cpu>IRAM(0x20000000,0x00020000) IROM(0x00000000,0x00040000) CPUTYPE("Cortex-M0") CLOCK(12000000) ESEL ELITTLE</Cpu>
+          <FlashUtilSpec></FlashUtilSpec>
+          <StartupFile></StartupFile>
+          <FlashDriverDll>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000)</FlashDriverDll>
+          <DeviceId>0</DeviceId>
+          <RegisterFile>$$Device:ARMCM0$Device\ARM\ARMCM0\Include\ARMCM0.h</RegisterFile>
+          <MemoryEnv></MemoryEnv>
+          <Cmp></Cmp>
+          <Asm></Asm>
+          <Linker></Linker>
+          <OHString></OHString>
+          <InfinionOptionDll></InfinionOptionDll>
+          <SLE66CMisc></SLE66CMisc>
+          <SLE66AMisc></SLE66AMisc>
+          <SLE66LinkerMisc></SLE66LinkerMisc>
+          <SFDFile>$$Device:ARMCM0$Device\ARM\SVD\ARMCM0.svd</SFDFile>
+          <bCustSvd>0</bCustSvd>
+          <UseEnv>0</UseEnv>
+          <BinPath></BinPath>
+          <IncludePath></IncludePath>
+          <LibPath></LibPath>
+          <RegisterFilePath></RegisterFilePath>
+          <DBRegisterFilePath></DBRegisterFilePath>
+          <TargetStatus>
+            <Error>0</Error>
+            <ExitCodeStop>0</ExitCodeStop>
+            <ButtonStop>0</ButtonStop>
+            <NotGenerated>0</NotGenerated>
+            <InvalidFlash>1</InvalidFlash>
+          </TargetStatus>
+          <OutputDirectory>.\Objects\</OutputDirectory>
+          <OutputName>YC3121_Keil</OutputName>
+          <CreateExecutable>1</CreateExecutable>
+          <CreateLib>0</CreateLib>
+          <CreateHexFile>1</CreateHexFile>
+          <DebugInformation>1</DebugInformation>
+          <BrowseInformation>1</BrowseInformation>
+          <ListingPath>.\Listings\</ListingPath>
+          <HexFormatSelection>1</HexFormatSelection>
+          <Merge32K>0</Merge32K>
+          <CreateBatchFile>1</CreateBatchFile>
+          <BeforeCompile>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopU1X>0</nStopU1X>
+            <nStopU2X>0</nStopU2X>
+          </BeforeCompile>
+          <BeforeMake>
+            <RunUserProg1>0</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name></UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopB1X>0</nStopB1X>
+            <nStopB2X>0</nStopB2X>
+          </BeforeMake>
+          <AfterMake>
+            <RunUserProg1>1</RunUserProg1>
+            <RunUserProg2>0</RunUserProg2>
+            <UserProg1Name>fromelf.exe --text -a -c --output=@L_asm.txt "!L"</UserProg1Name>
+            <UserProg2Name></UserProg2Name>
+            <UserProg1Dos16Mode>0</UserProg1Dos16Mode>
+            <UserProg2Dos16Mode>0</UserProg2Dos16Mode>
+            <nStopA1X>0</nStopA1X>
+            <nStopA2X>0</nStopA2X>
+          </AfterMake>
+          <SelectedForBatchBuild>0</SelectedForBatchBuild>
+          <SVCSIdString></SVCSIdString>
+        </TargetCommonOption>
+        <CommonProperty>
+          <UseCPPCompiler>0</UseCPPCompiler>
+          <RVCTCodeConst>0</RVCTCodeConst>
+          <RVCTZI>0</RVCTZI>
+          <RVCTOtherData>0</RVCTOtherData>
+          <ModuleSelection>0</ModuleSelection>
+          <IncludeInBuild>1</IncludeInBuild>
+          <AlwaysBuild>0</AlwaysBuild>
+          <GenerateAssemblyFile>0</GenerateAssemblyFile>
+          <AssembleAssemblyFile>0</AssembleAssemblyFile>
+          <PublicsOnly>0</PublicsOnly>
+          <StopOnExitCode>3</StopOnExitCode>
+          <CustomArgument></CustomArgument>
+          <IncludeLibraryModules></IncludeLibraryModules>
+          <ComprImg>1</ComprImg>
+        </CommonProperty>
+        <DllOption>
+          <SimDllName>SARMCM3.DLL</SimDllName>
+          <SimDllArguments>  </SimDllArguments>
+          <SimDlgDll>DARMCM1.DLL</SimDlgDll>
+          <SimDlgDllArguments>-pCM0</SimDlgDllArguments>
+          <TargetDllName>SARMCM3.DLL</TargetDllName>
+          <TargetDllArguments> </TargetDllArguments>
+          <TargetDlgDll>TARMCM1.DLL</TargetDlgDll>
+          <TargetDlgDllArguments>-pCM0</TargetDlgDllArguments>
+        </DllOption>
+        <DebugOption>
+          <OPTHX>
+            <HexSelection>1</HexSelection>
+            <HexRangeLowAddress>0</HexRangeLowAddress>
+            <HexRangeHighAddress>0</HexRangeHighAddress>
+            <HexOffset>0</HexOffset>
+            <Oh166RecLen>16</Oh166RecLen>
+          </OPTHX>
+        </DebugOption>
+        <Utilities>
+          <Flash1>
+            <UseTargetDll>1</UseTargetDll>
+            <UseExternalTool>0</UseExternalTool>
+            <RunIndependent>1</RunIndependent>
+            <UpdateFlashBeforeDebugging>1</UpdateFlashBeforeDebugging>
+            <Capability>1</Capability>
+            <DriverSelection>4100</DriverSelection>
+          </Flash1>
+          <bUseTDR>0</bUseTDR>
+          <Flash2>Segger\JL2CM3.dll</Flash2>
+          <Flash3>"" ()</Flash3>
+          <Flash4></Flash4>
+          <pFcarmOut></pFcarmOut>
+          <pFcarmGrp></pFcarmGrp>
+          <pFcArmRoot></pFcArmRoot>
+          <FcArmLst>0</FcArmLst>
+        </Utilities>
+        <TargetArmAds>
+          <ArmAdsMisc>
+            <GenerateListings>0</GenerateListings>
+            <asHll>1</asHll>
+            <asAsm>1</asAsm>
+            <asMacX>1</asMacX>
+            <asSyms>1</asSyms>
+            <asFals>1</asFals>
+            <asDbgD>1</asDbgD>
+            <asForm>1</asForm>
+            <ldLst>0</ldLst>
+            <ldmm>1</ldmm>
+            <ldXref>1</ldXref>
+            <BigEnd>0</BigEnd>
+            <AdsALst>1</AdsALst>
+            <AdsACrf>1</AdsACrf>
+            <AdsANop>0</AdsANop>
+            <AdsANot>0</AdsANot>
+            <AdsLLst>1</AdsLLst>
+            <AdsLmap>1</AdsLmap>
+            <AdsLcgr>1</AdsLcgr>
+            <AdsLsym>1</AdsLsym>
+            <AdsLszi>1</AdsLszi>
+            <AdsLtoi>1</AdsLtoi>
+            <AdsLsun>1</AdsLsun>
+            <AdsLven>1</AdsLven>
+            <AdsLsxf>1</AdsLsxf>
+            <RvctClst>0</RvctClst>
+            <GenPPlst>0</GenPPlst>
+            <AdsCpuType>"Cortex-M0"</AdsCpuType>
+            <RvctDeviceName></RvctDeviceName>
+            <mOS>0</mOS>
+            <uocRom>0</uocRom>
+            <uocRam>0</uocRam>
+            <hadIROM>1</hadIROM>
+            <hadIRAM>1</hadIRAM>
+            <hadXRAM>0</hadXRAM>
+            <uocXRam>0</uocXRam>
+            <RvdsVP>0</RvdsVP>
+            <RvdsMve>0</RvdsMve>
+            <hadIRAM2>0</hadIRAM2>
+            <hadIROM2>0</hadIROM2>
+            <StupSel>8</StupSel>
+            <useUlib>1</useUlib>
+            <EndSel>1</EndSel>
+            <uLtcg>0</uLtcg>
+            <nSecure>0</nSecure>
+            <RoSelD>3</RoSelD>
+            <RwSelD>3</RwSelD>
+            <CodeSel>0</CodeSel>
+            <OptFeed>0</OptFeed>
+            <NoZi1>0</NoZi1>
+            <NoZi2>0</NoZi2>
+            <NoZi3>0</NoZi3>
+            <NoZi4>0</NoZi4>
+            <NoZi5>0</NoZi5>
+            <Ro1Chk>0</Ro1Chk>
+            <Ro2Chk>0</Ro2Chk>
+            <Ro3Chk>0</Ro3Chk>
+            <Ir1Chk>1</Ir1Chk>
+            <Ir2Chk>0</Ir2Chk>
+            <Ra1Chk>0</Ra1Chk>
+            <Ra2Chk>0</Ra2Chk>
+            <Ra3Chk>0</Ra3Chk>
+            <Im1Chk>1</Im1Chk>
+            <Im2Chk>0</Im2Chk>
+            <OnChipMemories>
+              <Ocm1>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm1>
+              <Ocm2>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm2>
+              <Ocm3>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm3>
+              <Ocm4>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm4>
+              <Ocm5>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm5>
+              <Ocm6>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </Ocm6>
+              <IRAM>
+                <Type>0</Type>
+                <StartAddress>0x20000000</StartAddress>
+                <Size>0x20000</Size>
+              </IRAM>
+              <IROM>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x40000</Size>
+              </IROM>
+              <XRAM>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </XRAM>
+              <OCR_RVCT1>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT1>
+              <OCR_RVCT2>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT2>
+              <OCR_RVCT3>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT3>
+              <OCR_RVCT4>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x40000</Size>
+              </OCR_RVCT4>
+              <OCR_RVCT5>
+                <Type>1</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT5>
+              <OCR_RVCT6>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT6>
+              <OCR_RVCT7>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT7>
+              <OCR_RVCT8>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT8>
+              <OCR_RVCT9>
+                <Type>0</Type>
+                <StartAddress>0x20000000</StartAddress>
+                <Size>0x20000</Size>
+              </OCR_RVCT9>
+              <OCR_RVCT10>
+                <Type>0</Type>
+                <StartAddress>0x0</StartAddress>
+                <Size>0x0</Size>
+              </OCR_RVCT10>
+            </OnChipMemories>
+            <RvctStartVector></RvctStartVector>
+          </ArmAdsMisc>
+          <Cads>
+            <interw>1</interw>
+            <Optim>3</Optim>
+            <oTime>0</oTime>
+            <SplitLS>0</SplitLS>
+            <OneElfS>0</OneElfS>
+            <Strict>0</Strict>
+            <EnumInt>0</EnumInt>
+            <PlainCh>0</PlainCh>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <wLevel>2</wLevel>
+            <uThumb>0</uThumb>
+            <uSurpInc>0</uSurpInc>
+            <uC99>1</uC99>
+            <uGnu>1</uGnu>
+            <useXO>0</useXO>
+            <v6Lang>1</v6Lang>
+            <v6LangP>1</v6LangP>
+            <vShortEn>1</vShortEn>
+            <vShortWch>1</vShortWch>
+            <v6Lto>0</v6Lto>
+            <v6WtE>0</v6WtE>
+            <v6Rtti>0</v6Rtti>
+            <VariousControls>
+              <MiscControls></MiscControls>
+              <Define>__USEKEILCOMPILE__</Define>
+              <Undefine></Undefine>
+              <IncludePath>..\..\..\..\..\Librarier\core;..\..\..\..\..\Librarier\sdk;..\..\user</IncludePath>
+            </VariousControls>
+          </Cads>
+          <Aads>
+            <interw>1</interw>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <thumb>0</thumb>
+            <SplitLS>0</SplitLS>
+            <SwStkChk>0</SwStkChk>
+            <NoWarn>0</NoWarn>
+            <uSurpInc>0</uSurpInc>
+            <useXO>0</useXO>
+            <uClangAs>0</uClangAs>
+            <VariousControls>
+              <MiscControls></MiscControls>
+              <Define></Define>
+              <Undefine></Undefine>
+              <IncludePath></IncludePath>
+            </VariousControls>
+          </Aads>
+          <LDads>
+            <umfTarg>0</umfTarg>
+            <Ropi>0</Ropi>
+            <Rwpi>0</Rwpi>
+            <noStLib>0</noStLib>
+            <RepFail>1</RepFail>
+            <useFile>0</useFile>
+            <TextAddressRange>0x00000000</TextAddressRange>
+            <DataAddressRange>0xd0000</DataAddressRange>
+            <pXoBase></pXoBase>
+            <ScatterFile>.\Objects\YC3121_keil.sct</ScatterFile>
+            <IncludeLibs></IncludeLibs>
+            <IncludeLibsPath></IncludeLibsPath>
+            <Misc></Misc>
+            <LinkerInputFile></LinkerInputFile>
+            <DisabledWarnings></DisabledWarnings>
+          </LDads>
+        </TargetArmAds>
+      </TargetOption>
+      <Groups>
+        <Group>
+          <GroupName>core</GroupName>
+          <Files>
+            <File>
+              <FileName>misc.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\core\misc.c</FilePath>
+            </File>
+            <File>
+              <FileName>system.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\core\system.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>main</GroupName>
+          <Files>
+            <File>
+              <FileName>main.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\user\main.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>sdk</GroupName>
+          <Files>
+            <File>
+              <FileName>yc_gpio.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_gpio.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_uart.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_uart.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_dma.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_dma.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_sysctrl.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_sysctrl.c</FilePath>
+            </File>
+            <File>
+              <FileName>yc_timer.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_timer.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>startup</GroupName>
+          <Files>
+            <File>
+              <FileName>flash_start.s</FileName>
+              <FileType>2</FileType>
+              <FilePath>..\..\..\..\..\Librarier\startup\flash_start.s</FilePath>
+            </File>
+            <File>
+              <FileName>startup.s</FileName>
+              <FileType>2</FileType>
+              <FilePath>..\..\..\..\..\Librarier\startup\startup.s</FilePath>
+            </File>
+          </Files>
+        </Group>
+        <Group>
+          <GroupName>usb</GroupName>
+          <Files>
+            <File>
+              <FileName>usb.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\user\usb.c</FilePath>
+            </File>
+          </Files>
+        </Group>
+      </Groups>
+    </Target>
+  </Targets>
+
+  <RTE>
+    <apis/>
+    <components/>
+    <files/>
+  </RTE>
+
+</Project>
Index: usb_printer/user/main.c
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_printer/user/main.c	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_printer/user/main.c	(working copy)
@@ -0,0 +1,91 @@
+
+/**
+  ******************************************************************************
+  * @file    3121Demo_1.0V\ModuleDemo\USB\USB_CDC\user\main.c
+  * @author  Yichip Application Team
+  * @version V1.0.0
+  * @date    23-Oct-2019
+  * @brief   USB CDC test program.
+  ******************************************************************************
+  * @attention
+  *
+  * COPYRIGHT 2019 Yichip Microelectronics
+  *
+  * The purpose of this demo is to provide guidance to customers engaged in
+  * programming work to guide them smoothly to product development,
+  * so as to save their time.
+  *
+  * Therefore, Yichip microelectronics shall not be responsible for any direct,
+  * indirect or consequential damages caused by any content of this demo
+  * and/or contained in this code used by the customer in its products.
+  *
+  ******************************************************************************
+  */
+
+/* Includes ------------------------------------------------------------------*/
+#include "yc3121.h"
+#include "yc_gpio.h"
+#include "yc_uart.h"
+#include "yc_sysctrl.h"
+#include "usb.h"
+
+#include "board_config.h"
+
+/* Private macro -------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+/* Private function prototypes -----------------------------------------------*/
+void UART_Configuration(void);
+
+/**
+  * @brief  Main program
+  * @param  None
+  * @retval None
+  */
+int main(void)
+{
+  UART_Configuration();
+
+  //IpcInit();
+
+  MyPrintf("USB printer Demo !\n\n");
+
+	usb_main();
+
+  while (1)
+  {
+
+  }
+}
+
+/**
+  * @brief  Serial port 0 initialization function.
+  * @param  None
+  * @retval None
+  */
+void UART_Configuration(void)
+{
+  UART_InitTypeDef UART_InitStruct;
+
+	/* Configure serial ports 0 RX and TX for IO. */
+	GPIO_Config(UART0_TX_PORT, UART0_TX_PIN, UART0_TXD);
+	GPIO_Config(UART0_RX_PORT, UART0_RX_PIN, UART0_RXD);
+
+  /* USARTx configured as follow:
+  - BaudRate = 115200 baud
+  - Word Length = 8 Bits
+  - Stop Bit = 1 Stop Bit
+  - Parity = No Parity
+  - Hardware flow control disabled (RTS and CTS signals)
+  - Receive and transmit enabled
+  */
+	UART_InitStruct.BaudRate = UARTBAUD;			//Configure serial port baud rate, the baud rate defaults to 128000.
+	UART_InitStruct.DataBits = Databits_8b;
+	UART_InitStruct.StopBits = StopBits_1;
+	UART_InitStruct.Parity = Parity_None;
+	UART_InitStruct.FlowCtrl = FlowCtrl_None;
+	UART_InitStruct.Mode = Mode_duplex;
+
+	UART_Init(UART0, &UART_InitStruct);
+}
+
+/************************ (C) COPYRIGHT Yichip Microelectronics *****END OF FILE****/
Index: usb_printer/user/usb.h
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_printer/user/usb.h	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_printer/user/usb.h	(working copy)
@@ -0,0 +1,110 @@
+
+#define  BT_GBG_EN *(volatile uint8_t*)(0xc8904)
+
+#define  HCI_CLASS_REQUEST_TYPE  0x20
+
+                                       // SetReport HID Request
+#define  HID_CLASS_REQUEST_TYPE  0x21 
+
+// Standard Request Codes
+#define  GET_STATUS              0x00  // Code for Get Status
+#define  CLEAR_FEATURE           0x01  // Code for Clear Feature
+#define  SET_FEATURE             0x03  // Code for Set Feature
+#define  SET_ADDRESS             0x05  // Code for Set Address
+#define  GET_DESCRIPTOR          0x06  // Code for Get Descriptor
+#define  SET_DESCRIPTOR          0x07  // Code for Set Descriptor(not used)
+#define  GET_CONFIGURATION       0x08  // Code for Get Configuration
+#define  SET_CONFIGURATION       0x09  // Code for Set Configuration
+#define  GET_INTERFACE           0x0A  // Code for Get Interface
+#define  SET_INTERFACE           0x0B  // Code for Set Interface
+#define  SYNCH_FRAME             0x0C  // Code for Synch Frame(not used)
+
+// Standard Descriptor Types
+#define  DSC_DEVICE              0x01  // Device Descriptor
+#define  DSC_CONFIG              0x02  // Configuration Descriptor
+#define  DSC_STRING              0x03  // String Descriptor
+#define  DSC_INTERFACE           0x04  // Interface Descriptor
+#define  DSC_ENDPOINT            0x05  // Endpoint Descriptor
+
+// HID Descriptor Types
+#define  DSC_HID			     0x21  // HID Class Descriptor
+#define  DSC_HID_REPORT			 0x22  // HID Report Descriptor
+
+// Define bmRequestType bitmaps
+#define  IN_DEVICE               0x00  // Request made to device,
+                                       // direction is IN
+#define  OUT_DEVICE              0x80  // Request made to device,
+                                       // direction is OUT
+#define  IN_INTERFACE            0x01  // Request made to interface,
+                                       // direction is IN
+#define  OUT_INTERFACE           0x81  // Request made to interface,
+                                       // direction is OUT
+#define  IN_ENDPOINT             0x02  // Request made to endpoint,
+                                       // direction is IN
+#define  OUT_ENDPOINT            0x82  // Request made to endpoint,
+
+#define USB_DEVICE_CLASS_AUDIO        	0x01
+#define USB_DEVICE_CLASS_CDC  			0x02
+#define USB_DEVICE_CLASS_HID                  	0x03
+#define USB_DEVICE_CLASS_IMAGE 		0x06
+#define USB_DEVICE_CLASS_PRINTER 		0x07
+#define USB_DEVICE_CLASS_MASS 		0x08
+#define USB_DEVICE_CLASS_HUB 			0x09
+#define USB_DEVICE_CLASS_CDC_DATA	0x0a
+#define USB_DEVICE_CLASS_SMARTCARD	0x0b
+#define USB_DEVICE_CLASS_SECURITY		0x0d
+#define USB_DEVICE_CLASS_VIDEO		0x0e
+#define USB_DEVICE_CLASS_HEALTH		0x0f
+#define USB_DEVICE_CLASS_AV			0x10
+#define USB_DEVICE_CLASS_WIRELESS		0xe0
+
+#define USB_ENDPOINT_TYPE_BUCK          		0x02
+#define USB_ENDPOINT_TYPE_INT          		0x03
+#define USB_ENDPOINT_TYPE_ADAP_ISO          	0x09
+#define USB_ENDPOINT_TYPE_SYNC_ISO        	0x0d
+
+#define GET_DEVICE_ID			0
+
+// HID Request Codes
+#define  GET_REPORT 		     0x01   // Code for Get Report
+#define  GET_IDLE				 0x02   // Code for Get Idle
+#define  GET_PROTOCOL			 0x03   // Code for Get Protocol
+#define  SET_REPORT				 0x09   // Code for Set Report
+#define  SET_IDLE				 0x0A   // Code for Set Idle
+#define  SET_PROTOCOL			 0x0B   // Code for Set Protocol
+
+#define  HID_RPT_ID           	0xf2
+#define  HID_RPT_SIZE         	0x3f
+
+#define  EP0_PACKET_SIZE         0x40 
+#define  EP1_PACKET_SIZE         0x40
+#define  HID_REPORT_DESCRIPTOR_SIZE    0x001B
+
+#define  be16(x) ((x<<8)|(x>>8))                
+#define LOBYTE(x)  ((byte)((x) & 0xff))
+#define HIBYTE(x)  ((byte)((x) >> 8 & 0xff))
+#define TRDBYTE(x)  ((byte)((x) >> 16 & 0xff))
+
+#define WORD(x)				LOBYTE(x),HIBYTE(x)
+#define TBYTE(x)				WORD(x),TRDBYTE(x)
+#define DWORD(x)			WORD(x),WORD(x >> 16)
+
+#define USB_STATUS_FIFO0_READY		1
+#define USB_STATUS_FIFO1_READY		2
+#define USB_STATUS_FIFO3_READY		8
+#define USB_STATUS_SETUP			0x10
+#define USB_STATUS_SUSPEND			0x20
+#define USB_STATUS_NAK				0x40
+#define USB_STATUS_RESET			0x80
+
+typedef struct
+{
+	byte  bmRequestType;
+	byte  bRequest;
+	word wValue;
+	word wIndex;
+	word wLength;
+} usb_setup;
+
+
+void usb_main(void);
Index: usb_printer/user/usb.c
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_printer/user/usb.c	(nonexistent)
+++ /YC3121_demo/ModuleDemo/USB/usb_printer/user/usb.c	(working copy)
@@ -0,0 +1,557 @@
+#include "yc_sysctrl.h"
+#include "usb.h"
+#include "misc.h"
+#include "yc_timer.h"
+#include "yc_qspi.h"
+
+void dmacopy_nowait(byte *dest, byte *src, int len);
+
+int  usb_get_buffer(uint8_t *buf);
+void usb_last_packet(void);
+void enable_systick(int counter);
+void TIMER_Configuration(void);
+
+extern byte aes[];
+#define VENDOR_ID       0x0483
+#define PRODUCT_ID      0x5720
+
+byte const *bufptr;
+byte remain, isstr;
+usb_setup usb0_setup;
+byte usb1_send_flag = 1;
+byte mcmd, rxlen, clear_fifo;
+byte usbbuf[65], uartbuf[100];
+byte usbtxbuf[128];
+byte pcnt[3000] __attribute__((aligned(256)));
+int uwp, urp, tptr, next_urp, timeout, totallen, pcp, tc, chksum;
+int utxwp, utxrp;
+uint32_t totaltxlen = 0, totaltxlen_chksum = 0;
+
+const byte devicedesc[] =
+{
+    18,                     //bLength
+    DSC_DEVICE,         //bDescriptorType
+    WORD(0x110),            //bcdUSB
+    0x00,                   //bDeviceClass
+    0x00,                   //bDeviceSubClass
+    0x00,                   //bDeviceProtocol
+    EP0_PACKET_SIZE,        //bMaxPacketSize0
+    WORD(VENDOR_ID),        //idVendor
+    WORD(PRODUCT_ID),       //idProduct
+    WORD(0x0200),           //bcdDevice
+    0x01,                   //iManufacturer
+    0x02,                   //iProduct
+    0x03,                   //iSerialNumber
+    0x01                    //bNumConfigurations
+};
+
+
+const byte confdesc[] =
+{
+    /* Configuration 1 */
+    9,                                                      /* bLength */
+    DSC_CONFIG,                             /* bDescriptorType */
+    WORD(9 * 2 + 7 * 2),                /* wTotalLength */
+    0x01,                                                   /* bNumInterfaces */
+    0x01,                                                   /* bConfigurationValue */
+    0x00,                                                   /* iConfiguration */
+    0xc0,                                                   /* bmAttributes  BUS Powred*/
+    50,                                                     /* bMaxPower = 400 mA*/
+
+    /* Standard interface descriptor */
+    9,                                          /* bLength */
+    DSC_INTERFACE,                              /* bDescriptorType */
+    0x00,                                                   /* bInterfaceNumber */
+    0x00,                                                   /* bAlternateSetting */
+    0x02,                                                   /* bNumEndpoints */
+    USB_DEVICE_CLASS_PRINTER,                   /* bInterfaceClass */
+    1,                                              /* bInterfaceSubClass */
+    2,                                          /* bInterfaceProtocol */
+    0x04,                                                   /* iInterface */
+
+    /* Endpoint 1 - Standard Descriptor */
+    7,                                          /* bLength */
+    DSC_ENDPOINT,                           /* bDescriptorType */
+    1,                                              /* bEndpointAddress 1 out endpoint*/
+    USB_ENDPOINT_TYPE_BUCK,             /* bmAttributes */
+    WORD(64),                               /* wMaxPacketSize in Bytes (Freq(Samples)*2(Stereo)*2(HalfWord)) */
+    0x00,                                                   /* bInterval */
+
+    /* Endpoint 81 - Standard Descriptor */
+    7,                                          /* bLength */
+    DSC_ENDPOINT,                           /* bDescriptorType */
+    0x81,                                           /* bEndpointAddress 1 in endpoint*/
+    USB_ENDPOINT_TYPE_INT,             /* bmAttributes */
+    WORD(64),                               /* wMaxPacketSize in Bytes (Freq(Samples)*2(Stereo)*2(HalfWord)) */
+    0x02,                                                   /* bInterval */
+
+};
+
+char const string0[] = "\x4\x3\x9\x4";
+char const string1[] = "YICHIP";
+char const string2[] = "YC3121 Printer demo";
+char const string3[] = "000000000004";
+char const *const string[] =   {string0, string1, string2, string3};
+char const id[] = "\x0\xaprinter;";
+
+const byte strlength[] = {sizeof(string0), sizeof(string1), sizeof(string2), sizeof(string3)};
+
+
+static void usb0_force_stall(void)
+{
+    USB_STALL =  1;
+}
+
+static void usb_trig(int ep)
+{
+    volatile int i;
+    for (i = 0; i < 90; i++);
+    USB_TRG =  1 << ep;
+    return;
+}
+
+static void usb0_tx()
+{
+    byte len, i;
+
+    if (remain)
+    {
+        len = remain > EP0_PACKET_SIZE ? EP0_PACKET_SIZE : remain;
+        for (i = 0; i < len; i++)
+        {
+            USB_EP(0) = bufptr[i];
+            if (isstr) USB_EP(0) = 0;
+        }
+        bufptr += len;
+        remain -= len;
+        usb_trig(0);
+        USB_INT_MASK(1) =  0xfe;
+    }
+    else
+    {
+        USB_INT_MASK(1) =  0xff;
+    }
+}
+
+
+static void usb0_respond(byte const *buff, byte size)
+{
+    if (isstr)
+    {
+        USB_EP(0) = (size + 1) * 2;
+        USB_EP(0) = 3;
+    }
+    if (size > usb0_setup.wLength)
+        size = usb0_setup.wLength;
+    bufptr = buff;
+    remain = size;
+    usb0_tx();
+}
+
+
+static void usb0_request_set_address(void)
+{
+    if (usb0_setup.bmRequestType == IN_DEVICE && usb0_setup.wIndex == 0
+            && usb0_setup.wLength == 0)
+    {
+        USB_TRG = 0x10;
+        USB_ADDR = usb0_setup.wValue;
+    }
+    else
+    {
+        usb0_force_stall();
+    }
+}
+/*
+static byte strlength(char const *str)
+{
+    byte i;
+    for(i = 0;str[i];i++);
+    return i;
+}
+*/
+static void usb0_request_set_configuration(void)
+{
+    if (usb0_setup.bmRequestType == IN_DEVICE
+            && usb0_setup.wIndex == 0 && usb0_setup.wLength == 0
+            && usb0_setup.wValue <= 1)
+    {
+        USB_TRG = 0x10;
+    }
+    else
+    {
+        usb0_force_stall();
+    }
+}
+
+static void usb0_request_set_interface(void)
+{
+    if (usb0_setup.bmRequestType == IN_INTERFACE
+            && usb0_setup.wValue == 0
+            && usb0_setup.wLength == 0)
+    {
+        USB_TRG = 0x10;
+    }
+    else
+    {
+        usb0_force_stall();
+    }
+}
+
+static void usb0_request_get_descriptor(void)
+{
+    byte index;
+    isstr = 0;
+    switch (usb0_setup.wValue >> 8)
+    {
+    case DSC_DEVICE:
+        usb0_respond((byte const *)&devicedesc, sizeof(devicedesc));
+        if (USB_ADDR > 0) USB_ADDR |= 0x80;
+        break;
+    case DSC_CONFIG:
+        usb0_respond(confdesc, sizeof(confdesc));
+        break;
+    case DSC_STRING:
+        index = usb0_setup.wValue  & 3;
+        isstr = index > 0;
+        usb0_respond((byte const *)string[index], strlength[index] - 1);
+        break;
+
+    default:
+        usb0_force_stall();
+        break;
+    }
+}
+
+#define INCPTR(x, inc)      (x + inc >= sizeof(usbbuf) ? x + inc - sizeof(usbbuf) : x + inc)
+
+#define INTXCPTR(x, inc)      (x + inc >= sizeof(usbtxbuf) ? x + inc - sizeof(usbtxbuf) : x + inc)
+int buflen()
+{
+    return uwp < urp ? uwp - urp + sizeof(usbbuf) : uwp - urp;
+}
+
+int txbuflen()
+{
+    return utxwp < utxrp ? utxwp - utxrp + sizeof(usbtxbuf) : utxwp - utxrp;
+}
+
+void usb2buf(int len)
+{
+    int i;
+    for (i = 0; i < len; i++, uwp = INCPTR(uwp, 1))
+        usbbuf[uwp] = USB_EP(1);
+}
+
+void usb2txbuf(int txlen)
+{
+    byte len, i;
+    if (txlen)
+    {
+        len = txlen > EP1_PACKET_SIZE ? EP1_PACKET_SIZE : txlen;
+        for (i = 0; i < len; i++, utxrp = INTXCPTR(utxrp, 1))
+        {
+            USB_EP(1)  = usbtxbuf[utxrp];
+            totaltxlen_chksum = totaltxlen_chksum + usbtxbuf[utxrp];
+        }
+        totaltxlen += len;
+        usb_trig(1);
+        usb1_send_flag = 0;
+        USB_INT_MASK(1) =  0xfd;
+    }
+    else
+    {
+        USB_INT_MASK(1) =  0xff;
+    }
+}
+
+int txbufreeelen()
+{
+    return sizeof(usbtxbuf) - (utxwp < utxrp ? utxwp - utxrp + sizeof(usbtxbuf) : utxwp - utxrp);
+}
+
+void USB_IRQHandler(void)
+{
+    int i, len;
+    byte status, empty, full;
+    byte *buf = (byte *)&usb0_setup;
+    status = USB_STATUS;
+    empty = USB_FIFO_EMPTY;
+    full = USB_FIFO_FULL;
+    USB_FIFO_EMPTY =  empty;
+    USB_STATUS =  status;
+    USB_FIFO_FULL = full;
+    if (status & USB_STATUS_RESET)
+    {
+        USB_ADDR = 0x00;
+    }
+    if (empty & 1)
+    {
+        usb0_tx();
+    }
+    if (empty & 2)
+    {
+        usb1_send_flag = 1;
+        USB_INT_MASK(1) =  0xff;
+    }
+    if (status & USB_STATUS_FIFO0_READY)
+    {
+        len = USB_EP_LEN(0);
+        for (i = 0; i < len; i++)
+            buf[i] = USB_EP(0);
+        if (status & USB_STATUS_SETUP)
+        {
+            usb0_setup.wLength = usb0_setup.wLength;
+            usb0_setup.wValue = usb0_setup.wValue;
+            if ((usb0_setup.bmRequestType & ~0x80) == HCI_CLASS_REQUEST_TYPE)
+            {
+                USB_TRG = 0x10;
+            }
+            else if ((usb0_setup.bmRequestType & ~0x80) == HID_CLASS_REQUEST_TYPE)
+            {
+                switch (usb0_setup.bRequest)
+                {
+                case SET_IDLE:
+                    USB_TRG = 0x10;
+                    break;
+                case GET_DEVICE_ID:
+                    isstr = 0;
+                    usb0_respond((uint8_t *)id, sizeof(id) - 1);
+                    break;
+                }
+            }
+            else
+            {
+                switch (usb0_setup.bRequest)
+                {
+                case SET_ADDRESS:
+                    usb0_request_set_address();
+                    break;
+                case GET_DESCRIPTOR:
+                    usb0_request_get_descriptor();
+                    break;
+                case SET_CONFIGURATION:
+                    usb0_request_set_configuration();
+                    break;
+                case SET_INTERFACE:
+                    usb0_request_set_interface();
+                    break;
+
+                default:
+                    usb0_force_stall();
+                    break;
+                }
+            }
+
+        }
+
+    }
+    if (status & USB_STATUS_FIFO1_READY)
+    {
+        USB_STATUS =  USB_STATUS_FIFO1_READY;
+        len = USB_EP_LEN(1);
+        timeout = 0;
+
+        if (status & USB_STATUS_NAK)
+        {
+            if (rxlen == 0)
+            {
+                rxlen = len;
+            }
+            if (buflen() + rxlen < sizeof(usbbuf))
+            {
+                usb2buf(rxlen);
+                for (i = 0; i < len - rxlen; i++) USB_EP(1);
+                rxlen = 0;
+            }
+        }
+        else if (len > 0)
+        {
+            if (buflen() + len < sizeof(usbbuf))
+            {
+                usb2buf(len);
+                rxlen = 0;
+            }
+            else
+            {
+                rxlen = len;
+            }
+        }
+    }
+}
+
+
+
+int i, len, dataLen, usbTotallen;
+uint32_t increse = 0;
+void usb_main()
+{
+
+    remain = mcmd = rxlen = clear_fifo = tptr = uwp = urp = timeout = totallen = pcp = tc = chksum = utxwp = utxrp = 0;
+    enable_clock(CLKCLS_UART);
+    enable_clock(CLKCLS_USB);
+    USB_CONFIG =  0x00;
+    delay_ms(1);
+    USB_CONFIG =  0x30;
+    USB_INT_MASK(0) =  0x30;
+    USB_INT_MASK(1) =  0xff;
+    USB_INT_MASK(2) =  0xff;
+
+    enable_intr(INTR_USB);
+    NVIC_EnableIRQ(TIM0_IRQn);
+
+    NVIC_SetPriority(USB_IRQn, 0);
+    NVIC_SetPriority(TIM0_IRQn, 1);
+
+    TIMER_Configuration();
+
+    uint8_t uartretval;
+    uint8_t recvlen;
+    uint32_t recvtotallen = 0;
+    uint8_t buf[65] = {0};
+    uint8_t big_buffer_have_space = 1;
+    uint8_t big_buffer[1024] = {0};
+    while (1)
+    {
+
+        recvlen = buflen();
+
+        if (recvlen > 0)
+        {
+            if (big_buffer_have_space)
+            {
+                /*receive data in to big buffer*/
+                recvlen = usb_get_buffer(buf);
+
+                memcpy(big_buffer, buf, recvlen);
+
+                recvtotallen += recvlen;
+                MyPrintf("recvlen = %d recvtotallen = %d\r\n", recvlen, recvtotallen);
+            }
+            else
+            {
+                /*big_buffer_have_no_space*/
+            }
+
+        }
+
+        if (txbuflen() > 0)
+        {
+            if (usb1_send_flag == 1)
+            {
+                usb2txbuf(txbuflen());
+            }
+        }
+
+
+        /*usb_last_packet in TIMER0_IRQHandler*/
+
+        //usb_last_packet();
+
+
+        if (UART_IsRXFIFONotEmpty(UART0))
+        {
+            uartretval = UART_ReceiveData(UART0);
+            switch (uartretval)
+            {
+            case '1':
+                MyPrintf("case '1' !\n\n");
+                /*prapare usb tx send data*/
+                for (int i = 0; i < 100; i++, utxwp = INTXCPTR(utxwp, 1))
+                    usbtxbuf[utxwp]  = i;
+                break;
+            case '2':
+                MyPrintf("big_buffer_have_space '1' !\n\n");
+                big_buffer_have_space = 1;
+                break;
+            case '3':
+                MyPrintf("big_buffer_have_space '0' !\n\n");
+                big_buffer_have_space = 0;
+                break;
+            case 'c':
+                MyPrintf("totallen = %d chksum = %d \n\n", totallen, chksum);
+                MyPrintf("totaltxlen = %d totaltxlen_chksum = %d \n\n", totaltxlen, totaltxlen_chksum);
+                recvtotallen  = 0;
+                totallen = 0;
+                chksum = 0;
+                totaltxlen = 0;
+                totaltxlen_chksum = 0;
+                break;
+            default:
+                break;
+            }
+            uartretval = 0;
+        }
+    };
+}
+
+
+
+int usb_get_buffer(uint8_t *buf)
+{
+    int len;
+
+    len = buflen();
+    if (len > 0)
+    {
+
+        for (int i = 0; i < len; i++, urp = INCPTR(urp, 1))
+        {
+            buf[i] = usbbuf[urp];
+            chksum += buf[i];
+        }
+        totallen += len;
+
+    }
+    return len;
+}
+
+void usb_last_packet(void)
+{
+    /*please put usb_last_packet(); into Timer interrupt*/
+    if (rxlen && buflen() + rxlen < sizeof(usbbuf))
+    {
+        /*The expected value of the timeout is 100ms;
+          timeout = 100ms/each into Timer interrupt time*/
+        if (timeout++ > 100)
+        {
+            usb2buf(rxlen);
+            for (i = 0; i < 64 - rxlen; i++) USB_EP(1);
+            rxlen = 0;
+            tc++;
+            timeout = 0;
+        }
+    }
+}
+
+/**
+  * @brief  TIM configuration function.
+  * @param  None
+  * @retval None
+  */
+void TIMER_Configuration(void)
+{
+    TIM_InitTypeDef TIM_InitStruct;
+
+    TIM_InitStruct.period = 96000;
+
+    TIM_InitStruct.TIMx = TIM0;
+    TIM_Init(&TIM_InitStruct);
+
+    /* Configure timer for counting mode */
+    TIM_ModeConfig(TIM0, TIM_Mode_TIMER);
+
+
+    /* The last step must be enabled */
+    TIM_Cmd(TIM0, ENABLE);
+}
+
+/**
+  * @brief  TIM0~TIM8 Interrupt service function.
+  * @param  None
+  * @retval None
+  */
+void TIMER0_IRQHandler(void)
+{
+    usb_last_packet();
+}
