Skip to content

Commit 707152f

Browse files
committed
WIP: Implement support for writing eFuses
1 parent 6b31279 commit 707152f

File tree

5 files changed

+475
-5
lines changed

5 files changed

+475
-5
lines changed

Cargo.lock

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

espflash/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ log = "0.4"
5050
md-5 = "0.10"
5151
miette = "7.6"
5252
object = "0.37"
53+
reed-solomon = "0.2.1"
5354
regex = { version = "1.11", optional = true }
5455
serde = { version = "1.0", features = ["derive"] }
5556
serialport = { version = "4.7", default-features = false, optional = true }

espflash/src/connection/mod.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -683,6 +683,15 @@ impl Connection {
683683
Ok(())
684684
}
685685

686+
/// Updates a register by applying the new value to the masked out portion of the old value.
687+
pub fn update_reg(&mut self, addr: u32, mask:u32, new_value: u32) -> Result<(), Error> {
688+
let masked_new_value = new_value.unbounded_shl(mask.trailing_zeros()) & mask;
689+
690+
let masked_old_value = self.read_reg(addr)? & !mask;
691+
692+
self.write_reg(addr, masked_old_value | masked_new_value, None)
693+
}
694+
686695
/// Reads a register command with a timeout.
687696
pub(crate) fn read(&mut self, len: usize) -> Result<Option<Vec<u8>>, Error> {
688697
let mut tmp = Vec::with_capacity(1024);

espflash/src/error.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,10 @@ pub enum Error {
357357
/// Key is not in the expected section
358358
#[error("Misplaced key, check your configuration file. Key: {0}")]
359359
MisplacedKey(String),
360+
361+
/// Failed to write eFuse
362+
#[error("Failed to write eFuse: {0}")]
363+
WritingEfuseFailed(String),
360364
}
361365

362366
#[cfg(feature = "serialport")]

0 commit comments

Comments
 (0)