Commit Graph

4683 Commits

Author SHA1 Message Date
bors[bot]
c1e25067da
Merge #962
962: Update Rust nightly. r=Dirbaio a=Dirbaio



Co-authored-by: Dario Nieuwenhuis <dirbaio@dirbaio.net>
2022-09-22 14:39:02 +00:00
Dario Nieuwenhuis
897b72c872 Update Rust nightly.
Removes feature(generic_associated_types)
2022-09-22 16:38:14 +02:00
Dario Nieuwenhuis
9db9333d05
Merge pull request #15 from danbev/ioctl-header-type
Introduce IoctlType enum for IOCTL types
2022-09-22 14:17:09 +02:00
Daniel Bevenius
483edf694b Introduce IoctlType enum for IOCTL types
This commit introduces an enum to represent the IOCTL command types
available, the direction of the data transfer (Get and Set).
2022-09-22 14:12:07 +02:00
Andrew Ealovega
5914d80968 Add non blocking Bxcan constructor.
Signed-off-by: Andrew Ealovega <Andrew@Ealovega.dev>
2022-09-21 22:29:57 -04:00
Zoey Riordan
5f7e0eb2ae Fix builds on other nrf pacs 2022-09-21 14:06:56 +02:00
Zoey Riordan
15b4f9db90 Remove unused function 2022-09-21 11:19:47 +02:00
Zoey Riordan
0f55f5a73d Remove left-in comments and logs 2022-09-21 11:06:06 +02:00
Zoey Riordan
3d708a459c Implement proper Drop for BufferedUarte 2022-09-21 10:48:02 +02:00
bors[bot]
3b58ac1bf8
Merge #949
949: (embassy-rp): Implement RealTimeClock r=lulf a=MathiasKoch

Basically a 1:1 port of the great implementation effort made by `rp-hal`

Co-authored-by: Mathias <mk@blackbird.online>
2022-09-21 07:19:23 +00:00
Mathias
1d3e41f970 Remove code-duplication in async bufferedUart implementations 2022-09-21 06:00:35 +02:00
bors[bot]
44d7a84e47
Merge #957
957: Take into account size of revert index r=lulf a=lulf

Fixes a bug in the partition assertions that ensures that the state page(s) have enough space for 2x active partition range.

Add unit test to verify that panic is observed.

Co-authored-by: Ulf Lilleengen <ulf.lilleengen@gmail.com>
2022-09-20 12:56:46 +00:00
Ulf Lilleengen
b418c0e4d6 Take into account size of revert index
Fixes a bug in the partition assertions that ensures that the state
page(s) have enough space for 2x active partition range.

Add unit test to verify that panic is observed.
2022-09-20 14:04:57 +02:00
bors[bot]
11da25800b
Merge #956
956: Remove BootFlash borrow r=lulf a=lulf

Compiler will infer a different lifetime for BootFlash than for the borrowed flash, which makes it require more type annotations than if it was just owning the type. Since it doesn't really matter if it owns or borrows in practical use, change it to own so that it simplifies usage.

Co-authored-by: Ulf Lilleengen <ulf.lilleengen@gmail.com>
2022-09-20 07:55:20 +00:00
Ulf Lilleengen
d0fe654c82 Remove BootFlash borrow
Compiler will infer a different lifetime for BootFlash than for the
borrowed flash, which makes it require more type annotations than if it
was just owning the type. Since it doesn't really matter if it owns or
borrows in practical use, change it to own so that it simplifies usage.
2022-09-20 09:54:37 +02:00
bors[bot]
6663390224
Merge #954
954: rp: fix async SPI read and write r=lulf a=newAM

Closes #953 

Co-authored-by: Alex Martens <alex@thinglab.org>
2022-09-19 07:26:10 +00:00
bors[bot]
ac13675f3a
Merge #955
955: rp: remove extraneous newlines in logs r=Dirbaio a=newAM



