Compare commits
6 Commits
embassy-ne
...
boot-nrf-s
Author | SHA1 | Date | |
---|---|---|---|
896690c415 | |||
c8eb128a56 | |||
22ee868f04 | |||
1c3cf347cb | |||
13c107e815 | |||
f9d0daad80 |
4
ci.sh
4
ci.sh
@ -91,12 +91,12 @@ cargo batch \
|
||||
--- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32f417zg,defmt,exti,time-driver-any,time \
|
||||
--- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32f423zh,defmt,exti,time-driver-any,time \
|
||||
--- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32f427zi,defmt,exti,time-driver-any,time \
|
||||
--- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32f429zi,log,exti,time-driver-any,embedded-sdmmc,time \
|
||||
--- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32f429zi,log,exti,time-driver-any,time \
|
||||
--- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32f437zi,log,exti,time-driver-any,time \
|
||||
--- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32f439zi,defmt,exti,time-driver-any,time \
|
||||
--- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32f446ze,defmt,exti,time-driver-any,time \
|
||||
--- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32f469zi,defmt,exti,time-driver-any,time \
|
||||
--- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32f479zi,defmt,exti,time-driver-any,embedded-sdmmc,time \
|
||||
--- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32f479zi,defmt,exti,time-driver-any,time \
|
||||
--- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32f730i8,defmt,exti,time-driver-any,time \
|
||||
--- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32h753zi,defmt,exti,time-driver-any,time \
|
||||
--- build --release --manifest-path embassy-stm32/Cargo.toml --target thumbv7em-none-eabi --features stm32h735zg,defmt,exti,time-driver-any,time \
|
||||
|
@ -4,6 +4,12 @@ name = "embassy-boot-nrf"
|
||||
version = "0.1.0"
|
||||
description = "Bootloader lib for nRF chips"
|
||||
license = "MIT OR Apache-2.0"
|
||||
repository = "https://github.com/embassy-rs/embassy"
|
||||
categories = [
|
||||
"embedded",
|
||||
"no-std",
|
||||
"asynchronous",
|
||||
]
|
||||
|
||||
[package.metadata.embassy_docs]
|
||||
src_base = "https://github.com/embassy-rs/embassy/blob/embassy-boot-nrf-v$VERSION/embassy-boot/nrf/src/"
|
||||
@ -25,7 +31,7 @@ embedded-storage = "0.3.1"
|
||||
embedded-storage-async = { version = "0.4.1" }
|
||||
cfg-if = "1.0.0"
|
||||
|
||||
nrf-softdevice-mbr = { version = "0.1.0", git = "https://github.com/embassy-rs/nrf-softdevice.git", branch = "master", optional = true }
|
||||
nrf-softdevice-mbr = { version = "0.2.0", optional = true }
|
||||
|
||||
[features]
|
||||
defmt = [
|
||||
|
@ -4,6 +4,12 @@ name = "embassy-boot-rp"
|
||||
version = "0.1.0"
|
||||
description = "Bootloader lib for RP2040 chips"
|
||||
license = "MIT OR Apache-2.0"
|
||||
repository = "https://github.com/embassy-rs/embassy"
|
||||
categories = [
|
||||
"embedded",
|
||||
"no-std",
|
||||
"asynchronous",
|
||||
]
|
||||
|
||||
[package.metadata.embassy_docs]
|
||||
src_base = "https://github.com/embassy-rs/embassy/blob/embassy-boot-rp-v$VERSION/src/"
|
||||
|
@ -4,6 +4,12 @@ name = "embassy-boot-stm32"
|
||||
version = "0.1.0"
|
||||
description = "Bootloader lib for STM32 chips"
|
||||
license = "MIT OR Apache-2.0"
|
||||
repository = "https://github.com/embassy-rs/embassy"
|
||||
categories = [
|
||||
"embedded",
|
||||
"no-std",
|
||||
"asynchronous",
|
||||
]
|
||||
|
||||
[package.metadata.embassy_docs]
|
||||
src_base = "https://github.com/embassy-rs/embassy/blob/embassy-boot-nrf-v$VERSION/embassy-boot/stm32/src/"
|
||||
|
@ -6,7 +6,6 @@ keywords = ["embedded", "tuntap", "embassy-net", "embedded-hal-async", "ethernet
|
||||
categories = ["embedded", "hardware-support", "no-std", "network-programming", "async"]
|
||||
license = "MIT OR Apache-2.0"
|
||||
edition = "2021"
|
||||
repository = "https://github.com/embassy-rs/embassy"
|
||||
|
||||
[dependencies]
|
||||
embassy-net-driver = { version = "0.2.0", path = "../embassy-net-driver" }
|
||||
@ -17,4 +16,4 @@ libc = "0.2.101"
|
||||
[package.metadata.embassy_docs]
|
||||
src_base = "https://github.com/embassy-rs/embassy/blob/embassy-net-tuntap-v$VERSION/embassy-net-tuntap/src/"
|
||||
src_base_git = "https://github.com/embassy-rs/embassy/blob/$COMMIT/embassy-net-tuntap/src/"
|
||||
target = "thumbv7em-none-eabi"
|
||||
target = "thumbv7em-none-eabi"
|
@ -1,5 +1,3 @@
|
||||
#![warn(missing_docs)]
|
||||
#![doc = include_str!("../README.md")]
|
||||
use std::io;
|
||||
use std::io::{Read, Write};
|
||||
use std::os::unix::io::{AsRawFd, RawFd};
|
||||
@ -9,19 +7,12 @@ use async_io::Async;
|
||||
use embassy_net_driver::{self, Capabilities, Driver, HardwareAddress, LinkState};
|
||||
use log::*;
|
||||
|
||||
/// Get the MTU of the given interface.
|
||||
pub const SIOCGIFMTU: libc::c_ulong = 0x8921;
|
||||
/// Get the index of the given interface.
|
||||
pub const _SIOCGIFINDEX: libc::c_ulong = 0x8933;
|
||||
/// Capture all packages.
|
||||
pub const _ETH_P_ALL: libc::c_short = 0x0003;
|
||||
/// Set the interface flags.
|
||||
pub const TUNSETIFF: libc::c_ulong = 0x400454CA;
|
||||
/// TUN device.
|
||||
pub const _IFF_TUN: libc::c_int = 0x0001;
|
||||
/// TAP device.
|
||||
pub const IFF_TAP: libc::c_int = 0x0002;
|
||||
/// No packet information.
|
||||
pub const IFF_NO_PI: libc::c_int = 0x1000;
|
||||
|
||||
const ETHERNET_HEADER_LEN: usize = 14;
|
||||
@ -56,7 +47,6 @@ fn ifreq_ioctl(lower: libc::c_int, ifreq: &mut ifreq, cmd: libc::c_ulong) -> io:
|
||||
Ok(ifreq.ifr_data)
|
||||
}
|
||||
|
||||
/// A TUN/TAP device.
|
||||
#[derive(Debug)]
|
||||
pub struct TunTap {
|
||||
fd: libc::c_int,
|
||||
@ -70,7 +60,6 @@ impl AsRawFd for TunTap {
|
||||
}
|
||||
|
||||
impl TunTap {
|
||||
/// Create a new TUN/TAP device.
|
||||
pub fn new(name: &str) -> io::Result<TunTap> {
|
||||
unsafe {
|
||||
let fd = libc::open(
|
||||
@ -137,13 +126,11 @@ impl io::Write for TunTap {
|
||||
}
|
||||
}
|
||||
|
||||
/// A TUN/TAP device, wrapped in an async interface.
|
||||
pub struct TunTapDevice {
|
||||
device: Async<TunTap>,
|
||||
}
|
||||
|
||||
impl TunTapDevice {
|
||||
/// Create a new TUN/TAP device.
|
||||
pub fn new(name: &str) -> io::Result<TunTapDevice> {
|
||||
Ok(Self {
|
||||
device: Async::new(TunTap::new(name)?)?,
|
||||
|
@ -56,7 +56,6 @@ cortex-m = "0.7.6"
|
||||
futures = { version = "0.3.17", default-features = false, features = ["async-await"] }
|
||||
rand_core = "0.6.3"
|
||||
sdio-host = "0.5.0"
|
||||
embedded-sdmmc = { git = "https://github.com/embassy-rs/embedded-sdmmc-rs", rev = "a4f293d3a6f72158385f79c98634cb8a14d0d2fc", optional = true }
|
||||
critical-section = "1.1"
|
||||
stm32-metapac = { git = "https://github.com/embassy-rs/stm32-data-generated", tag = "stm32-data-2234f380f51d16d0398b8e547088b33ea623cc7c" }
|
||||
vcell = "0.1.3"
|
||||
|
@ -1538,53 +1538,3 @@ foreach_peripheral!(
|
||||
impl Instance for peripherals::$inst {}
|
||||
};
|
||||
);
|
||||
|
||||
#[cfg(feature = "embedded-sdmmc")]
|
||||
mod sdmmc_rs {
|
||||
use embedded_sdmmc::{Block, BlockCount, BlockDevice, BlockIdx};
|
||||
|
||||
use super::*;
|
||||
|
||||
impl<'d, T: Instance, Dma: SdmmcDma<T>> BlockDevice for Sdmmc<'d, T, Dma> {
|
||||
type Error = Error;
|
||||
|
||||
async fn read(
|
||||
&mut self,
|
||||
blocks: &mut [Block],
|
||||
start_block_idx: BlockIdx,
|
||||
_reason: &str,
|
||||
) -> Result<(), Self::Error> {
|
||||
let mut address = start_block_idx.0;
|
||||
|
||||
for block in blocks.iter_mut() {
|
||||
let block: &mut [u8; 512] = &mut block.contents;
|
||||
|
||||
// NOTE(unsafe) Block uses align(4)
|
||||
let block = unsafe { &mut *(block as *mut _ as *mut DataBlock) };
|
||||
self.read_block(address, block).await?;
|
||||
address += 1;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn write(&mut self, blocks: &[Block], start_block_idx: BlockIdx) -> Result<(), Self::Error> {
|
||||
let mut address = start_block_idx.0;
|
||||
|
||||
for block in blocks.iter() {
|
||||
let block: &[u8; 512] = &block.contents;
|
||||
|
||||
// NOTE(unsafe) DataBlock uses align 4
|
||||
let block = unsafe { &*(block as *const _ as *const DataBlock) };
|
||||
self.write_block(address, block).await?;
|
||||
address += 1;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn num_blocks(&self) -> Result<BlockCount, Self::Error> {
|
||||
let card = self.card()?;
|
||||
let count = card.csd.block_count();
|
||||
Ok(BlockCount(count))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -111,6 +111,20 @@ where
|
||||
poll_fn(move |cx| self.poll_wait(cx))
|
||||
}
|
||||
|
||||
/// non-blocking method to try and take the signal value.
|
||||
pub fn try_take(&self) -> Option<T> {
|
||||
self.state.lock(|cell| {
|
||||
let state = cell.replace(State::None);
|
||||
match state {
|
||||
State::Signaled(res) => Some(res),
|
||||
state => {
|
||||
cell.set(state);
|
||||
None
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/// non-blocking method to check whether this signal has been signaled.
|
||||
pub fn signaled(&self) -> bool {
|
||||
self.state.lock(|cell| {
|
||||
|
@ -6,7 +6,7 @@ license = "MIT OR Apache-2.0"
|
||||
|
||||
[dependencies]
|
||||
# Change stm32f429zi to your chip name, if necessary.
|
||||
embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = [ "defmt", "stm32f429zi", "unstable-pac", "memory-x", "time-driver-any", "exti", "embedded-sdmmc", "chrono"] }
|
||||
embassy-stm32 = { version = "0.1.0", path = "../../embassy-stm32", features = [ "defmt", "stm32f429zi", "unstable-pac", "memory-x", "time-driver-any", "exti", "chrono"] }
|
||||
embassy-sync = { version = "0.5.0", path = "../../embassy-sync", features = ["defmt"] }
|
||||
embassy-executor = { version = "0.4.0", path = "../../embassy-executor", features = ["nightly", "arch-cortex-m", "executor-thread", "executor-interrupt", "defmt", "integrated-timers"] }
|
||||
embassy-time = { version = "0.2", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] }
|
||||
|
Reference in New Issue
Block a user