aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Huang <vincenthsw@gmail.com>2022-04-29 15:50:39 +0800
committerGitHub <noreply@github.com>2022-04-29 15:50:39 +0800
commit9bb07fb6893e8debba61573cc0584924f110a44f (patch)
tree49238b9323b3e4a5d3bf1a3e606b2916f8522e08
parentea217e5686f4bc6ce636d6c31e38c0afa3866b60 (diff)
parent1adbac08fc71a502fbeda84c39d7513baf68d991 (diff)
downloadrmi4utils-9bb07fb6893e8debba61573cc0584924f110a44f.tar.gz
Merge pull request #34 from blueue/debug
Write signature if we can confirm its existence.
-rwxr-xr-xrmi4update/firmware_image.cpp11
-rwxr-xr-xrmi4update/rmi4update.cpp51
2 files changed, 37 insertions, 25 deletions
diff --git a/rmi4update/firmware_image.cpp b/rmi4update/firmware_image.cpp
index e4813c5..6b0323e 100755
--- a/rmi4update/firmware_image.cpp
+++ b/rmi4update/firmware_image.cpp
@@ -55,13 +55,14 @@ void FirmwareImage::ParseHierarchicalImg()
unsigned char *content;
unsigned short container_id;
unsigned int sigature_size;
+
+ for (ii = 0; ii < BLv7_MAX; ii++) {
+ m_signatureInfo[ii].bExisted = false;
+ m_signatureInfo[ii].size = 0;
+ }
if (m_bootloaderVersion == RMI_IMG_V10_SIGNATURE_VERSION_NUMBER) {
- fprintf (stdout, "has signature\n");
- for (ii = 0; ii < BLv7_MAX; ii++) {
- m_signatureInfo[ii].bExisted = false;
- m_signatureInfo[ii].size = 0;
- }
+ fprintf (stdout, "has signature\n");
}
m_cntrAddr = extract_long(&m_memBlock[RMI_IMG_V10_CNTR_ADDR_OFFSET]);
diff --git a/rmi4update/rmi4update.cpp b/rmi4update/rmi4update.cpp
index ec6e84b..5e1d924 100755
--- a/rmi4update/rmi4update.cpp
+++ b/rmi4update/rmi4update.cpp
@@ -355,6 +355,9 @@ int RMI4Update::UpdateFirmware(bool force, bool performLockdown)
reset:
m_device.Reset();
rebind:
+ if (m_bootloaderID[1] >= 10) {
+ Sleep(5000);
+ }
m_device.RebindDriver();
if(!m_device.CheckABSEvent())
{
@@ -874,11 +877,13 @@ int RMI4Update::WriteFirmwareV7()
}
if(m_device.GetDeviceType() == RMI_DEVICE_TYPE_TOUCHPAD) {
- // Write signature.
- rc = WriteSignatureV7(BLv7_CORE_CODE, m_firmwareImage.GetFirmwareData(), offset);
- if (rc != UPDATE_SUCCESS) {
- fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc));
- return rc;
+ if (m_firmwareImage.GetSignatureInfo()[BLv7_CORE_CODE].bExisted) {
+ // Write signature.
+ rc = WriteSignatureV7(BLv7_CORE_CODE, m_firmwareImage.GetFirmwareData(), offset);
+ if (rc != UPDATE_SUCCESS) {
+ fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc));
+ return rc;
+ }
}
}
@@ -1000,11 +1005,13 @@ int RMI4Update::WriteCoreConfigV7()
}
if(m_device.GetDeviceType() == RMI_DEVICE_TYPE_TOUCHPAD) {
- // Write signature.
- rc = WriteSignatureV7(BLv7_CORE_CONFIG, m_firmwareImage.GetConfigData(), offset);
- if (rc != UPDATE_SUCCESS) {
- fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc));
- return rc;
+ if (m_firmwareImage.GetSignatureInfo()[BLv7_CORE_CONFIG].bExisted) {
+ // Write signature.
+ rc = WriteSignatureV7(BLv7_CORE_CONFIG, m_firmwareImage.GetConfigData(), offset);
+ if (rc != UPDATE_SUCCESS) {
+ fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc));
+ return rc;
+ }
}
}
@@ -1126,11 +1133,13 @@ int RMI4Update::WriteFlashConfigV7()
}
if(m_device.GetDeviceType() == RMI_DEVICE_TYPE_TOUCHPAD) {
- // Write signature.
- rc = WriteSignatureV7(BLv7_FLASH_CONFIG, m_firmwareImage.GetFlashConfigData(), offset);
- if (rc != UPDATE_SUCCESS) {
- fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc));
- return rc;
+ if (m_firmwareImage.GetSignatureInfo()[BLv7_FLASH_CONFIG].bExisted) {
+ // Write signature.
+ rc = WriteSignatureV7(BLv7_FLASH_CONFIG, m_firmwareImage.GetFlashConfigData(), offset);
+ if (rc != UPDATE_SUCCESS) {
+ fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc));
+ return rc;
+ }
}
}
@@ -1258,11 +1267,13 @@ int RMI4Update::WriteFLDV7()
}
if(m_device.GetDeviceType() == RMI_DEVICE_TYPE_TOUCHPAD) {
- // Write signature.
- rc = WriteSignatureV7(BLv7_FLD, m_firmwareImage.GetFLDData(), offset);
- if (rc != UPDATE_SUCCESS) {
- fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc));
- return rc;
+ if (m_firmwareImage.GetSignatureInfo()[BLv7_FLD].bExisted) {
+ // Write signature.
+ rc = WriteSignatureV7(BLv7_FLD, m_firmwareImage.GetFLDData(), offset);
+ if (rc != UPDATE_SUCCESS) {
+ fprintf(stderr, "%s: %s\n", __func__, update_err_to_string(rc));
+ return rc;
+ }
}
}