aboutsummaryrefslogtreecommitdiff
path: root/examples/nrf
diff options
context:
space:
mode:
authorQuentin Smith <[email protected]>2022-08-18 01:38:58 -0400
committerQuentin Smith <[email protected]>2022-08-18 01:38:58 -0400
commit2edf532f8d8ce048137990bf74b07759428ed7c1 (patch)
tree116b1401bb040c3f60fcd2e9c6e591e05f7272b0 /examples/nrf
parent7dfe119fe0c7b99d7a6d73af6ac3fc6f7cef9d12 (diff)
Move rtos-trace example to a separate project to simplify Cargo.toml
Diffstat (limited to 'examples/nrf')
-rw-r--r--examples/nrf/Cargo.toml67
-rw-r--r--examples/nrf/build.rs1
-rw-r--r--examples/nrf/src/bin/rtos_trace.rs69
3 files changed, 12 insertions, 125 deletions
diff --git a/examples/nrf/Cargo.toml b/examples/nrf/Cargo.toml
index 8704f27c3..91edbd36d 100644
--- a/examples/nrf/Cargo.toml
+++ b/examples/nrf/Cargo.toml
@@ -4,71 +4,28 @@ name = "embassy-nrf-examples"
4version = "0.1.0" 4version = "0.1.0"
5 5
6[features] 6[features]
7default = ["defmt", "nightly"] 7default = ["nightly"]
8nightly = ["embassy-executor/nightly", "embassy-nrf/nightly", "embassy-nrf/unstable-traits", "embassy-usb", "embassy-usb-serial", "embassy-usb-hid", "embassy-usb-ncm", "embedded-io/async", "embassy-net"] 8nightly = ["embassy-executor/nightly", "embassy-nrf/nightly", "embassy-nrf/unstable-traits", "embassy-usb", "embassy-usb-serial", "embassy-usb-hid", "embassy-usb-ncm", "embedded-io/async", "embassy-net"]
9defmt = [
10 "dep:defmt",
11 "dep:defmt-rtt",
12 "embassy-util/defmt",
13 "embassy-executor/defmt",
14 "embassy-executor/defmt-timestamp-uptime",
15 "embassy-nrf/defmt",
16 "embassy-net/defmt",
17 "embassy-usb/defmt",
18 "embassy-usb-serial/defmt",
19 "embassy-usb-hid/defmt",
20 "embassy-usb-ncm/defmt",
21 "panic-probe/print-defmt",
22]
23log = [
24 "dep:log",
25 "embassy-util/log",
26 "embassy-executor/log",
27 "embassy-nrf/log",
28 "embassy-net/log",
29 "embassy-usb-ncm/log",
30 # Currently broken:
31 # "embassy-usb/log",
32 # "embassy-usb-serial/log",
33 # "embassy-usb-hid/log",
34]
35rtos-trace = [
36 "dep:rtos-trace",
37 "dep:systemview-target",
38 "embassy-executor/rtos-trace",
39 "embassy-executor/rtos-trace-interrupt",
40]
41 9
42[dependencies] 10[dependencies]
43embassy-util = { version = "0.1.0", path = "../../embassy-util" } 11embassy-util = { version = "0.1.0", path = "../../embassy-util", features = ["defmt"] }
44embassy-executor = { version = "0.1.0", path = "../../embassy-executor" } 12embassy-executor = { version = "0.1.0", path = "../../embassy-executor", features = ["defmt", "defmt-timestamp-uptime"] }
45embassy-nrf = { version = "0.1.0", path = "../../embassy-nrf", features = ["nrf52840", "time-driver-rtc1", "gpiote", "unstable-pac"] } 13embassy-nrf = { version = "0.1.0", path = "../../embassy-nrf", features = ["defmt", "nrf52840", "time-driver-rtc1", "gpiote", "unstable-pac"] }
46embassy-net = { version = "0.1.0", path = "../../embassy-net", features = ["tcp", "dhcpv4", "medium-ethernet", "pool-16"], optional = true } 14embassy-net = { version = "0.1.0", path = "../../embassy-net", features = ["defmt", "tcp", "dhcpv4", "medium-ethernet", "pool-16"], optional = true }
47embassy-usb = { version = "0.1.0", path = "../../embassy-usb", optional = true } 15embassy-usb = { version = "0.1.0", path = "../../embassy-usb", features = ["defmt"], optional = true }
48embassy-usb-serial = { version = "0.1.0", path = "../../embassy-usb-serial", optional = true } 16embassy-usb-serial = { version = "0.1.0", path = "../../embassy-usb-serial", features = ["defmt"], optional = true }
49embassy-usb-hid = { version = "0.1.0", path = "../../embassy-usb-hid", optional = true } 17embassy-usb-hid = { version = "0.1.0", path = "../../embassy-usb-hid", features = ["defmt"], optional = true }
50embassy-usb-ncm = { version = "0.1.0", path = "../../embassy-usb-ncm", optional = true } 18embassy-usb-ncm = { version = "0.1.0", path = "../../embassy-usb-ncm", features = ["defmt"], optional = true }
51embedded-io = "0.3.0" 19embedded-io = "0.3.0"
52 20
53defmt = { version = "0.3", optional = true } 21defmt = "0.3"
54defmt-rtt = { version = "0.3", optional = true } 22defmt-rtt = "0.3"
55 23
56cortex-m = "0.7.3" 24cortex-m = "0.7.3"
57cortex-m-rt = "0.7.0" 25cortex-m-rt = "0.7.0"
58panic-probe = { version = "0.3" } 26panic-probe = { version = "0.3", features = ["print-defmt"] }
59futures = { version = "0.3.17", default-features = false, features = ["async-await"] } 27futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
60rand = { version = "0.8.4", default-features = false } 28rand = { version = "0.8.4", default-features = false }
61embedded-storage = "0.3.0" 29embedded-storage = "0.3.0"
62usbd-hid = "0.5.2" 30usbd-hid = "0.5.2"
63serde = { version = "1.0.136", default-features = false } 31serde = { version = "1.0.136", default-features = false }
64rtos-trace = { version = "0.1.3", optional = true }
65systemview-target = { version = "0.1.1", optional = true, features = ["callbacks-app", "callbacks-os", "log", "cortex-m"] }
66log = { version = "0.4.17", optional = true }
67
68[[bin]]
69name = "rtos_trace"
70required-features = ["nightly", "rtos-trace"]
71
72[patch.crates-io]
73rtos-trace = { git = "https://gitlab.com/quentinmit/rtos-trace.git", branch = "build-fix" }
74systemview-target = { git = "https://gitlab.com/quentinmit/rtos-trace.git", branch = "build-fix" }
diff --git a/examples/nrf/build.rs b/examples/nrf/build.rs
index 36cdb65a8..30691aa97 100644
--- a/examples/nrf/build.rs
+++ b/examples/nrf/build.rs
@@ -31,6 +31,5 @@ fn main() {
31 31
32 println!("cargo:rustc-link-arg-bins=--nmagic"); 32 println!("cargo:rustc-link-arg-bins=--nmagic");
33 println!("cargo:rustc-link-arg-bins=-Tlink.x"); 33 println!("cargo:rustc-link-arg-bins=-Tlink.x");
34 #[cfg(feature = "defmt")]
35 println!("cargo:rustc-link-arg-bins=-Tdefmt.x"); 34 println!("cargo:rustc-link-arg-bins=-Tdefmt.x");
36} 35}
diff --git a/examples/nrf/src/bin/rtos_trace.rs b/examples/nrf/src/bin/rtos_trace.rs
deleted file mode 100644
index 5699fe8e2..000000000
--- a/examples/nrf/src/bin/rtos_trace.rs
+++ /dev/null
@@ -1,69 +0,0 @@
1#![no_std]
2#![no_main]
3#![feature(type_alias_impl_trait)]
4
5use core::task::Poll;
6
7use embassy_executor::executor::Spawner;
8use embassy_executor::time::{Duration, Instant, Timer};
9use embassy_nrf::Peripherals;
10#[cfg(feature = "log")]
11use log::*;
12use panic_probe as _;
13// N.B. systemview_target cannot be used at the same time as defmt_rtt.
14use rtos_trace;
15use systemview_target::SystemView;
16
17static LOGGER: systemview_target::SystemView = systemview_target::SystemView::new();
18rtos_trace::global_trace! {SystemView}
19
20struct TraceInfo();
21
22impl rtos_trace::RtosTraceApplicationCallbacks for TraceInfo {
23 fn system_description() {}
24 fn sysclock() -> u32 {
25 64000000
26 }
27}
28rtos_trace::global_application_callbacks! {TraceInfo}
29
30#[embassy_executor::task]
31async fn run1() {
32 loop {
33 #[cfg(feature = "log")]
34 info!("DING DONG");
35 #[cfg(not(feature = "log"))]
36 rtos_trace::trace::marker(13);
37 Timer::after(Duration::from_ticks(16000)).await;
38 }
39}
40
41#[embassy_executor::task]
42async fn run2() {
43 loop {
44 Timer::at(Instant::from_ticks(0)).await;
45 }
46}
47
48#[embassy_executor::task]
49async fn run3() {
50 futures::future::poll_fn(|cx| {
51 cx.waker().wake_by_ref();
52 Poll::<()>::Pending
53 })
54 .await;
55}
56
57#[embassy_executor::main]
58async fn main(spawner: Spawner, _p: Peripherals) {
59 LOGGER.init();
60 #[cfg(feature = "log")]
61 {
62 ::log::set_logger(&LOGGER).ok();
63 ::log::set_max_level(::log::LevelFilter::Trace);
64 }
65
66 spawner.spawn(run1()).unwrap();
67 spawner.spawn(run2()).unwrap();
68 spawner.spawn(run3()).unwrap();
69}