diff options
Diffstat (limited to 'embassy-boot/boot/src/lib.rs')
| -rw-r--r-- | embassy-boot/boot/src/lib.rs | 60 |
1 files changed, 17 insertions, 43 deletions
diff --git a/embassy-boot/boot/src/lib.rs b/embassy-boot/boot/src/lib.rs index 3109f2b47..8b94b6bdc 100644 --- a/embassy-boot/boot/src/lib.rs +++ b/embassy-boot/boot/src/lib.rs | |||
| @@ -89,13 +89,11 @@ mod tests { | |||
| 89 | const DFU: Partition = Partition::new(61440, 122880); | 89 | const DFU: Partition = Partition::new(61440, 122880); |
| 90 | let mut flash = MemFlash::<131072, 4096, 4>::random(); | 90 | let mut flash = MemFlash::<131072, 4096, 4>::random(); |
| 91 | 91 | ||
| 92 | let original: [u8; ACTIVE.len()] = [rand::random::<u8>(); ACTIVE.len()]; | 92 | let original = [rand::random::<u8>(); ACTIVE.size() as usize]; |
| 93 | let update: [u8; DFU.len()] = [rand::random::<u8>(); DFU.len()]; | 93 | let update = [rand::random::<u8>(); ACTIVE.size() as usize]; |
| 94 | let mut aligned = [0; 4]; | 94 | let mut aligned = [0; 4]; |
| 95 | 95 | ||
| 96 | for i in ACTIVE.from..ACTIVE.to { | 96 | flash.program(ACTIVE.from, &original).unwrap(); |
| 97 | flash.mem[i] = original[i - ACTIVE.from]; | ||
| 98 | } | ||
| 99 | 97 | ||
| 100 | let mut bootloader: BootLoader = BootLoader::new(ACTIVE, DFU, STATE); | 98 | let mut bootloader: BootLoader = BootLoader::new(ACTIVE, DFU, STATE); |
| 101 | let mut updater = FirmwareUpdater::new(DFU, STATE); | 99 | let mut updater = FirmwareUpdater::new(DFU, STATE); |
| @@ -110,14 +108,9 @@ mod tests { | |||
| 110 | .unwrap() | 108 | .unwrap() |
| 111 | ); | 109 | ); |
| 112 | 110 | ||
| 113 | for i in ACTIVE.from..ACTIVE.to { | 111 | flash.assert_eq(ACTIVE.from, &update); |
| 114 | assert_eq!(flash.mem[i], update[i - ACTIVE.from], "Index {}", i); | ||
| 115 | } | ||
| 116 | |||
| 117 | // First DFU page is untouched | 112 | // First DFU page is untouched |
| 118 | for i in DFU.from + 4096..DFU.to { | 113 | flash.assert_eq(DFU.from + 4096, &original); |
| 119 | assert_eq!(flash.mem[i], original[i - DFU.from - 4096], "Index {}", i); | ||
| 120 | } | ||
| 121 | 114 | ||
| 122 | // Running again should cause a revert | 115 | // Running again should cause a revert |
| 123 | assert_eq!( | 116 | assert_eq!( |
| @@ -127,14 +120,9 @@ mod tests { | |||
| 127 | .unwrap() | 120 | .unwrap() |
| 128 | ); | 121 | ); |
| 129 | 122 | ||
| 130 | for i in ACTIVE.from..ACTIVE.to { | 123 | flash.assert_eq(ACTIVE.from, &original); |
| 131 | assert_eq!(flash.mem[i], original[i - ACTIVE.from], "Index {}", i); | ||
| 132 | } | ||
| 133 | |||
| 134 | // Last page is untouched | 124 | // Last page is untouched |
| 135 | for i in DFU.from..DFU.to - 4096 { | 125 | flash.assert_eq(DFU.from, &update); |
| 136 | assert_eq!(flash.mem[i], update[i - DFU.from], "Index {}", i); | ||
| 137 | } | ||
| 138 | 126 | ||
| 139 | // Mark as booted | 127 | // Mark as booted |
| 140 | block_on(updater.mark_booted(&mut flash, &mut aligned)).unwrap(); | 128 | block_on(updater.mark_booted(&mut flash, &mut aligned)).unwrap(); |
| @@ -158,12 +146,10 @@ mod tests { | |||
| 158 | let mut state = MemFlash::<4096, 128, 4>::random(); | 146 | let mut state = MemFlash::<4096, 128, 4>::random(); |
| 159 | let mut aligned = [0; 4]; | 147 | let mut aligned = [0; 4]; |
| 160 | 148 | ||
| 161 | let original: [u8; ACTIVE.len()] = [rand::random::<u8>(); ACTIVE.len()]; | 149 | let original = [rand::random::<u8>(); ACTIVE.size() as usize]; |
| 162 | let update: [u8; DFU.len()] = [rand::random::<u8>(); DFU.len()]; | 150 | let update = [rand::random::<u8>(); ACTIVE.size() as usize]; |
| 163 | 151 | ||
| 164 | for i in ACTIVE.from..ACTIVE.to { | 152 | active.program(ACTIVE.from, &original).unwrap(); |
| 165 | active.mem[i] = original[i - ACTIVE.from]; | ||
| 166 | } | ||
| 167 | 153 | ||
| 168 | let mut updater = FirmwareUpdater::new(DFU, STATE); | 154 | let mut updater = FirmwareUpdater::new(DFU, STATE); |
| 169 | 155 | ||
| @@ -180,14 +166,9 @@ mod tests { | |||
| 180 | .unwrap() | 166 | .unwrap() |
| 181 | ); | 167 | ); |
| 182 | 168 | ||
| 183 | for i in ACTIVE.from..ACTIVE.to { | 169 | active.assert_eq(ACTIVE.from, &update); |
| 184 | assert_eq!(active.mem[i], update[i - ACTIVE.from], "Index {}", i); | ||
| 185 | } | ||
| 186 | |||
| 187 | // First DFU page is untouched | 170 | // First DFU page is untouched |
| 188 | for i in DFU.from + 4096..DFU.to { | 171 | dfu.assert_eq(DFU.from + 4096, &original); |
| 189 | assert_eq!(dfu.mem[i], original[i - DFU.from - 4096], "Index {}", i); | ||
| 190 | } | ||
| 191 | } | 172 | } |
| 192 | 173 | ||
| 193 | #[test] | 174 | #[test] |
| @@ -202,12 +183,10 @@ mod tests { | |||
| 202 | let mut dfu = MemFlash::<16384, 4096, 8>::random(); | 183 | let mut dfu = MemFlash::<16384, 4096, 8>::random(); |
| 203 | let mut state = MemFlash::<4096, 128, 4>::random(); | 184 | let mut state = MemFlash::<4096, 128, 4>::random(); |
| 204 | 185 | ||
| 205 | let original: [u8; ACTIVE.len()] = [rand::random::<u8>(); ACTIVE.len()]; | 186 | let original = [rand::random::<u8>(); ACTIVE.size() as usize]; |
| 206 | let update: [u8; DFU.len()] = [rand::random::<u8>(); DFU.len()]; | 187 | let update = [rand::random::<u8>(); ACTIVE.size() as usize]; |
| 207 | 188 | ||
| 208 | for i in ACTIVE.from..ACTIVE.to { | 189 | active.program(ACTIVE.from, &original).unwrap(); |
| 209 | active.mem[i] = original[i - ACTIVE.from]; | ||
| 210 | } | ||
| 211 | 190 | ||
| 212 | let mut updater = FirmwareUpdater::new(DFU, STATE); | 191 | let mut updater = FirmwareUpdater::new(DFU, STATE); |
| 213 | 192 | ||
| @@ -226,14 +205,9 @@ mod tests { | |||
| 226 | .unwrap() | 205 | .unwrap() |
| 227 | ); | 206 | ); |
| 228 | 207 | ||
| 229 | for i in ACTIVE.from..ACTIVE.to { | 208 | active.assert_eq(ACTIVE.from, &update); |
| 230 | assert_eq!(active.mem[i], update[i - ACTIVE.from], "Index {}", i); | ||
| 231 | } | ||
| 232 | |||
| 233 | // First DFU page is untouched | 209 | // First DFU page is untouched |
| 234 | for i in DFU.from + 4096..DFU.to { | 210 | dfu.assert_eq(DFU.from + 4096, &original); |
| 235 | assert_eq!(dfu.mem[i], original[i - DFU.from - 4096], "Index {}", i); | ||
| 236 | } | ||
| 237 | } | 211 | } |
| 238 | 212 | ||
| 239 | #[test] | 213 | #[test] |
