Skip to content

Commit 796e495

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 Some more embassy crates are added to the patch list for consistency, it shouldn't have any functional change. Embassy requires around 512 bytes more BSS now (more DMA state was added) Signed-off-by: Matt Johnston <matt@codeconstruct.com.au>
1 parent 60ec683 commit 796e495

File tree

4 files changed

+86
-94
lines changed

4 files changed

+86
-94
lines changed

Cargo.lock

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

Cargo.toml

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ embassy-sync = { version = "0.7" }
1414
embassy-usb = { version = "0.5", default-features = false }
1515
embassy-usb-driver = { version = "0.2" }
1616
embassy-futures = { version = "0.1" }
17-
embassy-time = "0.4"
17+
embassy-time = "0.5"
1818
log = "0.4"
1919
rtt-target = "0.6"
2020
heapless = "0.8"
@@ -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,19 @@ 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" }
77+
embassy-sync = { git = "https://github.com/embassy-rs/embassy/", rev = "25e0ebf5206fa2e2906f5826c0b1587739f628d8" }
78+
embassy-futures = { git = "https://github.com/embassy-rs/embassy/", rev = "25e0ebf5206fa2e2906f5826c0b1587739f628d8" }
7579

7680

7781
# Updated for embassy-usb api change

src/main.rs

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -253,44 +253,47 @@ fn run(low_spawner: Spawner, logger: &'static multilog::MultiLog) {
253253

254254
let (usb_sender, usb_receiver) = mctpusb.split();
255255

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

273275
#[cfg(feature = "nvme-mi")]
274276
{
275-
let nvmemi = nvme_mi_task(router);
276-
medium_spawner.must_spawn(nvmemi);
277+
let nvmemi = nvme_mi_task(router).unwrap();
278+
medium_spawner.spawn(nvmemi);
277279
}
278280
#[cfg(feature = "pldm-file")]
279281
{
280-
let pldm_file = pldm::pldm_file_task(router, &PEER_NOTIFY, hash);
281-
medium_spawner.must_spawn(pldm_file);
282+
let pldm_file =
283+
pldm::pldm_file_task(router, &PEER_NOTIFY, hash).unwrap();
284+
medium_spawner.spawn(pldm_file);
282285
}
283286
#[cfg(feature = "mctp-bench")]
284287
{
285-
let bench = bench_task(router, &BENCH_REQUEST);
286-
low_spawner.must_spawn(bench);
288+
let bench = bench_task(router, &BENCH_REQUEST).unwrap();
289+
low_spawner.spawn(bench);
287290
}
288291
let _ = logger;
289292
#[cfg(feature = "log-usbserial")]
290293
{
291294
let (sender, _) = usbserial.split();
292-
let seriallog = multilog::log_usbserial_task(sender, logger);
293-
low_spawner.must_spawn(seriallog);
295+
let seriallog = multilog::log_usbserial_task(sender, logger).unwrap();
296+
low_spawner.spawn(seriallog);
294297
}
295298
}
296299

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)