Allow multiple flash device in AreaDesc
AreaDesc was modified to not receive a flash device on its constructor,
and instead a new function `add_flash_sectors` was added that allows it
to receive a flash device and id.
The `add_image` function that populates the areas also now receives a
dev_id that is used internally as fa_device_id.
Signed-off-by: Fabio Utzig <utzig@apache.org>
diff --git a/sim/src/lib.rs b/sim/src/lib.rs
index 194fd7f..992dcee 100644
--- a/sim/src/lib.rs
+++ b/sim/src/lib.rs
@@ -327,20 +327,24 @@
64 * 1024,
128 * 1024, 128 * 1024, 128 * 1024],
align as usize, erased_val);
- let mut areadesc = AreaDesc::new(&flash);
- areadesc.add_image(0x020000, 0x020000, FlashId::Image0);
- areadesc.add_image(0x040000, 0x020000, FlashId::Image1);
- areadesc.add_image(0x060000, 0x020000, FlashId::ImageScratch);
+ let flash_id = 0;
+ let mut areadesc = AreaDesc::new();
+ areadesc.add_flash_sectors(flash_id, &flash);
+ areadesc.add_image(0x020000, 0x020000, FlashId::Image0, flash_id);
+ areadesc.add_image(0x040000, 0x020000, FlashId::Image1, flash_id);
+ areadesc.add_image(0x060000, 0x020000, FlashId::ImageScratch, flash_id);
(flash, areadesc)
}
DeviceName::K64f => {
// NXP style flash. Small sectors, one small sector for scratch.
let flash = SimFlash::new(vec![4096; 128], align as usize, erased_val);
- let mut areadesc = AreaDesc::new(&flash);
- areadesc.add_image(0x020000, 0x020000, FlashId::Image0);
- areadesc.add_image(0x040000, 0x020000, FlashId::Image1);
- areadesc.add_image(0x060000, 0x001000, FlashId::ImageScratch);
+ let flash_id = 0;
+ let mut areadesc = AreaDesc::new();
+ areadesc.add_flash_sectors(flash_id, &flash);
+ areadesc.add_image(0x020000, 0x020000, FlashId::Image0, flash_id);
+ areadesc.add_image(0x040000, 0x020000, FlashId::Image1, flash_id);
+ areadesc.add_image(0x060000, 0x001000, FlashId::ImageScratch, flash_id);
(flash, areadesc)
}
DeviceName::K64fBig => {
@@ -348,10 +352,12 @@
// uses small sectors, but we tell the bootloader they are large.
let flash = SimFlash::new(vec![4096; 128], align as usize, erased_val);
- let mut areadesc = AreaDesc::new(&flash);
- areadesc.add_simple_image(0x020000, 0x020000, FlashId::Image0);
- areadesc.add_simple_image(0x040000, 0x020000, FlashId::Image1);
- areadesc.add_simple_image(0x060000, 0x020000, FlashId::ImageScratch);
+ let dev_id = 0;
+ let mut areadesc = AreaDesc::new();
+ areadesc.add_flash_sectors(dev_id, &flash);
+ areadesc.add_simple_image(0x020000, 0x020000, FlashId::Image0, dev_id);
+ areadesc.add_simple_image(0x040000, 0x020000, FlashId::Image1, dev_id);
+ areadesc.add_simple_image(0x060000, 0x020000, FlashId::ImageScratch, dev_id);
(flash, areadesc)
}
DeviceName::Nrf52840 => {
@@ -359,10 +365,12 @@
// does not divide into the image size.
let flash = SimFlash::new(vec![4096; 128], align as usize, erased_val);
- let mut areadesc = AreaDesc::new(&flash);
- areadesc.add_image(0x008000, 0x034000, FlashId::Image0);
- areadesc.add_image(0x03c000, 0x034000, FlashId::Image1);
- areadesc.add_image(0x070000, 0x00d000, FlashId::ImageScratch);
+ let dev_id = 0;
+ let mut areadesc = AreaDesc::new();
+ areadesc.add_flash_sectors(dev_id, &flash);
+ areadesc.add_image(0x008000, 0x034000, FlashId::Image0, dev_id);
+ areadesc.add_image(0x03c000, 0x034000, FlashId::Image1, dev_id);
+ areadesc.add_image(0x070000, 0x00d000, FlashId::ImageScratch, dev_id);
(flash, areadesc)
}
}