Index: fw/Example/IPC_Test/IPC_Test.c
===================================================================
--- /YC3121_SDK/fw/Example/IPC_Test/IPC_Test.c	(revision 621)
+++ /YC3121_SDK/fw/Example/IPC_Test/IPC_Test.c	(working copy)
@@ -43,7 +43,7 @@
 	HCI_TypeDef IpcRxData;
 	if(IpcReadBtData(&IpcRxData) == SUCCESS)
 	{
-		Uart_SendBuf(UART1,(uint8_t *)(&IpcRxData), (int)IpcRxData.DataLen + 3);
+		UART_SendBuf(UART1,(uint8_t *)(&IpcRxData), (int)IpcRxData.DataLen + 3);
 		if(IpcRxData.type == IPC_RX_EVENT)
 		{
 			MyPrintf("Ipc Receive data \n");
Index: fw/Example/MSR_Test/MSR_Test.h
===================================================================
--- /YC3121_SDK/fw/Example/MSR_Test/MSR_Test.h	(revision 621)
+++ /YC3121_SDK/fw/Example/MSR_Test/MSR_Test.h	(working copy)
@@ -1,4 +1,4 @@
-#include "..\..\sdk\yc_msr.h"
+#include "yc_msr.h"
 void MSR_Test(int casesel);
 Boolean RegisterTest(void);
 void Debug_show_trackmem_data(int TRACK);
Index: fw/Example/MSR_Test/MSR_Test.c
===================================================================
--- /YC3121_SDK/fw/Example/MSR_Test/MSR_Test.c	(revision 621)
+++ /YC3121_SDK/fw/Example/MSR_Test/MSR_Test.c	(working copy)
@@ -77,7 +77,7 @@
 					if ((tdata[i].len)>0)
 					{
 						MyPrintf("track%d  data:\n", i+1,tdata[i].len);
-						Uart_SendBuf(UART0,tdata[i].buf,tdata[i].len);
+						UART_SendBuf(UART0,tdata[i].buf,tdata[i].len);
 						MyPrintf("\n");
 					}
 					MyPrintf("\n");
@@ -161,7 +161,7 @@
 					if ((tdata[i].len)>0)
 					{
 						MyPrintf("track%d  data:\n", i+1,tdata[i].len);
-						Uart_SendBuf(UART0,tdata[i].buf,tdata[i].len);
+						UART_SendBuf(UART0,tdata[i].buf,tdata[i].len);
 						MyPrintf("\n");
 					}
 					MyPrintf("\n");
@@ -274,7 +274,7 @@
 			MyPrintf("\nDecode T1success\n");
 			MyPrintf("T1DataLen %d\n",charlen);
 			if(0 !=charlen)
-				Uart_SendBuf(UART0,TrackChardata,charlen);
+				UART_SendBuf(UART0,TrackChardata,charlen);
 			countsuc++;
 		}
 		else
@@ -301,7 +301,7 @@
 			MyPrintf("\nDecode T2success\n");
 			MyPrintf("T2DataLen %d\n",charlen);
 			if(0 !=charlen)
-			Uart_SendBuf(UART0,TrackChardata,charlen);
+			UART_SendBuf(UART0,TrackChardata,charlen);
 			t2countsuc++;
 		}
 		else
@@ -327,7 +327,7 @@
 			MyPrintf("Decode T3success\n");
 			MyPrintf("T3DataLen %d\n",charlen);
 			if(0 !=charlen)
-				Uart_SendBuf(UART0,TrackChardata,charlen);
+				UART_SendBuf(UART0,TrackChardata,charlen);
 			t3countsuc++;
 		}
 		else
@@ -431,7 +431,7 @@
 	{
 		MyPrintf("\nDecode T2success\n");
 		MyPrintf("T2DataLen %d\n",charlen);
-		Uart_SendBuf(UART0,TrackChardata,charlen);
+		UART_SendBuf(UART0,TrackChardata,charlen);
 	}
 	else
 	{
@@ -447,7 +447,7 @@
 	{
 		MyPrintf("\nDecode T1success\n");
 		MyPrintf("T1DataLen %d\n",charlen);
-		Uart_SendBuf(UART0,TrackChardata,charlen);
+		UART_SendBuf(UART0,TrackChardata,charlen);
 
 	}
 	else
@@ -464,7 +464,7 @@
 		MyPrintf("T3DataLen %d\n",charlen);
 
 		MyPrintf("\n\n");
-			Uart_SendBuf(UART0,TrackChardata,charlen);
+			UART_SendBuf(UART0,TrackChardata,charlen);
 
 	}
 	else
Index: fw/Example/SPI_Test/SPI_Test.c
===================================================================
--- /YC3121_SDK/fw/Example/SPI_Test/SPI_Test.c	(revision 621)
+++ /YC3121_SDK/fw/Example/SPI_Test/SPI_Test.c	(working copy)
@@ -1033,7 +1033,7 @@
                     cmd_spi_config_buf[10] = v >> 8;
                     cmd_spi_config_buf[11] = v;
 
-                    Uart_SendBuf(UART1, cmd_spi_config_buf, 12);
+                    UART_SendBuf(UART1, cmd_spi_config_buf, 12);
 
                     k = 0;
 
@@ -1058,7 +1058,7 @@
                     cmd_spi_mosi_data[3+spi_rx_len_buf[j]] = v >> 8;
                     cmd_spi_mosi_data[4+spi_rx_len_buf[j]] = v;
 
-                    Uart_SendBuf(UART1, cmd_spi_mosi_data, spi_rx_len_buf[j]+5);
+                    UART_SendBuf(UART1, cmd_spi_mosi_data, spi_rx_len_buf[j]+5);
 
                     k = 0;
 
Index: fw/Example/UART_Test/Uart_Test.c
===================================================================
--- /YC3121_SDK/fw/Example/UART_Test/Uart_Test.c	(revision 621)
+++ /YC3121_SDK/fw/Example/UART_Test/Uart_Test.c	(working copy)
@@ -455,7 +455,7 @@
 
             rx_intrrupt_len_gloab = rx_intrrupt_len_buf[i];
 
-            Uart_SendBuf(UART0, random_data, rx_intrrupt_len_buf[i]);
+            UART_SendBuf(UART0, random_data, rx_intrrupt_len_buf[i]);
 
             k = 0;
 
@@ -497,7 +497,7 @@
 
             rx_len_gloab = 0;
 
-            Uart_SendBuf(UART0, random_data, tx_len_buf[i]);
+            UART_SendBuf(UART0, random_data, tx_len_buf[i]);
             
             k = 0;
 
