Index: BPU/RTC_Time/user/main.c
===================================================================
--- /YC3121_demo/ModuleDemo/BPU/RTC_Time/user/main.c	(revision 976)
+++ /YC3121_demo/ModuleDemo/BPU/RTC_Time/user/main.c	(working copy)
@@ -208,7 +208,6 @@
 
 uint8_t GetDeviceTime(void)
 {
-    char buf[16] = {0};
     time_t now = 0;
     struct tm *pTime;
 
Index: BlueTooth/BNEP/user/main.c
===================================================================
--- /YC3121_demo/ModuleDemo/BlueTooth/BNEP/user/main.c	(revision 976)
+++ /YC3121_demo/ModuleDemo/BlueTooth/BNEP/user/main.c	(working copy)
@@ -134,10 +134,6 @@
 	uint8_t tcp_ip_addr[7]={0x00,0x2f,0x66,0x76,0x27,0x30,0x39};//47.102.118.39:12345
 	uint8_t bt_addr[6] =  {0x00,0x00,0x00,0x33,0x22,0x10};//The lowest bit of the highest byte of a BNEP device MAC address must be 0
 	uint8_t chip_id[6]={0};
-	uint8_t tmpCmd;
-	unsigned char newDomainString[]={0x00};
-	int UARTCMD = 0;
-	uint8_t getbtstatus = 0;
 	int i = 0;
 	#ifdef UART_TO_IPC
 	HCI_Tx.p_data=ipc_tx_buf;
@@ -184,7 +180,7 @@
 	else
 		MyPrintf("SetBtAddr_fail\n");
 
-	if(BT_SetVisibility(0x01,0x01,0x00) == TRUE)  //设置可发现
+	if(BT_SetVisibility(TRUE,TRUE,FALSE) == TRUE)  //设置可发现
 		MyPrintf("SetVisibility sucess\n");
 	else
 		MyPrintf("SetVisibility failed\n");
@@ -472,7 +468,6 @@
 
 		case BNEP_RECEIVE_TCP_DATA:
 			{
-				uint8_t i = 0;
 				uint8_t bnep_recive_tcp_data[MAX_BLUETOOTH_DATA_LEN];
 				int BnepDataLen=0;
 				BnepDataLen=BT_ReadBTData(bnep_recive_tcp_data);
@@ -521,7 +516,6 @@
 			case BNEP_CONNECT_FAIL:
 			{
 				MyPrintf("BNEP_CONNECT_FAIL\n");
-				uint8_t i = 0;
 				uint8_t bnep_connect_fail_reason[MAX_BLUETOOTH_DATA_LEN];
 				int Datalen=0;
 				Datalen=BT_ReadBTData(bnep_connect_fail_reason);
@@ -585,7 +579,6 @@
 			case TCP_FAIL:
 			{
 				MyPrintf("TCP_FAIL\n");
-				uint8_t i = 0;
 				uint8_t tcp_connect_fail_reason[MAX_BLUETOOTH_DATA_LEN];
 				int Datalen=0;
 				Datalen=BT_ReadBTData(tcp_connect_fail_reason);
@@ -625,7 +618,6 @@
 
 		case TCP_CONNECT_LOG:
 			{
-				uint8_t i = 0;
 				uint8_t tcp_connect_Log[MAX_BLUETOOTH_DATA_LEN];
 				int Datalen=0;
 				Datalen=BT_ReadBTData(tcp_connect_Log);
@@ -669,7 +661,6 @@
 
 		case BT_DATA:
 			{
-				uint8_t i = 0;
 				uint8_t btData[MAX_BLUETOOTH_DATA_LEN];
 				int BtDataLen=0;
 				BtDataLen=BT_ReadBTData(btData);
Index: BlueTooth/BT_BLE/prj/GCC/makefile
===================================================================
--- /YC3121_demo/ModuleDemo/BlueTooth/BT_BLE/prj/GCC/makefile	(revision 976)
+++ /YC3121_demo/ModuleDemo/BlueTooth/BT_BLE/prj/GCC/makefile	(working copy)
@@ -33,13 +33,15 @@
              $(LIB_PATH)/sdk/yc_timer
 
 
-USER_OBJS = $(USER_PATH)/main
+USER_OBJS = $(USER_PATH)/main \
+            $(USER_PATH)/app_ble_gatt
 
 
 OBJS = $(CORE_OBJS) $(USER_OBJS)
 
 INC_DIR = -I $(LIB_PATH)/core \
-          -I $(LIB_PATH)/sdk
+          -I $(LIB_PATH)/sdk \
+          -I $(USER_PATH)
 
 
 CFLAG =  -mthumb -mcpu=cortex-m0 -c -g -Os $(INC_DIR) $(DEF) -fno-toplevel-reorder -ffunction-sections -fdata-sections
Index: CryptTest/SM2_ENC_DEC_TEST/user/main.c
===================================================================
--- /YC3121_demo/ModuleDemo/CryptTest/SM2_ENC_DEC_TEST/user/main.c	(revision 976)
+++ /YC3121_demo/ModuleDemo/CryptTest/SM2_ENC_DEC_TEST/user/main.c	(working copy)
@@ -131,12 +131,12 @@
 
     MyPrintf("Yichip Yc3121 SM2 ENC&DEC test Demo V1.0.\r\n");
 
-    bn_read_string_to_bytes(Key.d, 	 KEY_WORDS * 4, ckeyd);
-    bn_read_string_to_bytes(Key.e.x, KEY_WORDS * 4, cex);
-    bn_read_string_to_bytes(Key.e.y, KEY_WORDS * 4, cey);
-    printv(Key.d, KEY_WORDS * 4, "d:");
-    printv(Key.e.x, KEY_WORDS * 4, "ex:");
-    printv(Key.e.y, KEY_WORDS * 4, "ey:");
+    bn_read_string_to_bytes((uint8_t*)&Key.d, 	 KEY_WORDS * 4, ckeyd);
+    bn_read_string_to_bytes((uint8_t*)&Key.e.x, KEY_WORDS * 4, cex);
+    bn_read_string_to_bytes((uint8_t*)&Key.e.y, KEY_WORDS * 4, cey);
+    printv((uint8_t*)&Key.d, KEY_WORDS * 4, "d:");
+    printv((uint8_t*)&Key.e.x, KEY_WORDS * 4, "ex:");
+    printv((uint8_t*)&Key.e.y, KEY_WORDS * 4, "ey:");
 
     MyPrintf("\n  SM2_Enc           \n");
     SM2_ALU(Key, 256, test_cplain, sizeof(test_cplain), test_ccipher, &clen, SM2_ENC);
@@ -187,24 +187,24 @@
     uint8_t config = 0;
     uint32_t ret;
 
-    bn_read_string_to_bytes(para.p, KEY_WORDS * 4, cp);
-    bn_read_string_to_bytes(para.a, KEY_WORDS * 4, ca);
-    bn_read_string_to_bytes(para.b, KEY_WORDS * 4, cb);
-    bn_read_string_to_bytes(para.n, KEY_WORDS * 4, cn);
-    bn_read_string_to_bytes(para.g.x, KEY_WORDS * 4, cGx);
-    bn_read_string_to_bytes(para.g.y, KEY_WORDS * 4, cGy);
-
-    printv(para.p, KEY_WORDS * 4, "p:"); //数据取反
-    printv(para.a, KEY_WORDS * 4, "a:");
-    printv(para.b, KEY_WORDS * 4, "b:");
-    printv(para.n, KEY_WORDS * 4, "n:");
-    printv(para.g.x, KEY_WORDS * 4, "gx:");
-    printv(para.g.y, KEY_WORDS * 4, "gy:");
+    bn_read_string_to_bytes((uint8_t*)&para.p, KEY_WORDS * 4, cp);
+    bn_read_string_to_bytes((uint8_t*)&para.a, KEY_WORDS * 4, ca);
+    bn_read_string_to_bytes((uint8_t*)&para.b, KEY_WORDS * 4, cb);
+    bn_read_string_to_bytes((uint8_t*)&para.n, KEY_WORDS * 4, cn);
+    bn_read_string_to_bytes((uint8_t*)&para.g.x, KEY_WORDS * 4, cGx);
+    bn_read_string_to_bytes((uint8_t*)&para.g.y, KEY_WORDS * 4, cGy);
+
+    printv((uint8_t*)&para.p, KEY_WORDS * 4, "p:"); //数据取反
+    printv((uint8_t*)&para.a, KEY_WORDS * 4, "a:");
+    printv((uint8_t*)&para.b, KEY_WORDS * 4, "b:");
+    printv((uint8_t*)&para.n, KEY_WORDS * 4, "n:");
+    printv((uint8_t*)&para.g.x, KEY_WORDS * 4, "gx:");
+    printv((uint8_t*)&para.g.y, KEY_WORDS * 4, "gy:");
 
     key = &Key;
-    printv(key->d, KEY_WORDS * 4, "d:");
-    printv(key->e.x, KEY_WORDS * 4, "e.x:");
-    printv(key->e.y, KEY_WORDS * 4, "e.y:");
+    printv((uint8_t*)&key->d, KEY_WORDS * 4, "d:");
+    printv((uint8_t*)&key->e.x, KEY_WORDS * 4, "e.x:");
+    printv((uint8_t*)&key->e.y, KEY_WORDS * 4, "e.y:");
     switch (Keylen)
     {
     case 192:
Index: CryptTest/SM2_SIGNATURE_TEST/user/main.c
===================================================================
--- /YC3121_demo/ModuleDemo/CryptTest/SM2_SIGNATURE_TEST/user/main.c	(revision 976)
+++ /YC3121_demo/ModuleDemo/CryptTest/SM2_SIGNATURE_TEST/user/main.c	(working copy)
@@ -186,35 +186,35 @@
     uint8_t _Za[32];
     uint32_t _e[8];
 
-    bn_read_string_to_bytes(para.p, KEY_WORDS * 4, cp);
-    bn_read_string_to_bytes(para.a, KEY_WORDS * 4, ca);
-    bn_read_string_to_bytes(para.b, KEY_WORDS * 4, cb);
-    bn_read_string_to_bytes(para.n, KEY_WORDS * 4, cn);
-    bn_read_string_to_bytes(para.g.x, KEY_WORDS * 4, cGx);
-    bn_read_string_to_bytes(para.g.y, KEY_WORDS * 4, cGy);
-
-    bn_read_string_to_bytes(key.d,   KEY_WORDS * 4, ckeyd);
-    bn_read_string_to_bytes(key.e.x, KEY_WORDS * 4, cex);
-    bn_read_string_to_bytes(key.e.y, KEY_WORDS * 4, cey);
-
-    printv(para.p, KEY_WORDS * 4, "p:");
-    printv(para.a, KEY_WORDS * 4, "a:");
-    printv(para.b, KEY_WORDS * 4, "b:");
-    printv(para.n, KEY_WORDS * 4, "n:");
-    printv(para.g.x, KEY_WORDS * 4, "gx:");
-    printv(para.g.y, KEY_WORDS * 4, "gy:");
-
-    printv(key.d, KEY_WORDS * 4, "d:");
-    printv(key.e.x, KEY_WORDS * 4, "ex:");
-    printv(key.e.y, KEY_WORDS * 4, "ey:");
+    bn_read_string_to_bytes((uint8_t*)&para.p, KEY_WORDS * 4, cp);
+    bn_read_string_to_bytes((uint8_t*)&para.a, KEY_WORDS * 4, ca);
+    bn_read_string_to_bytes((uint8_t*)&para.b, KEY_WORDS * 4, cb);
+    bn_read_string_to_bytes((uint8_t*)&para.n, KEY_WORDS * 4, cn);
+    bn_read_string_to_bytes((uint8_t*)&para.g.x, KEY_WORDS * 4, cGx);
+    bn_read_string_to_bytes((uint8_t*)&para.g.y, KEY_WORDS * 4, cGy);
+
+    bn_read_string_to_bytes((uint8_t*)&key.d,   KEY_WORDS * 4, ckeyd);
+    bn_read_string_to_bytes((uint8_t*)&key.e.x, KEY_WORDS * 4, cex);
+    bn_read_string_to_bytes((uint8_t*)&key.e.y, KEY_WORDS * 4, cey);
+
+    printv((uint8_t*)&para.p, KEY_WORDS * 4, "p:");
+    printv((uint8_t*)&para.a, KEY_WORDS * 4, "a:");
+    printv((uint8_t*)&para.b, KEY_WORDS * 4, "b:");
+    printv((uint8_t*)&para.n, KEY_WORDS * 4, "n:");
+    printv((uint8_t*)&para.g.x, KEY_WORDS * 4, "gx:");
+    printv((uint8_t*)&para.g.y, KEY_WORDS * 4, "gy:");
+
+    printv((uint8_t*)&key.d, KEY_WORDS * 4, "d:");
+    printv((uint8_t*)&key.e.x, KEY_WORDS * 4, "ex:");
+    printv((uint8_t*)&key.e.y, KEY_WORDS * 4, "ey:");
 
     SM2_Hash_Za(_Za, id, sizeof(id), &para, &key.e, KEY_BYTES);
     printv(_Za, sizeof(_Za), "_Za:");
     SM2_Hash_e(_e, _Za, message, sizeof(message));
-    printv(_e, sizeof(_e), "_e:");
+    printv((uint8_t*)&_e, sizeof(_e), "_e:");
 
     MyPrintf("\r\nsm2 sign with e test = %d\r\n", (RET_SM2_SIGN_SUCCESS == SM2_DigitalSignWith_e(&sign, _e, NULL, 0, &key, &para, &RAND_RandP, NULL, ECC_P256)));
-    printv(&sign, sizeof(sign), "DigitalSignWith:");
+    printv((uint8_t*)&sign, sizeof(sign), "DigitalSignWith:");
     MyPrintf("\r\nsm2 verify with e test = %d\r\n", (RET_SM2_VERIFY_SUCCESS == SM2_VerifySignWith_e(&sign, _e, NULL, 0, &key.e, &para, &RAND_RandP, NULL, ECC_P256)));
 }
 
Index: CryptTest/SM2_TEST/user/main.c
===================================================================
--- /YC3121_demo/ModuleDemo/CryptTest/SM2_TEST/user/main.c	(revision 976)
+++ /YC3121_demo/ModuleDemo/CryptTest/SM2_TEST/user/main.c	(working copy)
@@ -180,29 +180,29 @@
     uint8_t _Za[32];
     uint32_t _e[8];
 
-    bn_read_string_to_bytes(para.p, KEY_WORDS * 4, cp);
-    bn_read_string_to_bytes(para.a, KEY_WORDS * 4, ca);
-    bn_read_string_to_bytes(para.b, KEY_WORDS * 4, cb);
-    bn_read_string_to_bytes(para.n, KEY_WORDS * 4, cn);
-    bn_read_string_to_bytes(para.g.x, KEY_WORDS * 4, cGx);
-    bn_read_string_to_bytes(para.g.y, KEY_WORDS * 4, cGy);
-
-    printv(para.p, KEY_WORDS * 4, "p:");
-    printv(para.a, KEY_WORDS * 4, "a:");
-    printv(para.b, KEY_WORDS * 4, "b:");
-    printv(para.n, KEY_WORDS * 4, "n:");
-    printv(para.g.x, KEY_WORDS * 4, "gx:");
-    printv(para.g.y, KEY_WORDS * 4, "gy:");
-    printv(&para, sizeof(para), "para:"); //应用中如使用memcpy方式拷贝，非二进制域257bit模式，需做对应偏移
+    bn_read_string_to_bytes((uint8_t*)&para.p, KEY_WORDS * 4, cp);
+    bn_read_string_to_bytes((uint8_t*)&para.a, KEY_WORDS * 4, ca);
+    bn_read_string_to_bytes((uint8_t*)&para.b, KEY_WORDS * 4, cb);
+    bn_read_string_to_bytes((uint8_t*)&para.n, KEY_WORDS * 4, cn);
+    bn_read_string_to_bytes((uint8_t*)&para.g.x, KEY_WORDS * 4, cGx);
+    bn_read_string_to_bytes((uint8_t*)&para.g.y, KEY_WORDS * 4, cGy);
+
+    printv((uint8_t*)&para.p, KEY_WORDS * 4, "p:");
+    printv((uint8_t*)&para.a, KEY_WORDS * 4, "a:");
+    printv((uint8_t*)&para.b, KEY_WORDS * 4, "b:");
+    printv((uint8_t*)&para.n, KEY_WORDS * 4, "n:");
+    printv((uint8_t*)&para.g.x, KEY_WORDS * 4, "gx:");
+    printv((uint8_t*)&para.g.y, KEY_WORDS * 4, "gy:");
+    printv((uint8_t*)&para, sizeof(para), "para:"); //应用中如使用memcpy方式拷贝，非二进制域257bit模式，需做对应偏移
 
     MyPrintf("\r\n*****SM2 GENKEY TEST START*****\r\n");
     ret = SM2_Genkey(&key, &para, &RAND_RandP, NULL, ECC_P256);
     //ret返回值为EKGS生成成功，为EKGF生成失败
     MyPrintf("ret = %c%c%c%c\n", ret >> 24, ret >> 16, ret >> 8, ret);
-    printv(key.d, 256 / 8, "d");
-    printv(key.e.x, 256 / 8, "key.e.x");
-    printv(key.e.y, 256 / 8, "key.e.y");
-    printv(&key.e, sizeof(key.e), "pubkey:");//应用中如使用memcpy方式拷贝公钥，非二进制域257bit模式，需做对应偏移
+    printv((uint8_t*)&key.d, 256 / 8, "d");
+    printv((uint8_t*)&key.e.x, 256 / 8, "key.e.x");
+    printv((uint8_t*)&key.e.y, 256 / 8, "key.e.y");
+    printv((uint8_t*)&key.e, sizeof(key.e), "pubkey:");//应用中如使用memcpy方式拷贝公钥，非二进制域257bit模式，需做对应偏移
     MyPrintf("\r\n*****SM2 GENKEY TEST END*****\r\n");
 
     MyPrintf("\r\n*****SM2 ENC&DEC TEST START*****\r\n");
@@ -227,10 +227,10 @@
     SM2_Hash_Za(_Za, id, sizeof(id), &para, &key.e, KEY_BYTES);
     printv(_Za, sizeof(_Za), "_Za:");
     SM2_Hash_e(_e, _Za, message, sizeof(message));
-    printv(_e, sizeof(_e), "_e:");
+    printv((uint8_t*)&_e, sizeof(_e), "_e:");
 
     MyPrintf("\r\nsm2 sign with e test = %d\r\n", (RET_SM2_SIGN_SUCCESS == SM2_DigitalSignWith_e(&sign, _e, NULL, 0, &key, &para, &RAND_RandP, NULL, ECC_P256)));
-    printv(&sign, sizeof(sign), "DigitalSignWith:");
+    printv((uint8_t*)&sign, sizeof(sign), "DigitalSignWith:");
     MyPrintf("\r\nsm2 verify with e test = %d\r\n", (RET_SM2_VERIFY_SUCCESS == SM2_VerifySignWith_e(&sign, _e, NULL, 0, &key.e, &para, &RAND_RandP, NULL, ECC_P256)));
     MyPrintf("\r\n*****SM2 SIGN&VERIFY TEST END*****\r\n");
 }
Index: LPM_SLEEP/M0_lpmsleep/user/main.c
===================================================================
--- /YC3121_demo/ModuleDemo/LPM_SLEEP/M0_lpmsleep/user/main.c	(revision 976)
+++ /YC3121_demo/ModuleDemo/LPM_SLEEP/M0_lpmsleep/user/main.c	(working copy)
@@ -358,32 +358,8 @@
 	}
 }
 
-
-
-
-void __download_btcode(const byte *btcode)
-{
-	int addr, len;
-	btcode += 2;
-	if(GETWORD(btcode) != 0x55aa) return;
-	enable_clock(CLKCLS_BT);	
-	len = GETWORD(btcode);
-	BT_UCODE_LO = 0;
-	BT_UCODE_HI = 0;
-	BT_UCODE_CTRL = 0x80;
-	DMA_CONFIG(DMACH_MEMCP) = 8;
-	_dmacopy((byte*)&BT_UCODE_DATA, (byte*)btcode, len);
-	BT_UCODE_CTRL = 0;
-	btcode += len;
-	DMA_CONFIG(DMACH_MEMCP) = 0;
-	
-	while(GETWORD(btcode) == 0x55aa) {
-		len = GETWORD(btcode);
-		addr = GETWORD(btcode) | 0xc0000;
-		_dmacopy((byte*)addr, (byte*)btcode, len);
-		btcode += len;
-	}
-}
+extern void lpm_sleep(void);
+extern void _download_btcode(const byte *btcode);
 void lpm_sleep_test(void)
 {
 				uint32_t j = 0;
@@ -397,7 +373,7 @@
         BT_CONFIG = 0;
         gpio_all_pd();
         *t = 0;
-        __download_btcode(bt_code);
+        _download_btcode(bt_code);
         while(1)
 				{
          while(!*t);
@@ -416,9 +392,11 @@
 									 SYSCTRL_HCLK_CON = 2;
 									 break;
 									case 4 : 
-										j = lpm_read(LPM_RTC_CNT);
-									  lpm_write(LPM_WKUP_TIMER, j + 10);
-										lpm_sleep();
+                                    j = lpm_read(LPM_RTC_CNT);
+                                    lpm_write(LPM_WKUP_TIMER, j + 10);
+                                    uint32_t lpm_sleep_addr = (uint32_t)lpm_sleep;
+                                    ((void(*)(void *, void *))FUNC_PREFETCH)(((void *)lpm_sleep_addr), ((void *)(lpm_sleep_addr + 100)));
+                                    lpm_sleep();
 									break;          
 					}
          *t = 0;
Index: NFC/YC5018/user/main.c
===================================================================
--- /YC3121_demo/ModuleDemo/NFC/YC5018/user/main.c	(revision 976)
+++ /YC3121_demo/ModuleDemo/NFC/YC5018/user/main.c	(working copy)
@@ -199,7 +199,7 @@
 */
 unsigned char Nfc_Active_card(void)
 {
-    unsigned char i, err_no = EMV_ERR_NONE;
+    unsigned char err_no = EMV_ERR_NONE;
     Poll_Type.Type_A = 0;
     Poll_Type.Type_B = 0;
     if (!Poll_Type.Type_A)
Index: POWER/POWER_off/user/main.c
===================================================================
--- /YC3121_demo/ModuleDemo/POWER/POWER_off/user/main.c	(revision 976)
+++ /YC3121_demo/ModuleDemo/POWER/POWER_off/user/main.c	(working copy)
@@ -110,8 +110,6 @@
 
 void Power_off_test(void)
 {
-    uint8_t ret;
-
     if (TRUE == Power_Keyscan())
     {
         /* 如果power_key需要做独立按键可进行长短按设计 */
@@ -121,7 +119,10 @@
             BEEP_Off();
             MyPrintf("poweroff\n");
             /* 操作Power_off函数之前先进行关闭LCD等外设的操作 */
-            ret = Power_off(); //如果插入外电，则不会关机，返回FALSE
+            if(FALSE == Power_off()) //如果插入外电，则不会关机，返回FALSE
+            {
+                MyPrintf("poweroff fail\n");
+            }
         }
     }
 }
Index: QSPI/QSPI_encrypt_rw/user/main.c
===================================================================
--- /YC3121_demo/ModuleDemo/QSPI/QSPI_encrypt_rw/user/main.c	(revision 976)
+++ /YC3121_demo/ModuleDemo/QSPI/QSPI_encrypt_rw/user/main.c	(working copy)
@@ -108,10 +108,10 @@
     printv(wbuf, 32, "wbuf:");
 
     enc_write_flash(base_addr, wbuf, 32);
-    prefetch((volatile uint32_t *)base_addr, (volatile uint32_t *)(base_addr + 32));
+    prefetch((uint32_t *)base_addr, (uint32_t *)(base_addr + 32));
 
     //read new data
-    printv((volatile uint8_t *)(base_addr), 32, "base_addr NEW data:");
+    printv((uint8_t *)(base_addr), 32, "base_addr NEW data:");
     for (int i = 0; i < 32; i++)
     {
         if (wbuf[i] != *(volatile uint8_t *)(base_addr + i))
Index: USB/usb_ccid/prj/GCC/makefile
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_ccid/prj/GCC/makefile	(revision 976)
+++ /YC3121_demo/ModuleDemo/USB/usb_ccid/prj/GCC/makefile	(working copy)
@@ -29,6 +29,8 @@
              $(LIB_PATH)/sdk/yc_lpm \
              $(LIB_PATH)/sdk/yc_otp \
              $(LIB_PATH)/sdk/yc_sysctrl \
+             $(LIB_PATH)/sdk/yc_bt \
+             $(LIB_PATH)/sdk/yc_systick \
              $(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 \
Index: USB/usb_ccid/prj/MDK/YC3121_Keil.uvoptx
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_ccid/prj/MDK/YC3121_Keil.uvoptx	(revision 976)
+++ /YC3121_demo/ModuleDemo/USB/usb_ccid/prj/MDK/YC3121_Keil.uvoptx	(working copy)
@@ -370,6 +370,30 @@
       <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>
@@ -380,7 +404,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>12</FileNumber>
+      <FileNumber>14</FileNumber>
       <FileType>2</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -392,7 +416,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>13</FileNumber>
+      <FileNumber>15</FileNumber>
       <FileType>2</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -412,7 +436,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>14</FileNumber>
+      <FileNumber>16</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -424,7 +448,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>15</FileNumber>
+      <FileNumber>17</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -436,7 +460,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>16</FileNumber>
+      <FileNumber>18</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -448,7 +472,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>17</FileNumber>
+      <FileNumber>19</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -460,7 +484,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>18</FileNumber>
+      <FileNumber>20</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -472,7 +496,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>19</FileNumber>
+      <FileNumber>21</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -484,7 +508,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>20</FileNumber>
+      <FileNumber>22</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -496,7 +520,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>21</FileNumber>
+      <FileNumber>23</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -508,7 +532,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>22</FileNumber>
+      <FileNumber>24</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -520,7 +544,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>23</FileNumber>
+      <FileNumber>25</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -532,7 +556,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>24</FileNumber>
+      <FileNumber>26</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -544,7 +568,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>25</FileNumber>
+      <FileNumber>27</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -556,7 +580,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>26</FileNumber>
+      <FileNumber>28</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
Index: USB/usb_ccid/prj/MDK/YC3121_Keil.uvprojx
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_ccid/prj/MDK/YC3121_Keil.uvprojx	(revision 976)
+++ /YC3121_demo/ModuleDemo/USB/usb_ccid/prj/MDK/YC3121_Keil.uvprojx	(working copy)
@@ -447,6 +447,16 @@
               <FileType>1</FileType>
               <FilePath>..\..\..\..\..\Librarier\sdk\yc_lpm.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>
Index: USB/usb_cdc/prj/GCC/makefile
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_cdc/prj/GCC/makefile	(revision 976)
+++ /YC3121_demo/ModuleDemo/USB/usb_cdc/prj/GCC/makefile	(working copy)
@@ -29,9 +29,10 @@
              $(LIB_PATH)/sdk/yc_lpm \
              $(LIB_PATH)/sdk/yc_otp \
              $(LIB_PATH)/sdk/yc_sysctrl \
+             $(LIB_PATH)/sdk/yc_bt \
+             $(LIB_PATH)/sdk/yc_systick \
              $(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 \
@@ -40,6 +41,7 @@
              $(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/Usb_dcd_init \
              $(LIB_PATH)/sdk/yc_usb/scpu_usb_CDC_Device_Demo/usbd_cdc_vcp
 
              
Index: USB/usb_cdc/prj/MDK/YC3121_Keil.uvoptx
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_cdc/prj/MDK/YC3121_Keil.uvoptx	(revision 976)
+++ /YC3121_demo/ModuleDemo/USB/usb_cdc/prj/MDK/YC3121_Keil.uvoptx	(working copy)
@@ -370,6 +370,30 @@
       <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>
@@ -380,7 +404,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>12</FileNumber>
+      <FileNumber>14</FileNumber>
       <FileType>2</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -392,7 +416,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>13</FileNumber>
+      <FileNumber>15</FileNumber>
       <FileType>2</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -412,7 +436,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>14</FileNumber>
+      <FileNumber>16</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -424,7 +448,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>15</FileNumber>
+      <FileNumber>17</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -436,7 +460,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>16</FileNumber>
+      <FileNumber>18</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -456,7 +480,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>17</FileNumber>
+      <FileNumber>19</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -468,7 +492,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>18</FileNumber>
+      <FileNumber>20</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -480,7 +504,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>19</FileNumber>
+      <FileNumber>21</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -500,7 +524,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>20</FileNumber>
+      <FileNumber>22</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -512,7 +536,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>21</FileNumber>
+      <FileNumber>23</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -532,7 +556,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>22</FileNumber>
+      <FileNumber>24</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -544,7 +568,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>23</FileNumber>
+      <FileNumber>25</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -556,7 +580,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>24</FileNumber>
+      <FileNumber>26</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -568,7 +592,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>25</FileNumber>
+      <FileNumber>27</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
Index: USB/usb_cdc/prj/MDK/YC3121_Keil.uvprojx
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_cdc/prj/MDK/YC3121_Keil.uvprojx	(revision 976)
+++ /YC3121_demo/ModuleDemo/USB/usb_cdc/prj/MDK/YC3121_Keil.uvprojx	(working copy)
@@ -447,6 +447,16 @@
               <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>
Index: USB/usb_hid/prj/GCC/makefile
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_hid/prj/GCC/makefile	(revision 976)
+++ /YC3121_demo/ModuleDemo/USB/usb_hid/prj/GCC/makefile	(working copy)
@@ -29,17 +29,19 @@
              $(LIB_PATH)/sdk/yc_lpm \
              $(LIB_PATH)/sdk/yc_otp \
              $(LIB_PATH)/sdk/yc_sysctrl \
+             $(LIB_PATH)/sdk/yc_bt \
+             $(LIB_PATH)/sdk/yc_systick \
              $(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/libraries/SCPU_USB_Device_Library/class/HID/halUSB \
              $(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
+             $(LIB_PATH)/sdk/yc_usb/scpu_usb_hid_Device_Demo/Usb_dcd_init
 
              
 USER_OBJS = $(USER_PATH)/main
Index: USB/usb_hid/prj/MDK/YC3121_Keil.uvoptx
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_hid/prj/MDK/YC3121_Keil.uvoptx	(revision 976)
+++ /YC3121_demo/ModuleDemo/USB/usb_hid/prj/MDK/YC3121_Keil.uvoptx	(working copy)
@@ -370,6 +370,30 @@
       <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>
@@ -380,7 +404,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>12</FileNumber>
+      <FileNumber>14</FileNumber>
       <FileType>2</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -392,7 +416,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>13</FileNumber>
+      <FileNumber>15</FileNumber>
       <FileType>2</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -412,7 +436,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>14</FileNumber>
+      <FileNumber>16</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -424,7 +448,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>15</FileNumber>
+      <FileNumber>17</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -444,7 +468,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>16</FileNumber>
+      <FileNumber>18</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -456,7 +480,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>17</FileNumber>
+      <FileNumber>19</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -468,7 +492,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>18</FileNumber>
+      <FileNumber>20</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -488,7 +512,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>19</FileNumber>
+      <FileNumber>21</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -500,7 +524,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>20</FileNumber>
+      <FileNumber>22</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -520,7 +544,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>21</FileNumber>
+      <FileNumber>23</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -532,7 +556,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>22</FileNumber>
+      <FileNumber>24</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -544,7 +568,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>23</FileNumber>
+      <FileNumber>25</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -556,7 +580,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>24</FileNumber>
+      <FileNumber>26</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
Index: USB/usb_hid/prj/MDK/YC3121_Keil.uvprojx
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_hid/prj/MDK/YC3121_Keil.uvprojx	(revision 976)
+++ /YC3121_demo/ModuleDemo/USB/usb_hid/prj/MDK/YC3121_Keil.uvprojx	(working copy)
@@ -447,6 +447,16 @@
               <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>
Index: USB/usb_hid/user/main.c
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_hid/user/main.c	(revision 976)
+++ /YC3121_demo/ModuleDemo/USB/usb_hid/user/main.c	(working copy)
@@ -43,7 +43,7 @@
 extern USB_OTG_CORE_HANDLE  USB_OTG_dev;
 USB_OTG_CORE_HANDLE *pdev;
 uint8_t  rev_data[64];
-volatile uint8_t tx_sendflag = 1;
+extern volatile uint8_t tx_sendflag[4];
 int main(void)
 {
     uint8_t  len, uartretval;
@@ -68,10 +68,10 @@
             case '1':
                 while (count --)
                 {
-                    if (tx_sendflag == 1)
+                    if (tx_sendflag[HID_IN_EP&0x7f] == 1)
                     {
                         /* ep1 send data*/
-                        tx_sendflag = 0;
+                        tx_sendflag[HID_IN_EP&0x7f] = 0;
                         DCD_EP_Tx(&USB_OTG_dev, HID_IN_EP, tx_sendbuffer, 64);
                     }
                 }
Index: USB/usb_msc/prj/GCC/makefile
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_msc/prj/GCC/makefile	(revision 976)
+++ /YC3121_demo/ModuleDemo/USB/usb_msc/prj/GCC/makefile	(working copy)
@@ -29,6 +29,8 @@
              $(LIB_PATH)/sdk/yc_lpm \
              $(LIB_PATH)/sdk/yc_otp \
              $(LIB_PATH)/sdk/yc_sysctrl \
+             $(LIB_PATH)/sdk/yc_bt \
+             $(LIB_PATH)/sdk/yc_systick \
              $(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 \
@@ -58,7 +60,7 @@
 
 
 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"
+LDFLAG = -T output/ld.script -Map=output/memmap $(LIB_PATH)/sdk/libyc_qspi.a -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.
Index: USB/usb_msc/prj/MDK/YC3121_Keil.uvoptx
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_msc/prj/MDK/YC3121_Keil.uvoptx	(revision 976)
+++ /YC3121_demo/ModuleDemo/USB/usb_msc/prj/MDK/YC3121_Keil.uvoptx	(working copy)
@@ -365,6 +365,30 @@
       <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_bt.c</PathWithFileName>
+      <FilenameWithoutPath>yc_bt.c</FilenameWithoutPath>
+      <RteFlg>0</RteFlg>
+      <bShared>0</bShared>
+    </File>
+    <File>
+      <GroupNumber>3</GroupNumber>
+      <FileNumber>14</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>
@@ -375,7 +399,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>13</FileNumber>
+      <FileNumber>15</FileNumber>
       <FileType>2</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -387,7 +411,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>14</FileNumber>
+      <FileNumber>16</FileNumber>
       <FileType>2</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -407,7 +431,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>15</FileNumber>
+      <FileNumber>17</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -419,7 +443,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>16</FileNumber>
+      <FileNumber>18</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -439,7 +463,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>17</FileNumber>
+      <FileNumber>19</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -451,7 +475,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>18</FileNumber>
+      <FileNumber>20</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -463,7 +487,7 @@
     </File>
     <File>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>19</FileNumber>
+      <FileNumber>21</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -483,7 +507,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>20</FileNumber>
+      <FileNumber>22</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -495,7 +519,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>21</FileNumber>
+      <FileNumber>23</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -507,7 +531,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>22</FileNumber>
+      <FileNumber>24</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -519,7 +543,7 @@
     </File>
     <File>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>23</FileNumber>
+      <FileNumber>25</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -539,7 +563,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>24</FileNumber>
+      <FileNumber>26</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -551,7 +575,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>25</FileNumber>
+      <FileNumber>27</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -563,7 +587,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>26</FileNumber>
+      <FileNumber>28</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -575,7 +599,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>27</FileNumber>
+      <FileNumber>29</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -587,7 +611,7 @@
     </File>
     <File>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>28</FileNumber>
+      <FileNumber>30</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
Index: USB/usb_msc/prj/MDK/YC3121_Keil.uvprojx
===================================================================
--- /YC3121_demo/ModuleDemo/USB/usb_msc/prj/MDK/YC3121_Keil.uvprojx	(revision 976)
+++ /YC3121_demo/ModuleDemo/USB/usb_msc/prj/MDK/YC3121_Keil.uvprojx	(working copy)
@@ -452,6 +452,16 @@
               <FileType>4</FileType>
               <FilePath>..\..\..\..\..\Librarier\sdk\yc_qspi.lib</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>
Index: updata_app/Boot/prj/GCC/makefile
===================================================================
--- /YC3121_demo/ModuleDemo/updata_app/Boot/prj/GCC/makefile	(revision 976)
+++ /YC3121_demo/ModuleDemo/updata_app/Boot/prj/GCC/makefile	(working copy)
@@ -33,21 +33,22 @@
              $(LIB_PATH)/sdk/yc_bt \
              $(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/libraries/SCPU_USB_Device_Library/class/HID/halUSB \
              $(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/Usb_dcd_init \
              $(LIB_PATH)/sdk/yc_usb/scpu_usb_hid_Device_Demo/usbd_usr
 
 
 
 USER_OBJS =  $(USER_PATH)/main \
-             $(USER_PATH)/halUSB \
              $(USER_PATH)/ota_ble \
-             $(USER_PATH)/otausb
+             $(USER_PATH)/otausb \
+             $(USER_PATH)/app_ble_gatt
 
 OBJS = $(CORE_OBJS) $(USER_OBJS)
 
Index: updata_app/Boot/prj/MDK/YC3121_Keil.uvoptx
===================================================================
--- /YC3121_demo/ModuleDemo/updata_app/Boot/prj/MDK/YC3121_Keil.uvoptx	(revision 976)
+++ /YC3121_demo/ModuleDemo/updata_app/Boot/prj/MDK/YC3121_Keil.uvoptx	(working copy)
@@ -171,7 +171,7 @@
 
   <Group>
     <GroupName>core</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -250,18 +250,6 @@
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\user\halUSB.c</PathWithFileName>
-      <FilenameWithoutPath>halUSB.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>2</GroupNumber>
-      <FileNumber>7</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
       <PathWithFileName>..\..\user\otausb.c</PathWithFileName>
       <FilenameWithoutPath>otausb.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
@@ -269,7 +257,7 @@
     </File>
     <File>
       <GroupNumber>2</GroupNumber>
-      <FileNumber>8</FileNumber>
+      <FileNumber>7</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -289,7 +277,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>9</FileNumber>
+      <FileNumber>8</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -301,7 +289,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>10</FileNumber>
+      <FileNumber>9</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -313,7 +301,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>11</FileNumber>
+      <FileNumber>10</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -325,7 +313,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>12</FileNumber>
+      <FileNumber>11</FileNumber>
       <FileType>4</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -337,7 +325,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>13</FileNumber>
+      <FileNumber>12</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -349,7 +337,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>14</FileNumber>
+      <FileNumber>13</FileNumber>
       <FileType>4</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -361,7 +349,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>15</FileNumber>
+      <FileNumber>14</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -373,7 +361,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>16</FileNumber>
+      <FileNumber>15</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -385,7 +373,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>17</FileNumber>
+      <FileNumber>16</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -397,7 +385,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>18</FileNumber>
+      <FileNumber>17</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -409,7 +397,7 @@
     </File>
     <File>
       <GroupNumber>3</GroupNumber>
-      <FileNumber>19</FileNumber>
+      <FileNumber>18</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -429,7 +417,7 @@
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>20</FileNumber>
+      <FileNumber>19</FileNumber>
       <FileType>2</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -441,7 +429,7 @@
     </File>
     <File>
       <GroupNumber>4</GroupNumber>
-      <FileNumber>21</FileNumber>
+      <FileNumber>20</FileNumber>
       <FileType>2</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -455,15 +443,15 @@
 
   <Group>
     <GroupName>USB</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>22</FileNumber>
+      <FileNumber>21</FileNumber>
       <FileType>1</FileType>
-      <tvExp>0</tvExp>
+      <tvExp>1</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\harward_Der\usb_core.c</PathWithFileName>
@@ -473,7 +461,7 @@
     </File>
     <File>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>23</FileNumber>
+      <FileNumber>22</FileNumber>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -485,13 +473,25 @@
     </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_core.c</PathWithFileName>
+      <FilenameWithoutPath>usbd_core.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\harward_Der\Usb_dcd_init.c</PathWithFileName>
-      <FilenameWithoutPath>Usb_dcd_init.c</FilenameWithoutPath>
+      <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>
@@ -502,8 +502,8 @@
       <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>
+      <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>
@@ -514,8 +514,8 @@
       <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>
+      <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>
@@ -526,8 +526,8 @@
       <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>
+      <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>
@@ -538,8 +538,8 @@
       <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>
+      <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>
@@ -550,8 +550,8 @@
       <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>
+      <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>
@@ -562,8 +562,8 @@
       <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>
+      <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>
@@ -574,8 +574,8 @@
       <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>
+      <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>
Index: updata_app/Boot/prj/MDK/YC3121_Keil.uvprojx
===================================================================
--- /YC3121_demo/ModuleDemo/updata_app/Boot/prj/MDK/YC3121_Keil.uvprojx	(revision 976)
+++ /YC3121_demo/ModuleDemo/updata_app/Boot/prj/MDK/YC3121_Keil.uvprojx	(working copy)
@@ -413,11 +413,6 @@
               <FilePath>..\..\user\ota_ble.c</FilePath>
             </File>
             <File>
-              <FileName>halUSB.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\user\halUSB.c</FilePath>
-            </File>
-            <File>
               <FileName>otausb.c</FileName>
               <FileType>1</FileType>
               <FilePath>..\..\user\otausb.c</FilePath>
@@ -518,11 +513,6 @@
               <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>
@@ -557,6 +547,16 @@
               <FileType>1</FileType>
               <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\HID\usbd_hid_core.c</FilePath>
             </File>
+            <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>halUSB.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\..\..\..\Librarier\sdk\yc_usb\libraries\SCPU_USB_Device_Library\class\hid\halUSB.c</FilePath>
+            </File>
           </Files>
         </Group>
       </Groups>
Index: updata_app/Boot/user/halBasics.h
===================================================================
--- /YC3121_demo/ModuleDemo/updata_app/Boot/user/halBasics.h	(revision 976)
+++ /YC3121_demo/ModuleDemo/updata_app/Boot/user/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: updata_app/Boot/user/halBasics.c
===================================================================
--- /YC3121_demo/ModuleDemo/updata_app/Boot/user/halBasics.c	(revision 976)
+++ /YC3121_demo/ModuleDemo/updata_app/Boot/user/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: updata_app/Boot/user/halUSB.h
===================================================================
--- /YC3121_demo/ModuleDemo/updata_app/Boot/user/halUSB.h	(revision 976)
+++ /YC3121_demo/ModuleDemo/updata_app/Boot/user/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: updata_app/Boot/user/halUSB.c
===================================================================
--- /YC3121_demo/ModuleDemo/updata_app/Boot/user/halUSB.c	(revision 976)
+++ /YC3121_demo/ModuleDemo/updata_app/Boot/user/halUSB.c	(nonexistent)
@@ -1,102 +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)
-{
-	delay_ms(100);
-	USB_OTG_WRITE_REG8(CORE_USB_CLEAR,0x40);
-	USB_OTG_WRITE_REG8(USB_SOFCNT,0);
-	USB_OTG_WRITE_REG8(CORE_USB_CONFIG,0x00);
-	disable_intr(INTR_USB);
-	disable_clock(CLKCLS_USB);
-	delay_ms(100);
-}
-
-
-
-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;
-	}
-
-
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
