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 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 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 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 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 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 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 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 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 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 \ |     --- 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" | version = "0.1.0" | ||||||
| description = "Bootloader lib for nRF chips" | description = "Bootloader lib for nRF chips" | ||||||
| license = "MIT OR Apache-2.0" | license = "MIT OR Apache-2.0" | ||||||
|  | repository = "https://github.com/embassy-rs/embassy" | ||||||
|  | categories = [ | ||||||
|  |     "embedded", | ||||||
|  |     "no-std", | ||||||
|  |     "asynchronous", | ||||||
|  | ] | ||||||
|  |  | ||||||
| [package.metadata.embassy_docs] | [package.metadata.embassy_docs] | ||||||
| src_base = "https://github.com/embassy-rs/embassy/blob/embassy-boot-nrf-v$VERSION/embassy-boot/nrf/src/" | 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" } | embedded-storage-async = { version = "0.4.1" } | ||||||
| cfg-if = "1.0.0" | 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] | [features] | ||||||
| defmt = [ | defmt = [ | ||||||
|   | |||||||
| @@ -4,6 +4,12 @@ name = "embassy-boot-rp" | |||||||
| version = "0.1.0" | version = "0.1.0" | ||||||
| description = "Bootloader lib for RP2040 chips" | description = "Bootloader lib for RP2040 chips" | ||||||
| license = "MIT OR Apache-2.0" | license = "MIT OR Apache-2.0" | ||||||
|  | repository = "https://github.com/embassy-rs/embassy" | ||||||
|  | categories = [ | ||||||
|  |     "embedded", | ||||||
|  |     "no-std", | ||||||
|  |     "asynchronous", | ||||||
|  | ] | ||||||
|  |  | ||||||
| [package.metadata.embassy_docs] | [package.metadata.embassy_docs] | ||||||
| src_base = "https://github.com/embassy-rs/embassy/blob/embassy-boot-rp-v$VERSION/src/" | 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" | version = "0.1.0" | ||||||
| description = "Bootloader lib for STM32 chips" | description = "Bootloader lib for STM32 chips" | ||||||
| license = "MIT OR Apache-2.0" | license = "MIT OR Apache-2.0" | ||||||
|  | repository = "https://github.com/embassy-rs/embassy" | ||||||
|  | categories = [ | ||||||
|  |     "embedded", | ||||||
|  |     "no-std", | ||||||
|  |     "asynchronous", | ||||||
|  | ] | ||||||
|  |  | ||||||
| [package.metadata.embassy_docs] | [package.metadata.embassy_docs] | ||||||
| src_base = "https://github.com/embassy-rs/embassy/blob/embassy-boot-nrf-v$VERSION/embassy-boot/stm32/src/" | src_base = "https://github.com/embassy-rs/embassy/blob/embassy-boot-nrf-v$VERSION/embassy-boot/stm32/src/" | ||||||
|   | |||||||
| @@ -6,7 +6,6 @@ keywords = ["embedded", "wiznet", "embassy-net", "embedded-hal-async", "ethernet | |||||||
| categories = ["embedded", "hardware-support", "no-std", "network-programming", "async"] | categories = ["embedded", "hardware-support", "no-std", "network-programming", "async"] | ||||||
| license = "MIT OR Apache-2.0" | license = "MIT OR Apache-2.0" | ||||||
| edition = "2021" | edition = "2021" | ||||||
| repository = "https://github.com/embassy-rs/embassy" |  | ||||||
|  |  | ||||||
| [dependencies] | [dependencies] | ||||||
| embedded-hal = { version = "1.0.0-rc.3" } | embedded-hal = { version = "1.0.0-rc.3" } | ||||||
|   | |||||||
| @@ -1,4 +1,3 @@ | |||||||
| //! Wiznet W5100s and W5500 family driver. |  | ||||||
| mod w5500; | mod w5500; | ||||||
| pub use w5500::W5500; | pub use w5500::W5500; | ||||||
| mod w5100s; | mod w5100s; | ||||||
| @@ -46,5 +45,4 @@ pub(crate) mod sealed { | |||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| /// Trait for Wiznet chips. |  | ||||||
| pub trait Chip: sealed::Chip {} | pub trait Chip: sealed::Chip {} | ||||||
|   | |||||||
| @@ -4,7 +4,6 @@ const SOCKET_BASE: u16 = 0x400; | |||||||
| const TX_BASE: u16 = 0x4000; | const TX_BASE: u16 = 0x4000; | ||||||
| const RX_BASE: u16 = 0x6000; | const RX_BASE: u16 = 0x6000; | ||||||
|  |  | ||||||
| /// Wizard W5100S chip. |  | ||||||
| pub enum W5100S {} | pub enum W5100S {} | ||||||
|  |  | ||||||
| impl super::Chip for W5100S {} | impl super::Chip for W5100S {} | ||||||
|   | |||||||
| @@ -8,7 +8,6 @@ pub enum RegisterBlock { | |||||||
|     RxBuf = 0x03, |     RxBuf = 0x03, | ||||||
| } | } | ||||||
|  |  | ||||||
| /// Wiznet W5500 chip. |  | ||||||
| pub enum W5500 {} | pub enum W5500 {} | ||||||
|  |  | ||||||
| impl super::Chip for W5500 {} | impl super::Chip for W5500 {} | ||||||
|   | |||||||
| @@ -1,7 +1,6 @@ | |||||||
| #![no_std] | #![no_std] | ||||||
| #![allow(async_fn_in_trait)] | #![allow(async_fn_in_trait)] | ||||||
| #![doc = include_str!("../README.md")] | #![doc = include_str!("../README.md")] | ||||||
| #![warn(missing_docs)] |  | ||||||
|  |  | ||||||
| pub mod chip; | pub mod chip; | ||||||
| mod device; | mod device; | ||||||
| @@ -48,7 +47,6 @@ pub struct Runner<'d, C: Chip, SPI: SpiDevice, INT: Wait, RST: OutputPin> { | |||||||
|  |  | ||||||
| /// You must call this in a background task for the driver to operate. | /// You must call this in a background task for the driver to operate. | ||||||
| impl<'d, C: Chip, SPI: SpiDevice, INT: Wait, RST: OutputPin> Runner<'d, C, SPI, INT, RST> { | impl<'d, C: Chip, SPI: SpiDevice, INT: Wait, RST: OutputPin> Runner<'d, C, SPI, INT, RST> { | ||||||
|     /// Run the driver. |  | ||||||
|     pub async fn run(mut self) -> ! { |     pub async fn run(mut self) -> ! { | ||||||
|         let (state_chan, mut rx_chan, mut tx_chan) = self.ch.split(); |         let (state_chan, mut rx_chan, mut tx_chan) = self.ch.split(); | ||||||
|         let mut tick = Ticker::every(Duration::from_millis(500)); |         let mut tick = Ticker::every(Duration::from_millis(500)); | ||||||
|   | |||||||
| @@ -56,7 +56,6 @@ cortex-m = "0.7.6" | |||||||
| futures = { version = "0.3.17", default-features = false, features = ["async-await"] } | futures = { version = "0.3.17", default-features = false, features = ["async-await"] } | ||||||
| rand_core = "0.6.3" | rand_core = "0.6.3" | ||||||
| sdio-host = "0.5.0" | sdio-host = "0.5.0" | ||||||
| embedded-sdmmc = { git = "https://github.com/embassy-rs/embedded-sdmmc-rs", rev = "a4f293d3a6f72158385f79c98634cb8a14d0d2fc", optional = true } |  | ||||||
| critical-section = "1.1" | critical-section = "1.1" | ||||||
| stm32-metapac = { git = "https://github.com/embassy-rs/stm32-data-generated", tag = "stm32-data-2234f380f51d16d0398b8e547088b33ea623cc7c" } | stm32-metapac = { git = "https://github.com/embassy-rs/stm32-data-generated", tag = "stm32-data-2234f380f51d16d0398b8e547088b33ea623cc7c" } | ||||||
| vcell = "0.1.3" | vcell = "0.1.3" | ||||||
|   | |||||||
| @@ -1538,53 +1538,3 @@ foreach_peripheral!( | |||||||
|         impl Instance for peripherals::$inst {} |         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)) |         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. |     /// non-blocking method to check whether this signal has been signaled. | ||||||
|     pub fn signaled(&self) -> bool { |     pub fn signaled(&self) -> bool { | ||||||
|         self.state.lock(|cell| { |         self.state.lock(|cell| { | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ license = "MIT OR Apache-2.0" | |||||||
|  |  | ||||||
| [dependencies] | [dependencies] | ||||||
| # Change stm32f429zi to your chip name, if necessary. | # 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-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-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"] } | embassy-time = { version = "0.2", path = "../../embassy-time", features = ["defmt", "defmt-timestamp-uptime", "tick-hz-32_768"] } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user