micropython/esp8266
Paul Sokolovsky e5c39a3a9e esp8266: Switch to lwIP built from source.
Using https://github.com/pfalcon/esp-open-lwip project.
2016-03-12 11:45:53 +07:00
..
scripts
Makefile esp8266: Switch to lwIP built from source. 2016-03-12 11:45:53 +07:00
README.md esp8266: Mention git submodule in build instructions for esp8266 port. 2016-03-11 10:07:02 +00:00
eagle.rom.addr.v6.ld esp8266: Add alternative event loop implementation. 2016-03-11 09:13:31 +07:00
esp8266.ld esp8266: Put more code in iROM section. 2016-03-08 11:31:39 +07:00
esp_mphal.c esp8266/esp_mphal: Add higher-level event polling function. 2016-03-11 09:42:03 +07:00
esp_mphal.h esp8266/esp_mphal: Add higher-level event polling function. 2016-03-11 09:42:03 +07:00
ets_alt_task.c esp8266/ets_alt_task: Update for vendor SDK 1.5.0. 2016-03-11 09:17:57 +07:00
ets_alt_task.h esp8266: Add alternative event loop implementation. 2016-03-11 09:13:31 +07:00
etshal.h esp8266/etshal.h: More prototypes of ESP8266 SDK/BootROM functions. 2016-03-05 21:56:32 +02:00
gccollect.c esp8266: Don't gc-collect BSS. 2016-03-08 10:16:06 +07:00
gccollect.h
gchelper.s
main.c esp8266/main: Module to run on boot is "boot", not "main". 2016-03-08 12:37:24 +07:00
makeimg.py
modesp.c esp8266: Switch to lwIP built from source. 2016-03-12 11:45:53 +07:00
modmachine.c esp8266: Move pyb.freq to machine.freq. 2016-03-09 09:03:59 +07:00
modnetwork.c esp8266/modnetwork: Add symbolic names for network interfaces: STA_IF & AP_IF. 2016-03-10 10:44:15 +07:00
modpyb.c esp8266: Move pyb.freq to machine.freq. 2016-03-09 09:03:59 +07:00
modpyb.h esp8266: Expose simple pin API at C level. 2016-03-05 21:36:32 +02: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 esp8266/modpybpin: Add support for GPIO16. 2016-03-05 21:37:55 +02:00
modpybrtc.c esp8266: Reset "virtual RTC" on power on. 2016-03-04 16:49:01 +02:00
modpybrtc.h
moduos.c
modutime.c esp8266/modutime: Support float argument to time.sleep(). 2016-03-04 16:52:30 +02:00
mpconfigport.h esp8266: Define MICROPY_EVENT_POLL_HOOK for the port. 2016-03-11 10:41:10 +07:00
qstrdefsport.h esp8266/modnetwork: Add symbolic names for network interfaces: STA_IF & AP_IF. 2016-03-10 10:44:15 +07:00
strtoll.c
uart.c esp8266/uart: Add uart_flush() function. 2016-03-05 22:13:26 +02:00
uart.h esp8266/uart: Add uart_flush() function. 2016-03-05 22:13:26 +02:00
uart_register.h
user_config.h
utils.c
utils.h

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.

Add the external dependencies to the MicroPython repository checkout:

$ git submodule update --init

See the README in the repository root for more information about external dependencies.

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

$ cd esp8266
$ 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