diff --git a/Cargo.lock b/Cargo.lock index 08da16b..55dfba9 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -11,6 +11,14 @@ dependencies = [ "memchr", ] +[[package]] +name = "algorithms" +version = "0.1.0" +dependencies = [ + "criterion", + "iai", +] + [[package]] name = "as-slice" version = "0.2.1" @@ -52,14 +60,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8fe8f5a8a398345e52358e18ff07cc17a568fbca5c6f73873d3a62056309603" -[[package]] -name = "benches" -version = "0.1.0" -dependencies = [ - "criterion", - "iai", -] - [[package]] name = "bitfield" version = "0.13.2" @@ -396,6 +396,7 @@ checksum = "8d5439c4ad607c3c23abf66de8c8bf57ba8adcd1f129e699851a6e43935d339d" name = "nucleo-l053r8-benches" version = "0.1.0" dependencies = [ + "algorithms", "cortex-m", "cortex-m-rt", "defmt 1.0.1", diff --git a/Cargo.toml b/Cargo.toml index d3d43fd..28bdca5 100755 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,6 +14,7 @@ cortex-m-rt = "0.7.5" defmt = { version = "1.0.1" } defmt-rtt = { version = "1.0.0" } panic-probe = { version = "0.3", features = ["print-defmt"] } +algorithms = { path = "./crates/algorithms" } [features] default = ["buildscript"] diff --git a/crates/algorithms/Cargo.toml b/crates/algorithms/Cargo.toml index ff7044c..d677abe 100755 --- a/crates/algorithms/Cargo.toml +++ b/crates/algorithms/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "benches" +name = "algorithms" version = "0.1.0" edition = "2024" diff --git a/src/main.rs b/src/main.rs index 48d6833..7e64426 100755 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,8 @@ #![no_main] #![no_std] +use algorithms::crc::{Crc, Crc32 as Crc32Rust, ffi::Crc32 as Crc32C}; + use defmt::{debug, error, info, println, trace, warn}; use panic_probe as _; @@ -16,6 +18,8 @@ fn panic() -> ! { cortex_m::asm::udf() } +const DATA: &[u8] = b"hello world AAAAAAAAAAAAAAAAAAAAAAA"; + #[entry] fn main() -> ! { let dp = pac::Peripherals::take().unwrap(); @@ -34,6 +38,8 @@ fn main() -> ! { // Get the delay provider. let mut delay = cp.SYST.delay(rcc.clocks); + let mut crc; + #[allow(clippy::never_loop)] loop { println!("Hello World!"); @@ -46,6 +52,11 @@ fn main() -> ! { led.set_high().unwrap(); delay.delay_ms(500_u16); + crc = Crc32Rust::checksum(DATA); + info!("CRC (Rust): {:08x}", crc); + crc = Crc32C::checksum(DATA); + info!("CRC (C) : {:08x}", crc); + led.set_low().unwrap(); delay.delay_ms(500_u16); }