@@ -559,7 +559,7 @@
 
                 rx_len_gloab = 0;
 
-                Uart_SendBuf(UART0, random_data, tx_len_buf[j]);
+                UART_SendBuf(UART0, random_data, tx_len_buf[j]);
                 
                 k = 0;
 
@@ -615,7 +615,7 @@
 
                     rx_len_gloab = 0;
 
-                    Uart_SendBuf(UART0, random_data, tx_len_buf[m]);
+                    UART_SendBuf(UART0, random_data, tx_len_buf[m]);
                     
                     k = 0;
 
@@ -672,7 +672,7 @@
 
             rx_intrrupt_len_gloab = rx_intrrupt_len_buf[i];
 
-            Uart_SendBuf(UART1, random_data, rx_intrrupt_len_buf[i]);
+            UART_SendBuf(UART1, random_data, rx_intrrupt_len_buf[i]);
 
             k = 0;
 
@@ -714,7 +714,7 @@
 
             rx_len_gloab = 0;
 
-            Uart_SendBuf(UART1, random_data, tx_len_buf[i]);
+            UART_SendBuf(UART1, random_data, tx_len_buf[i]);
             
             k = 0;
 
@@ -776,7 +776,7 @@
 
                 rx_len_gloab = 0;
 
-                Uart_SendBuf(UART1, random_data, tx_len_buf[j]);
+                UART_SendBuf(UART1, random_data, tx_len_buf[j]);
                 
                 k = 0;
 
@@ -832,7 +832,7 @@
 
                     rx_len_gloab = 0;
 
-                    Uart_SendBuf(UART1, random_data, tx_len_buf[m]);
+                    UART_SendBuf(UART1, random_data, tx_len_buf[m]);
                     
                     k = 0;
 
Index: fw/Example/Uart_cmd.c
===================================================================
--- /YC3121_SDK/fw/Example/Uart_cmd.c	(revision 621)
+++ /YC3121_SDK/fw/Example/Uart_cmd.c	(working copy)
@@ -28,7 +28,7 @@
 
 char Send_Uart_char_to_mh(unsigned char* buf,int len)
 {
-    Uart_SendBuf(UART1,buf,len);
+    UART_SendBuf(UART1,buf,len);
     return 0;
 }
 
@@ -483,7 +483,7 @@
 }
 char Send_Uart_char(unsigned char* buf,int len)
 {
-    Uart_SendBuf(UART0,buf,len);
+    UART_SendBuf(UART0,buf,len);
     return 0;
 }
 
