Implement new swap scheme for devices with large erase size using scratch with status area
diff --git a/sim/mcuboot-sys/build.rs b/sim/mcuboot-sys/build.rs
index 74b19f0..a2206c9 100644
--- a/sim/mcuboot-sys/build.rs
+++ b/sim/mcuboot-sys/build.rs
@@ -16,6 +16,7 @@
let sig_ed25519 = env::var("CARGO_FEATURE_SIG_ED25519").is_ok();
let overwrite_only = env::var("CARGO_FEATURE_OVERWRITE_ONLY").is_ok();
let swap_move = env::var("CARGO_FEATURE_SWAP_MOVE").is_ok();
+ let swap_status = env::var("CARGO_FEATURE_SWAP_STATUS").is_ok();
let validate_primary_slot =
env::var("CARGO_FEATURE_VALIDATE_PRIMARY_SLOT").is_ok();
let enc_rsa = env::var("CARGO_FEATURE_ENC_RSA").is_ok();
@@ -31,7 +32,9 @@
conf.define("MCUBOOT_HAVE_LOGGING", None);
conf.define("MCUBOOT_USE_FLASH_AREA_GET_SECTORS", None);
conf.define("MCUBOOT_HAVE_ASSERT_H", None);
- conf.define("MCUBOOT_MAX_IMG_SECTORS", Some("128"));
+ if !swap_status {
+ conf.define("MCUBOOT_MAX_IMG_SECTORS", Some("128"));
+ }
conf.define("MCUBOOT_IMAGE_NUMBER", Some(if multiimage { "2" } else { "1" }));
if downgrade_prevention && !overwrite_only {
@@ -40,7 +43,6 @@
if bootstrap {
conf.define("MCUBOOT_BOOTSTRAP", None);
- conf.define("MCUBOOT_OVERWRITE_ONLY_FAST", None);
}
if validate_primary_slot {
@@ -138,10 +140,25 @@
if overwrite_only {
conf.define("MCUBOOT_OVERWRITE_ONLY", None);
+ conf.define("MCUBOOT_OVERWRITE_ONLY_FAST", None);
}
if swap_move {
conf.define("MCUBOOT_SWAP_USING_MOVE", None);
+ conf.file("../../boot/bootutil/src/swap_move.c");
+ }
+
+ if swap_status {
+ conf.define("MCUBOOT_SWAP_USING_STATUS", None);
+ conf.define("MCUBOOT_LOG_LEVEL", "MCUBOOT_LOG_LEVEL_DEBUG");
+ conf.define("MCUBOOT_MAX_IMG_SECTORS", Some("2000"));
+ conf.define("CY_FLASH_ALIGN", "512");
+ conf.file("../../boot/bootutil/src/swap_status.c");
+ conf.file("../../boot/bootutil/src/swap_status_part.c");
+ conf.file("../../boot/bootutil/src/swap_status_misc.c");
+ conf.file("../../boot/bootutil/src/crc32c.c");
+// conf.file("../../boot/cypress/cy_flash_pal/cy_my_support.c");
+ conf.include("../../boot/cypress/cy_flash_pal");
}
if enc_rsa {
@@ -284,7 +301,6 @@
conf.file("../../boot/bootutil/src/loader.c");
conf.file("../../boot/bootutil/src/swap_misc.c");
conf.file("../../boot/bootutil/src/swap_scratch.c");
- conf.file("../../boot/bootutil/src/swap_move.c");
conf.file("../../boot/bootutil/src/caps.c");
conf.file("../../boot/bootutil/src/bootutil_misc.c");
conf.file("../../boot/bootutil/src/bootutil_public.c");