From c1d8c8cf36e3d13daf0eb93b56d8e149acf55b27 Mon Sep 17 00:00:00 2001 From: Quentin Smith Date: Tue, 16 Aug 2022 01:17:28 -0400 Subject: Add example of rtos-trace / SystemView --- examples/nrf/src/bin/rtos_trace.rs | 64 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 examples/nrf/src/bin/rtos_trace.rs (limited to 'examples/nrf/src') diff --git a/examples/nrf/src/bin/rtos_trace.rs b/examples/nrf/src/bin/rtos_trace.rs new file mode 100644 index 000000000..8b4f5b755 --- /dev/null +++ b/examples/nrf/src/bin/rtos_trace.rs @@ -0,0 +1,64 @@ +#![no_std] +#![no_main] +#![feature(type_alias_impl_trait)] + +use core::task::Poll; + +use embassy_executor::executor::Spawner; +use embassy_executor::time::{Duration, Instant, Timer}; +use embassy_nrf::Peripherals; + +// N.B. systemview_target cannot be used at the same time as defmt_rtt. + +use rtos_trace; +use systemview_target::SystemView; +use panic_probe as _; +use log::*; + +static LOGGER: systemview_target::SystemView = systemview_target::SystemView::new(); +rtos_trace::global_trace!{SystemView} + +struct TraceInfo(); + +impl rtos_trace::RtosTraceApplicationCallbacks for TraceInfo { + fn system_description() {} + fn sysclock() -> u32 { + 64000000 + } +} +rtos_trace::global_application_callbacks!{TraceInfo} + +#[embassy_executor::task] +async fn run1() { + loop { + info!("DING DONG"); + Timer::after(Duration::from_ticks(16000)).await; + } +} + +#[embassy_executor::task] +async fn run2() { + loop { + Timer::at(Instant::from_ticks(0)).await; + } +} + +#[embassy_executor::task] +async fn run3() { + futures::future::poll_fn(|cx| { + cx.waker().wake_by_ref(); + Poll::<()>::Pending + }) + .await; +} + +#[embassy_executor::main] +async fn main(spawner: Spawner, _p: Peripherals) { + LOGGER.init(); + ::log::set_logger(&LOGGER).ok(); + ::log::set_max_level(::log::LevelFilter::Trace); + + spawner.spawn(run1()).unwrap(); + spawner.spawn(run2()).unwrap(); + spawner.spawn(run3()).unwrap(); +} -- cgit