Co-authored-by: Alex Martens <alex@thinglab.org>
2022-09-18 23:22:14 +00:00
Alex Martens
0c6933fefb rp: remove extraneous newlines in logs 2022-09-18 14:54:24 -07:00
Alex Martens
295cc997ae rp: let SPI RX overflow during async write 2022-09-18 12:23:17 -07:00
Alex Martens
ab1a6889a6 rp: fix async SPI read and write 2022-09-18 12:02:05 -07:00
Dario Nieuwenhuis
e7d30194e3
Merge pull request #18 from danbev/has_credit
Make self parameter to has_credit non-mutable
2022-09-18 20:57:23 +02:00
Daniel Bevenius
520860622b Make self parameter to has_credit non-mutable 2022-09-17 09:06:23 +02:00
bors[bot]
336ebe54c0
Merge #952
952: (embassy-rp): Feature-gate time-driver r=MathiasKoch a=MathiasKoch



Co-authored-by: Mathias <mk@blackbird.online>
2022-09-16 14:46:35 +00:00
Mathias
1c657d2d55 Add time-driver feature to docs 2022-09-16 16:45:59 +02:00
Mathias
c495c765df Enable embedded-io on nightly 2022-09-16 13:23:52 +02:00
Mathias
feb840c503 First iteration attempt on implementing generic flash mutation access for RP2040 2022-09-16 13:20:22 +02:00
Mathias
feead3ae89 Implement RealTimeClock for embassy-rp 2022-09-16 13:18:23 +02:00
Mathias
f7267d493f Feature-gate time-driver in embassy-rp 2022-09-16 12:54:26 +02:00
bors[bot]
ec10460547
Merge #950
950: Add .into_inner() and .get_mut() to Mutex r=Dirbaio a=hulthe

Similar to the methods on std Mutex, these methods allow accessing the underlying data without locking the mutex when you have exclusive access to it.

Co-authored-by: Joakim Hulthe <joakim@hulthe.net>
2022-09-16 10:32:12 +00:00
Joakim Hulthe
79654510b7
Make rustfmt happy 2022-09-16 10:45:01 +02:00
Joakim Hulthe
70a3b85acc
Add .into_inner() and .get_mut() to Mutex 2022-09-16 10:32:43 +02:00
Dario Nieuwenhuis
e727fe8675
Merge pull request #16 from danbev/alp
Add contants and update comment about ALP
2022-09-15 13:26:31 +02:00
Dario Nieuwenhuis
443e275f1f
Merge pull request #17 from danbev/channel-headers
Add constants for channel types
2022-09-15 13:26:04 +02:00
bors[bot]
9794bc59cc
Merge #948
948: (embassy-stm32): make `State::new()` const, consistent with others r=Dirbaio a=FrozenDroid



Co-authored-by: Vincent Stakenburg <v.stakenburg@sinewave.nl>
2022-09-15 11:14:24 +00:00
Vincent Stakenburg
c4d5c047d7 make State::new() const, consistent with others 2022-09-15 12:34:17 +02:00
Daniel Bevenius
96214f9db6 Add constants for channel types 2022-09-15 09:58:44 +02:00
bors[bot]
809a4a127b
Merge #946
946: sync/signal: wake old waker on overflow instead of panicking. r=Dirbaio a=Dirbaio

This makes behavior consistent with `WakerRegistration`. It allows canceling `wait` in one task and then calling `wait` in another. If two tasks are `wait`ing concurrently the signal will be received by only one of them, randomly.

Co-authored-by: Dario Nieuwenhuis <dirbaio@dirbaio.net>
2022-09-12 10:30:01 +00:00
Dario Nieuwenhuis
ea5f2c71e0 sync/signal: wake old waker on overflow instead of panicking.
This makes behavior consistent with `WakerRegistration`. It allows canceling `wait`
in one task and then calling `wait` in another. If two tasks are `wait`ing
concurrently the signal will be received by only one of them, randomly.
2022-09-12 12:05:58 +02:00
Daniel Bevenius
be20512f17 Add contants and update comment about ALP
This commit add two constants and updates the comment about ALP.

