diff options
| author | Caleb Garrett <[email protected]> | 2024-02-03 16:10:00 -0500 |
|---|---|---|
| committer | Caleb Garrett <[email protected]> | 2024-02-03 16:10:00 -0500 |
| commit | 72bbfec39d3f826c1a8dd485af2da4bcbdd32e35 (patch) | |
| tree | 4a3ea34a01d552e4a897b4cda7ea0d4844eb4914 /examples | |
| parent | 10275309021d933d5dfe4c0a96928432e11cd8b4 (diff) | |
Added hash DMA implementation.
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/stm32f7/src/bin/hash.rs | 20 |
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 @@ | |||
| 4 | use defmt::info; | 4 | use defmt::info; |
| 5 | use embassy_executor::Spawner; | 5 | use embassy_executor::Spawner; |
| 6 | use embassy_stm32::Config; | 6 | use embassy_stm32::Config; |
| 7 | use embassy_time::{Duration, Instant}; | 7 | use embassy_time::Instant; |
| 8 | use {defmt_rtt as _, panic_probe as _}; | 8 | use {defmt_rtt as _, panic_probe as _}; |
| 9 | 9 | ||
| 10 | use embassy_stm32::hash::*; | 10 | use embassy_stm32::hash::*; |
| 11 | use sha2::{Digest, Sha256}; | 11 | use sha2::{Digest, Sha256}; |
| 12 | 12 | ||
| 13 | const TEST_STRING_1: &[u8] = b"hello world"; | ||
| 14 | |||
| 15 | #[embassy_executor::main] | 13 | #[embassy_executor::main] |
| 16 | async fn main(_spawner: Spawner) -> ! { | 14 | async 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(); |
