Commit Graph

94 Commits

Author SHA1 Message Date
Dummyc0m
9e6e09a8d7 executor/spin: introduce an architecture agnostic executor
Spin polls the raw executor and never sleeps. It is useful for disabling
any power features associated with wfi/wfe-like instructions.

When implementing support for the CH32V30x MCU, the wfi instruction
had issues interacting with the USB OTG peripheral and appeared to be
non-spec-compliant.

1. When sending a USB Data-in packet, the USB peripheral appears to be
unable to read the system main memory while in WFI. This manifests in
the USB peripheral sending all or partially zeroed DATA packets.
Disabling WFI works around this issue.

2. The WFI instruction does not wake up the processor when MIE is
disabled. The MCU provides a WFITOWFE bit to emulate the WFE instruction
on arm, which, when enabled, ignores the MIE and allows the processor to
wake up. This works around the non-compliant WFI implementation.

Co-authored-by: Codetector <codetector@codetector.org>
Co-authored-by: Dummyc0m <y@types.moe>
2024-10-06 23:33:34 -07:00
Oleksandr Babak
1443f3386b
fix: remove stable nightly feature 2024-09-06 11:34:30 +02:00
Oleksandr Babak
01d8508b6c
fix: nightly api changed during the night 2024-09-06 11:16:44 +02:00
Tarun Singh
a716a3f006 Reduced define for 'unreachable!' to a single macro rule 2024-07-17 17:05:52 -04:00
Dario Nieuwenhuis
6a4ac5bd60 Add collapse_debuginfo to fmt.rs macros.
This makes location info in defmt logs point to the code calling the macro,
instead of always to fmt.rs as before. Fix works with nightlies
starting with today's, and stable 1.81+.
2024-06-17 01:38:57 +02:00
zjp
dd6a873447 minimize cfg code in task_from_waker 2024-06-13 07:59:28 +08:00
zjp
b780df5f76 put cfg code inside task_from_waker function 2024-06-13 07:33:40 +08:00
zjp
6b9470be2c fix warning on unused import 2024-06-09 11:50:32 +08:00
zjp
3f45ec6ead use nightly waker_getters APIs
Since https://github.com/rust-lang/rust/issues/96992 has stalled,
to prevent potential unsoundness caused by transmuting to &WakerHack,
we can use nightly waker_getters APIs by gating it behind nightly
feature in embassy-executor without waiting for it to be stablized.
2024-06-09 11:39:47 +08:00
Dario Nieuwenhuis
eca9aac194 Fix warnings in recent nightly. 2024-03-20 16:39:09 +01:00
Dario Nieuwenhuis
3d842dac85 fmt: disable "unused" warnings. 2024-03-20 14:53:19 +01:00
Zheng Li
2c42463205 executor: remove portable-atomic for riscv. 2024-03-02 00:21:56 +01:00
xgroleau🐢
262518cfe5 fix: removed trailing comma 2024-02-08 09:02:07 -05:00
xgroleau🐢
09613e90de fix: missing 0 2024-02-08 09:01:07 -05:00
xgroleau🐢
d48620d58f fix: compilation for rtos trace 2024-02-08 08:59:06 -05:00
xgroleau🐢
5f36108896 fix: rtos-usage time missing 2024-02-06 15:08:05 -05:00
Dario Nieuwenhuis
35f09374b5
Merge pull request #2273 from djdisodo/main
initial support for avr
2024-01-19 23:26:55 +01:00
Dario Nieuwenhuis
f0606da9ad time: split queue driver too, don't reexport drivers. 2024-01-11 23:01:24 +01:00
sodo
01dbe92783 fix 2024-01-03 12:35:07 +09:00
sodo
b0071c5070 avr: sleep fix 2024-01-02 14:55:35 +09:00
sodo
6ee153a3e2 Merge remote-tracking branch 'origin' 2024-01-02 13:34:22 +09:00
sodo
b7cd7952c8 avr: support sleep 2024-01-01 21:23:57 +09:00
Barnaby Walters
6bbc316312 [embassy-executor] improved documentation
* Feature auto-documentation
* Task arena sizes in a <details> list
* Non-documented comment explaining turbowakers with see-also link