Index: fw/core/bt_code.c
===================================================================
--- /YC3121_SDK/fw/core/bt_code.c	(revision 621)
+++ /YC3121_SDK/fw/core/bt_code.c	(working copy)
@@ -1,84 +1,64 @@
 const unsigned char bt_code[] = {
-0x00,0x02,0xaa,0x55,0x7a,0x03,0xc0,0x42,0x80,0x19,0xc0,0x43,0x00,0x1b,0xc0,0x43,
-0x80,0x1f,0xc0,0x44,0x00,0x1d,0xc0,0x44,0x80,0x28,0xc0,0x45,0x00,0x2d,0xc0,0x02,
-0x00,0x0d,0xc0,0x03,0x00,0x08,0x20,0x40,0x57,0xaf,0x24,0x36,0xd8,0xa5,0x20,0x40,
-0x00,0xb5,0x20,0x40,0x49,0x36,0x20,0x20,0x58,0xa6,0x09,0x80,0x00,0x18,0x78,0x28,
-0x7c,0x00,0xdb,0x60,0x06,0x64,0x1f,0xef,0x7e,0x00,0x1f,0xf1,0x7e,0x00,0xe7,0xe6,
-0x00,0x05,0x20,0x23,0x46,0x49,0x78,0x36,0xfc,0x00,0x6f,0xe2,0x00,0x17,0x1f,0xe0,
-0x84,0x00,0x20,0x40,0x00,0xb9,0x20,0x20,0x58,0x97,0x20,0x40,0x00,0xb1,0x20,0x20,
-0x48,0xf6,0x20,0x40,0x00,0xb3,0x20,0x20,0x49,0x16,0x20,0x40,0x00,0xb7,0x20,0x20,
-0x49,0x22,0x60,0x42,0x00,0x17,0x20,0x20,0x00,0xbb,0x20,0x40,0x00,0xbb,0xda,0x20,
-0x89,0x60,0x20,0x40,0x00,0xa7,0xda,0x20,0x00,0x10,0x20,0x40,0x00,0xa7,0xda,0x20,
-0x00,0x00,0x20,0x20,0x00,0xd6,0x60,0x42,0x00,0x17,0x20,0x40,0x00,0xb9,0x58,0x00,
-0x03,0x84,0x20,0x40,0x4a,0x8e,0x20,0x20,0x49,0x36,0x70,0x89,0x07,0xff,0x70,0x80,
-0x42,0x05,0x20,0x00,0x03,0xe8,0x6f,0xe2,0x4f,0xef,0x24,0x7a,0x00,0x00,0x70,0x4f,
-0xef,0x01,0x70,0x89,0x4e,0xc2,0x70,0x89,0x4e,0xc0,0x20,0x40,0x00,0xca,0xc0,0x81,
-0x00,0x43,0x20,0x00,0x75,0x30,0x20,0x40,0x00,0xca,0xc0,0x81,0x00,0x43,0x20,0x00,
-0x27,0x10,0xda,0x20,0x89,0x56,0xda,0x40,0x00,0xf0,0x20,0x40,0x00,0xd1,0xda,0x20,
-0x89,0x55,0x20,0x40,0x00,0xa7,0xda,0x20,0x00,0x00,0x20,0x40,0x00,0xd6,0x20,0x60,
-0x00,0x00,0x20,0x20,0x00,0x43,0x20,0x40,0x00,0x46,0x20,0x20,0x48,0xf5,0x20,0x40,
-0x00,0x6e,0x20,0x40,0x00,0x77,0x79,0x20,0x2a,0x00,0x78,0x46,0xfc,0x00,0x78,0x2e,
-0xfc,0x00,0x78,0x30,0x7c,0x00,0x78,0x50,0xfc,0x00,0x19,0x31,0x7e,0x00,0x1f,0xec,
-0xfe,0x00,0x1f,0xf1,0xfe,0x00,0x08,0x00,0x86,0x28,0x78,0x24,0xfc,0x00,0x6f,0xe2,
-0x43,0xae,0x08,0x00,0x86,0x08,0xef,0xe2,0x00,0x06,0x1f,0xe1,0x72,0x3f,0x08,0x00,
-0x86,0x08,0x20,0x22,0x80,0x5b,0xef,0xe2,0x00,0x06,0x08,0x00,0x86,0x08,0xc2,0x00,
-0x00,0x58,0x78,0x24,0x7c,0x00,0x08,0x00,0x86,0x18,0x78,0x44,0x7c,0x00,0x37,0xd3,
-0x82,0x00,0x20,0x00,0x00,0x64,0x20,0x60,0x00,0x00,0x78,0x3b,0x7c,0x00,0x70,0x89,
-0x14,0x07,0x20,0x60,0x00,0x00,0x78,0x5b,0x7c,0x00,0x70,0x89,0x14,0x03,0x20,0x60,
-0x00,0x00,0x58,0x71,0x76,0x41,0x1f,0xed,0x7e,0x00,0x1f,0xe1,0xfe,0x29,0x98,0x00,
-0x12,0x00,0x58,0x55,0x55,0x55,0x67,0xe6,0x04,0x63,0x20,0x60,0x00,0x00,0x78,0x44,
-0xfc,0x00,0x78,0x43,0xfc,0x00,0x6f,0xe6,0x04,0x63,0x98,0x00,0x1e,0x00,0x6f,0xe2,
-0x00,0x16,0x1f,0xed,0x84,0x00,0x79,0x20,0x04,0x01,0x18,0x43,0x1c,0x00,0x20,0x60,
-0x00,0x00,0x20,0x40,0x00,0x7c,0x20,0x20,0x49,0x30,0x20,0x40,0x00,0x7c,0x20,0x40,
-0x49,0x1c,0x20,0x20,0x49,0x21,0x20,0x40,0x49,0x15,0x6f,0xe2,0x00,0x16,0x1f,0xe3,
-0x84,0x00,0x20,0x60,0x00,0x00,0x20,0x40,0x00,0x79,0x20,0x40,0x00,0x6e,0x78,0x56,
-0xfc,0x00,0x78,0x26,0xfc,0x00,0x78,0x4e,0xfc,0x00,0x78,0x30,0xfc,0x00,0x78,0x50,
-0x7c,0x00,0x19,0x62,0x36,0x00,0x37,0xc1,0x84,0x00,0x24,0x2c,0x48,0xf5,0x1b,0x42,
-0x04,0x00,0xdd,0x20,0x01,0xe0,0x1c,0x22,0x50,0x00,0x78,0x24,0xfc,0x00,0x09,0x80,
-0x00,0x08,0x19,0x89,0x7e,0x00,0x67,0xe2,0x02,0xd5,0x09,0x80,0x00,0x08,0x19,0x89,
-0x7e,0x00,0xe7,0xe2,0x00,0x05,0x1f,0xe1,0x72,0x3f,0x20,0x22,0x80,0x9a,0x09,0x80,
-0x00,0x08,0x19,0x89,0x7e,0x00,0xe7,0xe2,0x00,0x05,0xc2,0x00,0x00,0x96,0x09,0x80,
-0x00,0x18,0x78,0x28,0x7c,0x00,0xdb,0x60,0x06,0x64,0x1f,0xef,0x7e,0x00,0x1f,0xf1,
-0x7e,0x00,0xe7,0xe6,0x00,0x05,0x20,0x40,0x49,0xba,0x20,0x23,0x48,0xf5,0x78,0x36,
-0xfc,0x00,0x6f,0xe2,0x00,0x17,0x1f,0xe0,0xa2,0x02,0x20,0x40,0x49,0x80,0x20,0x20,
-0x49,0x15,0x58,0x00,0x00,0x00,0x67,0xf0,0x0a,0x96,0xdf,0x20,0x00,0x08,0xda,0x40,
-0x0a,0x96,0x20,0x40,0x00,0xcd,0xe7,0xe2,0x00,0x12,0x1a,0x40,0xa4,0x01,0x1a,0x20,
-0xa2,0x01,0xc2,0x00,0x00,0xab,0x20,0x60,0x00,0x00,0xda,0x40,0x00,0xfe,0x20,0x20,
-0x00,0xd2,0xda,0x40,0x00,0xfd,0x20,0x20,0x00,0xd2,0xda,0x40,0x00,0xfc,0x20,0x20,
-0x00,0xd2,0xda,0x40,0x00,0xfb,0x20,0x20,0x00,0xd2,0x18,0x42,0x24,0x00,0x20,0x20,
-0x00,0xd2,0x18,0x41,0xa4,0x80,0x20,0x20,0x00,0xd2,0x67,0xe2,0x89,0x4b,0x70,0x89,
-0x4e,0xc5,0x70,0x89,0x4e,0xc4,0x6f,0xe2,0x89,0x91,0xc4,0x00,0x80,0x00,0x20,0x20,
-0x00,0xc0,0x6f,0xe2,0x89,0x91,0xc3,0x00,0x00,0xc3,0x6f,0xe2,0x89,0x90,0x70,0x89,
-0x4e,0xc6,0x70,0x89,0x4e,0xc4,0x20,0x00,0x03,0xe8,0x20,0x60,0x00,0x00,0x58,0x00,
-0x00,0x02,0x20,0x40,0x00,0xbd,0x20,0x20,0x00,0xc3,0x20,0x40,0x00,0xd6,0x58,0x00,
-0x00,0x06,0x20,0x40,0x00,0xbd,0x20,0x20,0x00,0xc3,0x20,0x40,0x00,0xd6,0x58,0x00,
-0x00,0x05,0x20,0x40,0x00,0xbd,0x1a,0x42,0x7e,0x00,0x20,0x20,0x00,0xbd,0x58,0x00,
-0x00,0x0b,0x20,0x40,0x00,0xbd,0x1a,0x2c,0xfe,0x00,0x20,0x40,0x00,0xbd,0x58,0x00,
-0x00,0x03,0x20,0x40,0x00,0xbd,0x1a,0x21,0x7e,0xff,0x20,0x20,0x00,0xbd,0x3f,0xc9,
+0x00,0x02,0xaa,0x55,0x3a,0x02,0xc2,0x84,0x00,0x05,0xc0,0x00,0x80,0x0d,0xc0,0x5c,
+0x00,0x13,0xc0,0x5d,0x80,0x2d,0x20,0x20,0x4a,0x8b,0xc0,0x01,0x80,0x3c,0xc0,0x02,
+0x80,0x4c,0xc0,0x1d,0x00,0x55,0xc0,0x1f,0x00,0x5e,0xc0,0x20,0x80,0x70,0xc0,0x29,
+0x00,0x76,0xc0,0x4c,0x80,0x8a,0x20,0x20,0x4a,0x8b,0x20,0x40,0x68,0xc4,0x20,0x40,
+0x60,0xd7,0x20,0x40,0x00,0x11,0x20,0x20,0x40,0x0a,0x20,0x75,0x80,0x00,0x20,0x20,
+0x7b,0x9a,0x58,0x00,0x00,0x1b,0x67,0xe4,0x41,0xf6,0x58,0x00,0x00,0x23,0x67,0xe4,
+0x41,0xfe,0x20,0x40,0x4d,0xaf,0x20,0x40,0x4d,0xbc,0x20,0x40,0x4c,0x2a,0x20,0x20,
+0x50,0x4d,0x1a,0x62,0x7e,0x00,0xc0,0x04,0x80,0x21,0xc0,0x01,0x00,0x1f,0x20,0x20,
+0x4d,0xdf,0x70,0x4a,0xb1,0x00,0x20,0x20,0x4d,0xfb,0x70,0x4a,0xb1,0x06,0x20,0x20,
+0x4e,0x08,0x20,0x40,0x00,0x25,0x20,0x20,0x50,0xc3,0x6f,0xe2,0x4a,0xb1,0x20,0x7a,
+0x00,0x00,0x1f,0xe0,0xff,0xff,0x67,0xe2,0x4a,0xb1,0x24,0x7a,0x00,0x00,0x6f,0xe4,
+0x46,0x52,0xc2,0x80,0x4d,0x64,0x20,0x60,0x00,0x00,0x6f,0xe2,0x0a,0xff,0xc0,0x13,
+0x80,0x3a,0xc0,0x06,0x00,0x31,0x20,0x20,0x4e,0x5c,0x1a,0x22,0x06,0x00,0xef,0xe2,
+0x00,0x03,0xc0,0x00,0x4f,0x1c,0xc0,0x00,0xcf,0x1f,0xc0,0x01,0x4f,0x25,0xc0,0x01,
+0x80,0x38,0x20,0x20,0x50,0x1c,0x58,0x00,0x00,0x01,0x20,0x20,0x4f,0x20,0x20,0x40,
+0x50,0x1f,0x20,0x20,0x4d,0x85,0x20,0x40,0x49,0xba,0x78,0x23,0xfc,0x00,0x78,0x24,
+0xfc,0x00,0x09,0x80,0x00,0x08,0x19,0x89,0x7e,0x00,0x67,0xe2,0x02,0xd5,0x09,0x80,
+0x00,0x08,0x19,0x89,0x7e,0x00,0xe7,0xe2,0x00,0x05,0x1f,0xe1,0x72,0x3f,0x20,0x22,
+0xd8,0x8b,0x1f,0xe6,0x7c,0x33,0x24,0x41,0x00,0x4a,0x20,0x20,0x58,0x87,0xdf,0x20,
+0x00,0x33,0x20,0x60,0x00,0x00,0x20,0x40,0x58,0xa3,0x20,0x40,0x49,0x15,0x68,0x42,
+0x00,0x17,0x20,0x40,0x49,0x1c,0x20,0x00,0x05,0xdc,0x20,0x40,0x49,0x21,0x78,0x28,
+0x7c,0x00,0xd9,0x60,0x15,0x7c,0x20,0x20,0x58,0x69,0x6f,0xe2,0x00,0x7d,0xc0,0x08,
+0x00,0x58,0x20,0x20,0x60,0xfe,0x68,0x42,0x05,0x4e,0x18,0x46,0x7c,0x06,0x20,0x21,
+0x00,0x5c,0x20,0x20,0x62,0x06,0x70,0x00,0x7e,0x24,0x20,0x20,0x61,0x34,0x78,0x54,
+0x7c,0x00,0x20,0x40,0x66,0xa3,0x6f,0xe2,0x00,0x48,0x20,0x7a,0x00,0x00,0xc2,0x83,
+0x80,0x64,0x20,0x20,0x63,0xf2,0xc0,0x42,0x00,0x67,0xc0,0x41,0x80,0x6a,0x20,0x20,
+0x64,0x21,0x20,0x40,0x00,0x6d,0x6f,0xe2,0x00,0x48,0x20,0x20,0x64,0x7b,0x20,0x40,
+0x00,0x6d,0x6f,0xe2,0x00,0x48,0x20,0x20,0x64,0xef,0x6f,0xe2,0x46,0x2c,0x20,0x3a,
+0x65,0x0d,0x20,0x20,0x65,0x06,0x6f,0xe2,0x40,0x9e,0x79,0x3f,0xfe,0x03,0x67,0xe2,
+0x40,0x9e,0x58,0x00,0x00,0x01,0x67,0xe4,0x04,0xca,0x20,0x60,0x00,0x00,0x6f,0xe2,
+0x04,0xf9,0xc0,0x1f,0xe9,0x3e,0xc0,0x39,0xe9,0x47,0xc0,0x77,0x80,0x7c,0xc0,0x29,
+0xea,0x05,0x20,0x60,0x00,0x00,0x6f,0xe4,0x04,0xfd,0x1f,0xe2,0x0c,0x00,0x20,0x40,
+0x69,0x84,0x6f,0xe2,0x04,0xff,0xc0,0x20,0xe9,0x66,0xc0,0x20,0x69,0x6e,0xc0,0x38,
+0xe9,0xa7,0xc0,0x38,0x00,0x86,0xc0,0x24,0xe9,0xbe,0x20,0x20,0x6a,0x58,0x70,0x0a,
+0x95,0x08,0x20,0x40,0x7b,0xab,0x20,0x40,0x69,0x72,0x20,0x20,0x69,0xba,0x6f,0xe2,
+0x44,0x90,0x20,0x3a,0x5e,0xd0,0x20,0x40,0x74,0x38,0x20,0x20,0x79,0x32,0x1b,0xd2,
 0xaa,0x55,0x01,0x00,0x92,0x40,0x0a,0xaa,0x55,0x01,0x00,0x54,0x46,0x40,0xaa,0x55,
-0x01,0x00,0x06,0x42,0x13,0xaa,0x55,0x08,0x00,0x98,0x40,0xff,0xff,0x8f,0xf8,0x9b,
-0x9d,0x59,0x83,0xaa,0x55,0x03,0x00,0x14,0x42,0x07,0x4a,0x05,0xaa,0x55,0x04,0x00,
+0x01,0x00,0x06,0x42,0x13,0xaa,0x55,0x08,0x00,0x98,0x40,0xff,0xfb,0x8f,0xf8,0x8b,
+0x85,0x59,0x83,0xaa,0x55,0x03,0x00,0x14,0x42,0x07,0x4a,0x05,0xaa,0x55,0x04,0x00,
 0x3d,0x45,0x00,0x7f,0x00,0x07,0xaa,0x55,0x03,0x00,0x2d,0x46,0x03,0x00,0x04,0xaa,
 0x55,0x01,0x00,0x2c,0x46,0x01,0xaa,0x55,0x06,0x00,0x57,0x46,0x04,0x30,0x30,0x30,
 0x30,0x30,0xaa,0x55,0x10,0x00,0xf0,0x4f,0x00,0x1c,0xff,0x1f,0x00,0x1c,0x00,0x1c,
-0x00,0x4c,0xe0,0x4f,0x00,0x4c,0x00,0x4c,0xaa,0x55,0x02,0x00,0x68,0x46,0x00,0x01,
+0x00,0x4c,0xe0,0x4f,0x00,0x4c,0x00,0x4c,0xaa,0x55,0x02,0x00,0x68,0x46,0x00,0x02,
 0xaa,0x55,0x01,0x00,0x6c,0x46,0x03,0xaa,0x55,0x01,0x00,0x6f,0x46,0x07,0xaa,0x55,
 0x03,0x00,0xaa,0x40,0x24,0x04,0x04,0xaa,0x55,0x01,0x00,0x79,0x46,0x00,0xaa,0x55,
 0x01,0x00,0x91,0x40,0x00,0xaa,0x55,0x03,0x00,0x54,0x41,0x00,0x01,0x08,0xaa,0x55,
-0x01,0x00,0x74,0x41,0x02,0xaa,0x55,0x01,0x00,0x93,0x40,0x03,0xaa,0x55,0x01,0x00,
-0x6d,0x46,0x28,0xaa,0x55,0x06,0x00,0xa0,0x40,0xa7,0x2a,0x2a,0x31,0x10,0x3a,0xaa,
-0x55,0x0c,0x00,0xe7,0x44,0x0b,0x59,0x69,0x63,0x68,0x69,0x70,0x20,0x33,0x31,0x32,
-0x31,0xaa,0x55,0x03,0x00,0xe4,0x41,0x20,0x00,0x01,0xaa,0x55,0x01,0x00,0xe8,0x41,
+0x01,0x00,0x74,0x41,0x02,0xaa,0x55,0x01,0x00,0x93,0x40,0x00,0xaa,0x55,0x01,0x00,
+0x6d,0x46,0x28,0xaa,0x55,0x06,0x00,0xa0,0x40,0xa7,0x2a,0x2a,0x21,0x10,0x3a,0xaa,
+0x55,0x0c,0x00,0xe7,0x44,0x0b,0x33,0x31,0x32,0x31,0x20,0x4d,0x6f,0x75,0x20,0x42,
+0x74,0xaa,0x55,0x03,0x00,0xe4,0x41,0x20,0x00,0x01,0xaa,0x55,0x01,0x00,0xe8,0x41,
 0x00,0xaa,0x55,0x01,0x00,0x90,0x44,0x01,0xaa,0x55,0x01,0x00,0x5f,0x44,0x07,0xaa,
-0x55,0x01,0x00,0x98,0x44,0x01,0xaa,0x55,0x04,0x00,0x75,0x46,0x09,0x00,0x2f,0x00,
-0xaa,0x55,0x01,0x00,0x40,0x43,0x01,0xaa,0x55,0x02,0x00,0x54,0x44,0xf0,0x00,0xaa,
-0x55,0x01,0x00,0x6e,0x46,0x05,0xaa,0x55,0x06,0x00,0x72,0x44,0x21,0x22,0x00,0x33,
-0x02,0x3a,0xaa,0x55,0x10,0x00,0x81,0x43,0x0f,0x59,0x69,0x63,0x68,0x69,0x70,0x20,
-0x33,0x31,0x32,0x31,0x20,0x4d,0x6f,0x75,0xaa,0x55,0x04,0x00,0x41,0x43,0x03,0x02,
-0x01,0x0e,0xaa,0x55,0x13,0x00,0x61,0x43,0x0e,0x11,0x09,0x59,0x69,0x63,0x68,0x69,
+0x55,0x01,0x00,0x98,0x44,0x00,0xaa,0x55,0x04,0x00,0x75,0x46,0x2d,0x00,0x2f,0x00,
+0xaa,0x55,0x01,0x00,0x40,0x43,0x00,0xaa,0x55,0x02,0x00,0x54,0x44,0x40,0x00,0xaa,
+0x55,0x01,0x00,0x6e,0x46,0x05,0xaa,0x55,0x06,0x00,0x72,0x44,0x21,0x22,0x01,0x33,
+0x02,0x3a,0xaa,0x55,0x0d,0x00,0x81,0x43,0x0c,0x33,0x31,0x32,0x31,0x20,0x4d,0x6f,
+0x75,0x20,0x42,0x6c,0x65,0xaa,0x55,0x04,0x00,0x41,0x43,0x03,0x02,0x01,0x02,0xaa,
+0x55,0x16,0x00,0x61,0x43,0x0e,0x02,0x01,0x02,0x11,0x09,0x59,0x69,0x63,0x68,0x69,
 0x70,0x20,0x31,0x30,0x32,0x31,0x73,0x20,0x4d,0x6f,0x75,0xaa,0x55,0x07,0x00,0x25,
 0x44,0x02,0x03,0x00,0x05,0x10,0x02,0x03,0xaa,0x55,0x08,0x00,0x68,0x44,0x08,0x00,
-0x10,0x00,0x00,0x00,0x2c,0x01,0xaa,0x55,0x01,0x00,0x78,0x44,0xb5,0xaa,0x55,0x01,
+0x10,0x00,0x00,0x00,0x2c,0x01,0xaa,0x55,0x01,0x00,0x78,0x44,0xb9,0xaa,0x55,0x01,
 0x00,0x7a,0x44,0x17,0xaa,0x55,0x02,0x00,0xcc,0x44,0x31,0x00,0xaa,0x55,0x01,0x00,
 0xd1,0x40,0x01,0xaa,0x55,0x0c,0x00,0x49,0x45,0x05,0x03,0x00,0x12,0x00,0x01,0x01,
 0x00,0x01,0x11,0x03,0x00,0xaa,0x55,0x01,0x00,0x5f,0x45,0x00,0xaa,0x55,0x02,0x00,
@@ -94,23 +74,53 @@
 0x09,0x00,0x04,0x35,0x0c,0x35,0x03,0x19,0x01,0x00,0x35,0x05,0x19,0x00,0x03,0x08,
 0x01,0x09,0x00,0x06,0x35,0x09,0x09,0x65,0x6e,0x09,0x00,0x6a,0x09,0x01,0x00,0x09,
 0x01,0x00,0x25,0x0a,0x53,0x50,0x50,0x20,0x73,0x6c,0x61,0x76,0x65,0x00,0x00,0x00,
-0x01,0x00,0xaa,0x55,0x02,0x00,0x8e,0x44,0xaf,0x47,0xaa,0x55,0x8a,0x00,0xaf,0x47,
-0x01,0x00,0x02,0x00,0x28,0x02,0x00,0x18,0x02,0x00,0x02,0x03,0x28,0x01,0x0a,0x03,
-0x00,0x02,0x00,0x2a,0x13,0x41,0x73,0x74,0x20,0x4c,0x45,0x20,0x4d,0x6f,0x75,0x73,
-0x65,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x04,0x00,0x02,0x00,0x28,0x10,0x55,0xe4,
-0x05,0xd2,0xaf,0x9f,0xa9,0x8f,0xe5,0x4a,0x7d,0xfe,0x43,0x53,0x53,0x49,0x05,0x00,
-0x02,0x03,0x28,0x01,0x10,0x06,0x00,0x02,0x87,0x05,0x14,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,
-0x00,0x02,0x02,0x29,0x02,0x00,0x00,0x08,0x00,0x02,0x03,0x28,0x01,0x0e,0x09,0x00,
-0x02,0x98,0x05,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xaa,0x55,0x02,0x00,0x10,0x40,
-0xe0,0x07,0xaa,0x55,0x01,0x00,0x20,0x40,0x50,0xaa,0x55,0x04,0x00,0x79,0x41,0x0a,
-0x0b,0xb2,0x32,0xaa,0x55,0x02,0x00,0x57,0x41,0x8b,0x0b,0xaa,0x55,0x08,0x00,0xa1,
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xaa,0x55,0x02,0x00,0xbd,0x40,0x02,
-0x24,0xaa,0x55,0x08,0x00,0xad,0x40,0x24,0x00,0x80,0x00,0x24,0x00,0x80,0x00,0xaa,
-0x55,0x02,0x00,0xbb,0x40,0x20,0x00,0xaa,0x55,0x04,0x00,0xb7,0x40,0x20,0x00,0x00,
-0x20,0xaa,0x55,0x04,0x00,0xbf,0x40,0x80,0x04,0x00,0x10,0xaa,0x55,0x05,0x00,0xe2,
-0x44,0x08,0x0e,0x05,0x04,0x00,0xaa,0x55,0x02,0x00,0x02,0x42,0x30,0x1f,0xaa,0x55,
-0x01,0x00,0x10,0x42,0x20,0xaa,0x55,0x01,0x00,0xe0,0x41,0x01,0xaa,0x55,0x01,0x00,
-0xe2,0x41,0xff,0xaa,0x55,0x02,0x00,0xc3,0x40,0xe2,0x41,0x97,0xc3
+0x01,0x00,0xaa,0x55,0x02,0x00,0x8e,0x44,0xaf,0x47,0xaa,0x55,0x35,0x02,0xaf,0x47,
+0x01,0x00,0x02,0x00,0x28,0x02,0x00,0x18,0x02,0x00,0x02,0x03,0x28,0x01,0x02,0x03,
+0x00,0x02,0x01,0x2a,0x02,0xc8,0x00,0x04,0x00,0x02,0x03,0x28,0x01,0x0a,0x05,0x00,
+0x02,0x00,0x2a,0x14,0x41,0x73,0x74,0x20,0x4c,0x45,0x20,0x4d,0x6f,0x75,0x73,0x65,
+0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x06,0x00,0x02,0x03,0x28,0x01,0x02,0x07,
+0x00,0x02,0x04,0x2a,0x08,0x06,0x00,0x06,0x00,0x64,0x00,0x2c,0x01,0x08,0x00,0x02,
+0x03,0x28,0x01,0x02,0x09,0x00,0x02,0x02,0x2a,0x01,0x01,0x0a,0x00,0x02,0x03,0x28,
+0x01,0x08,0x0b,0x00,0x02,0x03,0x2a,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,
+0x02,0x00,0x28,0x02,0x01,0x18,0x0d,0x00,0x02,0x03,0x28,0x01,0x20,0x0e,0x00,0x02,
+0x05,0x2a,0x00,0x0f,0x00,0x02,0x02,0x29,0x02,0x00,0x00,0x10,0x00,0x02,0x00,0x28,
+0x02,0x04,0x18,0x11,0x00,0x02,0x03,0x28,0x01,0x16,0x12,0x00,0x02,0x07,0x2a,0x01,
+0x00,0x13,0x00,0x02,0x02,0x29,0x02,0x00,0x00,0x14,0x00,0x02,0x00,0x28,0x02,0x0f,
+0x18,0x15,0x00,0x02,0x03,0x28,0x01,0x12,0x16,0x00,0x02,0x19,0x2a,0x01,0x38,0x17,
+0x00,0x02,0x00,0x28,0x02,0x0a,0x18,0x18,0x00,0x02,0x03,0x28,0x01,0x02,0x19,0x00,
+0x02,0x23,0x2a,0x03,0x00,0x00,0x00,0x1a,0x00,0x02,0x03,0x28,0x01,0x02,0x1b,0x00,
+0x02,0x29,0x2a,0x08,0x46,0x6c,0x61,0x67,0x74,0x72,0x69,0x70,0x1c,0x00,0x02,0x03,
+0x28,0x01,0x02,0x1d,0x00,0x02,0x24,0x2a,0x06,0x79,0x69,0x63,0x68,0x69,0x70,0x1e,
+0x00,0x02,0x03,0x28,0x01,0x02,0x1f,0x00,0x02,0x25,0x2a,0x04,0x63,0x6f,0x6d,0x33,
+0x20,0x00,0x02,0x03,0x28,0x01,0x02,0x21,0x00,0x02,0x26,0x2a,0x03,0x31,0x2e,0x30,
+0x22,0x00,0x02,0x03,0x28,0x01,0x02,0x23,0x00,0x02,0x28,0x2a,0x03,0x31,0x2e,0x30,
+0x24,0x00,0x02,0x03,0x28,0x01,0x02,0x25,0x00,0x02,0x2a,0x2a,0x03,0x31,0x2e,0x30,
+0x26,0x00,0x02,0x03,0x28,0x01,0x02,0x27,0x00,0x02,0x25,0x2a,0x04,0x63,0x6f,0x6d,
+0x33,0x28,0x00,0x02,0x00,0x28,0x10,0x55,0xe4,0x05,0xd2,0xaf,0x9f,0xa9,0x8f,0xe5,
+0x4a,0x7d,0xfe,0x43,0x53,0x53,0x49,0x29,0x00,0x02,0x03,0x28,0x01,0x12,0x2a,0x00,
+0x10,0x16,0x96,0x24,0x47,0xc6,0x23,0x61,0xba,0xd9,0x4b,0x4d,0x1e,0x43,0x53,0x53,
+0x49,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x2b,0x00,0x02,0x02,0x29,0x02,0x00,0x00,0x2c,0x00,
+0x02,0x03,0x28,0x01,0x08,0x2d,0x00,0x10,0xb3,0x9b,0x72,0x34,0xbe,0xec,0xd4,0xa8,
+0xf4,0x43,0x41,0x88,0x43,0x53,0x53,0x49,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2e,0x00,0x02,
+0x03,0x28,0x01,0x04,0x2f,0x00,0x10,0xfe,0x69,0xca,0x9a,0x56,0x19,0xf6,0xab,0x02,
+0x4d,0xaa,0x6d,0x43,0x53,0x53,0x49,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x02,0x03,
+0x28,0x01,0x1a,0x31,0x00,0x10,0x18,0x03,0xa6,0x28,0x5e,0xd8,0xec,0x91,0x1c,0x48,
+0xa3,0xac,0x43,0x53,0x53,0x49,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x32,0x00,0x02,0x02,0x29,
+0x02,0x00,0x00,0x00,0x00,0xaa,0x55,0x01,0x00,0x00,0x40,0x02,0xaa,0x55,0x01,0x00,
+0x17,0x40,0x09,0xaa,0x55,0x01,0x00,0x20,0x40,0x28,0xaa,0x55,0x02,0x00,0x27,0x40,
+0x44,0x02,0xaa,0x55,0x01,0x00,0x2a,0x40,0x04,0xaa,0x55,0x01,0x00,0x33,0x40,0x02,
+0xaa,0x55,0x07,0x00,0x76,0x41,0x0f,0x84,0x30,0x0a,0x0b,0xb2,0x32,0xaa,0x55,0x02,
+0x00,0x57,0x41,0x8b,0x0b,0xaa,0x55,0x08,0x00,0xa1,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0xaa,0x55,0x02,0x00,0xbd,0x40,0x02,0x24,0xaa,0x55,0x08,0x00,0xad,
+0x40,0x40,0x00,0x00,0x02,0x32,0x00,0x00,0x02,0xaa,0x55,0x02,0x00,0xbb,0x40,0x20,
+0x00,0xaa,0x55,0x04,0x00,0xb7,0x40,0x20,0x00,0x00,0x20,0xaa,0x55,0x04,0x00,0xbf,
+0x40,0x80,0x04,0x00,0x08,0xaa,0x55,0x05,0x00,0xe2,0x44,0x08,0x0e,0x05,0x04,0x00,
+0xaa,0x55,0x02,0x00,0x02,0x42,0x30,0x1f,0xaa,0x55,0x01,0x00,0x10,0x42,0x20,0xaa,
+0x55,0x01,0x00,0xe0,0x41,0x01,0xaa,0x55,0x0f,0x00,0xb2,0x4a,0x4b,0xba,0x55,0xd0,
+0x56,0xe0,0x57,0x88,0x58,0x6c,0x59,0x10,0x07,0xff,0xff,0xaa,0x55,0x02,0x00,0xc3,
+0x40,0xb2,0x4a,0x3a,0x7d
 };
