Commit graph

311 commits

Author SHA1 Message Date
Emil Fresk
1341cc5bbe Broke out async dispatchers into their own place 2022-09-24 14:07:33 +02:00
Emil Fresk
b1d499a744 RA fixes 2022-08-27 19:42:59 +02:00
Emil Fresk
843fd42e20 Fix interrupt enum path in monotonic 2022-08-27 19:37:46 +02:00
Emil Fresk
bf54d4dc2b Fix xtask for async 2022-08-05 11:52:41 +02:00
Emil Fresk
46a3f2befd Fix UB in the access of Priority for asyc executors
The `Priority` was generated on the stack in the dispatcher
which caused it to be dropped after usage. This is now fixed
by having the `Priority` being a static variable for executors
2022-08-05 11:37:16 +02:00
Emil Fresk
b48a95e879 Fix codegen when having executor at multiple priorities
The codegen generated code for all executors in all
dispatchers, which caused some weird bugs.
Also the definition of an executor was not generated
globally, this caused use after free errors when having
multiple priority levels.
2022-08-05 09:00:46 +02:00
Emil Fresk
4488ac0421 Revert async idle 2022-08-03 20:49:32 +02:00
Emil Fresk
561bef45e7 async idle working 2022-08-03 11:30:32 +02:00
Emil Fresk
4a349653b4 Fix error based on retry queue 2022-08-03 11:30:32 +02:00
Emil Fresk
07bd57a20f Fix style 2022-08-03 11:30:32 +02:00
Emil Fresk
27b8aca673 Added intrusive linked list for the waker queue 2022-08-03 11:30:32 +02:00
Emil Fresk
2e9dba7c81 Fix use of parameters in async task 2022-08-03 11:30:32 +02:00
Emil Fresk
952bb5c431 Restart executor on finish if there are retries 2022-08-03 11:30:32 +02:00
Emil Fresk
b2ec1fa651 Example running, timeout and delay futures available 2022-08-03 11:30:32 +02:00
Emil Fresk
13ccd92e63 Starting to implement async task codgen 2022-08-03 11:30:32 +02:00
bors[bot]
b87fca3d21
Merge #652
652: Remove use of basepri register on thumbv8m.base r=AfoHT a=neonquill

The basepri register appears to be aviable on thumbv8m.main but not thumbv8m.base. At the very least, attempting to compile against a Cortex-M23 based Microchip ATSAML10E16A generates an error:

```
error[E0432]: unresolved import `cortex_m::register::basepri`
  --> /Users/dwatson/.cargo/registry/src/github.com-1ecc6299db9ec823/cortex-m-rtic-1.1.3/src/export.rs:25:5
   |
25 | use cortex_m::register::basepri;
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `basepri` in `register`
```

I wasn't sure if it made more sense to replace the `armv7m` config flag with something related to basepri availability or to get closer to matching the cortex-m use of several architecture specific flags. In the end i chose to make the minimal change possible and just narrowed the existing `thumbv8m` check.

Context:
[cortex-m:src/register/mod.rs](4e90862520/src/register/mod.rs (L33)):
```
#[cfg(all(not(armv6m), not(armv8m_base)))]
pub mod basepri;
```

[cortex-m:build.rs](4e90862520/build.rs (L21)):
```
    } else if target.starts_with("thumbv8m.base") {
        println!("cargo:rustc-cfg=cortex_m");
        println!("cargo:rustc-cfg=armv8m");
        println!("cargo:rustc-cfg=armv8m_base");
```

Co-authored-by: David Watson <david@neonquill.com>
2022-07-27 19:15:09 +00:00
David Watson
368ab1d4fb Remove use of basepri register on thumbv8m.base
The basepri register appears to be aviable on thumbv8m.main but not
thumbv8m.base. At the very least, attempting to compile against a
Cortex-M23 based Microchip ATSAML10E16A generates an error:

```
error[E0432]: unresolved import `cortex_m::register::basepri`
  --> /Users/dwatson/.cargo/registry/src/github.com-1ecc6299db9ec823/cortex-m-rtic-1.1.3/src/export.rs:25:5
   |
25 | use cortex_m::register::basepri;
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^ no `basepri` in `register`
```

This is an attempt to account for the fact that thumbv8m.base (M23)
MCUs don't have the BASEPRI register but have more than 32
interrupts. This moves away from the architecture specific config
flags and switches to a more functional flag.

Make the mask size depend on the max interrupt id

Rather than assuming a fixed interrupt count of 32 this code uses an
array of u32 bitmasks to calculate the priority mask. The size of this
array is calculated at compile time based on the size of the largest
interrupt id being used in the target code. For thumbv6m this should
be equivalent to the previous version that used a single u32 mask. For
thumbv8m.base it will be larger depending on the interrupts used.

Don't write 0s to the ISER and ICER registers

Writing 0s to these registers is a no-op. Since these masks should be
calculated at compile time, this conditional should result in writes
being optimized out of the code.

Prevent panic on non-arm targets

