diff --git a/embassy-boot/boot/src/firmware_updater.rs b/embassy-boot/boot/src/firmware_updater.rs
index 6aedec003..a2f822f4a 100644
--- a/embassy-boot/boot/src/firmware_updater.rs
+++ b/embassy-boot/boot/src/firmware_updater.rs
@@ -114,11 +114,11 @@ impl FirmwareUpdater {
         _state_and_dfu_flash: &mut F,
         _public_key: &[u8],
         _signature: &[u8],
-        _update_len: usize,
+        _update_len: u32,
         _aligned: &mut [u8],
     ) -> Result<(), FirmwareUpdaterError> {
         assert_eq!(_aligned.len(), F::WRITE_SIZE);
-        assert!(_update_len as u32 <= self.dfu.size());
+        assert!(_update_len <= self.dfu.size());
 
         #[cfg(feature = "ed25519-dalek")]
         {
@@ -175,11 +175,10 @@ impl FirmwareUpdater {
     pub async fn hash<F: AsyncNorFlash, D: Digest>(
         &mut self,
         dfu_flash: &mut F,
-        update_len: usize,
+        update_len: u32,
         chunk_buf: &mut [u8],
         output: &mut [u8],
     ) -> Result<(), FirmwareUpdaterError> {
-        let update_len = update_len as u32;
         let mut digest = D::new();
         for offset in (0..update_len).step_by(chunk_buf.len()) {
             self.dfu.read(dfu_flash, offset, chunk_buf).await?;
@@ -335,11 +334,11 @@ impl FirmwareUpdater {
         _state_and_dfu_flash: &mut F,
         _public_key: &[u8],
         _signature: &[u8],
-        _update_len: usize,
+        _update_len: u32,
         _aligned: &mut [u8],
     ) -> Result<(), FirmwareUpdaterError> {
         assert_eq!(_aligned.len(), F::WRITE_SIZE);
-        assert!(_update_len as u32 <= self.dfu.size());
+        assert!(_update_len <= self.dfu.size());
 
         #[cfg(feature = "ed25519-dalek")]
         {
@@ -394,11 +393,10 @@ impl FirmwareUpdater {
     pub fn hash_blocking<F: NorFlash, D: Digest>(
         &mut self,
         dfu_flash: &mut F,
-        update_len: usize,
+        update_len: u32,
         chunk_buf: &mut [u8],
         output: &mut [u8],
     ) -> Result<(), FirmwareUpdaterError> {
-        let update_len = update_len as u32;
         let mut digest = D::new();
         for offset in (0..update_len).step_by(chunk_buf.len()) {
             self.dfu.read_blocking(dfu_flash, offset, chunk_buf)?;
@@ -529,7 +527,7 @@ mod tests {
         block_on(updater.write_firmware(0, to_write.as_slice(), &mut flash)).unwrap();
         let mut chunk_buf = [0; 2];
         let mut hash = [0; 20];
-        block_on(updater.hash::<_, Sha1>(&mut flash, update.len(), &mut chunk_buf, &mut hash)).unwrap();
+        block_on(updater.hash::<_, Sha1>(&mut flash, update.len() as u32, &mut chunk_buf, &mut hash)).unwrap();
 
         assert_eq!(Sha1::digest(update).as_slice(), hash);
     }
diff --git a/embassy-boot/boot/src/lib.rs b/embassy-boot/boot/src/lib.rs
index ef9333d36..87457b173 100644
--- a/embassy-boot/boot/src/lib.rs
+++ b/embassy-boot/boot/src/lib.rs
@@ -255,7 +255,7 @@ mod tests {
             &mut flash,
             &public_key.to_bytes(),
             &signature.to_bytes(),
-            firmware_len,
+            firmware_len as u32,
             &mut aligned,
         ))
         .is_ok());