Commit graph

1750 commits

Author SHA1 Message Date
Jorge Aparicio
0ad311074e allow handlers to be named 'main'
`#[init]`, `#[idle]` and `#[task]` handlers can now be named `main`

fixes #311
2020-05-29 14:50:28 +02:00
Jorge Aparicio
3ed4fe3771 TODO(remove) codegen no-op 2020-05-26 22:21:32 +02:00
Jorge Aparicio
303e964a10 touch src/lib.rs 2020-05-26 22:16:31 +02:00
Jorge Aparicio
709e893d00 trigger incremental CI re-build 2020-05-26 22:08:49 +02:00
Jorge Aparicio
413ca089db do not optimize build deps 2020-05-26 21:43:11 +02:00
Russell Sim
7266ffe3a6
Update example to use better initial value
The example above this in the documentation states

```
        // semantically, the monotonic timer is frozen at time "zero" during `init`
        // NOTE do *not* call `Instant::now` in this context; it will return a nonsense value
        let now = cx.start; // the start time of the system
```

It results in weird scheduling issues, but still eventually works.  `cx.start` is much more reliable.

Relates to https://github.com/rtfm-rs/cortex-m-rtfm/issues/196
2020-05-26 07:33:18 +02:00
KENTARO OKUDA
6e59dacdc3 Update app.md 2020-05-13 07:35:51 -04:00
bors[bot]
7406f77a4e
Merge #306
306: Retain cfg-attributes on resources r=korken89 a=AfoHT

When rust 1.43 lands as stable this will resolve #301 and allow for the kind of conditional compilation exemplified in the issue.

Tested on beta and nightly.

Co-authored-by: Henrik Tjäder <henrik@tjaders.com>
2020-04-22 14:18:32 +00:00
Henrik Tjäder
f58f37b2b9 Retain cfg-attributes on resources 2020-04-22 09:26:13 +00:00
bors[bot]
bb59606b7c
Merge #307
307: Use build.rs for conditional compilation r=korken89 a=AfoHT

Extend the current test suite to allow for running tests on newer rustc-versions than current MSRV.

Required by #306 to add special tests for future MSRV.

To exclude an example from the regular non-nightly testing:

```
#![no_main]
#![no_std]

#[cfg(rustc_is_nightly)]
mod example {

    use panic_halt as _;

    #[rtfm::app(device = lm3s6965)]
    const APP: () = {
    <more code>
    }
}
```

Co-authored-by: Henrik Tjäder <henrik@tjaders.com>
2020-04-21 20:02:28 +00:00
Henrik Tjäder
0bd40dad7d Temporarily disable extra test stub since tests are not merged yet 2020-04-21 08:36:22 +00:00
Henrik Tjäder
61c0e66d11 Remove reference to example
This example will be reintroduced in #306 instead
2020-04-21 08:13:37 +00:00
Henrik Tjäder
fca678b874 Use buildrs for conditional compilation 2020-04-20 16:03:49 +00:00
bors[bot]
e870a68893
Merge #305
305: Updated dead links to SLEEPONEXIT reference on developer.arm.com r=korken89 a=FluenTech



Co-authored-by: Peter Taylor <40178570+FluenTech@users.noreply.github.com>
2020-04-14 19:50:17 +00:00
Peter Taylor
a49d51c4d2
fix SLEEPONEXIT reference link in Russian version 2020-04-13 09:39:03 -06:00
Peter Taylor
02f965ef09
correct SLEEPONEXIT reference link 2020-04-13 09:32:49 -06:00
bors[bot]
d77270adc2
Merge #297
297: Reference the correct example in the by-example book r=japaric a=AfoHT

closes #298 

Co-authored-by: Henrik Tjäder <henrik@tjaders.com>
2020-01-28 21:50:55 +00:00
bors[bot]
60c14ef680
Merge #294
294: use the safe DWT::unlock API r=korken89 a=japaric

instead of a unsafe write_volatile call

Co-authored-by: Jorge Aparicio <jorge@japaric.io>
2020-01-24 15:45:14 +00:00
Henrik Tjäder
1a1a1e2167 Reference the correct example 2020-01-24 15:34:41 +00:00
bors[bot]
03ac76a0a2
Merge #295
295: docs: do not use Instant::now in #[init] r=korken89 a=japaric



