Jorge Aparicio
45f9faae9c
document #[app]
2019-08-21 12:19:38 +02:00
Jorge Aparicio
a87cb2486f
change Monotonic::ratio return type to Fraction
2019-07-11 13:28:25 +02:00
Jorge Aparicio
596cf585ea
Monotonic trait is safe; add MultiCore trait
2019-06-24 14:09:12 +02:00
Jorge Aparicio
9897728709
add homogeneous multi-core support
2019-06-18 10:31:31 +02:00
Jorge Aparicio
81275bfa4f
rtfm-syntax refactor + heterogeneous multi-core support
2019-06-13 23:56:59 +02:00
Jorge Aparicio
30d6327001
bump heapless dependency to v0.5.0; remove "nightly" feature
...
with the upcoming version of heapless we are able to initialize all internal
queues in const context removing the need for late initialization
this commit also removes the "nightly" feature because all the optimization
provided by it are now enabled by default
2019-05-21 15:22:25 +02:00
Jorge Aparicio
fafc94ccfb
removes the maybe_uninit feature gate
...
and stop newtyping `core::mem::MaybeUninit`
2019-05-21 14:18:43 +02:00
Jorge Aparicio
a452700628
implement RFCs 147 and 155, etc.
...
This commit:
- Implements RFC 147: "all functions must be safe"
- Implements RFC 155: "explicit Context parameter"
- Implements the pending breaking change #141 : reject assign syntax in `init`
(which was used to initialize late resources)
- Refactors code generation to make it more readable -- there are no more random
identifiers in the output -- and align it with the book description of RTFM
internals.
- Makes the framework hard depend on `core::mem::MaybeUninit` and thus will
require nightly until that API is stabilized.
- Fixes a ceiling analysis bug where the priority of the system timer was not
considered in the analysis.
- Shrinks the size of all the internal queues by turning `AtomicUsize` indices
into `AtomicU8`s.
- Removes the integration with `owned_singleton`.
2019-05-01 20:49:25 +02:00
Jorge Aparicio
53f0ca1504
more nightly fixes
2019-04-16 23:41:00 +02:00
Jorge Aparicio
10d2638488
[NFC] fix nightly ci
2019-04-16 23:17:28 +02:00
bors[bot]
6b61cd2e3f
Merge #153
...
153: add "nightly" feature; replace hint::unreachable_unchecked with a panic r=korken89 a=japaric
this implements the action plan described in #149
to give you a sense of the overhead of this change: it has increased the binary
size of some of our examples by up to 10% but this is mainly from pulling in a
panic handler that does formatting
r? @korken89
Co-authored-by: Jorge Aparicio <jorge@japaric.io>
2019-02-23 19:37:29 +00:00
Jorge Aparicio
3973b420ec
add Duration.as_cycles
2019-02-19 17:14:34 +01:00
Jorge Aparicio
28ee83dfdd
turn all potential UB into panics
2019-02-19 13:13:16 +01:00
Jorge Aparicio
16821c8315
document the nightly feature
2019-02-19 13:13:16 +01:00
Jorge Aparicio
88078e7770
add "nightly" feature
2019-02-19 12:37:25 +01:00
Jorge Aparicio
7ce052be37
cargo fmt
2019-02-16 00:26:07 +01:00
Jorge Aparicio
2b8e743f35
make debug builds reproducible
2019-02-16 00:25:48 +01:00
Jorge Aparicio
1ba03b9f00
document MSRV and SemVer policy
2019-02-12 11:08:39 +01:00
Jorge Aparicio
0007a35a27
change layout of books
2019-02-11 21:40:53 +01:00
Jorge Aparicio
e7586f4a8a
impl Default for Duration
2019-02-08 11:54:41 +01:00
Eddy Petrișor
8ac179d8ee
Absolute link to the book so it works on crates.io
...
Signed-off-by: Eddy Petrișor <eddy.petrisor@gmail.com>
2019-01-09 01:56:21 +02:00
Jorge Aparicio
7de9687dfa
note that entering / leaving a critical section is always constant time
2018-12-17 01:43:12 +01:00
Jorge Aparicio
06c1e2f9b4
note that the timer queue is not supported on ARMv6-M
2018-12-16 19:38:22 +01:00
Jorge Aparicio
d35f5bc0b0
use edition idioms in the top crate
2018-12-16 19:16:19 +01:00
Jorge Aparicio
4345c10596
properly handle #[cfg] (conditional compilation) on resources
2018-12-16 18:37:36 +01:00
Jorge Aparicio
9757c33b00
use the single core variant of spsc::Queue
2018-12-16 01:11:54 +01:00
Jorge Aparicio
37a0692a0f
impl Mutex on all shared resources
...
document how to write generic code that operates on resources
2018-11-04 18:50:42 +01:00
Jorge Aparicio
c27efea6b7
fix some links
2018-11-03 19:29:44 +01:00
Jorge Aparicio
c631049efc
v0.4.0
...
closes #32
closes #33
2018-11-03 17:16:55 +01:00
Jorge Aparicio
abca829926
more fixes
2018-08-24 16:31:04 +02:00
Jorge Aparicio
d8eb3eac75
fix documentation link
2018-01-15 23:58:04 +01:00
Jorge Aparicio
def4fc8079
v0.3.0
2018-01-15 23:33:09 +01:00
Jorge Aparicio
1be43fc489
adapt to changes in the cortex-m crate
2018-01-11 20:56:45 +01:00
Jorge Aparicio
c94bd2d98d
add a Cargo feature, cm7-r0p1, to fix a Cortex-M7 BASEPRI erratum
2017-12-23 21:49:15 +01:00
Jorge Aparicio
219e172680
drop the Static wrapper
2017-12-09 17:15:15 +01:00
Jorge Aparicio
79e2b7dc2e
rename LateResourceValues to LateResources
2017-12-09 13:20:41 +01:00
Jorge Aparicio
e97afa71ce
peripherals as scoped singletons
2017-12-09 12:45:57 +01:00
Jorge Aparicio
948e1fd0fb
v0.2.2
2017-11-22 09:29:01 +01:00
Jonas Schievink
bbc873622d
Hide UntaggedOption
reexport
2017-09-22 13:45:28 +02:00
Jonas Schievink
57ed0963ff
Use untagged_option
crate
2017-09-06 19:06:43 +02:00
Jonas Schievink
7ebba49644
Allow initialization of resources in init
.
2017-09-03 18:19:21 +02:00
Jorge Aparicio
a43c8a4d57
v0.2.1
2017-07-29 01:50:04 -05:00
Jorge Aparicio
6160548153
v0.2.0
2017-07-29 01:17:54 -05:00
Jorge Aparicio
2d80f3631b
update examples
2017-07-29 00:46:38 -05:00
Jorge Aparicio
e85d6e53c8
update examples
2017-07-27 22:40:47 -05:00
Jorge Aparicio
d396da5950
make task.$T.enabled optional
...
and move the logic that differentiates interrupts from exceptions from the crate
to the procedural macro logic
2017-07-27 17:08:42 -05:00
Jorge Aparicio
ad2a523cf9
fix yet another warning on ARMv6-M
2017-07-27 15:15:19 -05:00
Jorge Aparicio
5e83dc295e
fix warning on ARMv6-M
2017-07-27 14:59:31 -05:00
Jorge Aparicio
0b5afce771
refactor Resource / Threshold into its own crate, drop task!, tweak rtfm::atomic
...
task! can be re-added in a backward compatible fashion and I'd like to not have
two ways to assign a task handler to an interrupt / exception in the first
release.
rtfm::atomic now uses the `Threshold` token instead of the `CriticalSection`
token. This reduces overhead by dropping the "are interrupts enabled?" check.
2017-07-27 11:37:58 -05:00
Jorge Aparicio
6a2ff0aede
inline claim
...
because it's needed for proper optimization / inlining
2017-07-25 22:30:41 -05:00
Jorge Aparicio
fb4542818b
task! is not needed if tasks.$T.path is specified
2017-07-24 22:46:29 -05:00
Jorge Aparicio
74daa77fe0
document task!
more
2017-07-23 22:35:05 -05:00
Jorge Aparicio
f3b397f460
drop rtfm::Cell
2017-07-23 20:51:37 -05:00
Jorge Aparicio
c64e7decfe
doc tweaks
2017-07-20 23:14:41 -05:00
Jorge Aparicio
0788a15a39
update CI
2017-07-20 23:03:45 -05:00
Jorge Aparicio
c7b9507a57
Resource
trait, docs, examples and rtfm-syntax related changes
2017-07-20 22:53:44 -05:00
Jorge Aparicio
6577f4a91a
bump cortex-m version to v0.3.1
...
barrier! is no longer needed
2017-07-20 16:13:02 -05:00
Jorge Aparicio
877a32448f
make compatible with the unsafe_code lint
2017-07-18 20:17:09 -05:00
Jorge Aparicio
97a7e38db7
tasks / idle have exclusive access to Threshold, but do not own the token
2017-07-18 20:03:22 -05:00
Jorge Aparicio
e9788ff9b6
rename rtfm! to app! and adapt to changes in rtfm-syntax
2017-07-14 20:47:06 -05:00
Jorge Aparicio
98596554b3
split macro parser into its own crate and improve error handling / reporting
2017-07-14 18:57:02 -05:00
Jorge Aparicio
59afbf02aa
compiler plugin -> proc macro
2017-07-11 23:44:54 -05:00
Jorge Aparicio
3cebf49a2f
syntax tweaks, relax check, add set_pending(), deal with imported types
...
- allow trailing commas in list of resources
- make task.resources optional
- add rtfm::set_pending function which can be used to force an interrupt into
the pending state. This is a replacement of the old rtfm::request.
rtfm::set_pending takes the Interrupt enum provided by the device crate as
argument. (The old rtfm::request took a task function as argument)
- the user may want to use types they imported into the root of the crate. These
types are not available in e.g. `mod idle` so `idle::Resources` *can't* be
defined in that module. To workaround this problem `idle::Resources` will be
defined in the root, with some other name, and then be re-exported in the
`idle` module.
- remove the "a resource only used by one task should be local data" check. In
some cases you do want a resource owned by a single task instead of local
data since `init` can access resources but not a task local data.
2017-07-06 23:25:29 -05:00
Jorge Aparicio
86a360a396
rtfm! macro take 2
2017-07-04 11:26:11 -05:00
Jorge Aparicio
984171edf6
fix unused macro error
2017-06-05 20:57:17 -05:00
Jorge Aparicio
b1e54883ac
make the register_block field optional in the peripherals! macro
...
with svd2rust 0.8.x peripheral types are written in UPPERCASE and match their
names so specifying the type in the register_block field is no longer necessary.
2017-05-25 16:39:26 -05:00
Jorge Aparicio
c1465b2117
fix links in the references section
2017-05-15 22:16:59 -05:00
Jorge Aparicio
5cecc12d4c
v0.1.0
2017-05-09 09:04:35 -05:00
Jorge Aparicio
acdfa6f09d
drop the Ceiling newtype
...
it's not required as the user never deal with Ceiling tokens
2017-05-08 13:27:29 -05:00
Jorge Aparicio
c1a0f8173a
require Resource protected data to be Send, make tokens !Send
2017-05-08 13:25:20 -05:00
Jorge Aparicio
fc4cb7d472
replace the ceiling token with a preemption threshold token
2017-05-08 12:05:42 -05:00
Jorge Aparicio
2063697c62
update examples
2017-04-28 09:23:30 -05:00
Jorge Aparicio
e2bde8d21a
make the ceiling part of the task signature
...
remove the P.as_ceiling method
2017-04-27 19:28:27 -05:00
Jorge Aparicio
ec2df608ca
make as_ceiling
a general method of P<N>
2017-04-27 18:34:21 -05:00
Jorge Aparicio
25f959d329
add categories
2017-04-27 15:37:27 -05:00
Jorge Aparicio
731dd54b5f
tweak attribution
2017-04-26 13:01:16 -05:00
Jorge Aparicio
404dde6f2a
rename rtfm::critical
to rtfm::atomic
, touch up the documentation
2017-04-25 21:51:07 -05:00
Jorge Aparicio
840c32060b
hide the unsafe Peripheral::new constructor
...
`peripherals!` is the safe way to declare `Peripheral`s
2017-04-25 19:46:33 -05:00
Jorge Aparicio
f9ada3f7f4
ignore no_mangle related warning
2017-04-25 17:42:34 -05:00
Jorge Aparicio
8659ecea72
add a peripherals!
macro
...
for safe declaration of `Peripheral`s
closes #12
2017-04-25 14:13:46 -05:00
Jorge Aparicio
e72687a366
fix build for thumbv6m
2017-04-25 11:09:51 -05:00
Jorge Aparicio
59cff5815b
update examples in doc comments
2017-04-25 10:24:17 -05:00
Jorge Aparicio
39c111a59a
change tasks! syntax to resemble struct initialization
2017-04-25 09:29:29 -05:00
Jorge Aparicio
62356da0be
update examples
2017-04-25 09:23:27 -05:00
Jorge Aparicio
3713959b3d
update the examples in the crate documentation
2017-04-21 22:45:23 -05:00
Jorge Aparicio
d2008e783d
add enable
/ disable
functions, add $enabled parameter to tasks!
2017-04-21 22:02:49 -05:00
Jorge Aparicio
d0ddc322e3
rename borrow
to access
2017-04-21 21:38:39 -05:00
Jorge Aparicio
296c88c49c
add borrow_mut
to Local
2017-04-21 21:25:10 -05:00
Jorge Aparicio
1c82f1b119
raise_to -> Ceiling.raise
2017-04-21 15:41:03 -05:00
Jorge Aparicio
3e165f2a42
drop lock
methods, add raise_to
function
2017-04-21 15:31:02 -05:00
Jorge Aparicio
854939fc6b
rename "system ceiling" to "current ceiling"
2017-04-21 08:38:30 -05:00
Jorge Aparicio
4992db7877
more docs, remove Ceiling / Priority / Level traits
2017-04-21 00:24:54 -05:00
Jorge Aparicio
0a6583ddc6
fix warning on thumbv6m-none-eabi
2017-04-20 10:56:33 -05:00
Jorge Aparicio
4e6818eb2c
remove claim, add Priority.as_ceiling
2017-04-19 17:21:13 -05:00
Jorge Aparicio
0827c40a26
remove the _mut methods
...
they are too limited
2017-04-19 16:35:07 -05:00
Jorge Aparicio
914e19d6a5
tasks! macro: update the signature of idle
2017-04-19 15:26:50 -05:00
Jorge Aparicio
aee3c2b29b
critical: don't let the ceiling token escape the critical section
2017-04-19 15:03:49 -05:00
Jorge Aparicio
aee1d785a9
don't let the ceiling token escape the critical section
2017-04-19 14:15:18 -05:00
pln
70f573a6c4
with new formatting (perhaps)
2017-04-17 18:59:56 +02:00
pln
dad3a1f520
pub interface to logical2hw and hw2logical
2017-04-17 18:40:56 +02:00