aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
m---------stm32-data0
-rw-r--r--stm32-metapac-gen/src/data.rs20
-rw-r--r--stm32-metapac-gen/src/lib.rs23
3 files changed, 15 insertions, 28 deletions
diff --git a/stm32-data b/stm32-data
Subproject 69ac5bce28972de33b57497454421c6ac862b0e Subproject fe221f48442d4b6eef6dcfd04d9d4deec4402cc
diff --git a/stm32-metapac-gen/src/data.rs b/stm32-metapac-gen/src/data.rs
index 2fa4c4b04..56a121ffb 100644
--- a/stm32-metapac-gen/src/data.rs
+++ b/stm32-metapac-gen/src/data.rs
@@ -1,5 +1,4 @@
1use serde::Deserialize; 1use serde::Deserialize;
2use std::collections::HashMap;
3 2
4#[derive(Debug, Eq, PartialEq, Clone, Deserialize)] 3#[derive(Debug, Eq, PartialEq, Clone, Deserialize)]
5pub struct Chip { 4pub struct Chip {
@@ -7,21 +6,24 @@ pub struct Chip {
7 pub family: String, 6 pub family: String,
8 pub line: String, 7 pub line: String,
9 pub cores: Vec<Core>, 8 pub cores: Vec<Core>,
10 pub flash: Memory, 9 pub memory: Vec<MemoryRegion>,
11 pub ram: Memory,
12 pub packages: Vec<Package>, 10 pub packages: Vec<Package>,
13} 11}
14 12
15#[derive(Debug, Eq, PartialEq, Clone, Deserialize)] 13#[derive(Debug, Eq, PartialEq, Clone, Deserialize)]
16pub struct Memory { 14pub struct MemoryRegion {
17 pub bytes: u32, 15 pub name: String,
18 pub regions: HashMap<String, MemoryRegion>, 16 pub kind: MemoryRegionKind,
17 pub address: u32,
18 pub size: u32,
19} 19}
20 20
21#[derive(Debug, Eq, PartialEq, Clone, Deserialize)] 21#[derive(Debug, Eq, PartialEq, Clone, Deserialize)]
22pub struct MemoryRegion { 22pub enum MemoryRegionKind {
23 pub base: u32, 23 #[serde(rename = "flash")]
24 pub bytes: Option<u32>, 24 Flash,
25 #[serde(rename = "ram")]
26 Ram,
25} 27}
26 28
27#[derive(Debug, Eq, PartialEq, Clone, Deserialize)] 29#[derive(Debug, Eq, PartialEq, Clone, Deserialize)]
diff --git a/stm32-metapac-gen/src/lib.rs b/stm32-metapac-gen/src/lib.rs
index a4d4de5f5..07de4f1e2 100644
--- a/stm32-metapac-gen/src/lib.rs
+++ b/stm32-metapac-gen/src/lib.rs
@@ -587,35 +587,20 @@ fn bytes_find(haystack: &[u8], needle: &[u8]) -> Option<usize> {
587fn gen_memory_x(out_dir: &PathBuf, chip: &Chip) { 587fn gen_memory_x(out_dir: &PathBuf, chip: &Chip) {
588 let mut memory_x = String::new(); 588 let mut memory_x = String::new();
589 589
590 let flash_bytes = chip 590 let flash = chip.memory.iter().find(|r| r.name == "BANK_1").unwrap();
591 .flash 591 let ram = chip.memory.iter().find(|r| r.name == "SRAM").unwrap();
592 .regions
593 .get("BANK_1")
594 .unwrap()
595 .bytes
596 .unwrap_or(chip.flash.bytes);
597 let flash_origin = chip.flash.regions.get("BANK_1").unwrap().base;
598
599 let ram_bytes = chip
600 .ram
601 .regions
602 .get("SRAM")
603 .unwrap()
604 .bytes
605 .unwrap_or(chip.ram.bytes);
606 let ram_origin = chip.ram.regions.get("SRAM").unwrap().base;
607 592
608 write!(memory_x, "MEMORY\n{{\n").unwrap(); 593 write!(memory_x, "MEMORY\n{{\n").unwrap();
609 write!( 594 write!(
610 memory_x, 595 memory_x,
611 " FLASH : ORIGIN = 0x{:x}, LENGTH = {}\n", 596 " FLASH : ORIGIN = 0x{:x}, LENGTH = {}\n",
612 flash_origin, flash_bytes 597 flash.address, flash.size,
613 ) 598 )
614 .unwrap(); 599 .unwrap();
615 write!( 600 write!(
616 memory_x, 601 memory_x,
617 " RAM : ORIGIN = 0x{:x}, LENGTH = {}\n", 602 " RAM : ORIGIN = 0x{:x}, LENGTH = {}\n",
618 ram_origin, ram_bytes 603 ram.address, ram.size,
619 ) 604 )
620 .unwrap(); 605 .unwrap();
621 write!(memory_x, "}}").unwrap(); 606 write!(memory_x, "}}").unwrap();