aboutsummaryrefslogtreecommitdiff
path: root/embassy-boot/boot/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'embassy-boot/boot/src/lib.rs')
-rw-r--r--embassy-boot/boot/src/lib.rs60
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]