Merge pull request #3027 from embassy-rs/check-cfg-fix

Fix all check-cfg errors, fix stm32 spi rxonly.
This commit is contained in:
Dario Nieuwenhuis 2024-05-31 21:59:06 +02:00 committed by GitHub
commit 7baa14371b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
42 changed files with 114 additions and 96 deletions

View File

@ -22,6 +22,7 @@ target = "thumbv7em-none-eabi"
[dependencies]
defmt = { version = "0.3", optional = true }
log = { version = "0.4.17", optional = true }
embassy-sync = { version = "0.6.0", path = "../embassy-sync" }
embassy-nrf = { version = "0.1.0", path = "../embassy-nrf", default-features = false }

View File

@ -21,7 +21,6 @@ target = "thumbv6m-none-eabi"
[dependencies]
defmt = { version = "0.3", optional = true }
defmt-rtt = { version = "0.4", optional = true }
log = { version = "0.4", optional = true }
embassy-sync = { version = "0.6.0", path = "../embassy-sync" }
@ -46,7 +45,6 @@ log = [
"embassy-boot/log",
"embassy-rp/log",
]
debug = ["defmt-rtt"]
[profile.dev]
debug = 2

View File

@ -5,4 +5,5 @@ fn main() {
if target.starts_with("thumbv6m-") {
println!("cargo:rustc-cfg=armv6m");
}
println!("cargo:rustc-check-cfg=cfg(armv6m)");
}

View File

@ -22,7 +22,6 @@ target = "thumbv7em-none-eabi"
[dependencies]
defmt = { version = "0.3", optional = true }
defmt-rtt = { version = "0.4", optional = true }
log = { version = "0.4", optional = true }
embassy-sync = { version = "0.6.0", path = "../embassy-sync" }
@ -37,7 +36,6 @@ cfg-if = "1.0.0"
[features]
defmt = ["dep:defmt", "embassy-boot/defmt", "embassy-stm32/defmt"]
log = ["dep:log", "embassy-boot/log", "embassy-stm32/log"]
debug = ["defmt-rtt"]
[profile.dev]
debug = 2

View File

@ -5,4 +5,5 @@ fn main() {
if target.starts_with("thumbv6m-") {
println!("cargo:rustc-cfg=armv6m");
}
println!("cargo:rustc-check-cfg=cfg(armv6m)");
}

View File

@ -29,7 +29,6 @@ critical-section = { version = "1.1.2", features = ["std"] }
futures-test = "0.3.28"
[features]
default = [ ]
defmt = [ "dep:defmt", "embedded-hal-1/defmt-03" ]
log = ["dep:log"]

View File

@ -1,6 +1,6 @@
#![cfg_attr(not(test), no_std)]
#![deny(clippy::pedantic)]
#![allow(async_fn_in_trait)]
#![cfg_attr(not(any(test, feature = "std")), no_std)]
#![allow(clippy::module_name_repetitions)]
#![allow(clippy::missing_errors_doc)]
#![allow(clippy::missing_panics_doc)]

View File

@ -28,6 +28,8 @@ embassy-embedded-hal = { version = "0.1.0", path = "../embassy-embedded-hal" }
embassy-net-driver = { version = "0.2.0", path = "../embassy-net-driver", optional=true }
defmt = { version = "0.3", optional = true }
log = { version = "0.4.17", optional = true }
cortex-m = "0.7.6"
heapless = "0.8"
aligned = "0.4.1"

View File

@ -148,9 +148,10 @@ impl<'d, M: PeriMode> Spi<'d, M> {
w.set_ssm(true);
w.set_crcen(false);
w.set_bidimode(vals::Bidimode::UNIDIRECTIONAL);
if mosi.is_none() {
w.set_rxonly(vals::Rxonly::OUTPUTDISABLED);
}
// we're doing "fake rxonly", by actually writing one
// byte to TXDR for each byte we want to receive. if we
// set OUTPUTDISABLED here, this hangs.
w.set_rxonly(vals::Rxonly::FULLDUPLEX);
w.set_dff(<u8 as SealedWord>::CONFIG)
});
}

View File

