Go to file
Damien d99b05282d Change object representation from 1 big union to individual structs.
A big change.  Micro Python objects are allocated as individual structs
with the first element being a pointer to the type information (which
is itself an object).  This scheme follows CPython.  Much more flexible,
not necessarily slower, uses same heap memory, and can allocate objects
statically.

Also change name prefix, from py_ to mp_ (mp for Micro Python).
2013-12-21 18:17:45 +00:00
py Change object representation from 1 big union to individual structs. 2013-12-21 18:17:45 +00:00
stm Change object representation from 1 big union to individual structs. 2013-12-21 18:17:45 +00:00
tools Add tools/dfu.py, and use it in stm/Makefile. 2013-12-20 12:07:50 +00:00
unix Change object representation from 1 big union to individual structs. 2013-12-21 18:17:45 +00:00
LICENSE Add LICENSE and README. 2013-12-20 11:47:41 +00:00
README.md Small changes to README. 2013-12-20 13:04:40 +00:00

The Micro Python project

This is the Micro Python project, which aims to put an implementation of Python 3.x on a microcontroller.

Subdirectories:

  • py/ -- the core Python implementation, including compiler and runtime.
  • unix/ -- a version of Micro Python that runs on Unix.
  • stm/ -- a version of Micro Python that runs on the Micro Python board with an STM32F405RG.

"make" is used to build the components.

The unix version

The "unix" part requires a standard Unix environment with gcc. It works only for 64-bit machines due to a small piece of x86-64 assembler for the exception handling.

To build:

$ cd unix
$ make

Then to test it:

$ ./py
>>> list(5 * x + y for x in range(10) for y in [4, 2, 1])

The stm version

The "stm" part requires an ARM compiler, arm-none-eabi-gcc, and associated bin-utils. For those using Arch Linux, you need arm-none-eabi-binutils and arm-none-eabi-gcc packages from the AUR. Otherwise, try here: https://launchpad.net/gcc-arm-embedded

To build:

$ cd stm
$ make

Then to flash it via USB DFU to your device:

$ dfu-util -a 0 -D build/flash.dfu

You will need the dfu-util program, on Arch Linux it's dfu-util-git in the AUR.