Roadmap
The final plan to implement the CONCEPT.md and DESIGN.md to achieve the top goal.
Phase 4: Peripheral Implementation
ADC Support
- [x] Configure ADC in PlatformIO (Arduino/Pico SDK) [2026-05-01]
- [x] Map ADC pins in Renode
.replfile [2026-05-01] - [x] Create Robot Framework test for ADC reading with simulated analog values [2026-05-01]
PWM Support
- [x] Configure PWM in PlatformIO [2026-05-22]
- [x] Implement basic PWM peripheral model in Renode (register stub) [2026-05-01]
- [x] Implement PWM slice register handling (CSR, DIV, CTR, TOP, CC) [2026-05-01]
- [x] Map PWM pins in Renode
.replfile [2026-05-22] - [x] Create Robot Framework test for PWM frequency and duty cycle verification [2026-05-22]
Interrupt Support
- [x] Configure NVIC and interrupt vectors in Renode [2026-05-02]
- [x] Implement basic interrupt handling in firmware [2026-05-02]
- [x] Create Robot Framework test for interrupt-driven events [2026-05-02]
Timer Support
- [x] Configure RP2040 Timer peripheral in Renode [2026-05-03]
- [x] Implement timer-based delays and alarms in firmware [2026-05-03]
- [x] Create Robot Framework test for timer accuracy and periodic interrupts [2026-05-03]
Phase 6: Continuous Documentation
- [x] Setup MkDocs structure and
mkdocs.yml[2026-05-06] - [x] Configure GitHub Actions for Read the Docs deployment [2026-05-06]
- [x] Create project glossary and feature coverage documents [2026-05-10]
Phase 7: I2C Peripheral Support
- [x] Implement I2C firmware driver using Arduino Wire or Pico SDK [2026-05-04]
- [x] Configure I2C peripherals in Renode
.repland.rescfiles [2026-05-04] - [x] Integrate an existing I2C peripheral model (e.g., PCF8523 or BMP280) for verification [2026-05-04]
- [x] Create Robot Framework tests for I2C communication and sensor reading [2026-05-04]
Phase 8: Motor Control and bEMF Support (Brushed DC)
- [x] Draft
docs/BEMF_LOOP.mdfor bEMF loop calculation concept [2026-05-05] - [x] Phase 8.1: Integration of
MotorModelRenode peripheral [2026-05-06]- [x] Create
MotorModelRenode peripheral model [2026-05-06] - [x] Wire the
MotorModelto PWM outputs and ADC input channels in the XIAO RP2040.replconfiguration. [2026-05-06] - [x] Implement UART command 'G' in firmware to read Motor ADC channel. [2026-05-06]
- [x] Verify
MotorModelintegration with Robot Framework tests. [2026-05-06]
- [x] Create
- [x] Phase 8.2: Firmware logic for high-precision ADC/PWM synchronization [2026-05-06]
- [x] Implement synchronization using PWM wrap interrupts.
- [x] Ensure sample timing alignment with PWM cycles.
- [x] Phase 8.3: BEMF-based Load Compensation Logic [2026-05-25]
- [x] Phase 8.3.1: Implement PID controller structure and UART tuning commands ('p', 'i', 'd', 't', 'l'). [2026-05-24]
- [x] Phase 8.3.2: Implement real-time telemetry output via UART ('v'). [2026-05-24]
- [x] Phase 8.3.3: Extend
MotorModelRenode peripheral with aLoadTorqueproperty for simulation. [2026-05-25] - [x] Phase 8.3.4: Create Robot Framework tests for closed-loop speed stability under varying load. [2026-05-25]
- [x] Create a UART-based logging system for BEMF data and a host-side tool (e.g., Python/Matplotlib) for graphical analysis. [2026-05-25]
- [x] Add Robot Framework test cases to verify closed-loop speed stability and load handling. [2026-05-25]
Phase 9: SPI Loopback Support
- [x] Implement SPI firmware driver using Pico SDK [2026-05-06]
- [x] Enable SPI loopback mode in firmware 'S' command [2026-05-06]
- [x] Create Robot Framework test for SPI loopback [2026-05-06]
Phase 11: PIO Integration
- [x] Draft
docs/PIO_CONCEPT.mdfor PIO integration [2026-05-03] - [x] Implement PIO (Programmable I/O) state machine examples in firmware [2026-05-04]
- [x] Connect PIO outputs to XIAO RP2040 pins in Renode
.repl[2026-05-04] - [x] Implement DMA requests (DREQ) and IRQ routing for PIO in Renode [2026-05-23]
- [x] Implement
INumberedGPIOOutputinRP2040PIOCPU[2026-05-23] - [x] Implement signal update logic for FIFOs (DREQ) and Interrupts (IRQ) [2026-05-23]
- [x] Wire PIO0 and PIO1 signals in
rp2040.repl[2026-05-23]
- [x] Implement
- [x] Reuse
hello_pioandpio_blinktests fromRenode_RP2040[2026-05-06] - [x] Create Robot Framework tests for PIO driving XIAO Seeed RP2040 pins [2026-05-06]
Phase 12: Advanced Simulation & Performance
- [x] Draft
docs/DMA_CONCEPT.mdfor DMA integration [2026-05-04] - [x] Implement advanced DMA features (Pacing Timers, Debug Registers, Ring Buffers)
- [x] Implement
N_CHANNELSregister for channel discovery [2026-05-08] - [x] Implement
CHAN_ABORTlogic for halting transfers [2026-05-08] - [x] Implement
TIMER0-TIMER3for periodic pacing requests [2026-05-09] - [x] Add Debug registers (
DBG_CTDREQ,DBG_TCR) [2026-05-10] - [x] Implement correct Ring Buffer wrapping and Sniffer Global Enable [2026-05-23]
- [x] Implement
- [x] Implement DMA-based data transfer examples (CRC calculation, Block move, Ring buffers) [2026-05-06]
- [x] Create Robot Framework tests for basic DMA transfers and interrupts [2026-05-06]
- [ ] Optimize Renode simulation parameters for better host performance
- [ ] Expand
full_suite.robotwith advanced stress tests
Phase 13: Full PWM Feature Support
- [x] Implement 16-bit dynamic counter in
RP2040PWMRenode model [2026-05-06] - [x] Implement double buffering for
CCandTOPregisters (latched update on wrap) [2026-05-06] - [x] Implement
DIVMODEsupport for LEVEL, RISE, and FALL input modes [2026-05-09] - [x] Implement IRQ and DREQ signal assertion on counter wrap [2026-05-09]
- [x] Implement
PH_ADVandPH_RETphase adjustment logic [2026-05-09] - [x] Create Robot Framework tests for advanced PWM features (interrupts, inputs) [2026-05-09]
Phase 14: Full ADC Feature Support
- [x] Fix round-robin logic in
RP2040ADCto correctly cycle through enabled channels [2026-05-04] - [x] Implement error generation logic and propagate
ERRbits to status and FIFO [2026-05-04] - [x] Correct
READYflag behavior to remain high during pacing timer delays [2026-05-04] - [x] Refactor pacing timer to define the total sampling interval (96 cycles vs
DIVsetting) [2026-05-04] - [x] Implement correct
FIFOregister bit packing including bit 15 (ERR) [2026-05-04] - [x] Align
DMARequest(DREQ) signaling withFCS.THRESHandFCS.DREQ_ENlogic [2026-05-04] - [x] Fix stability of ADC error detection and threshold logic tests [2026-05-05]
Phase 15: Watchdog and RTC Support
- [x] Implement
RP2040WatchdogRenode model [2026-05-20] - [x] Implement
RP2040RTCRenode model [2026-05-21] - [x] Add firmware commands for Watchdog ('W', 'K') and RTC ('R', 'Q') [2026-05-22]
- [x] Create Robot Framework tests for Watchdog and RTC [2026-05-23]
Phase 16: System Resets and Power Management
- [x] Implement
RP2040ResetsRenode model for peripheral reset control [2026-05-14]- [x] Implement
RESETandWDSELregister logic. - [ ] Wire reset signals to other peripherals in the simulation.
- [x] Implement
- [ ] Implement
RP2040PowerRenode model for power-on reset and sleep states- [ ] Implement
BODandVREGregister stubs. - [ ] Implement core power states and wake-up interrupt logic.
- [ ] Implement
- [ ] Create firmware examples for peripheral reset and low-power modes
- [ ] Create Robot Framework tests for reset and power management
Phase 17: USB Support
- [ ] Implement
RP2040USBRenode model for USB controller- [ ] Implement USB Device/Host register space and endpoint control.
- [ ] Integrate USB packet handling and buffer management.
- [ ] Create firmware examples for USB Serial (CDC) and HID.
- [ ] Create Robot Framework tests for USB enumeration and data transfer.
Phase 10: Transition to Pico SDK (Technical Debt)
- [ ] Setup Pico SDK build environment in
src/install.sh - [ ] Port core drivers to native Pico SDK:
- [ ] UART and GPIO drivers.
- [ ] ADC and PWM drivers.
- [ ] Timer and Interrupt handling.
- [ ] PIO and DMA integration.
- [ ] Verify full system functionality with native Pico SDK firmware