@ -26,9 +26,11 @@ flavors = [
features = ["defmt", "cortex-m", "dfu"]
[dependencies]
defmt = { version = "0.3.5", optional = true }
log = { version = "0.4.17", optional = true }
bitflags = "2.4.1"
cortex-m = { version = "0.7.7", features = ["inline-asm"], optional = true }
defmt = { version = "0.3.5", optional = true }
embassy-boot = { version = "0.2.0", path = "../embassy-boot" }
embassy-futures = { version = "0.1.1", path = "../embassy-futures" }
embassy-sync = { version = "0.6.0", path = "../embassy-sync" }

View File

@ -25,3 +25,10 @@ cortex-m-rt = "0.7.0"
ed25519-dalek = ["embassy-boot/ed25519-dalek"]
ed25519-salty = ["embassy-boot/ed25519-salty"]
skip-include = []
defmt = [
"dep:defmt",
"dep:defmt-rtt",
"embassy-nrf/defmt",
"embassy-boot-nrf/defmt",
"embassy-sync/defmt",
]

View File

@ -23,6 +23,7 @@ cortex-m-rt = "0.7.0"
[features]
defmt = [
"dep:defmt",
"dep:defmt-rtt",
"embassy-stm32/defmt",
"embassy-boot-stm32/defmt",
"embassy-sync/defmt",

View File

@ -1,7 +1,7 @@
#![no_std]
#![no_main]
#[cfg(feature = "defmt-rtt")]
#[cfg(feature = "defmt")]
use defmt_rtt::*;
use embassy_boot_stm32::{AlignedBuffer, FirmwareUpdater, FirmwareUpdaterConfig};
use embassy_embedded_hal::adapter::BlockingAsync;

View File

@ -1,7 +1,7 @@
#![no_std]
#![no_main]
#[cfg(feature = "defmt-rtt")]
#[cfg(feature = "defmt")]
use defmt_rtt::*;
use embassy_executor::Spawner;
use embassy_stm32::gpio::{Level, Output, Speed};

View File

@ -24,6 +24,7 @@ cortex-m-rt = "0.7.0"
[features]
defmt = [
"dep:defmt",
"dep:defmt-rtt",
"embassy-stm32/defmt",
"embassy-boot-stm32/defmt",
"embassy-sync/defmt",

View File

@ -3,7 +3,7 @@
use core::cell::RefCell;
#[cfg(feature = "defmt-rtt")]
#[cfg(feature = "defmt")]
use defmt_rtt::*;
use embassy_boot_stm32::{AlignedBuffer, BlockingFirmwareUpdater, FirmwareUpdaterConfig};
use embassy_executor::Spawner;

View File

@ -1,7 +1,7 @@
#![no_std]
#![no_main]
#[cfg(feature = "defmt-rtt")]
#[cfg(feature = "defmt")]
use defmt_rtt::*;
use embassy_executor::Spawner;
use embassy_stm32::gpio::{Level, Output, Speed};

View File

@ -24,6 +24,7 @@ cortex-m-rt = "0.7.0"
[features]
defmt = [
"dep:defmt",
"dep:defmt-rtt",
"embassy-stm32/defmt",
"embassy-boot-stm32/defmt",
"embassy-sync/defmt",

View File

@ -3,7 +3,7 @@
use core::cell::RefCell;
#[cfg(feature = "defmt-rtt")]
#[cfg(feature = "defmt")]
use defmt_rtt::*;
use embassy_boot_stm32::{AlignedBuffer, BlockingFirmwareUpdater, FirmwareUpdaterConfig};
use embassy_executor::Spawner;

View File

@ -1,7 +1,7 @@
#![no_std]
#![no_main]
#[cfg(feature = "defmt-rtt")]
#[cfg(feature = "defmt")]
use defmt_rtt::*;
use embassy_executor::Spawner;
use embassy_stm32::gpio::{Level, Output, Speed};

View File

@ -23,6 +23,7 @@ cortex-m-rt = "0.7.0"
[features]
defmt = [
"dep:defmt",
"dep:defmt-rtt",
"embassy-stm32/defmt",
"embassy-boot-stm32/defmt",
"embassy-sync/defmt",

View File

@ -1,7 +1,7 @@
#![no_std]
#![no_main]
#[cfg(feature = "defmt-rtt")]
#[cfg(feature = "defmt")]
use defmt_rtt::*;
use embassy_boot_stm32::{AlignedBuffer, FirmwareUpdater, FirmwareUpdaterConfig};
use embassy_embedded_hal::adapter::BlockingAsync;

View File

@ -1,7 +1,7 @@
#![no_std]
#![no_main]
#[cfg(feature = "defmt-rtt")]
#[cfg(feature = "defmt")]
use defmt_rtt::*;
use embassy_executor::Spawner;
use embassy_stm32::gpio::{Level, Output, Speed};

View File

@ -23,6 +23,7 @@ cortex-m-rt = "0.7.0"
[features]
defmt = [
"dep:defmt",
"dep:defmt-rtt",
"embassy-stm32/defmt",
"embassy-boot-stm32/defmt",
"embassy-sync/defmt",

View File

@ -1,7 +1,7 @@
#![no_std]
#![no_main]
#[cfg(feature = "defmt-rtt")]
#[cfg(feature = "defmt")]
use defmt_rtt::*;
use embassy_boot_stm32::{AlignedBuffer, FirmwareUpdater, FirmwareUpdaterConfig};
use embassy_embedded_hal::adapter::BlockingAsync;

View File

@ -1,7 +1,7 @@
#![no_std]
#![no_main]
#[cfg(feature = "defmt-rtt")]
#[cfg(feature = "defmt")]
use defmt_rtt::*;
use embassy_executor::Spawner;
use embassy_stm32::gpio::{Level, Output, Speed};

View File

@ -23,6 +23,7 @@ cortex-m-rt = "0.7.0"
[features]
defmt = [
"dep:defmt",
"dep:defmt-rtt",
"embassy-stm32/defmt",
"embassy-boot-stm32/defmt",
"embassy-sync/defmt",

View File

@ -1,7 +1,7 @@
#![no_std]
#![no_main]
#[cfg(feature = "defmt-rtt")]
#[cfg(feature = "defmt")]
use defmt_rtt::*;
use embassy_boot_stm32::{AlignedBuffer, FirmwareUpdater, FirmwareUpdaterConfig};
use embassy_embedded_hal::adapter::BlockingAsync;

View File

@ -1,7 +1,7 @@
#![no_std]
#![no_main]
#[cfg(feature = "defmt-rtt")]
#[cfg(feature = "defmt")]
use defmt_rtt::*;
use embassy_executor::Spawner;
use embassy_stm32::gpio::{Level, Output, Speed};

View File

@ -3,7 +3,7 @@
use core::cell::RefCell;
#[cfg(feature = "defmt-rtt")]
#[cfg(feature = "defmt")]
use defmt_rtt::*;
use embassy_boot_stm32::{AlignedBuffer, BlockingFirmwareState, FirmwareUpdaterConfig};
use embassy_executor::Spawner;

View File

@ -23,6 +23,7 @@ cortex-m-rt = "0.7.0"
[features]
defmt = [
"dep:defmt",
"dep:defmt-rtt",
"embassy-stm32/defmt",
"embassy-boot-stm32/defmt",
"embassy-sync/defmt",

View File

@ -1,7 +1,7 @@
#![no_std]
#![no_main]
#[cfg(feature = "defmt-rtt")]
#[cfg(feature = "defmt")]
use defmt_rtt::*;
use embassy_boot_stm32::{AlignedBuffer, FirmwareUpdater, FirmwareUpdaterConfig};
use embassy_embedded_hal::adapter::BlockingAsync;

View File

@ -1,7 +1,7 @@
#![no_std]
#![no_main]
#[cfg(feature = "defmt-rtt")]
#[cfg(feature = "defmt")]
use defmt_rtt::*;
use embassy_executor::Spawner;
use embassy_stm32::gpio::{Level, Output, Speed};

View File

@ -19,13 +19,13 @@ cfg-if = "1.0.0"
[features]
defmt = [
"dep:defmt",
"dep:defmt-rtt",
"embassy-boot-nrf/defmt",
"embassy-nrf/defmt",
]
softdevice = [
"embassy-boot-nrf/softdevice",
]
debug = ["defmt-rtt", "defmt"]
[profile.dev]
debug = 2

View File

@ -23,10 +23,10 @@ cfg-if = "1.0.0"
[features]
defmt = [
"dep:defmt",
"dep:defmt-rtt",
"embassy-boot-rp/defmt",
"embassy-rp/defmt",
]
debug = ["defmt-rtt", "defmt"]
[profile.release]
debug = true

View File

@ -22,8 +22,7 @@ embedded-storage-async = "0.4.0"
cfg-if = "1.0.0"
[features]
defmt = ["dep:defmt", "embassy-boot-stm32/defmt", "embassy-stm32/defmt"]
debug = ["defmt-rtt", "defmt"]
defmt = ["dep:defmt", "dep:defmt-rtt", "embassy-boot-stm32/defmt", "embassy-stm32/defmt"]
[profile.dev]
debug = 2

View File

@ -21,10 +21,10 @@ cfg-if = "1.0.0"
[features]
defmt = [
"dep:defmt",
"dep:defmt-rtt",
"embassy-boot-stm32/defmt",
"embassy-stm32/defmt",
]
debug = ["defmt-rtt", "defmt"]
[profile.dev]
debug = 2

View File

@ -24,12 +24,12 @@ embassy-futures = { version = "0.1.1", path = "../../../../embassy-futures" }
[features]
defmt = [
"dep:defmt",
"dep:defmt-rtt",
"embassy-boot-stm32/defmt",
"embassy-stm32/defmt",
"embassy-usb/defmt",
"embassy-usb-dfu/defmt"
]
debug = ["defmt-rtt", "defmt"]
[profile.dev]
debug = 2

View File

@ -14,6 +14,7 @@ fn main() -> Result<(), Box<dyn Error>> {
feature = "stm32c031c6",
feature = "stm32wb55rg",
feature = "stm32l073rz",
feature = "stm32h503rb",
// wrong ram size in stm32-data
feature = "stm32wl55jc",
feature = "stm32u5a5zj",

View File

@ -92,7 +92,7 @@ fn options() -> (Config, TestOptions) {
)
}
#[cfg(any(feature = "stm32g491re", feature = "stm32g431cb"))]
#[cfg(any(feature = "stm32g491re"))]
fn options() -> (Config, TestOptions) {
info!("G4 config");
(

View File

@ -6,6 +6,7 @@ mod common;
use common::*;
use defmt::assert_eq;
use embassy_executor::Spawner;
use embassy_stm32::gpio::{Level, Output, Speed};
use embassy_stm32::spi::{self, Spi};
use embassy_stm32::time::Hertz;
@ -14,18 +15,19 @@ async fn main(_spawner: Spawner) {
let p = embassy_stm32::init(config());
info!("Hello World!");
let spi = peri!(p, SPI);
let sck = peri!(p, SPI_SCK);
let mosi = peri!(p, SPI_MOSI);
let miso = peri!(p, SPI_MISO);
let mut spi_peri = peri!(p, SPI);
let mut sck = peri!(p, SPI_SCK);
let mut mosi = peri!(p, SPI_MOSI);
let mut miso = peri!(p, SPI_MISO);
let mut spi_config = spi::Config::default();
spi_config.frequency = Hertz(1_000_000);
let mut spi = Spi::new_blocking(
spi, sck, // Arduino D13
mosi, // Arduino D11
miso, // Arduino D12
&mut spi_peri,
&mut sck, // Arduino D13
&mut mosi, // Arduino D11
&mut miso, // Arduino D12
spi_config,
);
@ -66,6 +68,22 @@ async fn main(_spawner: Spawner) {
defmt::assert!(!embassy_stm32::pac::RCC.apb2enr().read().spi1en());
}
#[cfg(not(feature = "stm32f429zi"))]
core::mem::drop(spi);
// test rx-only configuration
let mut spi = Spi::new_blocking_rxonly(&mut spi_peri, &mut sck, &mut miso, spi_config);
let mut mosi = Output::new(&mut mosi, Level::Low, Speed::VeryHigh);
mosi.set_high();
spi.blocking_read(&mut buf).unwrap();
assert_eq!(buf, [0xff; 9]);
mosi.set_low();
spi.blocking_read(&mut buf).unwrap();
assert_eq!(buf, [0x00; 9]);
info!("Test OK");
cortex_m::asm::bkpt();
}

View File

@ -6,34 +6,32 @@ mod common;
use common::*;
use defmt::assert_eq;
use embassy_executor::Spawner;
use embassy_stm32::gpio::{Level, Output, Speed};
use embassy_stm32::spi::{self, Spi};
use embassy_stm32::time::Hertz;
use embassy_stm32::{into_ref, Peripheral as _};
#[embassy_executor::main]
async fn main(_spawner: Spawner) {
let p = embassy_stm32::init(config());
info!("Hello World!");
let spi_peri = peri!(p, SPI);
let sck = peri!(p, SPI_SCK);
let mosi = peri!(p, SPI_MOSI);
let miso = peri!(p, SPI_MISO);
let tx_dma = peri!(p, SPI_TX_DMA);
let rx_dma = peri!(p, SPI_RX_DMA);
into_ref!(spi_peri, sck, mosi, miso, tx_dma, rx_dma);
let mut spi_peri = peri!(p, SPI);
let mut sck = peri!(p, SPI_SCK);
let mut mosi = peri!(p, SPI_MOSI);
let mut miso = peri!(p, SPI_MISO);
let mut tx_dma = peri!(p, SPI_TX_DMA);
let mut rx_dma = peri!(p, SPI_RX_DMA);
let mut spi_config = spi::Config::default();
spi_config.frequency = Hertz(1_000_000);
let mut spi = Spi::new(
spi_peri.reborrow(),
sck.reborrow(), // Arduino D13
mosi.reborrow(), // Arduino D11
miso.reborrow(), // Arduino D12
tx_dma.reborrow(),
rx_dma.reborrow(),
&mut spi_peri,
&mut sck, // Arduino D13
&mut mosi, // Arduino D11
&mut miso, // Arduino D12
&mut tx_dma,
&mut rx_dma,
spi_config,
);
@ -85,51 +83,36 @@ async fn main(_spawner: Spawner) {
core::mem::drop(spi);
// test rx-only configuration
let mut spi = Spi::new_rxonly(
&mut spi_peri,
&mut sck,
&mut miso,
// SPIv1/f1 requires txdma even if rxonly.
#[cfg(not(any(
feature = "stm32h503rb",
feature = "stm32h563zi",
feature = "stm32h753zi",
feature = "stm32h755zi",
feature = "stm32h7a3zi",
feature = "stm32h7s3l8",
feature = "stm32u585ai",
feature = "stm32u5a5zj",
feature = "stm32wba52cg",
)))]
&mut tx_dma,
&mut rx_dma,
spi_config,
);
// stm32f207zg - spi_v1
// stm32f103c8 - spi_f1
// stm32g491re - spi_v2
// stm32h753zi - spi_v3
// stm32h563zi - spi_v4
// stm32wba52cg - spi_v5
let mut mosi = Output::new(&mut mosi, Level::Low, Speed::VeryHigh);
#[cfg(any(stm32f207zg, stm32f103c8, stm32g491re, stm32h753zi, stm32h563zi, stm32wba52cg))]
{
let mut spi = {
#[cfg(stm32f207zg, stm32f103c8, stm32g491re)]
{
Spi::new_rxonly(
spi_peri.reborrow(),
sck.reborrow(),
miso.reborrow(),
tx_dma.reborrow(),
rx_dma.reborrow(),
spi_config,
)
}
#[cfg(stm32h753zi, stm32h563zi, stm32wba52cg)]
{
Spi::new_rxonly(
spi_peri.reborrow(),
sck.reborrow(),
miso.reborrow(),
rx_dma.reborrow(),
spi_config,
)
}
};
mosi.set_high();
spi.read(&mut buf).await.unwrap();
assert_eq!(buf, [0xff; 9]);
use embassy_stm32::gpio;
let mut mosi = gpio::Output::new(mosi.reborrow(), gpio::Level::Low, gpio::Speed::Low);
mosi.set_high();
spi.read(&mut buf).await.unwrap();
assert_eq!(buf, [0xff; 9]);
mosi.set_low();
spi.read(&mut buf).await.unwrap();
assert_eq!(buf, [0x00; 9]);
};
mosi.set_low();
spi.read(&mut buf).await.unwrap();
assert_eq!(buf, [0x00; 9]);
info!("Test OK");
cortex_m::asm::bkpt();