| 
					
				 | 
			
			
				@@ -533,7 +533,7 @@ public class FirmwareUpdate extends AppCompatActivity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    iicRead32Bits((byte)0x01, (byte)0x00, (byte)0x14, mBytes, 23); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    iicRead32Bits((byte)0x01, (byte)0x00, (byte)0x14, (byte)0x0f,mBytes, 23); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     for (int i = 10; i < 15; i++)  //Get PID 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -968,11 +968,11 @@ public class FirmwareUpdate extends AppCompatActivity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //发送命令,使得S8xx可以通过IIC向GT29xx的固定地址读取任意bytes的数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private boolean iicRead32Bits(byte addrfirstbyte,byte addrsecondbyte,byte addrthirdbyte,byte[] wBuffer,int length) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private boolean iicRead32Bits(byte addrfirstbyte,byte addrsecondbyte,byte addrthirdbyte,byte subCommand,byte[] wBuffer,int length) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         int i; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        iicByteData[1] = 0x0f; //7bit:0-read,1-write;other:command 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        iicByteData[1] = (byte)(0 | subCommand);//0x0f; //7bit:0-read,1-write;other:command 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //iicByteData[2] = 0x0f; //no command 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         iicByteData[2] = addrfirstbyte; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         iicByteData[3] = addrsecondbyte; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1332,7 +1332,7 @@ public class FirmwareUpdate extends AppCompatActivity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //if(false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (!iicRead32Bits(addrfirstbyte, addrsecondbyte, addrthirdbyte, pbBuf, length)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!iicRead32Bits(addrfirstbyte, addrsecondbyte, addrthirdbyte, (byte)0x0f, pbBuf, length)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //if (!iicRead(addressHigh, addressLow, pbBuf, length)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //FwUpdateMessage(L"recall i2c error failed", MSG_ERR); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2776,11 +2776,13 @@ public class FirmwareUpdate extends AppCompatActivity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SystemClock.sleep(10); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         msubcommand = (byte)0x24;  //最高位置1,写命令36 GTXXX_ENTER_UPDATE_MODE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (int i = 0; i < 10; i++) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ret = IicWriteOneByte(addrfirstbyte, addrsecondbyte, addrthirdbyte, msubcommand, mdata); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ret = iicRead32Bits(addrfirstbyte, addrsecondbyte, addrthirdbyte, msubcommand,mBytes, 1);  //用read命令才能进入update mode,固件里面这样写的 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (ret) break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2805,7 +2807,7 @@ public class FirmwareUpdate extends AppCompatActivity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //iicWrite32Bits(addrfirstbyte, addrsecondbyte, addrthirdbyte,byte[] wBuffer, 0, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 SystemClock.sleep(20); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //if (0xFF == gpI2C1->I2CByteRead(0xD807)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                iicRead32Bits(addrfirstbyte, addrsecondbyte, addrthirdbyte,mBytes, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                iicRead32Bits(addrfirstbyte, addrsecondbyte, addrthirdbyte,msubcommand,mBytes, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if ((byte)0xFF == mBytes[0]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     addrfirstbyte = (byte)0x00; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2920,53 +2922,40 @@ public class FirmwareUpdate extends AppCompatActivity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //BYTE cmdClearBackDoor[10]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //BYTE ReadBackCheck[10]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (int j = 0; j < 20; j++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for (int i = 0; i < 10; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                mBytes[i] = (byte) 0x55; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //clear back door 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //if (!gpI2C1->I2CWrite(BOOT_OPT_ADDR, cmdClearBackDoor, 8)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            addrfirstbyte = 0x01; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            addrsecondbyte = 0x00; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            addrthirdbyte = 0x00; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (!iicWrite32Bits(addrfirstbyte, addrsecondbyte, addrthirdbyte, mBytes, 0, 8)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            SystemClock.sleep(20); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (int i = 0; i < 10; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            mBytes[i] = (byte) 0x55; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //if (!recallCheck32Bits(addrfirstbyte,addrsecondbyte, addrthirdbyte, mBytes,0,8)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (!iicRead32Bits(addrfirstbyte, addrsecondbyte, addrthirdbyte, mBytes, 8)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //if (!gpI2C1->I2CRead(BOOT_OPT_ADDR, ReadBackCheck, 8))  //todo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //Update_log = "[FW update]Clear Back Door Fail!"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //mHandler.sendEmptyMessage(DEBUG_MESSAGE_ERROR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //SystemClock.sleep(40); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            int count; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            for (count = 0; count < 8; count++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (mBytes[count] != (byte) 0x55) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //Update_log = "[FW update]Clear Back Door Fail!"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //mHandler.sendEmptyMessage(DEBUG_MESSAGE_ERROR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    //return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //clear back door 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //if (!gpI2C1->I2CWrite(BOOT_OPT_ADDR, cmdClearBackDoor, 8)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        addrfirstbyte = 0x01; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        addrsecondbyte = 0x00; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        addrthirdbyte = 0x00; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!iicWrite32Bits(addrfirstbyte, addrsecondbyte, addrthirdbyte, mBytes, 0, 8)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        SystemClock.sleep(20); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (count == 8){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //Update_log = "[FW update]Clear Back Door Fail!"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //mHandler.sendEmptyMessage(DEBUG_MESSAGE_ERROR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //if (!recallCheck32Bits(addrfirstbyte,addrsecondbyte, addrthirdbyte, mBytes,0,8)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!iicRead32Bits(addrfirstbyte, addrsecondbyte, addrthirdbyte, (byte)0x0f, mBytes, 8)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //if (!gpI2C1->I2CRead(BOOT_OPT_ADDR, ReadBackCheck, 8))  //todo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //Update_log = "[FW update]Clear Back Door Fail!"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //mHandler.sendEmptyMessage(DEBUG_MESSAGE_ERROR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //SystemClock.sleep(40); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int count; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (count = 0; count < 8; count++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (mBytes[count] != (byte) 0x55) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Update_log = "[FW update]Clear Back Door Fail!"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                mHandler.sendEmptyMessage(DEBUG_MESSAGE_ERROR); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //if (memcmp(cmdClearBackDoor, ReadBackCheck, 8) != 0)  //todo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //    return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         addrfirstbyte = (byte)0x00; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         addrsecondbyte = (byte)0xD8; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         addrthirdbyte = (byte)0x08; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2985,7 +2974,7 @@ public class FirmwareUpdate extends AppCompatActivity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (int i = 0; i < 200; i++) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //read buffer [0x01001E] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (!iicRead32Bits((byte)0x01, (byte)0x00, (byte)0x1E, mBytes, 6)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!iicRead32Bits((byte)0x01, (byte)0x00, (byte)0x1E, (byte)0x0f, mBytes, 6)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -3131,7 +3120,7 @@ public class FirmwareUpdate extends AppCompatActivity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     SystemClock.sleep(30); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    iicRead32Bits(addrfirstbyte, addrsecondbyte, addrthirdbyte, mBytes, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    iicRead32Bits(addrfirstbyte, addrsecondbyte, addrthirdbyte, (byte)0x0f, mBytes, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     //if (!gpI2C1->I2CCheckRegister(BLB_CMD_STATUS_ADDR, FLASH_CMD_W_STATUS_WRITE_OK)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if (mBytes[0] == (byte) 0xEE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -3160,7 +3149,7 @@ public class FirmwareUpdate extends AppCompatActivity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     SystemClock.sleep(30); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    iicRead32Bits(addrfirstbyte, addrsecondbyte, addrthirdbyte, mBytes, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    iicRead32Bits(addrfirstbyte, addrsecondbyte, addrthirdbyte, (byte)0x0f, mBytes, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     //if (!gpI2C1->I2CCheckRegister(BLD_CMD_STATUS_ADDR, FLASH_CMD_W_STATUS_WRITE_OK)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if (mBytes[0] == (byte) 0xEE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -3332,6 +3321,7 @@ public class FirmwareUpdate extends AppCompatActivity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         byte addrfirstbyte = (byte)0x01; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         byte addrsecondbyte = (byte)0x01; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         byte addrthirdbyte = (byte)0x74; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -3346,6 +3336,7 @@ public class FirmwareUpdate extends AppCompatActivity 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         SystemClock.sleep(80); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (!UpdateInit())  //NO1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 |