It was not easy to find the definition of ALP but after searching I
found what I believe is the correct definition in section 3.3 "Clocks"
in the referenced document below.

Active Low Power (ALP):
Supplied by an internal or external oscillator. This clock is
requested by cores when accessing backplane registers in other cores
or when performing minor computations. When an external crystal is
used to provide reference clock, ALP clock frequency is determined by
the frequency of the external oscillator. A 37.4 MHz reference clock
 is recommended.

Refs:
https://www.infineon.com/dgdl/Infineon-AN214828_Power_Consumption_Measurements-ApplicationNotes-v03_00-EN.pdf?fileId=8ac78c8c7cdc391c017d0d2803a4630d
2022-09-12 11:49:09 +02:00
Dario Nieuwenhuis
a19bcb69d1
Merge pull request #14 from danbev/ioctl_set_get_consts
Add constants for ioctl commands
2022-09-09 22:11:55 +02:00
Dario Nieuwenhuis
92136d27f6
Merge pull request #13 from danbev/update_credit_seq_max
Use wrapping_sub in update_credit
2022-09-09 22:11:16 +02:00
Daniel Bevenius
f0b7f43c41 Use wrapping_sub in update_credit
This commit uses wrapping_sub for subtraction in update_credit.

The motivation for this is that currently the rpi-pico-w example panics
(at least for me) with the following error:

