mirror of
https://github.com/esp-rs/esp-hal.git
synced 2025-09-30 05:40:39 +00:00
Use metadata to define LP peripheral FIFO sizes (#3812)
This commit is contained in:
parent
fdc2a33e67
commit
e146e03c72
@ -64,6 +64,7 @@ For help getting started with this HAL, please refer to [The Rust on ESP Book] a
|
|||||||
| GPIO | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|
| GPIO | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|
||||||
| HMAC | | | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
|
| HMAC | | | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
|
||||||
| I2C master | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|
| I2C master | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|
||||||
|
| LP I2C master | | | | ⚒️ | | | |
|
||||||
| I2C slave | ❌ | | ❌ | ❌ | ❌ | ❌ | ❌ |
|
| I2C slave | ❌ | | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||||
| I2S | ⚒️ | | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
|
| I2S | ⚒️ | | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
|
||||||
| Interrupts | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
|
| Interrupts | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
|
||||||
@ -90,6 +91,7 @@ For help getting started with this HAL, please refer to [The Rust on ESP Book] a
|
|||||||
| Touch | ⚒️ | | | | | ❌ | ❌ |
|
| Touch | ⚒️ | | | | | ❌ | ❌ |
|
||||||
| TWAI | ⚒️ | | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
|
| TWAI | ⚒️ | | ⚒️ | ⚒️ | ⚒️ | ⚒️ | ⚒️ |
|
||||||
| UART | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|
| UART | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
|
||||||
|
| LP UART | | | | ⚒️ | | | |
|
||||||
| ULP (FSM) | ⚒️ | | | | | ⚒️ | ⚒️ |
|
| ULP (FSM) | ⚒️ | | | | | ⚒️ | ⚒️ |
|
||||||
| ULP (RISC-V) | | | | ⚒️ | | ⚒️ | ⚒️ |
|
| ULP (RISC-V) | | | | ⚒️ | | ⚒️ | ⚒️ |
|
||||||
| USB OTG FS | | | | | | ⚒️ | ⚒️ |
|
| USB OTG FS | | | | | | ⚒️ | ⚒️ |
|
||||||
|
@ -2340,7 +2340,7 @@ pub(super) fn intr_handler(uart: &Info, state: &State) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Low-power UART
|
/// Low-power UART
|
||||||
#[cfg(soc_has_lp_uart)]
|
#[cfg(lp_uart)]
|
||||||
#[instability::unstable]
|
#[instability::unstable]
|
||||||
pub mod lp_uart {
|
pub mod lp_uart {
|
||||||
use crate::{
|
use crate::{
|
||||||
@ -2631,8 +2631,8 @@ pub struct State {
|
|||||||
impl Info {
|
impl Info {
|
||||||
// Currently we don't support merging adjacent FIFO memory, so the max size is
|
// Currently we don't support merging adjacent FIFO memory, so the max size is
|
||||||
// 128 bytes, the max threshold is 127 bytes.
|
// 128 bytes, the max threshold is 127 bytes.
|
||||||
const UART_FIFO_SIZE: u16 = 128;
|
const UART_FIFO_SIZE: u16 = property!("uart.ram_size");
|
||||||
const RX_FIFO_MAX_THRHD: u16 = 127;
|
const RX_FIFO_MAX_THRHD: u16 = Self::UART_FIFO_SIZE - 1;
|
||||||
const TX_FIFO_MAX_THRHD: u16 = Self::RX_FIFO_MAX_THRHD;
|
const TX_FIFO_MAX_THRHD: u16 = Self::RX_FIFO_MAX_THRHD;
|
||||||
|
|
||||||
/// Returns the register block for this UART instance.
|
/// Returns the register block for this UART instance.
|
||||||
|
@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
- Fixed size of LP_UART's RAM block (#3812)
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
|
|
||||||
|
@ -31,10 +31,14 @@ esp32s3-ulp = { version = "0.3.0", features = ["critical-section"], option
|
|||||||
nb = { version = "1.1.0", optional = true }
|
nb = { version = "1.1.0", optional = true }
|
||||||
procmacros = { version = "0.19.0", package = "esp-hal-procmacros", path = "../esp-hal-procmacros" }
|
procmacros = { version = "0.19.0", package = "esp-hal-procmacros", path = "../esp-hal-procmacros" }
|
||||||
riscv = { version = "0.11.1", features = ["critical-section-single-hart"] }
|
riscv = { version = "0.11.1", features = ["critical-section-single-hart"] }
|
||||||
|
esp-metadata-generated = { version = "0.1.0", path = "../esp-metadata-generated" }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
panic-halt = "0.2.0"
|
panic-halt = "0.2.0"
|
||||||
|
|
||||||
|
[build-dependencies]
|
||||||
|
esp-metadata-generated = { version = "0.1.0", path = "../esp-metadata-generated", features = ["build-script"] }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["embedded-hal"]
|
default = ["embedded-hal"]
|
||||||
|
|
||||||
@ -47,11 +51,11 @@ debug = [
|
|||||||
|
|
||||||
# Chip Support Feature Flags
|
# Chip Support Feature Flags
|
||||||
# Target the ESP32-C6.
|
# Target the ESP32-C6.
|
||||||
esp32c6 = ["dep:esp32c6-lp", "procmacros/is-lp-core", "dep:nb"]
|
esp32c6 = ["dep:esp32c6-lp", "esp-metadata-generated/esp32c6", "procmacros/is-lp-core", "dep:nb"]
|
||||||
# Target the ESP32-S2.
|
# Target the ESP32-S2.
|
||||||
esp32s2 = ["dep:esp32s2-ulp", "procmacros/is-ulp-core"]
|
esp32s2 = ["dep:esp32s2-ulp", "esp-metadata-generated/esp32s2", "procmacros/is-ulp-core"]
|
||||||
# Target the ESP32-S3.
|
# Target the ESP32-S3.
|
||||||
esp32s3 = ["dep:esp32s3-ulp", "procmacros/is-ulp-core"]
|
esp32s3 = ["dep:esp32s3-ulp", "esp-metadata-generated/esp32s3", "procmacros/is-ulp-core"]
|
||||||
|
|
||||||
#! ### Trait Implementation Feature Flags
|
#! ### Trait Implementation Feature Flags
|
||||||
## Implement the traits defined in the `1.0.0` releases of `embedded-hal` and
|
## Implement the traits defined in the `1.0.0` releases of `embedded-hal` and
|
||||||
|
@ -1,48 +1,26 @@
|
|||||||
use std::{env, error::Error, fs, path::PathBuf};
|
use std::{env, error::Error, fs, path::PathBuf};
|
||||||
|
|
||||||
#[macro_export]
|
use esp_metadata_generated::Chip;
|
||||||
macro_rules! assert_unique_used_features {
|
|
||||||
($($feature:literal),+ $(,)?) => {
|
|
||||||
assert!(
|
|
||||||
(0 $(+ cfg!(feature = $feature) as usize)+ ) == 1,
|
|
||||||
"Exactly one of the following features must be enabled: {}",
|
|
||||||
[$($feature),+].join(", ")
|
|
||||||
);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
fn main() -> Result<(), Box<dyn Error>> {
|
fn main() -> Result<(), Box<dyn Error>> {
|
||||||
// NOTE: update when adding new device support!
|
|
||||||
// Ensure that exactly one chip has been specified:
|
|
||||||
assert_unique_used_features!("esp32c6", "esp32s2", "esp32s3");
|
|
||||||
|
|
||||||
// NOTE: update when adding new device support!
|
|
||||||
// Determine the name of the configured device:
|
// Determine the name of the configured device:
|
||||||
let device_name = if cfg!(feature = "esp32c6") {
|
let chip = Chip::from_cargo_feature()?;
|
||||||
"esp32c6"
|
|
||||||
} else if cfg!(feature = "esp32s2") {
|
|
||||||
"esp32s2"
|
|
||||||
} else if cfg!(feature = "esp32s3") {
|
|
||||||
"esp32s3"
|
|
||||||
} else {
|
|
||||||
unreachable!() // We've confirmed exactly one known device was selected
|
|
||||||
};
|
|
||||||
|
|
||||||
// Define all necessary configuration symbols for the configured device:
|
// Define all necessary configuration symbols for the configured device:
|
||||||
println!("cargo:rustc-cfg={device_name}");
|
chip.define_cfgs();
|
||||||
|
|
||||||
|
// Copy the required linker script to the `out` directory:
|
||||||
|
let source_file = match chip {
|
||||||
|
Chip::Esp32c6 => "ld/link-lp.x",
|
||||||
|
Chip::Esp32s2 | Chip::Esp32s3 => "ld/link-ulp.x",
|
||||||
|
_ => unreachable!(),
|
||||||
|
};
|
||||||
|
|
||||||
// Put the linker script somewhere the linker can find it:
|
// Put the linker script somewhere the linker can find it:
|
||||||
let out = PathBuf::from(env::var_os("OUT_DIR").unwrap());
|
let out = PathBuf::from(env::var_os("OUT_DIR").unwrap());
|
||||||
println!("cargo:rustc-link-search={}", out.display());
|
println!("cargo:rustc-link-search={}", out.display());
|
||||||
|
fs::copy(source_file, out.join("link.x"))?;
|
||||||
// Copy the required linker script to the `out` directory:
|
|
||||||
if cfg!(feature = "esp32c6") {
|
|
||||||
fs::copy("ld/link-lp.x", out.join("link.x"))?;
|
|
||||||
println!("cargo:rerun-if-changed=ld/link-lp.x");
|
|
||||||
} else if cfg!(feature = "esp32s2") || cfg!(feature = "esp32s3") {
|
|
||||||
fs::copy("ld/link-ulp.x", out.join("link.x"))?;
|
|
||||||
println!("cargo:rerun-if-changed=ld/link-ulp.x");
|
println!("cargo:rerun-if-changed=ld/link-ulp.x");
|
||||||
}
|
|
||||||
|
|
||||||
// Done!
|
// Done!
|
||||||
Ok(())
|
Ok(())
|
||||||
|
@ -12,7 +12,7 @@ const I2C_LL_INTR_MASK: u32 = (1 << LP_I2C_TRANS_COMPLETE_INT_ST_S)
|
|||||||
| (1 << LP_I2C_END_DETECT_INT_ST_S)
|
| (1 << LP_I2C_END_DETECT_INT_ST_S)
|
||||||
| (1 << LP_I2C_NACK_INT_ST_S);
|
| (1 << LP_I2C_NACK_INT_ST_S);
|
||||||
|
|
||||||
const LP_I2C_FIFO_LEN: u32 = 16;
|
const LP_I2C_FIFO_LEN: u32 = property!("lp_i2c_master.fifo_size");
|
||||||
|
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
pub unsafe fn conjure() -> LpI2c {
|
pub unsafe fn conjure() -> LpI2c {
|
||||||
|
@ -18,13 +18,17 @@
|
|||||||
#![deny(missing_docs)]
|
#![deny(missing_docs)]
|
||||||
#![no_std]
|
#![no_std]
|
||||||
|
|
||||||
|
#[allow(unused_imports, reason = "Only used for some MCUs currently")]
|
||||||
|
#[macro_use]
|
||||||
|
extern crate esp_metadata_generated;
|
||||||
|
|
||||||
use core::arch::global_asm;
|
use core::arch::global_asm;
|
||||||
|
|
||||||
pub mod delay;
|
pub mod delay;
|
||||||
pub mod gpio;
|
pub mod gpio;
|
||||||
#[cfg(esp32c6)]
|
#[cfg(lp_i2c_master)]
|
||||||
pub mod i2c;
|
pub mod i2c;
|
||||||
#[cfg(esp32c6)]
|
#[cfg(lp_uart)]
|
||||||
pub mod uart;
|
pub mod uart;
|
||||||
|
|
||||||
#[cfg(feature = "esp32c6")]
|
#[cfg(feature = "esp32c6")]
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
use crate::pac::LP_UART;
|
use crate::pac::LP_UART;
|
||||||
|
|
||||||
const UART_FIFO_SIZE: u16 = 128;
|
const UART_FIFO_SIZE: u16 = property!("lp_uart.ram_size");
|
||||||
|
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
pub unsafe fn conjure() -> LpUart {
|
pub unsafe fn conjure() -> LpUart {
|
||||||
|
@ -278,6 +278,7 @@ impl Chip {
|
|||||||
"rmt_ram_start=\"1073047552\"",
|
"rmt_ram_start=\"1073047552\"",
|
||||||
"rmt_channel_ram_size=\"64\"",
|
"rmt_channel_ram_size=\"64\"",
|
||||||
"timergroup_timg_has_timer1",
|
"timergroup_timg_has_timer1",
|
||||||
|
"uart_ram_size=\"128\"",
|
||||||
"has_dram_region",
|
"has_dram_region",
|
||||||
],
|
],
|
||||||
cfgs: &[
|
cfgs: &[
|
||||||
@ -419,6 +420,7 @@ impl Chip {
|
|||||||
"cargo:rustc-cfg=rmt_ram_start=\"1073047552\"",
|
"cargo:rustc-cfg=rmt_ram_start=\"1073047552\"",
|
||||||
"cargo:rustc-cfg=rmt_channel_ram_size=\"64\"",
|
"cargo:rustc-cfg=rmt_channel_ram_size=\"64\"",
|
||||||
"cargo:rustc-cfg=timergroup_timg_has_timer1",
|
"cargo:rustc-cfg=timergroup_timg_has_timer1",
|
||||||
|
"cargo:rustc-cfg=uart_ram_size=\"128\"",
|
||||||
"cargo:rustc-cfg=has_dram_region",
|
"cargo:rustc-cfg=has_dram_region",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@ -524,6 +526,7 @@ impl Chip {
|
|||||||
"i2c_master_ll_intr_mask=\"262143\"",
|
"i2c_master_ll_intr_mask=\"262143\"",
|
||||||
"i2c_master_fifo_size=\"16\"",
|
"i2c_master_fifo_size=\"16\"",
|
||||||
"interrupts_status_registers=\"2\"",
|
"interrupts_status_registers=\"2\"",
|
||||||
|
"uart_ram_size=\"128\"",
|
||||||
"has_dram_region",
|
"has_dram_region",
|
||||||
],
|
],
|
||||||
cfgs: &[
|
cfgs: &[
|
||||||
@ -625,6 +628,7 @@ impl Chip {
|
|||||||
"cargo:rustc-cfg=i2c_master_ll_intr_mask=\"262143\"",
|
"cargo:rustc-cfg=i2c_master_ll_intr_mask=\"262143\"",
|
||||||
"cargo:rustc-cfg=i2c_master_fifo_size=\"16\"",
|
"cargo:rustc-cfg=i2c_master_fifo_size=\"16\"",
|
||||||
"cargo:rustc-cfg=interrupts_status_registers=\"2\"",
|
"cargo:rustc-cfg=interrupts_status_registers=\"2\"",
|
||||||
|
"cargo:rustc-cfg=uart_ram_size=\"128\"",
|
||||||
"cargo:rustc-cfg=has_dram_region",
|
"cargo:rustc-cfg=has_dram_region",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@ -750,6 +754,7 @@ impl Chip {
|
|||||||
"interrupts_status_registers=\"2\"",
|
"interrupts_status_registers=\"2\"",
|
||||||
"rmt_ram_start=\"1610703872\"",
|
"rmt_ram_start=\"1610703872\"",
|
||||||
"rmt_channel_ram_size=\"48\"",
|
"rmt_channel_ram_size=\"48\"",
|
||||||
|
"uart_ram_size=\"128\"",
|
||||||
"has_dram_region",
|
"has_dram_region",
|
||||||
],
|
],
|
||||||
cfgs: &[
|
cfgs: &[
|
||||||
@ -871,6 +876,7 @@ impl Chip {
|
|||||||
"cargo:rustc-cfg=interrupts_status_registers=\"2\"",
|
"cargo:rustc-cfg=interrupts_status_registers=\"2\"",
|
||||||
"cargo:rustc-cfg=rmt_ram_start=\"1610703872\"",
|
"cargo:rustc-cfg=rmt_ram_start=\"1610703872\"",
|
||||||
"cargo:rustc-cfg=rmt_channel_ram_size=\"48\"",
|
"cargo:rustc-cfg=rmt_channel_ram_size=\"48\"",
|
||||||
|
"cargo:rustc-cfg=uart_ram_size=\"128\"",
|
||||||
"cargo:rustc-cfg=has_dram_region",
|
"cargo:rustc-cfg=has_dram_region",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@ -990,6 +996,7 @@ impl Chip {
|
|||||||
"gpio",
|
"gpio",
|
||||||
"hmac",
|
"hmac",
|
||||||
"i2c_master",
|
"i2c_master",
|
||||||
|
"lp_i2c_master",
|
||||||
"i2s",
|
"i2s",
|
||||||
"interrupts",
|
"interrupts",
|
||||||
"io_mux",
|
"io_mux",
|
||||||
@ -1010,6 +1017,7 @@ impl Chip {
|
|||||||
"timergroup",
|
"timergroup",
|
||||||
"twai",
|
"twai",
|
||||||
"uart",
|
"uart",
|
||||||
|
"lp_uart",
|
||||||
"ulp_riscv",
|
"ulp_riscv",
|
||||||
"usb_serial_jtag",
|
"usb_serial_jtag",
|
||||||
"wifi",
|
"wifi",
|
||||||
@ -1043,9 +1051,12 @@ impl Chip {
|
|||||||
"i2c_master_max_bus_timeout=\"31\"",
|
"i2c_master_max_bus_timeout=\"31\"",
|
||||||
"i2c_master_ll_intr_mask=\"262143\"",
|
"i2c_master_ll_intr_mask=\"262143\"",
|
||||||
"i2c_master_fifo_size=\"32\"",
|
"i2c_master_fifo_size=\"32\"",
|
||||||
|
"lp_i2c_master_fifo_size=\"16\"",
|
||||||
"interrupts_status_registers=\"3\"",
|
"interrupts_status_registers=\"3\"",
|
||||||
"rmt_ram_start=\"1610638336\"",
|
"rmt_ram_start=\"1610638336\"",
|
||||||
"rmt_channel_ram_size=\"48\"",
|
"rmt_channel_ram_size=\"48\"",
|
||||||
|
"uart_ram_size=\"128\"",
|
||||||
|
"lp_uart_ram_size=\"32\"",
|
||||||
"wifi_has_wifi6",
|
"wifi_has_wifi6",
|
||||||
"has_dram_region",
|
"has_dram_region",
|
||||||
],
|
],
|
||||||
@ -1162,6 +1173,7 @@ impl Chip {
|
|||||||
"cargo:rustc-cfg=gpio",
|
"cargo:rustc-cfg=gpio",
|
||||||
"cargo:rustc-cfg=hmac",
|
"cargo:rustc-cfg=hmac",
|
||||||
"cargo:rustc-cfg=i2c_master",
|
"cargo:rustc-cfg=i2c_master",
|
||||||
|
"cargo:rustc-cfg=lp_i2c_master",
|
||||||
"cargo:rustc-cfg=i2s",
|
"cargo:rustc-cfg=i2s",
|
||||||
"cargo:rustc-cfg=interrupts",
|
"cargo:rustc-cfg=interrupts",
|
||||||
"cargo:rustc-cfg=io_mux",
|
"cargo:rustc-cfg=io_mux",
|
||||||
@ -1182,6 +1194,7 @@ impl Chip {
|
|||||||
"cargo:rustc-cfg=timergroup",
|
"cargo:rustc-cfg=timergroup",
|
||||||
"cargo:rustc-cfg=twai",
|
"cargo:rustc-cfg=twai",
|
||||||
"cargo:rustc-cfg=uart",
|
"cargo:rustc-cfg=uart",
|
||||||
|
"cargo:rustc-cfg=lp_uart",
|
||||||
"cargo:rustc-cfg=ulp_riscv",
|
"cargo:rustc-cfg=ulp_riscv",
|
||||||
"cargo:rustc-cfg=usb_serial_jtag",
|
"cargo:rustc-cfg=usb_serial_jtag",
|
||||||
"cargo:rustc-cfg=wifi",
|
"cargo:rustc-cfg=wifi",
|
||||||
@ -1215,9 +1228,12 @@ impl Chip {
|
|||||||
"cargo:rustc-cfg=i2c_master_max_bus_timeout=\"31\"",
|
"cargo:rustc-cfg=i2c_master_max_bus_timeout=\"31\"",
|
||||||
"cargo:rustc-cfg=i2c_master_ll_intr_mask=\"262143\"",
|
"cargo:rustc-cfg=i2c_master_ll_intr_mask=\"262143\"",
|
||||||
"cargo:rustc-cfg=i2c_master_fifo_size=\"32\"",
|
"cargo:rustc-cfg=i2c_master_fifo_size=\"32\"",
|
||||||
|
"cargo:rustc-cfg=lp_i2c_master_fifo_size=\"16\"",
|
||||||
"cargo:rustc-cfg=interrupts_status_registers=\"3\"",
|
"cargo:rustc-cfg=interrupts_status_registers=\"3\"",
|
||||||
"cargo:rustc-cfg=rmt_ram_start=\"1610638336\"",
|
"cargo:rustc-cfg=rmt_ram_start=\"1610638336\"",
|
||||||
"cargo:rustc-cfg=rmt_channel_ram_size=\"48\"",
|
"cargo:rustc-cfg=rmt_channel_ram_size=\"48\"",
|
||||||
|
"cargo:rustc-cfg=uart_ram_size=\"128\"",
|
||||||
|
"cargo:rustc-cfg=lp_uart_ram_size=\"32\"",
|
||||||
"cargo:rustc-cfg=wifi_has_wifi6",
|
"cargo:rustc-cfg=wifi_has_wifi6",
|
||||||
"cargo:rustc-cfg=has_dram_region",
|
"cargo:rustc-cfg=has_dram_region",
|
||||||
],
|
],
|
||||||
@ -1373,6 +1389,7 @@ impl Chip {
|
|||||||
"interrupts_status_registers=\"2\"",
|
"interrupts_status_registers=\"2\"",
|
||||||
"rmt_ram_start=\"1610642432\"",
|
"rmt_ram_start=\"1610642432\"",
|
||||||
"rmt_channel_ram_size=\"48\"",
|
"rmt_channel_ram_size=\"48\"",
|
||||||
|
"uart_ram_size=\"128\"",
|
||||||
"has_dram_region",
|
"has_dram_region",
|
||||||
],
|
],
|
||||||
cfgs: &[
|
cfgs: &[
|
||||||
@ -1523,6 +1540,7 @@ impl Chip {
|
|||||||
"cargo:rustc-cfg=interrupts_status_registers=\"2\"",
|
"cargo:rustc-cfg=interrupts_status_registers=\"2\"",
|
||||||
"cargo:rustc-cfg=rmt_ram_start=\"1610642432\"",
|
"cargo:rustc-cfg=rmt_ram_start=\"1610642432\"",
|
||||||
"cargo:rustc-cfg=rmt_channel_ram_size=\"48\"",
|
"cargo:rustc-cfg=rmt_channel_ram_size=\"48\"",
|
||||||
|
"cargo:rustc-cfg=uart_ram_size=\"128\"",
|
||||||
"cargo:rustc-cfg=has_dram_region",
|
"cargo:rustc-cfg=has_dram_region",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@ -1669,6 +1687,7 @@ impl Chip {
|
|||||||
"rmt_channel_ram_size=\"64\"",
|
"rmt_channel_ram_size=\"64\"",
|
||||||
"spi_master_has_octal",
|
"spi_master_has_octal",
|
||||||
"timergroup_timg_has_timer1",
|
"timergroup_timg_has_timer1",
|
||||||
|
"uart_ram_size=\"128\"",
|
||||||
"has_dram_region",
|
"has_dram_region",
|
||||||
],
|
],
|
||||||
cfgs: &[
|
cfgs: &[
|
||||||
@ -1811,6 +1830,7 @@ impl Chip {
|
|||||||
"cargo:rustc-cfg=rmt_channel_ram_size=\"64\"",
|
"cargo:rustc-cfg=rmt_channel_ram_size=\"64\"",
|
||||||
"cargo:rustc-cfg=spi_master_has_octal",
|
"cargo:rustc-cfg=spi_master_has_octal",
|
||||||
"cargo:rustc-cfg=timergroup_timg_has_timer1",
|
"cargo:rustc-cfg=timergroup_timg_has_timer1",
|
||||||
|
"cargo:rustc-cfg=uart_ram_size=\"128\"",
|
||||||
"cargo:rustc-cfg=has_dram_region",
|
"cargo:rustc-cfg=has_dram_region",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@ -1977,6 +1997,7 @@ impl Chip {
|
|||||||
"rmt_channel_ram_size=\"48\"",
|
"rmt_channel_ram_size=\"48\"",
|
||||||
"spi_master_has_octal",
|
"spi_master_has_octal",
|
||||||
"timergroup_timg_has_timer1",
|
"timergroup_timg_has_timer1",
|
||||||
|
"uart_ram_size=\"128\"",
|
||||||
"has_dram_region",
|
"has_dram_region",
|
||||||
],
|
],
|
||||||
cfgs: &[
|
cfgs: &[
|
||||||
@ -2139,6 +2160,7 @@ impl Chip {
|
|||||||
"cargo:rustc-cfg=rmt_channel_ram_size=\"48\"",
|
"cargo:rustc-cfg=rmt_channel_ram_size=\"48\"",
|
||||||
"cargo:rustc-cfg=spi_master_has_octal",
|
"cargo:rustc-cfg=spi_master_has_octal",
|
||||||
"cargo:rustc-cfg=timergroup_timg_has_timer1",
|
"cargo:rustc-cfg=timergroup_timg_has_timer1",
|
||||||
|
"cargo:rustc-cfg=uart_ram_size=\"128\"",
|
||||||
"cargo:rustc-cfg=has_dram_region",
|
"cargo:rustc-cfg=has_dram_region",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
@ -2372,7 +2394,9 @@ impl Config {
|
|||||||
println!("cargo:rustc-check-cfg=cfg(lp_core)");
|
println!("cargo:rustc-check-cfg=cfg(lp_core)");
|
||||||
println!("cargo:rustc-check-cfg=cfg(pm_support_beacon_wakeup)");
|
println!("cargo:rustc-check-cfg=cfg(pm_support_beacon_wakeup)");
|
||||||
println!("cargo:rustc-check-cfg=cfg(etm)");
|
println!("cargo:rustc-check-cfg=cfg(etm)");
|
||||||
|
println!("cargo:rustc-check-cfg=cfg(lp_i2c_master)");
|
||||||
println!("cargo:rustc-check-cfg=cfg(parl_io)");
|
println!("cargo:rustc-check-cfg=cfg(parl_io)");
|
||||||
|
println!("cargo:rustc-check-cfg=cfg(lp_uart)");
|
||||||
println!("cargo:rustc-check-cfg=cfg(ulp_riscv)");
|
println!("cargo:rustc-check-cfg=cfg(ulp_riscv)");
|
||||||
println!("cargo:rustc-check-cfg=cfg(ieee802154)");
|
println!("cargo:rustc-check-cfg=cfg(ieee802154)");
|
||||||
println!("cargo:rustc-check-cfg=cfg(i2c_master_can_estimate_nack_reason)");
|
println!("cargo:rustc-check-cfg=cfg(i2c_master_can_estimate_nack_reason)");
|
||||||
@ -2430,6 +2454,9 @@ impl Config {
|
|||||||
"cargo:rustc-check-cfg=cfg(rmt_ram_start, values(\"1073047552\",\"1610703872\",\"1610638336\",\"1610642432\",\"1061250048\",\"1610704896\"))"
|
"cargo:rustc-check-cfg=cfg(rmt_ram_start, values(\"1073047552\",\"1610703872\",\"1610638336\",\"1610642432\",\"1061250048\",\"1610704896\"))"
|
||||||
);
|
);
|
||||||
println!("cargo:rustc-check-cfg=cfg(rmt_channel_ram_size, values(\"64\",\"48\"))");
|
println!("cargo:rustc-check-cfg=cfg(rmt_channel_ram_size, values(\"64\",\"48\"))");
|
||||||
|
println!("cargo:rustc-check-cfg=cfg(uart_ram_size, values(\"128\"))");
|
||||||
|
println!("cargo:rustc-check-cfg=cfg(lp_i2c_master_fifo_size, values(\"16\"))");
|
||||||
|
println!("cargo:rustc-check-cfg=cfg(lp_uart_ram_size, values(\"32\"))");
|
||||||
for cfg in self.cfgs {
|
for cfg in self.cfgs {
|
||||||
println!("{cfg}");
|
println!("{cfg}");
|
||||||
}
|
}
|
||||||
|
@ -156,6 +156,12 @@ macro_rules! property {
|
|||||||
("timergroup.timg_has_timer1") => {
|
("timergroup.timg_has_timer1") => {
|
||||||
true
|
true
|
||||||
};
|
};
|
||||||
|
("uart.ram_size") => {
|
||||||
|
128
|
||||||
|
};
|
||||||
|
("uart.ram_size", str) => {
|
||||||
|
stringify!(128)
|
||||||
|
};
|
||||||
("wifi.has_wifi6") => {
|
("wifi.has_wifi6") => {
|
||||||
false
|
false
|
||||||
};
|
};
|
||||||
|
@ -144,6 +144,12 @@ macro_rules! property {
|
|||||||
("timergroup.timg_has_timer1") => {
|
("timergroup.timg_has_timer1") => {
|
||||||
false
|
false
|
||||||
};
|
};
|
||||||
|
("uart.ram_size") => {
|
||||||
|
128
|
||||||
|
};
|
||||||
|
("uart.ram_size", str) => {
|
||||||
|
stringify!(128)
|
||||||
|
};
|
||||||
("wifi.has_wifi6") => {
|
("wifi.has_wifi6") => {
|
||||||
false
|
false
|
||||||
};
|
};
|
||||||
|
@ -156,6 +156,12 @@ macro_rules! property {
|
|||||||
("timergroup.timg_has_timer1") => {
|
("timergroup.timg_has_timer1") => {
|
||||||
false
|
false
|
||||||
};
|
};
|
||||||
|
("uart.ram_size") => {
|
||||||
|
128
|
||||||
|
};
|
||||||
|
("uart.ram_size", str) => {
|
||||||
|
stringify!(128)
|
||||||
|
};
|
||||||
("wifi.has_wifi6") => {
|
("wifi.has_wifi6") => {
|
||||||
false
|
false
|
||||||
};
|
};
|
||||||
|
@ -132,6 +132,12 @@ macro_rules! property {
|
|||||||
("i2c_master.fifo_size", str) => {
|
("i2c_master.fifo_size", str) => {
|
||||||
stringify!(32)
|
stringify!(32)
|
||||||
};
|
};
|
||||||
|
("lp_i2c_master.fifo_size") => {
|
||||||
|
16
|
||||||
|
};
|
||||||
|
("lp_i2c_master.fifo_size", str) => {
|
||||||
|
stringify!(16)
|
||||||
|
};
|
||||||
("interrupts.status_registers") => {
|
("interrupts.status_registers") => {
|
||||||
3
|
3
|
||||||
};
|
};
|
||||||
@ -156,6 +162,18 @@ macro_rules! property {
|
|||||||
("timergroup.timg_has_timer1") => {
|
("timergroup.timg_has_timer1") => {
|
||||||
false
|
false
|
||||||
};
|
};
|
||||||
|
("uart.ram_size") => {
|
||||||
|
128
|
||||||
|
};
|
||||||
|
("uart.ram_size", str) => {
|
||||||
|
stringify!(128)
|
||||||
|
};
|
||||||
|
("lp_uart.ram_size") => {
|
||||||
|
32
|
||||||
|
};
|
||||||
|
("lp_uart.ram_size", str) => {
|
||||||
|
stringify!(32)
|
||||||
|
};
|
||||||
("wifi.has_wifi6") => {
|
("wifi.has_wifi6") => {
|
||||||
true
|
true
|
||||||
};
|
};
|
||||||
|
@ -156,6 +156,12 @@ macro_rules! property {
|
|||||||
("timergroup.timg_has_timer1") => {
|
("timergroup.timg_has_timer1") => {
|
||||||
false
|
false
|
||||||
};
|
};
|
||||||
|
("uart.ram_size") => {
|
||||||
|
128
|
||||||
|
};
|
||||||
|
("uart.ram_size", str) => {
|
||||||
|
stringify!(128)
|
||||||
|
};
|
||||||
}
|
}
|
||||||
/// Macro to get the address range of the given memory region.
|
/// Macro to get the address range of the given memory region.
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
|
@ -156,6 +156,12 @@ macro_rules! property {
|
|||||||
("timergroup.timg_has_timer1") => {
|
("timergroup.timg_has_timer1") => {
|
||||||
true
|
true
|
||||||
};
|
};
|
||||||
|
("uart.ram_size") => {
|
||||||
|
128
|
||||||
|
};
|
||||||
|
("uart.ram_size", str) => {
|
||||||
|
stringify!(128)
|
||||||
|
};
|
||||||
("wifi.has_wifi6") => {
|
("wifi.has_wifi6") => {
|
||||||
false
|
false
|
||||||
};
|
};
|
||||||
|
@ -156,6 +156,12 @@ macro_rules! property {
|
|||||||
("timergroup.timg_has_timer1") => {
|
("timergroup.timg_has_timer1") => {
|
||||||
true
|
true
|
||||||
};
|
};
|
||||||
|
("uart.ram_size") => {
|
||||||
|
128
|
||||||
|
};
|
||||||
|
("uart.ram_size", str) => {
|
||||||
|
stringify!(128)
|
||||||
|
};
|
||||||
("wifi.has_wifi6") => {
|
("wifi.has_wifi6") => {
|
||||||
false
|
false
|
||||||
};
|
};
|
||||||
|
@ -607,6 +607,7 @@ instances = [
|
|||||||
{ name = "uart1", sys_instance = "Uart1", tx = "U1TXD", rx = "U1RXD", cts = "U1CTS", rts = "U1RTS" },
|
{ name = "uart1", sys_instance = "Uart1", tx = "U1TXD", rx = "U1RXD", cts = "U1CTS", rts = "U1RTS" },
|
||||||
{ name = "uart2", sys_instance = "Uart2", tx = "U2TXD", rx = "U2RXD", cts = "U2CTS", rts = "U2RTS" },
|
{ name = "uart2", sys_instance = "Uart2", tx = "U2TXD", rx = "U2RXD", cts = "U2CTS", rts = "U2RTS" },
|
||||||
]
|
]
|
||||||
|
ram_size = 128
|
||||||
|
|
||||||
[device.ethernet]
|
[device.ethernet]
|
||||||
support_status = "not_supported"
|
support_status = "not_supported"
|
||||||
|
@ -261,6 +261,7 @@ instances = [
|
|||||||
{ name = "uart0", sys_instance = "Uart0", tx = "U0TXD", rx = "U0RXD", cts = "U0CTS", rts = "U0RTS" },
|
{ name = "uart0", sys_instance = "Uart0", tx = "U0TXD", rx = "U0RXD", cts = "U0CTS", rts = "U0RTS" },
|
||||||
{ name = "uart1", sys_instance = "Uart1", tx = "U1TXD", rx = "U1RXD", cts = "U1CTS", rts = "U1RTS" },
|
{ name = "uart1", sys_instance = "Uart1", tx = "U1TXD", rx = "U1RXD", cts = "U1CTS", rts = "U1RTS" },
|
||||||
]
|
]
|
||||||
|
ram_size = 128
|
||||||
|
|
||||||
# Other drivers which are partially supported but have no other configuration:
|
# Other drivers which are partially supported but have no other configuration:
|
||||||
|
|
||||||
|
@ -307,6 +307,7 @@ instances = [
|
|||||||
{ name = "uart0", sys_instance = "Uart0", tx = "U0TXD", rx = "U0RXD", cts = "U0CTS", rts = "U0RTS" },
|
{ name = "uart0", sys_instance = "Uart0", tx = "U0TXD", rx = "U0RXD", cts = "U0CTS", rts = "U0RTS" },
|
||||||
{ name = "uart1", sys_instance = "Uart1", tx = "U1TXD", rx = "U1RXD", cts = "U1CTS", rts = "U1RTS" },
|
{ name = "uart1", sys_instance = "Uart1", tx = "U1TXD", rx = "U1RXD", cts = "U1CTS", rts = "U1RTS" },
|
||||||
]
|
]
|
||||||
|
ram_size = 128
|
||||||
|
|
||||||
[device.ds]
|
[device.ds]
|
||||||
support_status = "not_supported"
|
support_status = "not_supported"
|
||||||
|
@ -425,6 +425,10 @@ has_arbitration_en = true
|
|||||||
has_tx_fifo_watermark = true
|
has_tx_fifo_watermark = true
|
||||||
bus_timeout_is_exponential = true
|
bus_timeout_is_exponential = true
|
||||||
|
|
||||||
|
[device.lp_i2c_master]
|
||||||
|
support_status = "partial"
|
||||||
|
fifo_size = 16
|
||||||
|
|
||||||
[device.i2c_slave]
|
[device.i2c_slave]
|
||||||
support_status = "not_supported"
|
support_status = "not_supported"
|
||||||
|
|
||||||
@ -457,6 +461,11 @@ instances = [
|
|||||||
{ name = "uart0", sys_instance = "Uart0", tx = "U0TXD", rx = "U0RXD", cts = "U0CTS", rts = "U0RTS" },
|
{ name = "uart0", sys_instance = "Uart0", tx = "U0TXD", rx = "U0RXD", cts = "U0CTS", rts = "U0RTS" },
|
||||||
{ name = "uart1", sys_instance = "Uart1", tx = "U1TXD", rx = "U1RXD", cts = "U1CTS", rts = "U1RTS" },
|
{ name = "uart1", sys_instance = "Uart1", tx = "U1TXD", rx = "U1RXD", cts = "U1CTS", rts = "U1RTS" },
|
||||||
]
|
]
|
||||||
|
ram_size = 128
|
||||||
|
|
||||||
|
[device.lp_uart]
|
||||||
|
support_status = "partial"
|
||||||
|
ram_size = 32
|
||||||
|
|
||||||
[device.ds]
|
[device.ds]
|
||||||
support_status = "not_supported"
|
support_status = "not_supported"
|
||||||
|
@ -378,6 +378,7 @@ instances = [
|
|||||||
{ name = "uart0", sys_instance = "Uart0", tx = "U0TXD", rx = "U0RXD", cts = "U0CTS", rts = "U0RTS" },
|
{ name = "uart0", sys_instance = "Uart0", tx = "U0TXD", rx = "U0RXD", cts = "U0CTS", rts = "U0RTS" },
|
||||||
{ name = "uart1", sys_instance = "Uart1", tx = "U1TXD", rx = "U1RXD", cts = "U1CTS", rts = "U1RTS" },
|
{ name = "uart1", sys_instance = "Uart1", tx = "U1TXD", rx = "U1RXD", cts = "U1CTS", rts = "U1RTS" },
|
||||||
]
|
]
|
||||||
|
ram_size = 128
|
||||||
|
|
||||||
[device.ds]
|
[device.ds]
|
||||||
support_status = "not_supported"
|
support_status = "not_supported"
|
||||||
|
@ -429,6 +429,7 @@ instances = [
|
|||||||
{ name = "uart0", sys_instance = "Uart0", tx = "U0TXD", rx = "U0RXD", cts = "U0CTS", rts = "U0RTS" },
|
{ name = "uart0", sys_instance = "Uart0", tx = "U0TXD", rx = "U0RXD", cts = "U0CTS", rts = "U0RTS" },
|
||||||
{ name = "uart1", sys_instance = "Uart1", tx = "U1TXD", rx = "U1RXD", cts = "U1CTS", rts = "U1RTS" },
|
{ name = "uart1", sys_instance = "Uart1", tx = "U1TXD", rx = "U1RXD", cts = "U1CTS", rts = "U1RTS" },
|
||||||
]
|
]
|
||||||
|
ram_size = 128
|
||||||
|
|
||||||
[device.rgb_display] # via SPI and I2S
|
[device.rgb_display] # via SPI and I2S
|
||||||
support_status = "not_supported"
|
support_status = "not_supported"
|
||||||
|
@ -605,6 +605,7 @@ instances = [
|
|||||||
{ name = "uart1", sys_instance = "Uart1", tx = "U1TXD", rx = "U1RXD", cts = "U1CTS", rts = "U1RTS" },
|
{ name = "uart1", sys_instance = "Uart1", tx = "U1TXD", rx = "U1RXD", cts = "U1CTS", rts = "U1RTS" },
|
||||||
{ name = "uart2", sys_instance = "Uart2", tx = "U2TXD", rx = "U2RXD", cts = "U2CTS", rts = "U2RTS" },
|
{ name = "uart2", sys_instance = "Uart2", tx = "U2TXD", rx = "U2RXD", cts = "U2CTS", rts = "U2RTS" },
|
||||||
]
|
]
|
||||||
|
ram_size = 128
|
||||||
|
|
||||||
[device.touch]
|
[device.touch]
|
||||||
support_status = "not_supported"
|
support_status = "not_supported"
|
||||||
|
@ -329,6 +329,13 @@ driver_configs![
|
|||||||
fifo_size: u32,
|
fifo_size: u32,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
LpI2cMasterProperties {
|
||||||
|
driver: lp_i2c_master,
|
||||||
|
name: "LP I2C master",
|
||||||
|
properties: {
|
||||||
|
fifo_size: u32,
|
||||||
|
}
|
||||||
|
},
|
||||||
I2cSlaveProperties {
|
I2cSlaveProperties {
|
||||||
driver: i2c_slave,
|
driver: i2c_slave,
|
||||||
name: "I2C slave",
|
name: "I2C slave",
|
||||||
@ -468,7 +475,16 @@ driver_configs![
|
|||||||
UartProperties<UartInstanceConfig> {
|
UartProperties<UartInstanceConfig> {
|
||||||
driver: uart,
|
driver: uart,
|
||||||
name: "UART",
|
name: "UART",
|
||||||
properties: {}
|
properties: {
|
||||||
|
ram_size: u32,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
LpUartProperties {
|
||||||
|
driver: lp_uart,
|
||||||
|
name: "LP UART",
|
||||||
|
properties: {
|
||||||
|
ram_size: u32,
|
||||||
|
}
|
||||||
},
|
},
|
||||||
UlpFsmProperties {
|
UlpFsmProperties {
|
||||||
driver: ulp_fsm,
|
driver: ulp_fsm,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user