|
@@ -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
|
|
|
{
|