circuitpython/esp8266
Paul Sokolovsky 2fc1e64319 esp8266: Fix lost chars problem when block-xfering data (e.g., when pasting).
Pasting more or less sizable text into ESP8266 REPL leads to random chars
missing in the received input. Apparent cause is that using RTOS messages
to pass individual chars one by one is to slow and leads to UART FIFO
overflow. So, instead of passing chars one by one, use RTOS msg to signal
that input data is available in FIFO, and then let task handler to read
data directly from FIFO.

With this change, lost chars problem is gone, but the pasted text is
truncated after some position. At least 500 chars can be pasted reliably
(at 115200 baud), but 1K never pastes completely.
2015-06-01 23:57:19 +03:00
..
scripts esp8266: Add support for frozen modules 2015-05-06 22:04:20 +01:00
eagle.rom.addr.v6.ld esp8266: Update ROM address map to vendor SDK 0.9.5. 2015-01-31 00:36:41 +02:00
esp8266.ld esp8266: Update to SDK version 1.1.0 (MIT-licensed). 2015-05-30 20:58:59 +03:00
esp_mphal.c esp8266: Enable setting CPU frequency to 160MHz 2015-05-28 21:28:29 +03:00
esp_mphal.h esp8266: Fix lost chars problem when block-xfering data (e.g., when pasting). 2015-06-01 23:57:19 +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 esp8266: Move initialization to system_init_done_cb 2015-05-26 22:22:08 +03:00
Makefile esp8266: Add pyb.ADC class 2015-05-28 21:31:37 +03:00
makeimg.py esp8266: New port of Micro Python to ESP8266 wifi module. 2014-11-27 20:30:33 +00:00
modesp.c esp8266: Add a bunch of miscellaneous methods 2015-05-28 21:38:46 +03:00
modpyb.c esp8266: Add a bunch of miscellaneous methods 2015-05-28 21:38:46 +03:00
modpyb.h esp8266: Add pyb.ADC class 2015-05-28 21:31:37 +03:00
modpybadc.c esp8266: Add pyb.ADC class 2015-05-28 21:31:37 +03:00
modpybpin.c esp8266: Update to SDK version 1.1.0 (MIT-licensed). 2015-05-30 20:58:59 +03:00
modpybrtc.c esp8266: Actually use the decimal part of system_rtc_clock_cali_proc() 2015-05-13 17:59:36 +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 esp8266: Add utime and pyb.RTC 2015-05-13 00:12:54 +01:00
mpconfigport.h esp8266: Add uos module 2015-05-26 22:18:07 +03:00
qstrdefsport.h esp8266: Add a bunch of miscellaneous methods 2015-05-28 21:38:46 +03:00
README.md esp8266/README: Fix typos. 2014-12-06 13:34:18 +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_register.h esp8266: New port of Micro Python to ESP8266 wifi module. 2014-11-27 20:30:33 +00:00
uart.c esp8266: Fix lost chars problem when block-xfering data (e.g., when pasting). 2015-06-01 23:57:19 +03:00
uart.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

Micro Python port to ESP8266

This is a port of Micro Python to the Espressif ESP8266 wifi module.

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.
  • C long-long type used as bignum implementation (gives 64 signed ints).

Note that floating-point numbers are not supported.

On the TODO list:

  • Wifi support.
  • GPIO 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.

Then, to build Micro Python 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