Remove custom otp memory kind

This commit is contained in:
Rasmus Melchior Jacobsen 2023-03-25 12:44:41 +01:00
parent 9e0a4b153e
commit aa9cda492d
3 changed files with 10 additions and 8 deletions

View File

@ -30,7 +30,6 @@ pub struct FlashSettings {
pub enum MemoryRegionKind { pub enum MemoryRegionKind {
Flash, Flash,
Ram, Ram,
Otp,
} }
#[derive(Debug, Eq, PartialEq, Clone)] #[derive(Debug, Eq, PartialEq, Clone)]

View File

@ -32,8 +32,6 @@ pub enum MemoryRegionKind {
Flash, Flash,
#[serde(rename = "ram")] #[serde(rename = "ram")]
Ram, Ram,
#[serde(rename = "otp")]
Otp,
} }
#[derive(Debug, Eq, PartialEq, Clone, Deserialize)] #[derive(Debug, Eq, PartialEq, Clone, Deserialize)]

View File

@ -120,7 +120,7 @@ impl Gen {
let flash_regions: Vec<&MemoryRegion> = chip let flash_regions: Vec<&MemoryRegion> = chip
.memory .memory
.iter() .iter()
.filter(|x| x.kind == MemoryRegionKind::Flash) .filter(|x| x.kind == MemoryRegionKind::Flash && x.name.starts_with("BANK_"))
.collect(); .collect();
let first_flash = flash_regions.first().unwrap(); let first_flash = flash_regions.first().unwrap();
let total_flash_size = flash_regions let total_flash_size = flash_regions
@ -343,7 +343,6 @@ fn stringify<T: Debug>(metadata: T) -> String {
metadata = metadata.replace(": [", ": &["); metadata = metadata.replace(": [", ": &[");
metadata = metadata.replace("kind: Ram", "kind: MemoryRegionKind::Ram"); metadata = metadata.replace("kind: Ram", "kind: MemoryRegionKind::Ram");
metadata = metadata.replace("kind: Flash", "kind: MemoryRegionKind::Flash"); metadata = metadata.replace("kind: Flash", "kind: MemoryRegionKind::Flash");
metadata = metadata.replace("kind: Otp", "kind: MemoryRegionKind::Otp");
metadata metadata
} }
@ -356,14 +355,20 @@ fn gen_opts() -> generate::Options {
fn gen_memory_x(out_dir: &Path, chip: &Chip) { fn gen_memory_x(out_dir: &Path, chip: &Chip) {
let mut memory_x = String::new(); let mut memory_x = String::new();
let flash = chip.memory.iter().filter(|r| r.kind == MemoryRegionKind::Flash); let flash = chip
.memory
.iter()
.filter(|r| r.kind == MemoryRegionKind::Flash && r.name.starts_with("BANK_"));
let (flash_address, flash_size) = flash let (flash_address, flash_size) = flash
.clone() .clone()
.map(|r| (r.address, r.size)) .map(|r| (r.address, r.size))
.reduce(|acc, el| (u32::min(acc.0, el.0), acc.1 + el.1)) .reduce(|acc, el| (u32::min(acc.0, el.0), acc.1 + el.1))
.unwrap(); .unwrap();
let ram = chip.memory.iter().find(|r| r.kind == MemoryRegionKind::Ram).unwrap(); let ram = chip.memory.iter().find(|r| r.kind == MemoryRegionKind::Ram).unwrap();
let otp = chip.memory.iter().find(|r| r.kind == MemoryRegionKind::Otp); let otp = chip
.memory
.iter()
.find(|r| r.kind == MemoryRegionKind::Flash && r.name == "OTP");
write!(memory_x, "MEMORY\n{{\n").unwrap(); write!(memory_x, "MEMORY\n{{\n").unwrap();
writeln!( writeln!(
@ -371,7 +376,7 @@ fn gen_memory_x(out_dir: &Path, chip: &Chip) {
" FLASH : ORIGIN = 0x{:08x}, LENGTH = {:>4}K /* {} */", " FLASH : ORIGIN = 0x{:08x}, LENGTH = {:>4}K /* {} */",
flash_address, flash_address,
flash_size / 1024, flash_size / 1024,
flash.map(|x| x.name.as_ref()).collect::<Vec<&str>>().join(", ") flash.map(|x| x.name.as_ref()).collect::<Vec<&str>>().join(" + ")
) )
.unwrap(); .unwrap();
writeln!( writeln!(