Panicking on unknown targets was breaking things like the doc build on
linux. This change should only panic when building on unknown arm
targets.
2022-07-27 21:04:24 +02:00
Gabriel Górski
b4cfc4db84 Fix missing formatting 2022-07-27 20:25:34 +02:00
Gabriel Górski
c6fd3cdd0a Allow custom link_section attributes for late resources
This commit makes RTIC aware of user-provided `link_section` attributes,
letting user override default section mapping.
2022-07-06 17:43:38 +02:00
Henrik Tjäder
8af754fc72 Bump rtic-syntax to v1.0.2 and fix Changelog 2022-06-23 13:36:14 +02:00
Emil Fresk
5c47aba1a1 Fix macros to Rust 2021 2022-05-24 19:42:02 +02:00
Emil Fresk
b15bda2d39 Fix clash with defmt 2022-05-24 08:31:31 +02:00
Emil Fresk
cd445165c5 More ergonomic error from static asserts messages 2022-05-17 20:20:59 +02:00
Emil Fresk
e5643ee94e Fixed warning from Rust Analyzer 2022-05-10 13:38:23 +02:00
Emil Fresk
906abba71e Prepare v1.1.2 2022-05-09 13:33:49 +02:00
Emil Fresk
0f8bdbdd3f Added check for resource usage and to generate an compile error for thumbv6 exceptions 2022-04-20 13:05:22 +02:00
Emil Fresk
9f38a39377 Masks take 3 2022-04-20 10:56:13 +02:00
Henrik Tjäder
4f99399e29 Release RTIC v1.1
Bump versions, including using using latest rtic-syntax
2022-04-13 08:27:17 +02:00
Per Lindgren
f86dab5ff3 Added support for SRP based scheduling for armv6m 2022-03-02 13:23:47 +01:00
Henrik Tjäder
5ed93bd1bf Clippy with pedantic suggestions 2022-02-22 18:56:21 +01:00
Henrik Tjäder
2c14c9bce3 rtic::mutex::prelude::* fixes glob import lint
rtic-core Mutex, Exclusive and multi-lock retained in
old location to not be backwards breaking
2022-02-18 18:42:19 +01:00
Henrik Tjäder
099544f655 Fix/mute clippy errors 2022-02-09 18:58:50 +01:00
Henrik Tjäder
9f54b4aca8 RTIC macro expansion: Try to find target-dir 2022-01-28 21:21:06 +01:00
bors[bot]
bc883e393d
Merge #565 #566
565: Edition: Bump to 2021 r=korken89 a=AfoHT



566: v1.0.0 r=korken89 a=AfoHT

This should fail building until all deps are released and accessible on crates.io

(There are some required PRs for edition2021 for each repo, alternatively just bringing in the v1.0 PR should have commits included, we can drop the extra PRs later on)

https://github.com/rtic-rs/rtic-monotonic/pull/6
https://github.com/rtic-rs/rtic-core/pull/22
https://github.com/rtic-rs/rtic-syntax/pull/68


Co-authored-by: Henrik Tjäder <henrik@grepit.se>
2021-12-25 15:05:26 +00:00
Henrik Tjäder
2b90cd3433 Bump version to 1.0.0 2021-12-25 14:59:27 +01:00
Henrik Tjäder
c297b4ee8d Clippy lints 2021-12-25 13:17:16 +01:00
Henrik Tjäder
8c8f7f12c3 Idle: Switch to NOP instead of WFI
Add example how to get old WFI behaviour
2021-12-14 22:18:17 +01:00
Henrik Tjäder
3741d431be Remove #[deny(warnings)], but deny warnings for CI 2021-11-25 10:46:29 +01:00
Henrik Tjäder
2e5c6f8e36 Docs: add RTIC logo 2021-11-25 10:06:58 +01:00
Emil Fresk
6f2aa08910 Better errors on when missing to lock shared resources 2021-11-11 14:22:47 +01:00
bors[bot]
b4929032d5
Merge #547
547: New monotonic trait r=AfoHT a=korken89



Co-authored-by: Emil Fresk <emil.fresk@gmail.com>
2021-11-09 10:15:11 +00:00
Emil Fresk
5ab5112271 Update versions and changelog 2021-11-09 11:12:04 +01:00
bors[bot]
4f3c5baf49
Merge #549
549: fix #543 r=korken89 a=andrewgazelka

The remaining PR to fix #543 alongside https://github.com/rtic-rs/rtic-syntax/pull/58

Co-authored-by: Andrew Gazelka <andrew.gazelka@gmail.com>
2021-11-09 09:52:28 +00:00
Emil Fresk
0dcb0c4e49 New monotonic trait working 2021-11-09 10:20:43 +01:00
Henrik Tjäder
0492d98916 Bump version to 0.6.0-rc.3 2021-11-08 20:42:04 +01:00
Henrik Tjäder
03af9b1994 Match new rtic-syntax naming of shared and local 2021-11-07 00:42:57 +01:00
Andrew Gazelka
fb092aa65a
fix #543 2021-11-03 13:01:53 -07:00
Emil Fresk
50017b96f0 Fixed aliasing in lock impl 2021-11-03 08:27:05 +01:00
Emil Fresk
d3d66c97ae Cleanup of resource initialization, no need to dereference 2021-11-03 08:26:45 +01:00
Emil Fresk
8065d741ac Fixed aliasing issue due to RacyCell implementation 2021-11-02 13:41:12 +01:00