Index: yc_ipc.c
===================================================================
--- /YC3121_SDK/fw/sdk/yc_ipc.c	(revision 573)
+++ /YC3121_SDK/fw/sdk/yc_ipc.c	(working copy)
@@ -136,16 +136,21 @@
 	}
 }
 
+Boolean ipc_inited = FALSE;
 void IpcInit(void)
 {
-	SYSCTRL_ROM_SWITCH = 0x94;
-	BT_RESET = 1;
-	delay(10000);   //wait for reset ok
-	while(!(BT_CONFIG & (1 << BT_INIT_FLAG)));
-	BT_CONFIG &= (~(1<<BT_INIT_FLAG));
-	erase_memory();
-	_download_btcode(bt_code);
-	WAKEUP_BT = 0x9c;
+	if(ipc_inited==FALSE)
+	{
+		SYSCTRL_ROM_SWITCH = 0x94;
+		BT_RESET = 1;
+		delay(10000);   //wait for reset ok
+		while(!(BT_CONFIG & (1 << BT_INIT_FLAG)));
+		BT_CONFIG &= (~(1<<BT_INIT_FLAG));
+		erase_memory();
+		_download_btcode(bt_code);
+		WAKEUP_BT = 0x9c;
+		ipc_inited=TRUE;
+	}	
 }
 
 //打印HCI数据包
Index: yc_lpm.h
===================================================================
--- /YC3121_SDK/fw/sdk/yc_lpm.h	(revision 573)
+++ /YC3121_SDK/fw/sdk/yc_lpm.h	(working copy)
@@ -15,6 +15,8 @@
 #define LPMBT_CONTROL2      5         //BUCKControl
 #define LPMBT_CONTROL3      6         //CHARGER
 
+extern Boolean ipc_inited;
+
 uint32_t lpm_read(volatile int *addr);
 
 void lpm_write(volatile int *addr,uint32_t value);

Index: yc_lpm.c
===================================================================
--- /YC3121_SDK/fw/sdk/yc_lpm.c	(revision 573)
+++ /YC3121_SDK/fw/sdk/yc_lpm.c	(working copy)
@@ -90,6 +90,8 @@
 
 void BT_Hibernate(void)
 {
+	ipc_inited = FALSE;
+	
 	read_otp(0x13e,(uint8_t *)&tmp,2);
 	tmp = (tmp == 0) ? 0x8000:tmp;
 	
