diff options
author | 2021-12-15 05:46:18 +0000 | |
---|---|---|
committer | 2021-12-15 05:46:18 +0000 | |
commit | 37facfb5bf9aca11c43868cb8880b12b9f6b336a (patch) | |
tree | 7e501c06dba421f6874dc5879e70192cedb4321a /macros | |
parent | 235484565d706d362f37c8bd388dbfff78401e8a (diff) | |
parent | d81a4da6fb759c5561eacf4d99d953526e1ee895 (diff) | |
download | rtic-37facfb5bf9aca11c43868cb8880b12b9f6b336a.tar.gz rtic-37facfb5bf9aca11c43868cb8880b12b9f6b336a.tar.zst rtic-37facfb5bf9aca11c43868cb8880b12b9f6b336a.zip |
Merge #562
562: Replace default WFI with simpler NOP r=korken89 a=AfoHT
As noted by #561 there are multiple issues with various hardware implementations and debugging together with sleep modes.
As RTIC strives to be a generic framework (even though this is an implementation targeting cortex-m) the decision having `WFI` as the default `idle` task causes issues in some hardware, raising the barrier to entry.
This changes the default behaviour to do a simple `NOP` instead, adding documentation how to provide a custom `idle` task achieving the old default behaviour. Also removes the automatic setting of SLEEPONEXIT bit when no `idle` was provided, delegating this to the user.
This was discussed on the weekly meeting 2021-12-14 and this was the favoured solution.
Fixes #561
Co-authored-by: Henrik Tjäder <henrik@grepit.se>
Diffstat (limited to 'macros')
-rw-r--r-- | macros/src/codegen/idle.rs | 2 | ||||
-rw-r--r-- | macros/src/codegen/pre_init.rs | 7 |
2 files changed, 1 insertions, 8 deletions
diff --git a/macros/src/codegen/idle.rs b/macros/src/codegen/idle.rs index d6539316..0dededa4 100644 --- a/macros/src/codegen/idle.rs +++ b/macros/src/codegen/idle.rs @@ -85,7 +85,7 @@ pub fn codegen( vec![], None, quote!(loop { - rtic::export::wfi() + rtic::export::nop() }), ) } diff --git a/macros/src/codegen/pre_init.rs b/macros/src/codegen/pre_init.rs index 42cc0552..7aaf20fc 100644 --- a/macros/src/codegen/pre_init.rs +++ b/macros/src/codegen/pre_init.rs @@ -122,12 +122,5 @@ pub fn codegen(app: &App, analysis: &Analysis, extra: &Extra) -> Vec<TokenStream )); } } - - // If there's no user `#[idle]` then optimize returning from interrupt handlers - if app.idle.is_none() { - // Set SLEEPONEXIT bit to enter sleep mode when returning from ISR - stmts.push(quote!(core.SCB.scr.modify(|r| r | 1 << 1);)); - } - stmts } |