Further improvements:

* Are the task-arena-size-* numbers sizes in bytes? or something else?
* Task arena section could benefit from advice about how to choose a
  suitable size
2023-12-22 19:05:16 +01:00
sodo
58d503a77d add avr support 2023-12-10 01:45:24 +09:00
Dario Nieuwenhuis
ac2aec4e7a executor: rename macro crate to embassy-executor-macros, bump it. 2023-12-07 00:48:30 +01:00
Dario Nieuwenhuis
ca3891bb8c executor: remove arch-xtensa.
It's been broken for months and nobody has noticed. The `esp*-hal` crates have
much better support.

Fixes #2234
Closes  #1912
2023-12-03 22:33:27 +01:00
Dario Nieuwenhuis
996c3c1f7e executor: make task arena size configurable. 2023-11-24 23:52:09 +01:00
Dario Nieuwenhuis
171cdb94c7 executor: add support for main/task macros in stable (allocates tasks in an arena) 2023-11-24 23:52:09 +01:00
Dario Nieuwenhuis
259cf6192b executor: Remove non-functional rtos-trace-interrupt. 2023-11-24 23:52:09 +01:00
Dario Nieuwenhuis
27e6634c9d executor: add faster ARM-specific impl.
Does a wake+poll in 79 cycles in nrf52840.
2023-11-15 18:47:11 +01:00
Dario Nieuwenhuis
bef9b7a853 executor: remove atomic-polyfill. 2023-11-15 18:43:27 +01:00
Dario Nieuwenhuis
50a983fd9b executor: add missing main macro reexport on xtensa. 2023-11-14 18:45:23 +01:00
Dániel Buga
8d8d50cc7a Yeet core::sync::atomic, remove futures-util dep 2023-11-06 17:35:02 +01:00
Dario Nieuwenhuis
1f51367eb9 Upgrade static-cell to v2.0 2023-11-02 21:52:07 +01:00
Dario Nieuwenhuis
e519e00265 Update Rust nightly. 2023-11-01 04:56:56 +01:00
Aleksandr Krotov
6b19c0abd1
Fix #2100 - function address comparison 2023-10-25 11:01:35 +03:00
Hailey Somerville
b9d4b18f14 update UninitCell::write call in arch::wasm too 2023-09-14 13:59:24 +10:00
Hailey Somerville
3a1ed823f8 write to TaskStorage::future via inline(never) fn to encourage RVO 2023-09-14 13:42:11 +10:00
Dario Nieuwenhuis
5e613d9abb Sync all fmt.rs files. 2023-08-30 01:37:18 +02:00
Dániel Buga
54e2e17520 Avoid dead code warning 2023-08-26 12:53:39 +02:00
Dániel Buga
0a73c84df0 Make AvailableTask public, deduplicate 2023-08-21 18:12:41 +02:00
Dániel Buga
890f29ccfe Update docs 2023-08-14 17:57:01 +02:00
Dániel Buga
e4f3979ec8 Don't check context if only thread-mode is enabled 2023-08-14 16:46:02 +02:00
Dániel Buga
07c3600127 Hide Pender 2023-08-14 16:35:48 +02:00
Dániel Buga
da4f15d944 Fix fn name 2023-08-14 16:34:10 +02:00
Dániel Buga
9954346143 Remove interrupt executor, remove PenderContext 2023-08-14 16:04:11 +02:00
Dániel Buga
3a51e2d9ca Make PenderContext actually pointer-size 2023-08-14 15:45:43 +02:00
Dániel Buga
986a63ebb8 Remove the non-specific thread-mode executor 2023-08-14 15:41:53 +02:00
Dániel Buga
4c4b12c307 Make PenderContext opaque 2023-08-14 15:16:40 +02:00
Dániel Buga
f6007869bf Remove the Pender enum 2023-08-14 09:00:08 +02:00