Co-authored-by: Jorge Aparicio <jorge@japaric.io>
2020-01-24 15:14:58 +00:00
Jorge Aparicio
b04103f6df docs: do not use Instant::now in #[init] 2020-01-21 22:23:20 +01:00
Jorge Aparicio
60639b3a9c use the safe DWT::unlock API
instead of a unsafe write_volatile call
2020-01-21 22:13:23 +01:00
bors[bot]
1e827e24d0
Merge #284
284: book, Russian lang: fix "idle not defined" typo r=burbull a=kolen

Fix typo in Russian translation of book, was "When idle function is declared", should be "When no idle function is declared"

"не" means "not".

Corresponding text in English:

```markdown
When no `idle` function is declared, the runtime sets the [SLEEPONEXIT] bit and
then sends the microcontroller to sleep after running `init`.
```

Co-authored-by: Konstantin Mochalov <incredible.angst@gmail.com>
2019-12-04 19:13:35 +00:00
Konstantin Mochalov
2be654116b
book, Russian lang: fix "idle not defined" typo
Fix typo in Russian translation of book, was "When idle function is declared", should be "When no idle function is declared"
2019-12-04 20:08:14 +03:00
bors[bot]
ffe4c07869
Merge #283
283: Include DWT enable in migration guide r=korken89 a=MabezDev

Makes note of the fact the DWT has to be enabled manually in rtfm 0.5.0; an easy one to miss considering debuggers generally enable the DWT automatically.

Co-authored-by: Scott Mabin <scott@mabez.dev>
2019-12-03 16:15:26 +00:00
Scott Mabin
864ec2ebc9 Update migration guide to include the enabling of the the DWT peripheral. Also makes note of enable trace with the DCB to allow the DWT to work without a debugger connected. 2019-12-03 11:33:24 +00:00
bors[bot]
11d9bcdbd1
Merge #280
280: Fixed link to API reference r=TeXitoi a=korken89



Co-authored-by: Emil Fresk <emil.fresk@gmail.com>
2019-11-19 19:01:04 +00:00
Emil Fresk
b6927fa63a Fixed link to API reference 2019-11-19 19:49:59 +01:00
bors[bot]
c103d46c00
Merge #279
279: Preparation for v0.5.1 r=perlindgren a=korken89



Co-authored-by: Emil Fresk <emil.fresk@gmail.com>
2019-11-19 15:01:06 +00:00
Emil Fresk
370cd54971 Preparation for v0.5.1 2019-11-19 15:46:07 +01:00
bors[bot]
82efffd706
Merge #277
277: TimerQueue.dequeue: don't set SYST reload to 0 r=korken89 a=mpasternacki

ARM Architecture Reference Manual says: "Setting SYST_RVR to zero has the effect of disabling the SysTick counter independently of the counter enable bit."

If Monotonic's ratio is less than one, the timeout calculations
can compute zero if next task is scheduled after current instant, but
before next timer tick. This results in disabling SYST and freezing the
timer queue.

The division by ratio's denominator rounds downward and the dequeue
condition is `if instant < now`. If ratio is small enough, this results
in unnecessary interrupts:

Let's say `instant - now` is 99 and ratio is 1/25. Then, `dur` will
equal 3 and the next tick will happen at `now + 75`. In the next
interrupt, `instant > now` and additional tick needs to be scheduled
(which doesn't happen, because now `instant - now` is less than 25, so
reload will be set to 0 and timer queue will stop). Adding one to
computed duration will prevent both freezing and additional interrupts.

When ratio is 1 or close, timer queue code overhead will prevent this
from happening. I am working with a chip where CPU is clocked at 600MHz
and SysTick is 100kHz and the freeze happens quite often.

Co-authored-by: Maciej Pasternacki <maciej@3ofcoins.net>
2019-11-19 14:00:22 +00:00
Maciej Pasternacki
fef738e832 TimerQueue.dequeue: don't set SYST reload to 0
ARM Architecture Reference Manual says: "Setting SYST_RVR to zero has the effect of disabling the SysTick counter independently of the counter enable bit."

If Monotonic's ratio is less than one, the timeout calculations
can compute zero if next task is scheduled after current instant, but
before next timer tick. This results in disabling SYST and freezing the
timer queue.
2019-11-19 00:07:14 +01:00
bors[bot]
8374fce0df
Merge #278
278: Cyccnt r=texitoi a=perlindgren

