Prefix memory region names with bank
This commit is contained in:
parent
ba962b3ca1
commit
b9d1c2a2ab
@ -987,12 +987,19 @@ fn process_chip(
|
|||||||
let ram_total = chip.ram * 1024;
|
let ram_total = chip.ram * 1024;
|
||||||
let mut memory_regions = Vec::new();
|
let mut memory_regions = Vec::new();
|
||||||
let mut found = HashSet::<&str>::new();
|
let mut found = HashSet::<&str>::new();
|
||||||
for each in ["FLASH", "FLASH_BANK1", "FLASH_BANK2", "D1_AXIFLASH", "D1_AXIICP"] {
|
for each in [
|
||||||
if let Some(_address) = h.defines.get("all").unwrap().0.get(&format!("{each}_BASE")) {
|
"FLASH_BANK1",
|
||||||
|
"FLASH_BANK2",
|
||||||
|
"FLASH",
|
||||||
|
"FLASH_OTP",
|
||||||
|
"D1_AXIFLASH",
|
||||||
|
"D1_AXIICP",
|
||||||
|
] {
|
||||||
|
if let Some(address) = h.defines.get("all").unwrap().0.get(&format!("{each}_BASE")) {
|
||||||
let key = match each {
|
let key = match each {
|
||||||
"FLASH" => "BANK_1",
|
"FLASH" => "BANK1",
|
||||||
"FLASH_BANK1" => "BANK_1",
|
"FLASH_BANK1" => "BANK1",
|
||||||
"FLASH_BANK2" => "BANK_2",
|
"FLASH_BANK2" => "BANK2",
|
||||||
each => each,
|
each => each,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1001,27 +1008,46 @@ fn process_chip(
|
|||||||
}
|
}
|
||||||
found.insert(key);
|
found.insert(key);
|
||||||
|
|
||||||
for region in memories.determine_flash_regions(chip_name) {
|
if key == "FLASH_OTP" {
|
||||||
let size = if key == "BANK_1" || key == "BANK_2" {
|
if let Some(region) = memories
|
||||||
let size = region.bytes;
|
.determine_flash_regions(chip_name)
|
||||||
std::cmp::min(size, flash_total)
|
.iter()
|
||||||
|
.find(|x| x.bank == memory::FlashBank::Otp)
|
||||||
|
{
|
||||||
|
memory_regions.push(stm32_data_serde::chip::Memory {
|
||||||
|
name: region.name.clone(),
|
||||||
|
kind: stm32_data_serde::chip::memory::Kind::Otp,
|
||||||
|
address: u32::try_from(*address).unwrap(),
|
||||||
|
size: region.bytes,
|
||||||
|
settings: Some(region.settings.clone()),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
let bank = if key == "BANK2" {
|
||||||
|
memory::FlashBank::Bank2
|
||||||
} else {
|
} else {
|
||||||
0
|
memory::FlashBank::Bank1
|
||||||
};
|
};
|
||||||
|
|
||||||
let kind = match region.bank {
|
for region in memories
|
||||||
memory::FlashBank::Bank1 => stm32_data_serde::chip::memory::Kind::Flash,
|
.determine_flash_regions(chip_name)
|
||||||
memory::FlashBank::Bank2 => stm32_data_serde::chip::memory::Kind::Flash,
|
.iter()
|
||||||
memory::FlashBank::Otp => stm32_data_serde::chip::memory::Kind::Otp,
|
.filter(|x| x.bank == bank)
|
||||||
};
|
{
|
||||||
|
let size = if key == "BANK1" || key == "BANK2" {
|
||||||
|
std::cmp::min(region.bytes, flash_total)
|
||||||
|
} else {
|
||||||
|
0
|
||||||
|
};
|
||||||
|
|
||||||
memory_regions.push(stm32_data_serde::chip::Memory {
|
memory_regions.push(stm32_data_serde::chip::Memory {
|
||||||
name: region.name.clone(),
|
name: format!("{}_{}", key, region.name),
|
||||||
kind,
|
kind: stm32_data_serde::chip::memory::Kind::Flash,
|
||||||
address: region.address,
|
address: u32::try_from(*address).unwrap(),
|
||||||
size,
|
size,
|
||||||
settings: Some(region.settings.clone()),
|
settings: Some(region.settings.clone()),
|
||||||
})
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user