بنقرة واحدة
esp32c6
ESP32-C6 hardware specifics - register addresses, peripherals, and RISC-V considerations
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
ESP32-C6 hardware specifics - register addresses, peripherals, and RISC-V considerations
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Standard progress report format, location conventions, and handoff documentation for all agents
Hardware test automation patterns for ESP32-C6, similar to Tock's existing test infrastructure
Global issue tracker management - creating issues, severity levels, and tech debt tracking
Complete reference for configuring OpenCode (agents, tools, permissions, models)
Test-Driven Development methodology for embedded Rust - Red-Green-Refactor cycle with host testing focus
Tock kernel patterns, HIL traits, and embedded Rust conventions for chip implementation
| name | esp32c6 |
| description | ESP32-C6 hardware specifics - register addresses, peripherals, and RISC-V considerations |
| license | MIT |
| compatibility | opencode |
| metadata | {"category":"hardware","for_agent":"implementor, analyst, integrator","focus":"hardware, correctness"} |
0x0000_0000 - 0x3FFF_FFFF : Reserved
0x4000_0000 - 0x4FFF_FFFF : Instruction memory
0x5000_0000 - 0x5FFF_FFFF : Data memory
0x6000_0000 - 0x6FFF_FFFF : Peripheral registers
pub const GPIO_BASE: usize = 0x6000_4000;
pub const UART0_BASE: usize = 0x6000_0000;
pub const UART1_BASE: usize = 0x6000_1000;
pub const SPI0_BASE: usize = 0x6000_2000;
pub const I2C0_BASE: usize = 0x6000_7000;
pub const TIMG0_BASE: usize = 0x6000_8000; // Timer Group 0
pub const TIMG1_BASE: usize = 0x6000_9000; // Timer Group 1
pub const SYSTIMER_BASE: usize = 0x6000_A000;
pub const INTERRUPT_CORE0_BASE: usize = 0x6002_0000;
// GPIO_OUT_REG - Output value
// GPIO_OUT_W1TS_REG - Set bits
// GPIO_OUT_W1TC_REG - Clear bits
// GPIO_ENABLE_REG - Output enable
// GPIO_IN_REG - Input value
// GPIO_PIN0_REG..GPIO_PIN30_REG - Pin configuration
register_bitfields! [u32,
GPIO_PIN [
PAD_DRIVER OFFSET(2) NUMBITS(1) [], // 0=push-pull, 1=open-drain
INT_TYPE OFFSET(7) NUMBITS(3) [
Disabled = 0,
RisingEdge = 1,
FallingEdge = 2,
AnyEdge = 3,
LowLevel = 4,
HighLevel = 5
],
WAKEUP_ENABLE OFFSET(10) NUMBITS(1) [],
INT_ENA OFFSET(13) NUMBITS(5) []
]
];
register_bitfields! [u32,
UART_FIFO [
RXFIFO_RD_BYTE OFFSET(0) NUMBITS(8) []
],
UART_STATUS [
RXFIFO_CNT OFFSET(0) NUMBITS(10) [],
TXFIFO_CNT OFFSET(16) NUMBITS(10) []
],
UART_CONF0 [
PARITY OFFSET(0) NUMBITS(1) [],
PARITY_EN OFFSET(1) NUMBITS(1) [],
BIT_NUM OFFSET(2) NUMBITS(2) [], // Data bits: 0=5, 1=6, 2=7, 3=8
STOP_BIT_NUM OFFSET(4) NUMBITS(2) [] // Stop bits
]
];
// Interrupt source numbers (examples)
pub const INT_GPIO: u32 = 8;
pub const INT_UART0: u32 = 21;
pub const INT_UART1: u32 = 22;
pub const INT_TIMER0: u32 = 14;
// In interrupt controller registers
// INTERRUPT_CORE0_CPU_INT_ENABLE_REG - Enable mask
// INTERRUPT_CORE0_CPU_INT_THRESH_REG - Priority threshold
// INTERRUPT_CORE0_CPU_INT_PRI_n_REG - Priority for int n
register_bitfields! [u32,
SYSTIMER_CONF [
SYSTIMER_CLK_EN OFFSET(31) NUMBITS(1) []
],
SYSTIMER_TARGET_CONF [
TARGET_PERIOD OFFSET(0) NUMBITS(26) [],
TARGET_PERIOD_MODE OFFSET(30) NUMBITS(1) []
]
];
_startMEMORY {
IRAM : ORIGIN = 0x40800000, LENGTH = 0x40000
DRAM : ORIGIN = 0x40840000, LENGTH = 0x40000
}
# Using esptool
esptool.py --chip esp32c6 --port /dev/ttyUSB0 \
write_flash 0x0 bootloader.bin \
0x10000 firmware.bin
# Using cargo-espflash
cargo espflash flash --chip esp32c6 --port /dev/ttyUSB0
# Monitor serial output
screen /dev/ttyUSB0 115200
# or
picocom -b 115200 /dev/ttyUSB0