diff options
| author | Rasmus Melchior Jacobsen <[email protected]> | 2023-04-05 06:55:38 +0200 |
|---|---|---|
| committer | Rasmus Melchior Jacobsen <[email protected]> | 2023-04-05 06:55:38 +0200 |
| commit | 043b3072c46f1795e75b32b194f5dae1798ff2e4 (patch) | |
| tree | 803d0e973ba8859a0b5f694835fe6212ae19d0eb /embassy-boot/boot/src/lib.rs | |
| parent | 8256ac104405400a15aa9a6a2d9afe38a552a98b (diff) | |
| parent | 064ec9581e33fdd42f89ff75984254ccfec3f6c2 (diff) | |
Merge remote-tracking branch 'upstream/master' into incremental-hash
Diffstat (limited to 'embassy-boot/boot/src/lib.rs')
| -rw-r--r-- | embassy-boot/boot/src/lib.rs | 44 |
1 files changed, 10 insertions, 34 deletions
diff --git a/embassy-boot/boot/src/lib.rs b/embassy-boot/boot/src/lib.rs index d4078f1cb..605e5253c 100644 --- a/embassy-boot/boot/src/lib.rs +++ b/embassy-boot/boot/src/lib.rs | |||
| @@ -11,7 +11,7 @@ mod firmware_updater; | |||
| 11 | mod mem_flash; | 11 | mod mem_flash; |
| 12 | mod partition; | 12 | mod partition; |
| 13 | 13 | ||
| 14 | pub use boot_loader::{BootError, BootFlash, BootLoader, Flash, FlashConfig, MultiFlashConfig, SingleFlashConfig}; | 14 | pub use boot_loader::{BootError, BootFlash, BootLoader, FlashConfig, MultiFlashConfig, SingleFlashConfig}; |
| 15 | pub use firmware_updater::{FirmwareUpdater, FirmwareUpdaterError}; | 15 | pub use firmware_updater::{FirmwareUpdater, FirmwareUpdaterError}; |
| 16 | pub use partition::Partition; | 16 | pub use partition::Partition; |
| 17 | 17 | ||
| @@ -78,12 +78,8 @@ mod tests { | |||
| 78 | 78 | ||
| 79 | let mut bootloader: BootLoader = BootLoader::new(ACTIVE, DFU, STATE); | 79 | let mut bootloader: BootLoader = BootLoader::new(ACTIVE, DFU, STATE); |
| 80 | 80 | ||
| 81 | let mut magic = [0; 4]; | ||
| 82 | let mut page = [0; 4096]; | 81 | let mut page = [0; 4096]; |
| 83 | assert_eq!( | 82 | assert_eq!(State::Boot, bootloader.prepare_boot(&mut flash, &mut page).unwrap()); |
| 84 | State::Boot, | ||
| 85 | bootloader.prepare_boot(&mut flash, &mut magic, &mut page).unwrap() | ||
| 86 | ); | ||
| 87 | } | 83 | } |
| 88 | 84 | ||
| 89 | #[test] | 85 | #[test] |
| @@ -104,19 +100,14 @@ mod tests { | |||
| 104 | 100 | ||
| 105 | let mut bootloader: BootLoader = BootLoader::new(ACTIVE, DFU, STATE); | 101 | let mut bootloader: BootLoader = BootLoader::new(ACTIVE, DFU, STATE); |
| 106 | let mut updater = FirmwareUpdater::new(DFU, STATE); | 102 | let mut updater = FirmwareUpdater::new(DFU, STATE); |
| 107 | let mut offset = 0; | 103 | block_on(updater.write_firmware(0, &update, &mut flash)).unwrap(); |
| 108 | for chunk in update.chunks(4096) { | ||
| 109 | block_on(updater.write_firmware(offset, chunk, &mut flash)).unwrap(); | ||
| 110 | offset += chunk.len(); | ||
| 111 | } | ||
| 112 | block_on(updater.mark_updated(&mut flash, &mut aligned)).unwrap(); | 104 | block_on(updater.mark_updated(&mut flash, &mut aligned)).unwrap(); |
| 113 | 105 | ||
| 114 | let mut magic = [0; 4]; | 106 | let mut page = [0; 1024]; |
| 115 | let mut page = [0; 4096]; | ||
| 116 | assert_eq!( | 107 | assert_eq!( |
| 117 | State::Swap, | 108 | State::Swap, |
| 118 | bootloader | 109 | bootloader |
| 119 | .prepare_boot(&mut SingleFlashConfig::new(&mut flash), &mut magic, &mut page) | 110 | .prepare_boot(&mut SingleFlashConfig::new(&mut flash), &mut page) |
| 120 | .unwrap() | 111 | .unwrap() |
| 121 | ); | 112 | ); |
| 122 | 113 | ||
| @@ -133,7 +124,7 @@ mod tests { | |||
| 133 | assert_eq!( | 124 | assert_eq!( |
| 134 | State::Swap, | 125 | State::Swap, |
| 135 | bootloader | 126 | bootloader |
| 136 | .prepare_boot(&mut SingleFlashConfig::new(&mut flash), &mut magic, &mut page) | 127 | .prepare_boot(&mut SingleFlashConfig::new(&mut flash), &mut page) |
| 137 | .unwrap() | 128 | .unwrap() |
| 138 | ); | 129 | ); |
| 139 | 130 | ||
| @@ -151,7 +142,7 @@ mod tests { | |||
| 151 | assert_eq!( | 142 | assert_eq!( |
| 152 | State::Boot, | 143 | State::Boot, |
| 153 | bootloader | 144 | bootloader |
| 154 | .prepare_boot(&mut SingleFlashConfig::new(&mut flash), &mut magic, &mut page) | 145 | .prepare_boot(&mut SingleFlashConfig::new(&mut flash), &mut page) |
| 155 | .unwrap() | 146 | .unwrap() |
| 156 | ); | 147 | ); |
| 157 | } | 148 | } |
| @@ -177,25 +168,16 @@ mod tests { | |||
| 177 | 168 | ||
| 178 | let mut updater = FirmwareUpdater::new(DFU, STATE); | 169 | let mut updater = FirmwareUpdater::new(DFU, STATE); |
| 179 | 170 | ||
| 180 | let mut offset = 0; | 171 | block_on(updater.write_firmware(0, &update, &mut dfu)).unwrap(); |
| 181 | for chunk in update.chunks(2048) { | ||
| 182 | block_on(updater.write_firmware(offset, chunk, &mut dfu)).unwrap(); | ||
| 183 | offset += chunk.len(); | ||
| 184 | } | ||
| 185 | block_on(updater.mark_updated(&mut state, &mut aligned)).unwrap(); | 172 | block_on(updater.mark_updated(&mut state, &mut aligned)).unwrap(); |
| 186 | 173 | ||
| 187 | let mut bootloader: BootLoader = BootLoader::new(ACTIVE, DFU, STATE); | 174 | let mut bootloader: BootLoader = BootLoader::new(ACTIVE, DFU, STATE); |
| 188 | let mut magic = [0; 4]; | ||
| 189 | let mut page = [0; 4096]; | 175 | let mut page = [0; 4096]; |
| 190 | 176 | ||
| 191 | assert_eq!( | 177 | assert_eq!( |
| 192 | State::Swap, | 178 | State::Swap, |
| 193 | bootloader | 179 | bootloader |
| 194 | .prepare_boot( | 180 | .prepare_boot(&mut MultiFlashConfig::new(&mut active, &mut state, &mut dfu), &mut page) |
| 195 | &mut MultiFlashConfig::new(&mut active, &mut state, &mut dfu), | ||
| 196 | &mut magic, | ||
| 197 | &mut page | ||
| 198 | ) | ||
| 199 | .unwrap() | 181 | .unwrap() |
| 200 | ); | 182 | ); |
| 201 | 183 | ||
| @@ -230,22 +212,16 @@ mod tests { | |||
| 230 | 212 | ||
| 231 | let mut updater = FirmwareUpdater::new(DFU, STATE); | 213 | let mut updater = FirmwareUpdater::new(DFU, STATE); |
| 232 | 214 | ||
| 233 | let mut offset = 0; | 215 | block_on(updater.write_firmware(0, &update, &mut dfu)).unwrap(); |
| 234 | for chunk in update.chunks(4096) { | ||
| 235 | block_on(updater.write_firmware(offset, chunk, &mut dfu)).unwrap(); | ||
| 236 | offset += chunk.len(); | ||
| 237 | } | ||
| 238 | block_on(updater.mark_updated(&mut state, &mut aligned)).unwrap(); | 216 | block_on(updater.mark_updated(&mut state, &mut aligned)).unwrap(); |
| 239 | 217 | ||
| 240 | let mut bootloader: BootLoader = BootLoader::new(ACTIVE, DFU, STATE); | 218 | let mut bootloader: BootLoader = BootLoader::new(ACTIVE, DFU, STATE); |
| 241 | let mut magic = [0; 4]; | ||
| 242 | let mut page = [0; 4096]; | 219 | let mut page = [0; 4096]; |
| 243 | assert_eq!( | 220 | assert_eq!( |
| 244 | State::Swap, | 221 | State::Swap, |
| 245 | bootloader | 222 | bootloader |
| 246 | .prepare_boot( | 223 | .prepare_boot( |
| 247 | &mut MultiFlashConfig::new(&mut active, &mut state, &mut dfu,), | 224 | &mut MultiFlashConfig::new(&mut active, &mut state, &mut dfu,), |
| 248 | &mut magic, | ||
| 249 | &mut page | 225 | &mut page |
| 250 | ) | 226 | ) |
| 251 | .unwrap() | 227 | .unwrap() |
