From 733a38a272cff812b643a4adb7a1b3f96c85e232 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Wed, 10 Nov 2021 03:46:56 +0000 Subject: [PATCH] update defmt deps to v0.3 (#56) * bump defmt to v0.3 remove Cargo features which are no longer needed * remove `timestamp!` it's no longer mandatory and a monotonic counter does not add much value given that `defmt-rtt` works by disabling interrupts so one won't see logs out of order anyways (which would the case for a lock-free multi-channel `Logger`) * use println! in most the examples so that all examples print something when `DEFMT_LOG` is unset * make overflow example terminate in less steps also include an estimate of the stack pointer to show the stack grows downwards towards the RAM boundary --- Cargo.toml | 25 +++++-------------------- src/bin/bitfield.rs | 2 +- src/bin/format.rs | 9 ++++++--- src/bin/hello.rs | 2 +- src/bin/levels.rs | 2 ++ src/bin/overflow.rs | 9 ++++++--- src/bin/panic.rs | 2 +- src/lib.rs | 11 +---------- testsuite/Cargo.toml | 28 ++++++---------------------- 9 files changed, 29 insertions(+), 61 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index fe68fa8..cecfd70 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,29 +9,14 @@ version = "0.1.0" members = ["testsuite"] [dependencies] -cortex-m = "0.7.1" -cortex-m-rt = "0.6.13" -defmt = "0.2.0" -defmt-rtt = "0.2.0" -panic-probe = { version = "0.2.0", features = ["print-defmt"] } +cortex-m = "0.7.3" +cortex-m-rt = "0.7.0" +defmt = "0.3.0" +defmt-rtt = "0.3.0" +panic-probe = { version = "0.3.0", features = ["print-defmt"] } # TODO(4) enter your HAL here # some-hal = "1.2.3" -[features] -# set logging levels here -default = [ - "defmt-default", - # "dependency-a/defmt-trace", -] - -# do NOT modify these features -defmt-default = [] -defmt-trace = [] -defmt-debug = [] -defmt-info = [] -defmt-warn = [] -defmt-error = [] - # cargo build/run [profile.dev] codegen-units = 1 diff --git a/src/bin/bitfield.rs b/src/bin/bitfield.rs index d9889b1..1e41fcb 100644 --- a/src/bin/bitfield.rs +++ b/src/bin/bitfield.rs @@ -7,7 +7,7 @@ use {{crate_name}} as _; // global logger + panicking-behavior + memory layout fn main() -> ! { // value of the FREQUENCY register (nRF52840 device; RADIO peripheral) let frequency: u32 = 276; - defmt::debug!("FREQUENCY: {0=0..7}, MAP: {0=8..9}", frequency); + defmt::println!("FREQUENCY: {0=0..7}, MAP: {0=8..9}", frequency); {{crate_name}}::exit() } diff --git a/src/bin/format.rs b/src/bin/format.rs index 30476f6..08ef2fc 100644 --- a/src/bin/format.rs +++ b/src/bin/format.rs @@ -17,10 +17,13 @@ struct S2 { #[cortex_m_rt::entry] fn main() -> ! { - let s = S1 { x: 42, y: S2 { z: 43 } }; - defmt::info!("s={:?}", s); + let s = S1 { + x: 42, + y: S2 { z: 43 }, + }; + defmt::println!("s={:?}", s); let x = 42; - defmt::info!("x={=u8}", x); + defmt::println!("x={=u8}", x); {{crate_name}}::exit() } diff --git a/src/bin/hello.rs b/src/bin/hello.rs index 4a39f24..d67bae6 100644 --- a/src/bin/hello.rs +++ b/src/bin/hello.rs @@ -5,7 +5,7 @@ use {{crate_name}} as _; // global logger + panicking-behavior + memory layout #[cortex_m_rt::entry] fn main() -> ! { - defmt::info!("Hello, world!"); + defmt::println!("Hello, world!"); {{crate_name}}::exit() } diff --git a/src/bin/levels.rs b/src/bin/levels.rs index a944130..612d2a4 100644 --- a/src/bin/levels.rs +++ b/src/bin/levels.rs @@ -5,6 +5,8 @@ use {{crate_name}} as _; // global logger + panicking-behavior + memory layout #[cortex_m_rt::entry] fn main() -> ! { + // try setting the DEFMT_LOG environment variable + // e.g. `export DEFMT_LOG=info` or `DEFMT_LOG=trace cargo rb levels` defmt::info!("info"); defmt::trace!("trace"); defmt::warn!("warn"); diff --git a/src/bin/overflow.rs b/src/bin/overflow.rs index 4e85b95..75ad68e 100644 --- a/src/bin/overflow.rs +++ b/src/bin/overflow.rs @@ -10,12 +10,15 @@ fn main() -> ! { } fn ack(m: u32, n: u32) -> u32 { - defmt::info!("ack(m={=u32}, n={=u32})", m, n); - let mut big = [2; 512]; + // waste stack space to trigger a stack overflow + let mut buffer = [0u8; 16 * 1024]; + // estimate of the Stack Pointer register + let sp = buffer.as_mut_ptr(); + defmt::println!("ack(m={=u32}, n={=u32}, SP={:x})", m, n, sp); + if m == 0 { n + 1 } else { - big[100] += 1; if n == 0 { ack(m - 1, 1) } else { diff --git a/src/bin/panic.rs b/src/bin/panic.rs index de9298f..587fdc1 100644 --- a/src/bin/panic.rs +++ b/src/bin/panic.rs @@ -5,7 +5,7 @@ use {{crate_name}} as _; // global logger + panicking-behavior + memory layout #[cortex_m_rt::entry] fn main() -> ! { - defmt::info!("main"); + defmt::println!("main"); defmt::panic!() } diff --git a/src/lib.rs b/src/lib.rs index 8b34265..506b5fd 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,8 +1,7 @@ #![no_std] -use core::sync::atomic::{AtomicUsize, Ordering}; - use defmt_rtt as _; // global logger + // TODO(5) adjust HAL import // use some_hal as _; // memory layout @@ -15,14 +14,6 @@ fn panic() -> ! { cortex_m::asm::udf() } -static COUNT: AtomicUsize = AtomicUsize::new(0); -defmt::timestamp!("{=usize}", { - // NOTE(no-CAS) `timestamps` runs with interrupts disabled - let n = COUNT.load(Ordering::Relaxed); - COUNT.store(n + 1, Ordering::Relaxed); - n -}); - /// Terminates the application and makes `probe-run` exit with exit-code = 0 pub fn exit() -> ! { loop { diff --git a/testsuite/Cargo.toml b/testsuite/Cargo.toml index 3567356..c81ac48 100644 --- a/testsuite/Cargo.toml +++ b/testsuite/Cargo.toml @@ -15,25 +15,9 @@ harness = false [dependencies] {{project-name}} = { path = ".." } -cortex-m = "0.7.1" -cortex-m-rt = "0.6.12" -defmt = "0.2.0" -defmt-rtt = "0.2.0" -defmt-test = "0.2.0" -panic-probe = { version = "0.2.0", features = ["print-defmt"] } - -[features] -# set logging levels here -default = [ - # in tests, enable all logs - "defmt-trace", - # "dependency-a/defmt-trace", -] - -# do NOT modify these features -defmt-default = [] -defmt-trace = [] -defmt-debug = [] -defmt-info = [] -defmt-warn = [] -defmt-error = [] +cortex-m = "0.7.3" +cortex-m-rt = "0.7.0" +defmt = "0.3.0" +defmt-rtt = "0.3.0" +defmt-test = "0.3.0" +panic-probe = { version = "0.3.0", features = ["print-defmt"] }