aboutsummaryrefslogtreecommitdiff
path: root/examples/stm32f7/src/bin/hash.rs
diff options
context:
space:
mode:
authorCaleb Garrett <[email protected]>2024-02-03 16:10:00 -0500
committerCaleb Garrett <[email protected]>2024-02-03 16:10:00 -0500
commit72bbfec39d3f826c1a8dd485af2da4bcbdd32e35 (patch)
tree4a3ea34a01d552e4a897b4cda7ea0d4844eb4914 /examples/stm32f7/src/bin/hash.rs
parent10275309021d933d5dfe4c0a96928432e11cd8b4 (diff)
Added hash DMA implementation.
Diffstat (limited to 'examples/stm32f7/src/bin/hash.rs')
-rw-r--r--examples/stm32f7/src/bin/hash.rs20
1 files changed, 12 insertions, 8 deletions
diff --git a/examples/stm32f7/src/bin/hash.rs b/examples/stm32f7/src/bin/hash.rs
index 1fd0e87eb..a9f5aa197 100644
--- a/examples/stm32f7/src/bin/hash.rs
+++ b/examples/stm32f7/src/bin/hash.rs
@@ -4,27 +4,30 @@
4use defmt::info; 4use defmt::info;
5use embassy_executor::Spawner; 5use embassy_executor::Spawner;
6use embassy_stm32::Config; 6use embassy_stm32::Config;
7use embassy_time::{Duration, Instant}; 7use embassy_time::Instant;
8use {defmt_rtt as _, panic_probe as _}; 8use {defmt_rtt as _, panic_probe as _};
9 9
10use embassy_stm32::hash::*; 10use embassy_stm32::hash::*;
11use sha2::{Digest, Sha256}; 11use sha2::{Digest, Sha256};
12 12
13const TEST_STRING_1: &[u8] = b"hello world";
14
15#[embassy_executor::main] 13#[embassy_executor::main]
16async fn main(_spawner: Spawner) -> ! { 14async fn main(_spawner: Spawner) -> ! {
17 let config = Config::default(); 15 let config = Config::default();
18 let p = embassy_stm32::init(config); 16 let p = embassy_stm32::init(config);
19 17
18 let test_1: &[u8] = b"as;dfhaslfhas;oifvnasd;nifvnhasd;nifvhndlkfghsd;nvfnahssdfgsdafgsasdfasdfasdfasdfasdfghjklmnbvcalskdjghalskdjgfbaslkdjfgbalskdjgbalskdjbdfhsdfhsfghsfghfgh";
19 let test_2: &[u8] = b"fdhalksdjfhlasdjkfhalskdjfhgal;skdjfgalskdhfjgalskdjfglafgadfgdfgdafgaadsfgfgdfgadrgsyfthxfgjfhklhjkfgukhulkvhlvhukgfhfsrghzdhxyfufynufyuszeradrtydyytserr";
20
21 let mut hw_hasher = Hash::new(p.HASH, p.DMA2_CH7);
22
20 let hw_start_time = Instant::now(); 23 let hw_start_time = Instant::now();
21 24
22 // Compute a digest in hardware. 25 // Compute a digest in hardware.
23 let mut hw_hasher = Hash::new(p.HASH); 26 let mut context = hw_hasher.start(Algorithm::SHA256, DataType::Width8).await;
24 let mut context = hw_hasher.start(Algorithm::SHA256, DataType::Width8); 27 hw_hasher.update(&mut context, test_1).await;
25 hw_hasher.update(&mut context, TEST_STRING_1); 28 hw_hasher.update(&mut context, test_2).await;
26 let mut buffer: [u8; 32] = [0; 32]; 29 let mut buffer: [u8; 32] = [0; 32];
27 let hw_digest = hw_hasher.finish(context, &mut buffer); 30 let hw_digest = hw_hasher.finish(context, &mut buffer).await;
28 31
29 let hw_end_time = Instant::now(); 32 let hw_end_time = Instant::now();
30 let hw_execution_time = hw_end_time - hw_start_time; 33 let hw_execution_time = hw_end_time - hw_start_time;
@@ -33,7 +36,8 @@ async fn main(_spawner: Spawner) -> ! {
33 36
34 // Compute a digest in software. 37 // Compute a digest in software.
35 let mut sw_hasher = Sha256::new(); 38 let mut sw_hasher = Sha256::new();
36 sw_hasher.update(TEST_STRING_1); 39 sw_hasher.update(test_1);
40 sw_hasher.update(test_2);
37 let sw_digest = sw_hasher.finalize(); 41 let sw_digest = sw_hasher.finalize();
38 42
39 let sw_end_time = Instant::now(); 43 let sw_end_time = Instant::now();