Long-term Ideas & Issues

In general I'd like PyMite to:

  • be easy to use for the novice programmer.
  • continue to fit and run on AVRs with 64 KiB program memory and 4 KiB SRAM.
  • have an interactive interface that connects to an embedded device.
  • be able to load user modules from Flash, RAM, EEPROM, SEEPROM and via I/O ports like SCI, SPI and USB.
  • allow dynamic module downloading while the VM is running
  • allow multiple threads and receive signals from AVR interrupts.
  • have more pure-python and native-code libraries with documentation.

Below are more detailed ideas that don't yet need to be made into tickets/issues in the Trac.

VM Issues

  • Pre-alloc 1 instance for unhandled exception.
  • Revisit garbage collection arch, dsgn and impl.
  • Revisit mem alloc arch, dsgn and impl.
  • Implement high-level Threading module.
  • Arch, dsgn & impl ISR callbacks written in Python.
  • Run tests in AVR, ARM simulator as part of "make check".

Module Ideas

  • Create AVR module that controls the AVR from a high-level.
  • Create modules for common AVR peripherals (SPI, SCI, OCR, IC, PWM, ...).
  • Create wrapper module for Procyon libs, especially fixed-point "fxp".
  • Create module for EEPROM persistence.
  • Create module for FLASH lookup.
  • Port uIP and write networking wrapper module.

Apps

  • Create sample app that runs PyMite in an AvrX thread.

Platforms

  • Update MMB103 with an AVR having a USB peripheral
  • Port PyMite to Lego NXT block