micropython/esp8266
Damien George ecd1272d16 esp8266: Switch bignum implementation from long-long to mpz. 2016-03-02 22:43:10 +02:00
..
scripts esp8266: Add support for frozen modules 2015-05-06 22:04:20 +01:00
Makefile esp8266: Support CFLAGS_EXTRA. 2016-01-08 01:30:20 +02:00
README.md esp8266/README: Add hint about adding toolchain to PATH. 2016-02-08 22:35:24 +02:00
eagle.rom.addr.v6.ld eagle.rom.addr.v6.ld: More symbols from SDK 1.5.0. 2016-02-14 13:09:42 +02:00
esp8266.ld esp8266: Put more code in irom0 section, to get it building again. 2015-10-20 22:59:31 +01:00
esp_mphal.c esp8266: Switch to standard mp_hal_ticks_ms() MPHAL function. 2015-10-29 19:40:05 +03:00
esp_mphal.h all: Add py/mphal.h and use it in all ports. 2015-10-31 19:14:30 +03:00
etshal.h esp8266: Enable setting CPU frequency to 160MHz 2015-05-28 21:28:29 +03:00
gccollect.c esp8266: Fix garbage collector by hard-coding stack end address. 2015-05-06 14:01:07 +01:00
gccollect.h esp8266: Fix garbage collector by hard-coding stack end address. 2015-05-06 14:01:07 +01:00
gchelper.s esp8266: New port of Micro Python to ESP8266 wifi module. 2014-11-27 20:30:33 +00:00
main.c lib/utils: Add pyexec_frozen_module to load and execute frozen module. 2015-12-26 12:32:33 +00:00
makeimg.py esp8266: New port of Micro Python to ESP8266 wifi module. 2014-11-27 20:30:33 +00:00
modesp.c esp8266/modesp: Implement flash_write(), flash_erase(). 2016-02-08 11:42:24 +02:00
modnetwork.c esp8266: mac() function belongs to network module per the latest API. 2015-12-27 10:03:32 +02:00
modpyb.c lib/pyexec: Move header pyexec.h from stmhal directory. 2015-11-09 13:13:09 +00:00
modpyb.h esp8266: Make pyb.RTC a type, and pyb.RTC() constructs an RTC object. 2015-06-22 23:03:17 +01:00
modpybadc.c py: Change first arg of type.make_new from mp_obj_t to mp_obj_type_t*. 2016-01-11 00:49:27 +00:00
modpybpin.c py: Change first arg of type.make_new from mp_obj_t to mp_obj_type_t*. 2016-01-11 00:49:27 +00:00
modpybrtc.c esp8266/modpybrtc: Simplify multiplication by fixed-point value. 2016-02-12 23:20:52 +02:00
modpybrtc.h esp8266: Add utime and pyb.RTC 2015-05-13 00:12:54 +01:00
moduos.c esp8266: Add uos module 2015-05-26 22:18:07 +03:00
modutime.c all: Add py/mphal.h and use it in all ports. 2015-10-31 19:14:30 +03:00
mpconfigport.h esp8266: Switch bignum implementation from long-long to mpz. 2016-03-02 22:43:10 +02:00
qstrdefsport.h esp8266/modesp: Implement flash_write(), flash_erase(). 2016-02-08 11:42:24 +02:00
strtoll.c esp8266: Change bignum from mpz to longlong; move some rodata to iram. 2014-11-28 14:58:25 +00:00
uart.c lib/pyexec: Move header pyexec.h from stmhal directory. 2015-11-09 13:13:09 +00:00
uart.h esp8266: New port of Micro Python to ESP8266 wifi module. 2014-11-27 20:30:33 +00:00
uart_register.h esp8266: New port of Micro Python to ESP8266 wifi module. 2014-11-27 20:30:33 +00:00
user_config.h esp8266: New port of Micro Python to ESP8266 wifi module. 2014-11-27 20:30:33 +00:00
utils.c esp8266: Add esp.socket class, with ESP-style socket functionality. 2015-05-04 11:48:40 +01:00
utils.h esp8266: Add esp.socket class, with ESP-style socket functionality. 2015-05-04 11:48:40 +01:00

README.md

MicroPython port to ESP8266

This is a highly experimental port of MicroPython for the WiFi modules based on Espressif ESP8266 chip.

WARNING: The port is highly experimental and any APIs are subject to change.

Currently implemented features include:

  • REPL (Python prompt) over UART0.
  • 24k heap RAM available for Python code.
  • Garbage collector, exceptions.
  • Unicode support.
  • Builtin modules: gc, array, collections, io, struct, sys, esp, network.
  • C long-long type used as bignum implementation (gives 64 bit signed ints).
  • Rudimentary WiFi support in station mode.
  • Sockets with callbacks.
  • Basic GPIO support.

Note that floating-point numbers are not supported.

On the TODO list:

  • Full wifi support.
  • Internal filesystem using the flash.
  • ...

Build instructions

The tool chain required for the build is the OpenSource ESP SDK, which can be found at https://github.com/pfalcon/esp-open-sdk. Clone this repository and run make in its directory to build and install the SDK locally. Make sure to add toolchain bin directory to your PATH.

Then, to build MicroPython for the ESP8266, just run:

$ make

This should produce binary images in the build/ subdirectory. To flash them to your ESP8266, use:

$ make deploy

This will use the esptool.py script to download the images. You must have your ESP module in the bootloader, and connected to a serial port on your PC. The default serial port is /dev/ttyACM0. To specify another, use, eg:

$ make PORT=/dev/ttyUSB0 deploy

The images that are built are:

  • firmware.elf-0x00000.bin: to be flashed at 0x00000
  • firmware.elf-0x10000.bin: to be flashed at 0x10000

There is also a combined image, made up of the above 2 binary files with the appropriate padding:

  • firmware-combined.bin: to be flashed at 0x00000