The subtractions in `elapsed` and `duration` may cause an overflow panic in debug mode. This is solved by using wrapping arithmetics.  


Co-authored-by: Per Lindgren <per.lindgren@ltu.se>
2019-11-18 20:07:06 +00:00
Per Lindgren
ebd62215ff Bumped version to 0.5.1, cyccntr bugfix 2019-11-18 16:38:52 +01:00
Per Lindgren
dfab15ed78 Fixed internal overflow on subtraiton in elapsed and duration 2019-11-18 16:36:17 +01:00
bors[bot]
725d5e1aa9
Merge #274
274: remove references to 'beta' from the docs r=perlindgren a=japaric



Co-authored-by: Jorge Aparicio <jorge@japaric.io>
2019-11-15 00:28:33 +00:00
bors[bot]
dc8115b5ab
Merge #275
275: fix CI r=perlindgren a=japaric

after caching was enabled binary install through the trust/install.sh script
stopped working (due to permissions?). This updates crate installation to use
`cargo-install` iff the requested version of a crate is not already installed

Co-authored-by: Jorge Aparicio <jorge@japaric.io>
2019-11-14 23:57:48 +00:00
Jorge Aparicio
7f863a9579 fix CI
after caching was enabled binary install through the trust/install.sh script
stopped working (due to permissions?). This updates crate installation to use
`cargo-install` iff the requested version of a crate is not already installed
2019-11-14 18:55:07 -05:00
Jorge Aparicio
73d5fa31c2 remove references to 'beta' from the docs 2019-11-14 18:19:57 -05:00
bors[bot]
f5655d6556
Merge #273
273: CI: fix caching mechanism r=perlindgren a=japaric



Co-authored-by: Jorge Aparicio <jorge@japaric.io>
2019-11-14 23:19:45 +00:00
Jorge Aparicio
8502fc262b CI: fix caching mechanism 2019-11-14 18:17:34 -05:00
bors[bot]
6b0a2df41c
Merge #272
272: v0.5.0 final release r=perlindgren a=japaric



Co-authored-by: Jorge Aparicio <jorge@japaric.io>
2019-11-14 22:49:56 +00:00
Jorge Aparicio
4fcb6ab7cc v0.5.0 final release 2019-11-14 17:47:17 -05:00
bors[bot]
e28294b220
Merge #271
271: Minor docs update to monotonic r=japaric a=korken89



Co-authored-by: Emil Fresk <emil.fresk@gmail.com>
2019-11-13 20:20:30 +00:00
Emil Fresk
2441b7e389 Minor docs update to monotonic 2019-11-13 21:19:59 +01:00
bors[bot]
85463ed6c3
Merge #268 #270
268: CI: replace compiletest-rs with trybuild r=japaric a=japaric

We use compiletest to run compile-fail tests but compiletest depends on compiler
internals so it breaks every now and then and requires nightly. With trybuild we
can also run compile-fail tests but it works on stable and it already has
reached version 1.0

270: Added struct de-structure-ing example in tips & tricks r=japaric a=korken89

As per last meeting, a bare-bones added that we can improve

Co-authored-by: Jorge Aparicio <jorge@japaric.io>
Co-authored-by: Emil Fresk <emil.fresk@gmail.com>
2019-11-13 19:50:15 +00:00
Emil Fresk
76e234599f Added struct de-structure-ing example in tips & tricks 2019-11-07 14:12:16 +01:00
Jorge Aparicio
e9a83947bc fix bash comparison 2019-11-06 19:48:02 -05:00
Jorge Aparicio
da9c6a714e run cfail tests only when rustc --version == $MSRV
this version is more or less fixed so new releases of Rust (stable or nightly
channel) are unlikely to break to build due to changes in diagnostic messages
2019-11-06 19:39:57 -05:00
Jorge Aparicio
31b392fe3a CI: replace compiletest-rs with trybuild
We use compiletest to run compile-fail tests but compiletest depends on compiler
internals so it breaks every now and then and requires nightly. With trybuild we
can also run compile-fail tests but it works on stable and it already has
reached version 1.0
2019-11-06 19:05:37 -05:00