3.825277 INFO  init done
└─ cyw43::{impl#4}::init::{async_fn#0} @ /embassy/cyw43/src/fmt.rs:138
3.825486 INFO  Downloading CLM...
└─ cyw43::{impl#2}::init::{async_fn#0} @ /embassy/cyw43/src/fmt.rs:138
3.841328 WARN  TX stalled
└─ cyw43::{impl#4}::run::{async_fn#0} @ /embassy/cyw43/src/fmt.rs:151
3.845549 ERROR panicked at 'attempt to subtract with overflow', /embassy/cyw43/src/lib.rs:919:16
└─ panic_probe::print_defmt::print @ .cargo/registry/src/github.com-1ecc6299db9ec823/panic-probe-0.3.0/src/lib.rs:91
────────────────────────────────────────────────────────────────────────────────
stack backtrace:
   0: HardFaultTrampoline
      <exception entry>
   1: lib::inline::__udf
        at ./asm/inline.rs:181:5
   2: __udf
        at ./asm/lib.rs:51:17
   3: cortex_m::asm::udf
        at .cargo/registry/src/github.com-1ecc6299db9ec823/cortex-m-0.7.6/src/asm.rs:43:5
   4: rust_begin_unwind
        at .cargo/registry/src/github.com-1ecc6299db9ec823/panic-probe-0.3.0/src/lib.rs:72:9
   5: core::panicking::panic_fmt
        at rustc/1c7b36d4db582cb47513a6c7176baaec1c3346ab/library/core/src/panicking.rs:142:14
   6: core::panicking::panic
        at /rustc/1c7b36d4db582cb47513a6c7176baaec1c3346ab/library/core/src/panicking.rs:48:5
   7: cyw43::Runner<PWR,SPI>::update_credit
        at /embassy/cyw43/src/lib.rs:919:16
   8: cyw43::Runner<PWR,SPI>::rx
        at /embassy/cyw43/src/lib.rs:808:9
   9: cyw43::Runner<PWR,SPI>::run::{{closure}}
        at /embassy/cyw43/src/lib.rs:727:21
  10: <core::future::from_generator::GenFuture<T> as core::future::future::Future>::poll
        at /rustc/1c7b36d4db582cb47513a6c7176baaec1c3346ab/library/core/src/future/mod.rs:91:19
  11: cyw43_example_rpi_pico_w::__wifi_task_task::{{closure}}
        at src/main.rs:32:17
2022-09-09 15:09:54 +02:00
Daniel Bevenius
fe5229670f Add constants for ioctl commands
This commit adds contants for the IOCTL commands that are currently
used in cyw43::Control.
2022-09-09 14:31:00 +02:00
Mathias
b2d0f8d590 Formatting 2022-09-09 10:49:47 +02:00
Mathias
31d85da78a Add bufferedUart, including a split version for only Rx or Tx 2022-09-09 10:48:52 +02:00
Mathias
9611e7c9f2 Add BufferedUart implementation, and feature-guard time-driver initialization, to free up TIMER peripheral if not used with embassy executor 2022-09-09 10:48:30 +02:00
Dario Nieuwenhuis
573c433f64
Merge pull request #945 from danbev/embassy-hal-common-typo
Fix typo in peripheral.rs
2022-09-08 19:09:32 +02:00
Daniel Bevenius
34ed3441ce Fix typo in peripheral.rs 2022-09-08 17:01:45 +02:00
bors[bot]
5886679006
Merge #941
941: Add critical-section/std to std feature r=lulf a=danbev

This commit suggests adding `critical-section/std` to the std feature as
without this a link time error is generated:
```console
 cargo r --bin main
    Updating git repository `https://github.com/embassy-rs/embassy`
    Updating crates.io index
   Compiling embassy-executor v0.1.0 (https://github.com/embassy-rs/embassy?branch=master#50af13d4)
   Compiling embassy-macros v0.1.0 (https://github.com/embassy-rs/embassy?branch=master#50af13d4)
   Compiling embassy-time v0.1.0 (https://github.com/embassy-rs/embassy?branch=master#50af13d4)
   Compiling embassy-exploration v0.1.0 (/home/danielbevenius/work/rust/learning-rust/embassy)
error: linking with `cc` failed: exit status: 1
  |
  = note: "cc" "-m64" "/tmp/rustcSRodQD/symbols.o" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/main-1832a615156f75e5.14ikas4ibqicm80d.rcgu.o" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/main-1832a615156f75e5.18i7scdiuioyv581.rcgu.o" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/main-1832a615156f75e5.1ok8uqc3ldhimh25.rcgu.o" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/main-1832a615156f75e5.1xqethf2arni74gv.rcgu.o" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/main-1832a615156f75e5.21vi9l5ujpxyqdul.rcgu.o" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/main-1832a615156f75e5.2ddnd7hcxhe0zt3p.rcgu.o" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/main-1832a615156f75e5.2sfet6lnlsxolfnj.rcgu.o" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/main-1832a615156f75e5.2woh8eris2teqn61.rcgu.o" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/main-1832a615156f75e5.3ed4nji3ub904efe.rcgu.o" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/main-1832a615156f75e5.3j1qr10cbnc5hdky.rcgu.o" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/main-1832a615156f75e5.3kcxk9i0yzeygir7.rcgu.o" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/main-1832a615156f75e5.3ztlzj8m8r2zg8uw.rcgu.o" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/main-1832a615156f75e5.4121l5kfb4jvrdx7.rcgu.o" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/main-1832a615156f75e5.4edu5yotynsqm8za.rcgu.o" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/main-1832a615156f75e5.4v8bu7v01yjurri4.rcgu.o" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/main-1832a615156f75e5.4vcoqtkqdc34e9mz.rcgu.o" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/main-1832a615156f75e5.56mjzsmaddhhm01o.rcgu.o" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/main-1832a615156f75e5.5a0f5kqacoiz75iw.rcgu.o" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/main-1832a615156f75e5.5cdnitb2zabtf8r6.rcgu.o" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/main-1832a615156f75e5.857b2iuurxhsdws.rcgu.o" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/main-1832a615156f75e5.vdaib0obomov020.rcgu.o" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/main-1832a615156f75e5.wuy7mahwirenj6w.rcgu.o" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/main-1832a615156f75e5.2vd161v9s1cmfe2q.rcgu.o" "-Wl,--as-needed" "-L" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps" "-L" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/build/defmt-585554c438e0da4a/out" "-L" "/home/danielbevenius/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libenv_logger-13edb7439f725ac4.rlib" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libatty-12c8601fe43875b5.rlib" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/liblibc-9edce8612524dfa4.rlib" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libtermcolor-6a61078d9610ba74.rlib" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libhumantime-69fede984985242f.rlib" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libregex-626fa72ec79b7aa5.rlib" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libaho_corasick-056f10d3df8fc98c.rlib" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libmemchr-e6bbee201eb478c9.rlib" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libregex_syntax-5e1cc215759dcea0.rlib" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/liblog-41607b4997ff699e.rlib" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libembassy_executor-3e221766d4969e83.rlib" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libcfg_if-90e3626e3c41eec3.rlib" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libstatic_cell-999da4360e12ca6a.rlib" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libembassy_time-b2d6b6cd79ad554e.rlib" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libdefmt-dd2e870ef9533c1d.rlib" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libbitflags-05dfd5b5d1225bed.rlib" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libfutures_util-5618995ea68d96a0.rlib" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libpin_project_lite-d4223cfaa04037d7.rlib" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libfutures_task-a4bc7de7fd258585.rlib" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libpin_utils-b7ff504f33cec58a.rlib" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libfutures_core-27e4b4b8992e0256.rlib" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libembedded_hal-5a6482b51eb4cf4d.rlib" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libvoid-7b6fd157ed8721ab.rlib" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libnb-36022c86298e770b.rlib" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libnb-80571a5b05fafda2.rlib" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libcritical_section-b3e8f14a54b3edad.rlib" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libatomic_polyfill-51ffda39a8157221.rlib" "-Wl,--start-group" "/home/danielbevenius/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-4393e7d07259b8a4.rlib" "/home/danielbevenius/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-e13cbb326bcd01a4.rlib" "/home/danielbevenius/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libobject-13ac6af5403a52c8.rlib" "/home/danielbevenius/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libmemchr-a7b8febdd2acb289.rlib" "/home/danielbevenius/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libaddr2line-343513f0726f71ed.rlib" "/home/danielbevenius/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgimli-8f833d900bfb98aa.rlib" "/home/danielbevenius/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-e97a7960ca6216c8.rlib" "/home/danielbevenius/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_detect-683fb35093a61fcc.rlib" "/home/danielbevenius/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-f943c2d34bd4b56d.rlib" "/home/danielbevenius/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libminiz_oxide-72ce2aaa649404e0.rlib" "/home/danielbevenius/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libadler-ac5d08ad5339e92e.rlib" "/home/danielbevenius/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-dacfda262d5656fb.rlib" "/home/danielbevenius/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-e2056a834ba0712c.rlib" "/home/danielbevenius/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-a60649c148c6e2db.rlib" "/home/danielbevenius/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-3e961d059b9bcde7.rlib" "/home/danielbevenius/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-20f26f875d0170e2.rlib" "/home/danielbevenius/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-522518611024dce5.rlib" "/home/danielbevenius/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-05898138a596088a.rlib" "-Wl,--end-group" "/home/danielbevenius/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-5b83a1df856cf582.rlib" "-Wl,-Bdynamic" "-lc" "-lm" "-lrt" "-lpthread" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-znoexecstack" "-L" "/home/danielbevenius/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/main-1832a615156f75e5" "-Wl,--gc-sections" "-pie" "-Wl,-zrelro,-znow" "-nodefaultlibs"
  = note: /usr/bin/ld: /home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libembassy_executor-3e221766d4969e83.rlib(embassy_executor-3e221766d4969e83.embassy_executor.0b7ca5ea-cgu.11.rcgu.o): in function `critical_section::acquire':
          /home/danielbevenius/.cargo/registry/src/github.com-1ecc6299db9ec823/critical-section-1.1.0/src/lib.rs:180: undefined reference to `_critical_section_1_0_acquire'
          /usr/bin/ld: /home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libembassy_executor-3e221766d4969e83.rlib(embassy_executor-3e221766d4969e83.embassy_executor.0b7ca5ea-cgu.11.rcgu.o): in function `critical_section::release':
          /home/danielbevenius/.cargo/registry/src/github.com-1ecc6299db9ec823/critical-section-1.1.0/src/lib.rs:197: undefined reference to `_critical_section_1_0_release'
          /usr/bin/ld: /home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libembassy_executor-3e221766d4969e83.rlib(embassy_executor-3e221766d4969e83.embassy_executor.0b7ca5ea-cgu.11.rcgu.o): in function `critical_section::acquire':
          /home/danielbevenius/.cargo/registry/src/github.com-1ecc6299db9ec823/critical-section-1.1.0/src/lib.rs:180: undefined reference to `_critical_section_1_0_acquire'
          /usr/bin/ld: /home/danielbevenius/work/rust/learning-rust/embassy/target/debug/deps/libembassy_executor-3e221766d4969e83.rlib(embassy_executor-3e221766d4969e83.embassy_executor.0b7ca5ea-cgu.11.rcgu.o): in function `critical_section::release':
          /home/danielbevenius/.cargo/registry/src/github.com-1ecc6299db9ec823/critical-section-1.1.0/src/lib.rs:197: undefined reference to `_critical_section_1_0_release'
          collect2: error: ld returned 1 exit status
          
  = help: some `extern` functions couldn't be found; some native libraries may need to be installed or have their path specified
  = note: use the `-l` flag to specify native libraries to link
  = note: use the `cargo:rustc-link-lib` directive to specify the native libraries to link with Cargo (see https://doc.rust-lang.org/cargo/reference/build-scripts.html#cargorustc-link-libkindname)

error: could not compile `embassy-exploration` due to previous error

```
I ran into this when updating an [example project](https://github.com/danbev/learning-rust/tree/master/embassy) I have to use `embassy-executor`. 

----
### Reproduce
Create a new project:
```console
$ cargo new --bin embassy-standalone
$ cd embassy-standalone
```
Update `Cargo.toml`:
```toml
[package]                                                                       
name = "embassy-standalone"                                                        
version = "0.1.0"                                                                  
edition = "2021"                                                                
                                                                                
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
                                                                                
[dependencies]                                                                  
embassy-executor = { version = "0.1.0", features = ["std", "integrated-timers", "nightly"] }
embassy-time = { version = "0.1.0", features = ["defmt", "defmt-timestamp-uptime", "std", "nightly"] }
log = "0.4.14"                                                                  
env_logger = "0.9.0"                                                            
#critical-section = { version = "1.1", features = [ "std" ] }                    
                                                                                
[patch.crates-io]                                                               
embassy-executor = { git = "https://github.com/embassy-rs/embassy", branch = "master" }
embassy-time = { git = "https://github.com/embassy-rs/embassy", branch = "master" }
```
Notice the commented out `critical-section` dependency which will produces the link error. 

Update `src/main.rs` with the code from [embassy.dev/dev/examples.html](https://embassy.dev/dev/examples.html):
```rust
#![feature(type_alias_impl_trait)]

use embassy_executor::Spawner;
use embassy_time::{Duration, Timer};
use log::*;

#[embassy_executor::task]
async fn run() {
    loop {
        info!("tick");
        Timer::after(Duration::from_secs(1)).await;
    }
}

#[embassy_executor::main]
async fn main(spawner: Spawner) {
    env_logger::builder()
        .filter_level(log::LevelFilter::Debug)
        .format_timestamp_nanos()
        .init();

    spawner.spawn(run()).unwrap();
}
```
Running the example:
```console
$ cargo r
```

Co-authored-by: Daniel Bevenius <daniel.bevenius@gmail.com>
2022-09-08 07:10:01 +00:00
Daniel Bevenius
7004b095c3 Add critical-section/std to std feature
This commit suggests adding critical-section/std to the std feature as
without this a link time error is generated.
2022-09-08 06:03:43 +02:00