Index: fw/hal/jinghongling/src/HalApp/main.c
===================================================================
--- /YC3121_SDK/fw/hal/jinghongling/src/HalApp/main.c	(revision 621)
+++ /YC3121_SDK/fw/hal/jinghongling/src/HalApp/main.c	(working copy)
@@ -494,7 +494,7 @@
 		if(UART_IsRXFIFONotEmpty(UART0))
 		{
 			test_enter_lpm();
-			//Uart_SendBuf(UART0,pucBuf,1);
+			//UART_SendBuf(UART0,pucBuf,1);
 			//	HalICCTest();	
 			//halGpioWritePin(GPIOB,GPIO_Pin_0,1);
 			//Systick_Dealy_Ms(500);
Index: fw/makefile
===================================================================
--- /YC3121_SDK/fw/makefile	(revision 621)
+++ /YC3121_SDK/fw/makefile	(working copy)
@@ -1,123 +1,112 @@
-vpath %.s snd
-vpath %.c snd
-vpath %.c helix
 
+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"
 
 
-ARCH = C:\gcc-arm-none-eabi-5_4-2016q3-20160926-win32\arm-none-eabi\bin
-GCC = C:\gcc-arm-none-eabi-5_4-2016q3-20160926-win32\bin\arm-none-eabi-gcc
-LD = $(ARCH)\ld
-AS = $(ARCH)\as
-OBJCOPY = $(ARCH)\objcopy
-OBJDUMP = $(ARCH)\objdump
-
 all : output/out.hex
 
-f : output/out.hex
-	e fp;e k
 
-ROM_PATH = core\startup core\rom_main  
-OBJS = $(ROM_PATH) main core\flash_start core\system core\bt_code\
-			crypt\yc_aes 			\
-			crypt\yc_des 			\
-			crypt\yc_rsa 			\
-			crypt\yc_sha 			\
-			crypt\yc_sm3			\
-			crypt\yc_sm4			\
-			crypt\yc_sm2			\
-			crypt\yc_ecc			\
-			crypt\yc_calc 			\
-			sdk\yc_rand 			\
-			crypt\yc_crc16			\
-			sdk\yc_spi				\
-			sdk\yc_trng				\
-			sdk\yc_systick			\
-			sdk\yc_sysctrl			\
-			sdk\yc_uart  			\
-			sdk\yc_timer 			\
-			sdk\yc_iic				\
-			sdk\yc_it 				\
-			sdk\yc_gpio  			\
-			sdk\yc_wdt 				\
-			sdk\yc_dma   			\
-			sdk\yc_msr				\
-			sdk\yc_exti				\
-			sdk\yc_bt				\
-			sdk\yc_ipc			\
-			Example\Func_assist		\
-			Example\Uart_cmd 		\
-			Example\UART_Test\Uart_Test\
-			Example\SPI_Test\SPI_Test\
-			Example\TIMER_PWM_Test\TIMER_PWM_Test\
-			Example\IIC_Test\IIC_Test\
-			Example\TRNG_Test\TRNG_Test\
-			Example\Algorithm 	\
-			Example\MSR_Test\MSR_Test	
-OTPS = otp			
-
-
-CFLAG =  -mthumb -mcpu=cortex-m0 -c -g -O2 -ffreestanding
-#CFLAG =  -mthumb -mcpu=cortex-m0 -c -g -O2 $(DEF)
-LDFLAG = -T output/ld.script -Map=output/memmap -lc -lm -lgcc -L C:\gcc-arm-none-eabi-5_4-2016q3-20160926-win32\lib\gcc\arm-none-eabi\5.4.1\armv6-m/ -L C:\gcc-arm-none-eabi-5_4-2016q3-20160926-win32\arm-none-eabi\lib\armv6-m/
+CORE_OBJS = core/flash_start_gcc \
+            core/system \
+						crypt\yc_aes \
+						crypt\yc_des \
+						crypt\yc_rsa \
+						crypt\yc_sha \
+						crypt\yc_sm3 \
+						crypt\yc_sm4 \
+						crypt\yc_sm2 \
+						crypt\yc_ecc \
+						crypt\yc_calc \
+						crypt\yc_crc16 \
+						sdk\yc_rand \
+						sdk\yc_spi \
+						sdk\yc_trng \
+						sdk\yc_systick \
+						sdk\yc_sysctrl \
+						sdk\yc_uart \
+						sdk\yc_timer \
+						sdk\yc_iic \
+						sdk\yc_it \
+						sdk\yc_gpio \
+						sdk\yc_msr\yc_msr \
+						sdk\yc_wdt \
+						sdk\yc_dma \
+						sdk\yc_exti \
+						sdk\yc_bt \
+						sdk\yc_ipc \
+						Example\Func_assist \
+						Example\Uart_cmd \
+						Example\UART_Test\Uart_Test \
+						Example\SPI_Test\SPI_Test \
+						Example\TIMER_PWM_Test\TIMER_PWM_Test \
+						Example\IIC_Test\IIC_Test \
+						Example\TRNG_Test\TRNG_Test \
+#						Example\MSR_Test\MSR_Test \
+						Example\Algorithm
+
+
+             
+USER_OBJS = main \
+            core/bt_code
+			
+OBJS = $(CORE_OBJS) $(USER_OBJS)
+
+INC_DIR = -I core \
+          -I sdk \
+          -I sdk\yc_msr
+
+
+CFLAG =  -mthumb -mcpu=cortex-m0 -c -g -Os $(INC_DIR) $(DEF) -fno-toplevel-reorder
+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 = 
-SECTIONS 
+SECTIONS
 { 
-	. = 0; 
-	.rom : { *startup.o *rom_*.o(*.text *.rodata) *lib_a*}
-	. = 0x1000000;
-	.text : { *flash_start.o *(.text*) *(.rodata*)  }
-	_sidata = ALIGN(4);
-	. = 0x20000; 
-	.data : AT (_sidata) { _sdata = .; *(.data) _edata = .;	} 
-	.bss : { _sbss = .;	*(*.bss) *(*.scommon*) } 
-	_ebss = .;
-	. = 0x30000;
-	_stack = .;
-	ASSERT(_ebss < _stack, "data size overflow")
+        . = 0x1000000;
+        .text : { *flash_start.o *(.text*) *(.rodata*) }
+        _sidata = ALIGN(4);
+        . = 0x20000;
+        .data : AT (_sidata) { _sdata = .; *(.data) _edata = .; }
+        .bss : { _sbss = .;     *(*.bss) *(*.scommon*) }
+        _ebss = .;
+        . = 0x30000;
+        _stack = .;
+        ASSERT(_ebss < _stack, "data size overflow")
 }
 endef
 
+
 output/out.hex : output/out
 	$(OBJCOPY) $^ -O ihex $@
-	perl hex2rom.pl 0 4000 < $@ > output/boot.rom
-	encrom output/boot.rom output/boot_enc.rom
-	perl hex2rom.pl 1000000 1ffffff < $@ > output/flash.rom
-	encrom output/flash.rom output/flash.dat key
-	
-	
-#	cp output/flash_enc.rom output/boot_enc.rom ../sim/
-#	perl rom2mif.pl 34 < output/boot_enc.rom > ../fpga/boot_enc.mif
-#	perl rom2mif.pl < output/flash_enc.rom > ../fpga/flash_enc.mif
-
 
 
-#
 output/out : $(addprefix output/, $(addsuffix .o, $(OBJS)))
-	$(file > output\ld.script, $(ldscript))
-	$(LD) $^ -o $@  $(LDFLAG)
+	$(file >output/ld.script, $(ldscript))
+	$(LD) $(addprefix output/obj/,$(addsuffix .o, $(notdir $(OBJS)))) -o $@ $(LDFLAG)
 	$(OBJDUMP) -S $@ > output/disasm
 
-output/otp : $(addprefix output/, $(addsuffix .o, $(OTPS)))
-	$(file > output/ld.script, $(ldscript_otp))
-	$(LD) $^ -o $@  $(LDFLAG)
-	$(OBJDUMP) -S $@ > output/disasm_otp
-	
 output/%.o : %.c
-	$(GCC) $< $(CFLAG) -o $@ 
+	$(GCC) $< $(CFLAG) -o output/obj/$(notdir $@)
 
 output/%.o : %.s
-	$(AS) $^ -mthumb -mcpu=cortex-m0 -o $@ 
+	$(AS) $^ -mthumb -mcpu=cortex-m0 -o output/obj/$(notdir $@)
+
 
-	
 clean :
-	del /Q output\*.o
-	del /Q output\core\*.o
-	del /Q output\sdk\*.o
-	del /Q output\crypt\*.o
-	del /Q output\Example\SPI_Test\*.o
-	del /Q output\Example\TIMER_PWM_Test\*.o
-	del /Q output\Example\TRNG_Test\*.o
-	del /Q output\Example\UART_Test\*.o
-	del /Q output\Example\MSR_Test\*.o
-	
+ifeq ($(OS),Windows_NT)
+	del /Q output\*.*
+	del /Q output\obj\*.*
+else
+	rm -rf output/*
+	rm -rf output/obj/*
+endif

