sim: add new device with unequal slots
This device allows testing swap move with a primary slot that is one
sector larger than the secondary slot. No scratch was defined. Overwrite
upgrade could easily be made compatible as well, but for now leave it
as a disabled caps.
Signed-off-by: Fabio Utzig <utzig@apache.org>
diff --git a/sim/src/image.rs b/sim/src/image.rs
index 4a39010..e9865e4 100644
--- a/sim/src/image.rs
+++ b/sim/src/image.rs
@@ -325,6 +325,19 @@
flash.insert(dev_id, dev);
(flash, areadesc, &[])
}
+ DeviceName::Nrf52840UnequalSlots => {
+ let dev = SimFlash::new(vec![4096; 128], align as usize, erased_val);
+
+ let dev_id = 0;
+ let mut areadesc = AreaDesc::new();
+ areadesc.add_flash_sectors(dev_id, &dev);
+ areadesc.add_image(0x008000, 0x03c000, FlashId::Image0, dev_id);
+ areadesc.add_image(0x044000, 0x03b000, FlashId::Image1, dev_id);
+
+ let mut flash = SimMultiFlash::new();
+ flash.insert(dev_id, dev);
+ (flash, areadesc, &[Caps::SwapUsingScratch, Caps::OverwriteUpgrade])
+ }
DeviceName::Nrf52840SpiFlash => {
// Simulate nrf52840 with external SPI flash. The external SPI flash
// has a larger sector size so for now store scratch on that flash.
diff --git a/sim/src/lib.rs b/sim/src/lib.rs
index ec8e5ed..93cdbfa 100644
--- a/sim/src/lib.rs
+++ b/sim/src/lib.rs
@@ -62,7 +62,10 @@
}
#[derive(Copy, Clone, Debug, Deserialize)]
-pub enum DeviceName { Stm32f4, K64f, K64fBig, K64fMulti, Nrf52840, Nrf52840SpiFlash, }
+pub enum DeviceName {
+ Stm32f4, K64f, K64fBig, K64fMulti, Nrf52840, Nrf52840SpiFlash,
+ Nrf52840UnequalSlots,
+}
pub static ALL_DEVICES: &'static [DeviceName] = &[
DeviceName::Stm32f4,
@@ -71,6 +74,7 @@
DeviceName::K64fMulti,
DeviceName::Nrf52840,
DeviceName::Nrf52840SpiFlash,
+ DeviceName::Nrf52840UnequalSlots,
];
impl fmt::Display for DeviceName {
@@ -82,6 +86,7 @@
DeviceName::K64fMulti => "k64fmulti",
DeviceName::Nrf52840 => "nrf52840",
DeviceName::Nrf52840SpiFlash => "Nrf52840SpiFlash",
+ DeviceName::Nrf52840UnequalSlots => "Nrf52840UnequalSlots",
};
f.write_str(name)
}