diff options
| m--------- | stm32-data | 0 | ||||
| -rw-r--r-- | stm32-metapac-gen/src/data.rs | 20 | ||||
| -rw-r--r-- | stm32-metapac-gen/src/lib.rs | 23 |
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 @@ | |||
| 1 | use serde::Deserialize; | 1 | use serde::Deserialize; |
| 2 | use std::collections::HashMap; | ||
| 3 | 2 | ||
| 4 | #[derive(Debug, Eq, PartialEq, Clone, Deserialize)] | 3 | #[derive(Debug, Eq, PartialEq, Clone, Deserialize)] |
| 5 | pub struct Chip { | 4 | pub 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)] |
| 16 | pub struct Memory { | 14 | pub 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)] |
| 22 | pub struct MemoryRegion { | 22 | pub 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> { | |||
| 587 | fn gen_memory_x(out_dir: &PathBuf, chip: &Chip) { | 587 | fn 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(); |
