Skip to content

Commit 020c4d8

Browse files
committed
Update to latest embassy
This improves USB RX speed for PLDM file transfer from ~3700kB/s to ~4600kB/s, embassy-rs/embassy#4566 Signed-off-by: Matt Johnston <matt@codeconstruct.com.au>
1 parent cc52d70 commit 020c4d8

File tree

4 files changed

+100
-74
lines changed

4 files changed

+100
-74
lines changed

Cargo.lock

Lines changed: 64 additions & 43 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ cortex-m = { version = "0.7.6", features = ["inline-asm", "critical-section-sing
2323
# set-vtor and set-sp necessary when using xspiloader
2424
cortex-m-rt = { version = "0.7.0", features = ["set-sp", "set-vtor"] }
2525
panic-probe = { version = "1", features = ["print-rtt"] }
26-
embassy-executor = { version = "0.8", features = ["executor-thread"] }
27-
embassy-stm32 = { version = "0.3", features = ["time-driver-any", "stm32h7s3l8", "unstable-pac", "log"] }
26+
embassy-executor = { version = "0.9", features = ["executor-thread"] }
27+
embassy-stm32 = { version = "0.4", features = ["time-driver-any", "stm32h7s3l8", "unstable-pac", "log"] }
2828

2929
[dependencies]
3030
embassy-executor = { workspace = true, features = [
@@ -63,15 +63,17 @@ num-derive = { version = "0.4", default-features = false }
6363
num-traits = { version = "0.2", default-features = false }
6464

6565
[patch.crates-io]
66+
# Patches since releases:
6667
# "Fix vrefbuf trace with log" https://github.com/embassy-rs/embassy/pull/4553
67-
embassy-stm32 = { git = "https://github.com/embassy-rs/embassy/", rev = "a5cb04bdab602bc3bd056d254a9d61cad55bd967" }
68-
embassy-usb-synopsys-otg = { git = "https://github.com/embassy-rs/embassy/", rev = "a5cb04bdab602bc3bd056d254a9d61cad55bd967" }
68+
# "otg: Use chunks_exact for more efficient rx copy" https://github.com/embassy-rs/embassy/pull/4566
69+
embassy-stm32 = { git = "https://github.com/embassy-rs/embassy/", rev = "25e0ebf5206fa2e2906f5826c0b1587739f628d8" }
70+
embassy-usb-synopsys-otg = { git = "https://github.com/embassy-rs/embassy/", rev = "25e0ebf5206fa2e2906f5826c0b1587739f628d8" }
6971

70-
embassy-time = { git = "https://github.com/embassy-rs/embassy/", rev = "a5cb04bdab602bc3bd056d254a9d61cad55bd967" }
71-
embassy-time-driver = { git = "https://github.com/embassy-rs/embassy/", rev = "a5cb04bdab602bc3bd056d254a9d61cad55bd967" }
72-
embassy-usb = { git = "https://github.com/embassy-rs/embassy/", rev = "a5cb04bdab602bc3bd056d254a9d61cad55bd967" }
73-
embassy-usb-driver = { git = "https://github.com/embassy-rs/embassy/", rev = "a5cb04bdab602bc3bd056d254a9d61cad55bd967" }
74-
embassy-executor = { git = "https://github.com/embassy-rs/embassy/", rev = "a5cb04bdab602bc3bd056d254a9d61cad55bd967" }
72+
embassy-time = { git = "https://github.com/embassy-rs/embassy/", rev = "25e0ebf5206fa2e2906f5826c0b1587739f628d8" }
73+
embassy-time-driver = { git = "https://github.com/embassy-rs/embassy/", rev = "25e0ebf5206fa2e2906f5826c0b1587739f628d8" }
74+
embassy-usb = { git = "https://github.com/embassy-rs/embassy/", rev = "25e0ebf5206fa2e2906f5826c0b1587739f628d8" }
75+
embassy-usb-driver = { git = "https://github.com/embassy-rs/embassy/", rev = "25e0ebf5206fa2e2906f5826c0b1587739f628d8" }
76+
embassy-executor = { git = "https://github.com/embassy-rs/embassy/", rev = "25e0ebf5206fa2e2906f5826c0b1587739f628d8" }
7577

7678

7779
# Updated for embassy-usb api change

src/main.rs

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -251,44 +251,47 @@ fn run(low_spawner: Spawner, logger: &'static multilog::MultiLog) {
251251

252252
let (usb_sender, usb_receiver) = mctpusb.split();
253253

254-
let echo = echo_task(router, &BENCH_REQUEST);
255-
let timeout = timeout_task(router);
256-
let control = control_task(router, &CONTROL_NOTIFY);
257-
let usb_send_loop = usb::usb_send_task(mctp_usb_bottom, usb_sender);
254+
let echo = echo_task(router, &BENCH_REQUEST).unwrap();
255+
let timeout = timeout_task(router).unwrap();
256+
let control = control_task(router, &CONTROL_NOTIFY).unwrap();
257+
let usb_send_loop =
258+
usb::usb_send_task(mctp_usb_bottom, usb_sender).unwrap();
258259
let usb_recv_loop =
259-
usb::usb_recv_task(router, usb_receiver, Routes::USB_INDEX);
260-
let app_loop = usbnvme_app_task(&USB_NOTIFY, &CONTROL_NOTIFY, &PEER_NOTIFY);
261-
262-
low_spawner.must_spawn(blink_task(led));
263-
medium_spawner.must_spawn(echo);
264-
medium_spawner.must_spawn(timeout);
265-
medium_spawner.must_spawn(usb_recv_loop);
266-
medium_spawner.must_spawn(control);
267-
medium_spawner.must_spawn(app_loop);
260+
usb::usb_recv_task(router, usb_receiver, Routes::USB_INDEX).unwrap();
261+
let app_loop =
262+
usbnvme_app_task(&USB_NOTIFY, &CONTROL_NOTIFY, &PEER_NOTIFY).unwrap();
263+
264+
low_spawner.spawn(blink_task(led).unwrap());
265+
medium_spawner.spawn(echo);
266+
medium_spawner.spawn(timeout);
267+
medium_spawner.spawn(usb_recv_loop);
268+
medium_spawner.spawn(control);
269+
medium_spawner.spawn(app_loop);
268270
// high priority for usb send
269-
high_spawner.must_spawn(usb_send_loop);
271+
high_spawner.spawn(usb_send_loop);
270272

271273
#[cfg(feature = "nvme-mi")]
272274
{
273-
let nvmemi = nvme_mi_task(router);
274-
medium_spawner.must_spawn(nvmemi);
275+
let nvmemi = nvme_mi_task(router).unwrap();
276+
medium_spawner.spawn(nvmemi);
275277
}
276278
#[cfg(feature = "pldm-file")]
277279
{
278-
let pldm_file = pldm::pldm_file_task(router, &PEER_NOTIFY, hash);
279-
medium_spawner.must_spawn(pldm_file);
280+
let pldm_file =
281+
pldm::pldm_file_task(router, &PEER_NOTIFY, hash).unwrap();
282+
medium_spawner.spawn(pldm_file);
280283
}
281284
#[cfg(feature = "mctp-bench")]
282285
{
283286
let bench = bench_task(router, &BENCH_REQUEST);
284-
low_spawner.must_spawn(bench);
287+
low_spawner.spawn(bench);
285288
}
286289
let _ = logger;
287290
#[cfg(feature = "log-usbserial")]
288291
{
289292
let (sender, _) = usbserial.split();
290-
let seriallog = multilog::log_usbserial_task(sender, logger);
291-
low_spawner.must_spawn(seriallog);
293+
let seriallog = multilog::log_usbserial_task(sender, logger).unwrap();
294+
low_spawner.spawn(seriallog);
292295
}
293296
}
294297

src/usb.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ pub(crate) fn setup(
9494
let ret = (mctp,);
9595

9696
let usb = builder.build();
97-
spawner.must_spawn(usb_task(usb, state_notify));
97+
spawner.spawn(usb_task(usb, state_notify).unwrap());
9898

9999
ret
100100
}

0 commit comments

Comments
 (0)