Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: modem_ref_helper DebouncedInterrupt
Diff: main.cpp
- Revision:
- 16:5a6168dbe7bb
- Parent:
- 15:24434827c575
- Child:
- 17:05c9ec970a6d
diff -r 24434827c575 -r 5a6168dbe7bb main.cpp
--- a/main.cpp Fri Mar 10 16:01:27 2017 +0000
+++ b/main.cpp Mon Mar 13 12:13:41 2017 +0000
@@ -94,10 +94,11 @@
int32_t check_slack(cup_param_t* cup, cup_cfg_t* cup_cfg)
{
- PRINT("key: %d data: %d code: %d src: %d\r\n", cup_cfg->key, cup->data_size, cup->code_size, cup_cfg->src_offset);
+ //PRINT("key: %d data: %d code: %d src: %d\r\n", cup_cfg->key, cup->data_size, cup->code_size, cup_cfg->src_offset);
PRINT("Checking CUP Slack... ");
-
- int32_t cup_slack = cup_cfg->key - cup->data_size - (cup->code_size > cup_cfg->src_offset)? cup->code_size - cup_cfg->src_offset : 0;
+
+ int32_t data_size = (((cup->data_size/256)+1)*256);
+ int32_t cup_slack = cup_cfg->key - data_size;
if (cup_slack < 0)
{
@@ -117,7 +118,6 @@
d7a_revision_t rev;
cup_cfg_t cup_cfg;
cup_param_t* cup = (cup_param_t*)&cup_modem;
- uint32_t cup_offset;
int32_t cup_slack;
// Start & initialize
@@ -154,6 +154,10 @@
if (rev.device_id == BOOTLOADER_DEV_ID)
{
// Update bootloader
+ PRINT("\r\n"
+ "/!\\ This modem has a 4.7.x bootloader firmware. /!\\\r\n"
+ "/!\\ Step 2/2: Upgrading to full modem firmware. /!\\\r\n"
+ );
// Read CUP config with root permissions
D7A_READ(&cup_cfg, cup->cfg_fid, 0, sizeof(cup_cfg_t), root_key);
@@ -165,10 +169,8 @@
PRINT("/!\\ Not enough space for bootloader /!\\\r\n");
break;
}
-
- cup_offset = cup_cfg.key + cup_cfg.src_offset - cup->data_size;
-
- cup_start_update(cup_offset);
+
+ cup_start_update(cup_slack);
}
else
{
@@ -195,12 +197,12 @@
print_check_rev();
break;
}
-
+ /*
if (check_parameter("Firmware version minor...", rev.fw_version.minor, cup->target_fw_minor))
{
print_check_rev();
break;
- }
+ }*/
}
else
{
@@ -216,7 +218,11 @@
if (cup_slack < 0)
{
- PRINT("/!\\ Not enough space for binary, checking for bootloader /!\\\r\n");
+ PRINT("\r\n"
+ "/!\\ Not enough space for full modem firmware binary /!\\\r\n"
+ "/!\\ Checking for bootloader firmware /!\\\r\n"
+ "\r\n"
+ );
cup_slack = check_slack((cup_param_t*)&cup_bootloader, &cup_cfg);
@@ -227,6 +233,12 @@
}
bootloader = true;
+
+ PRINT("\r\n"
+ "/!\\ This update will be done in 2 steps. /!\\\r\n"
+ "/!\\ Step 1/2: Upgrading modem to bootloader. /!\\\r\n"
+ "/!\\ Do no push the reset button or turn off the board during upgrade. /!\\\r\n"
+ );
}
else
{
@@ -260,8 +272,7 @@
#endif
}
- cup_offset = cup_cfg.key - cup->data_size;
- cup_start_update(cup_offset, bootloader);
+ cup_start_update(cup_slack, bootloader);
}
} while (0);