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