Compare commits
9 Commits
usb-fixes3
...
embassy-ex
Author | SHA1 | Date | |
---|---|---|---|
584fc358fd | |||
b8f9341edc | |||
7ca557b917 | |||
8d8d50cc7a | |||
5948d934d3 | |||
746936f8cd | |||
8f543062aa | |||
15660cfc68 | |||
74f70dc7b4 |
@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## 0.3.2 - 2023-11-06
|
||||||
|
|
||||||
|
- Use `atomic-polyfill` for `riscv32`
|
||||||
|
- Removed unused dependencies (static_cell, futures-util)
|
||||||
|
|
||||||
## 0.3.1 - 2023-11-01
|
## 0.3.1 - 2023-11-01
|
||||||
|
|
||||||
- Fix spurious "Found waker not created by the Embassy executor" error in recent nightlies.
|
- Fix spurious "Found waker not created by the Embassy executor" error in recent nightlies.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "embassy-executor"
|
name = "embassy-executor"
|
||||||
version = "0.3.1"
|
version = "0.3.2"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
license = "MIT OR Apache-2.0"
|
license = "MIT OR Apache-2.0"
|
||||||
description = "async/await executor designed for embedded usage"
|
description = "async/await executor designed for embedded usage"
|
||||||
@ -57,7 +57,6 @@ defmt = { version = "0.3", optional = true }
|
|||||||
log = { version = "0.4.14", optional = true }
|
log = { version = "0.4.14", optional = true }
|
||||||
rtos-trace = { version = "0.1.2", optional = true }
|
rtos-trace = { version = "0.1.2", optional = true }
|
||||||
|
|
||||||
futures-util = { version = "0.3.17", default-features = false }
|
|
||||||
embassy-macros = { version = "0.2.1", path = "../embassy-macros" }
|
embassy-macros = { version = "0.2.1", path = "../embassy-macros" }
|
||||||
embassy-time = { version = "0.1.5", path = "../embassy-time", optional = true}
|
embassy-time = { version = "0.1.5", path = "../embassy-time", optional = true}
|
||||||
atomic-polyfill = "1.0.1"
|
atomic-polyfill = "1.0.1"
|
||||||
|
@ -6,8 +6,8 @@ pub use thread::*;
|
|||||||
#[cfg(feature = "executor-thread")]
|
#[cfg(feature = "executor-thread")]
|
||||||
mod thread {
|
mod thread {
|
||||||
use core::marker::PhantomData;
|
use core::marker::PhantomData;
|
||||||
use core::sync::atomic::{AtomicBool, Ordering};
|
|
||||||
|
|
||||||
|
use atomic_polyfill::{AtomicBool, Ordering};
|
||||||
#[cfg(feature = "nightly")]
|
#[cfg(feature = "nightly")]
|
||||||
pub use embassy_macros::main_riscv as main;
|
pub use embassy_macros::main_riscv as main;
|
||||||
|
|
||||||
|
@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## Unreleased
|
||||||
|
|
||||||
|
- Avoid never resolving `TcpIo::read` when the output buffer is empty.
|
||||||
|
|
||||||
## 0.2.1 - 2023-10-31
|
## 0.2.1 - 2023-10-31
|
||||||
|
|
||||||
- Re-add impl_trait_projections
|
- Re-add impl_trait_projections
|
||||||
|
@ -390,6 +390,13 @@ impl<'d> TcpIo<'d> {
|
|||||||
// CAUTION: smoltcp semantics around EOF are different to what you'd expect
|
// CAUTION: smoltcp semantics around EOF are different to what you'd expect
|
||||||
// from posix-like IO, so we have to tweak things here.
|
// from posix-like IO, so we have to tweak things here.
|
||||||
self.with_mut(|s, _| match s.recv_slice(buf) {
|
self.with_mut(|s, _| match s.recv_slice(buf) {
|
||||||
|
// Reading into empty buffer
|
||||||
|
Ok(0) if buf.is_empty() => {
|
||||||
|
// embedded_io_async::Read's contract is to not block if buf is empty. While
|
||||||
|
// this function is not a direct implementor of the trait method, we still don't
|
||||||
|
// want our future to never resolve.
|
||||||
|
Poll::Ready(Ok(0))
|
||||||
|
}
|
||||||
// No data ready
|
// No data ready
|
||||||
Ok(0) => {
|
Ok(0) => {
|
||||||
s.register_recv_waker(cx.waker());
|
s.register_recv_waker(cx.waker());
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
|
use crate::pac::pwr::vals::Vos;
|
||||||
pub use crate::pac::rcc::vals::{
|
pub use crate::pac::rcc::vals::{
|
||||||
Hpre as AHBPrescaler, Pllm as PllPreDiv, Plln as PllMul, Pllp, Pllq, Pllr, Pllsrc as PllSource,
|
Hpre as AHBPrescaler, Pllm as PllPreDiv, Plln as PllMul, Pllp, Pllq, Pllr, Pllsrc as PllSource,
|
||||||
Ppre as APBPrescaler, Sw as Sysclk,
|
Ppre as APBPrescaler, Sw as Sysclk,
|
||||||
};
|
};
|
||||||
use crate::pac::{FLASH, RCC};
|
use crate::pac::{FLASH, PWR, RCC};
|
||||||
use crate::rcc::{set_freqs, Clocks};
|
use crate::rcc::{set_freqs, Clocks};
|
||||||
use crate::time::Hertz;
|
use crate::time::Hertz;
|
||||||
|
|
||||||
@ -100,12 +101,17 @@ impl Default for Config {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) unsafe fn init(config: Config) {
|
pub(crate) unsafe fn init(config: Config) {
|
||||||
|
// set VOS to SCALE1, if use PLL
|
||||||
|
// TODO: check real clock speed before set VOS
|
||||||
|
if config.pll.is_some() {
|
||||||
|
PWR.cr1().modify(|w| w.set_vos(Vos::SCALE1));
|
||||||
|
}
|
||||||
|
|
||||||
// always enable overdrive for now. Make it configurable in the future.
|
// always enable overdrive for now. Make it configurable in the future.
|
||||||
#[cfg(not(any(
|
#[cfg(not(any(
|
||||||
stm32f401, stm32f410, stm32f411, stm32f412, stm32f413, stm32f423, stm32f405, stm32f407, stm32f415, stm32f417
|
stm32f401, stm32f410, stm32f411, stm32f412, stm32f413, stm32f423, stm32f405, stm32f407, stm32f415, stm32f417
|
||||||
)))]
|
)))]
|
||||||
{
|
{
|
||||||
use crate::pac::PWR;
|
|
||||||
PWR.cr1().modify(|w| w.set_oden(true));
|
PWR.cr1().modify(|w| w.set_oden(true));
|
||||||
while !PWR.csr1().read().odrdy() {}
|
while !PWR.csr1().read().odrdy() {}
|
||||||
|
|
||||||
@ -113,14 +119,6 @@ pub(crate) unsafe fn init(config: Config) {
|
|||||||
while !PWR.csr1().read().odswrdy() {}
|
while !PWR.csr1().read().odswrdy() {}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(stm32f401, stm32f410, stm32f411, stm32f412, stm32f413, stm32f423))]
|
|
||||||
{
|
|
||||||
use crate::pac::pwr::vals::Vos;
|
|
||||||
use crate::pac::PWR;
|
|
||||||
|
|
||||||
PWR.cr1().modify(|w| w.set_vos(Vos::SCALE1));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Configure HSI
|
// Configure HSI
|
||||||
let hsi = match config.hsi {
|
let hsi = match config.hsi {
|
||||||
false => {
|
false => {
|
||||||
|
Reference in New Issue
Block a user