circuitpython/ports/esp32/mpconfigport.h

311 lines
13 KiB
C
Raw Normal View History

esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
// Options to control how MicroPython is built for this port,
// overriding defaults in py/mpconfig.h.
// Board-specific definitions
#include "mpconfigboard.h"
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
#include <stdint.h>
#include <alloca.h>
#include "esp_system.h"
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
// object representation and NLR handling
#define MICROPY_OBJ_REPR (MICROPY_OBJ_REPR_A)
#define MICROPY_NLR_SETJMP (1)
#if CONFIG_IDF_TARGET_ESP32C3
#define MICROPY_GCREGS_SETJMP (1)
#endif
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
// memory allocation policies
#define MICROPY_ALLOC_PATH_MAX (128)
// emitters
#define MICROPY_PERSISTENT_CODE_LOAD (1)
#if !CONFIG_IDF_TARGET_ESP32C3
2019-09-09 23:47:44 -04:00
#define MICROPY_EMIT_XTENSAWIN (1)
#endif
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
// compiler configuration
#define MICROPY_COMP_MODULE_CONST (1)
#define MICROPY_COMP_TRIPLE_TUPLE_ASSIGN (1)
// optimisations
#define MICROPY_OPT_COMPUTED_GOTO (1)
#define MICROPY_OPT_MPZ_BITWISE (1)
// Python internal features
#define MICROPY_READER_VFS (1)
#define MICROPY_ENABLE_GC (1)
#define MICROPY_ENABLE_FINALISER (1)
#define MICROPY_STACK_CHECK (1)
#define MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF (1)
#define MICROPY_KBD_EXCEPTION (1)
#define MICROPY_HELPER_REPL (1)
#define MICROPY_REPL_EMACS_KEYS (1)
#define MICROPY_REPL_AUTO_INDENT (1)
#define MICROPY_LONGINT_IMPL (MICROPY_LONGINT_IMPL_MPZ)
#define MICROPY_ENABLE_SOURCE_LINE (1)
#define MICROPY_ERROR_REPORTING (MICROPY_ERROR_REPORTING_NORMAL)
#define MICROPY_WARNINGS (1)
#define MICROPY_FLOAT_IMPL (MICROPY_FLOAT_IMPL_FLOAT)
#define MICROPY_CPYTHON_COMPAT (1)
#define MICROPY_STREAMS_NON_BLOCK (1)
#define MICROPY_STREAMS_POSIX_API (1)
#define MICROPY_MODULE_BUILTIN_INIT (1)
#define MICROPY_MODULE_WEAK_LINKS (1)
#define MICROPY_MODULE_FROZEN_STR (0)
#define MICROPY_MODULE_FROZEN_MPY (1)
#define MICROPY_QSTR_EXTRA_POOL mp_qstr_frozen_const_pool
#define MICROPY_CAN_OVERRIDE_BUILTINS (1)
#define MICROPY_USE_INTERNAL_ERRNO (0) // errno.h from xtensa-esp32-elf/sys-include/sys
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
#define MICROPY_USE_INTERNAL_PRINTF (0) // ESP32 SDK requires its own printf
#define MICROPY_ENABLE_SCHEDULER (1)
#define MICROPY_SCHEDULER_DEPTH (8)
#define MICROPY_VFS (1)
// control over Python builtins
#define MICROPY_PY_FUNCTION_ATTRS (1)
#define MICROPY_PY_DESCRIPTORS (1)
#define MICROPY_PY_DELATTR_SETATTR (1)
#define MICROPY_PY_FSTRINGS (1)
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
#define MICROPY_PY_STR_BYTES_CMP_WARN (1)
#define MICROPY_PY_BUILTINS_STR_UNICODE (1)
#define MICROPY_PY_BUILTINS_STR_CENTER (1)
#define MICROPY_PY_BUILTINS_STR_PARTITION (1)
#define MICROPY_PY_BUILTINS_STR_SPLITLINES (1)
#define MICROPY_PY_BUILTINS_BYTEARRAY (1)
#define MICROPY_PY_BUILTINS_MEMORYVIEW (1)
#define MICROPY_PY_BUILTINS_SET (1)
#define MICROPY_PY_BUILTINS_SLICE (1)
#define MICROPY_PY_BUILTINS_SLICE_ATTRS (1)
#define MICROPY_PY_BUILTINS_SLICE_INDICES (1)
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
#define MICROPY_PY_BUILTINS_FROZENSET (1)
#define MICROPY_PY_BUILTINS_PROPERTY (1)
#define MICROPY_PY_BUILTINS_RANGE_ATTRS (1)
#define MICROPY_PY_BUILTINS_ROUND_INT (1)
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
#define MICROPY_PY_ALL_SPECIAL_METHODS (1)
#define MICROPY_PY_ALL_INPLACE_SPECIAL_METHODS (1)
#define MICROPY_PY_REVERSE_SPECIAL_METHODS (1)
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
#define MICROPY_PY_BUILTINS_COMPILE (1)
#define MICROPY_PY_BUILTINS_ENUMERATE (1)
#define MICROPY_PY_BUILTINS_EXECFILE (1)
#define MICROPY_PY_BUILTINS_FILTER (1)
#define MICROPY_PY_BUILTINS_REVERSED (1)
#define MICROPY_PY_BUILTINS_NOTIMPLEMENTED (1)
#define MICROPY_PY_BUILTINS_INPUT (1)
#define MICROPY_PY_BUILTINS_MIN_MAX (1)
#define MICROPY_PY_BUILTINS_POW3 (1)
#define MICROPY_PY_BUILTINS_HELP (1)
#define MICROPY_PY_BUILTINS_HELP_TEXT esp32_help_text
#define MICROPY_PY_BUILTINS_HELP_MODULES (1)
#define MICROPY_PY___FILE__ (1)
#define MICROPY_PY_MICROPYTHON_MEM_INFO (1)
#define MICROPY_PY_ARRAY (1)
#define MICROPY_PY_ARRAY_SLICE_ASSIGN (1)
#define MICROPY_PY_ATTRTUPLE (1)
#define MICROPY_PY_COLLECTIONS (1)
#define MICROPY_PY_COLLECTIONS_DEQUE (1)
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
#define MICROPY_PY_COLLECTIONS_ORDEREDDICT (1)
#define MICROPY_PY_MATH (1)
#define MICROPY_PY_MATH_SPECIAL_FUNCTIONS (1)
#define MICROPY_PY_MATH_ISCLOSE (1)
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
#define MICROPY_PY_CMATH (1)
#define MICROPY_PY_GC (1)
#define MICROPY_PY_IO (1)
#define MICROPY_PY_IO_IOBASE (1)
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
#define MICROPY_PY_IO_FILEIO (1)
#define MICROPY_PY_IO_BYTESIO (1)
#define MICROPY_PY_IO_BUFFEREDWRITER (1)
#define MICROPY_PY_STRUCT (1)
#define MICROPY_PY_SYS (1)
#define MICROPY_PY_SYS_MAXSIZE (1)
#define MICROPY_PY_SYS_MODULES (1)
#define MICROPY_PY_SYS_EXIT (1)
#define MICROPY_PY_SYS_STDFILES (1)
#define MICROPY_PY_SYS_STDIO_BUFFER (1)
#define MICROPY_PY_UERRNO (1)
#define MICROPY_PY_USELECT (1)
#define MICROPY_PY_UTIME_MP_HAL (1)
#define MICROPY_PY_THREAD (1)
#define MICROPY_PY_THREAD_GIL (1)
#define MICROPY_PY_THREAD_GIL_VM_DIVISOR (32)
// extended modules
#ifndef MICROPY_PY_BLUETOOTH
#define MICROPY_PY_BLUETOOTH (1)
#define MICROPY_PY_BLUETOOTH_ENABLE_CENTRAL_MODE (1)
#define MICROPY_BLUETOOTH_NIMBLE (1)
#define MICROPY_BLUETOOTH_NIMBLE_BINDINGS_ONLY (1)
#endif
2020-03-22 08:17:17 -04:00
#define MICROPY_PY_UASYNCIO (1)
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
#define MICROPY_PY_UCTYPES (1)
#define MICROPY_PY_UZLIB (1)
#define MICROPY_PY_UJSON (1)
#define MICROPY_PY_URE (1)
#define MICROPY_PY_URE_SUB (1)
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
#define MICROPY_PY_UHEAPQ (1)
#define MICROPY_PY_UTIMEQ (1)
#define MICROPY_PY_UHASHLIB (1)
#define MICROPY_PY_UHASHLIB_SHA1 (1)
#define MICROPY_PY_UHASHLIB_SHA256 (1)
#define MICROPY_PY_UCRYPTOLIB (1)
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
#define MICROPY_PY_UBINASCII (1)
#define MICROPY_PY_UBINASCII_CRC32 (1)
#define MICROPY_PY_URANDOM (1)
#define MICROPY_PY_URANDOM_EXTRA_FUNCS (1)
#define MICROPY_PY_URANDOM_SEED_INIT_FUNC (esp_random())
#define MICROPY_PY_OS_DUPTERM (1)
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
#define MICROPY_PY_MACHINE (1)
#define MICROPY_PY_MACHINE_PIN_MAKE_NEW mp_pin_make_new
#define MICROPY_PY_MACHINE_BITSTREAM (1)
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
#define MICROPY_PY_MACHINE_PULSE (1)
#define MICROPY_PY_MACHINE_PWM (1)
#define MICROPY_PY_MACHINE_PWM_INIT (1)
#define MICROPY_PY_MACHINE_PWM_DUTY (1)
#define MICROPY_PY_MACHINE_PWM_INCLUDEFILE "ports/esp32/machine_pwm.c"
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
#define MICROPY_PY_MACHINE_I2C (1)
#define MICROPY_PY_MACHINE_SOFTI2C (1)
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
#define MICROPY_PY_MACHINE_SPI (1)
#define MICROPY_PY_MACHINE_SPI_MSB (0)
#define MICROPY_PY_MACHINE_SPI_LSB (1)
#define MICROPY_PY_MACHINE_SOFTSPI (1)
#ifndef MICROPY_PY_MACHINE_DAC
#define MICROPY_PY_MACHINE_DAC (1)
#endif
#ifndef MICROPY_PY_MACHINE_I2S
#define MICROPY_PY_MACHINE_I2S (1)
#endif
#ifndef MICROPY_HW_ENABLE_SDCARD
#define MICROPY_HW_ENABLE_SDCARD (1)
#endif
#define MICROPY_HW_SOFTSPI_MIN_DELAY (0)
#define MICROPY_HW_SOFTSPI_MAX_BAUDRATE (ets_get_cpu_frequency() * 1000000 / 200) // roughly
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
#define MICROPY_PY_USSL (1)
#define MICROPY_SSL_MBEDTLS (1)
#define MICROPY_PY_USSL_FINALISER (1)
#define MICROPY_PY_UWEBSOCKET (1)
#define MICROPY_PY_WEBREPL (1)
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
#define MICROPY_PY_FRAMEBUF (1)
#define MICROPY_PY_BTREE (1)
#define MICROPY_PY_ONEWIRE (1)
#define MICROPY_PY_USOCKET_EVENTS (MICROPY_PY_WEBREPL)
#define MICROPY_PY_BLUETOOTH_RANDOM_ADDR (1)
#define MICROPY_PY_BLUETOOTH_DEFAULT_GAP_NAME ("ESP32")
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
// fatfs configuration
#define MICROPY_FATFS_ENABLE_LFN (1)
#define MICROPY_FATFS_RPATH (2)
#define MICROPY_FATFS_MAX_SS (4096)
#define MICROPY_FATFS_LFN_CODE_PAGE 437 /* 1=SFN/ANSI 437=LFN/U.S.(OEM) */
#define mp_type_fileio mp_type_vfs_fat_fileio
#define mp_type_textio mp_type_vfs_fat_textio
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
// use vfs's functions for import stat and builtin open
#define mp_import_stat mp_vfs_import_stat
#define mp_builtin_open mp_vfs_open
#define mp_builtin_open_obj mp_vfs_open_obj
// extra built in names to add to the global namespace
#define MICROPY_PORT_BUILTINS \
{ MP_OBJ_NEW_QSTR(MP_QSTR_input), (mp_obj_t)&mp_builtin_input_obj }, \
{ MP_OBJ_NEW_QSTR(MP_QSTR_open), (mp_obj_t)&mp_builtin_open_obj },
// extra built in modules to add to the list of known ones
extern const struct _mp_obj_module_t esp_module;
extern const struct _mp_obj_module_t esp32_module;
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
extern const struct _mp_obj_module_t utime_module;
extern const struct _mp_obj_module_t uos_module;
extern const struct _mp_obj_module_t mp_module_usocket;
extern const struct _mp_obj_module_t mp_module_machine;
extern const struct _mp_obj_module_t mp_module_network;
extern const struct _mp_obj_module_t mp_module_onewire;
#define MICROPY_PORT_BUILTIN_MODULES \
{ MP_OBJ_NEW_QSTR(MP_QSTR_esp), (mp_obj_t)&esp_module }, \
{ MP_OBJ_NEW_QSTR(MP_QSTR_esp32), (mp_obj_t)&esp32_module }, \
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
{ MP_OBJ_NEW_QSTR(MP_QSTR_utime), (mp_obj_t)&utime_module }, \
{ MP_OBJ_NEW_QSTR(MP_QSTR_uos), (mp_obj_t)&uos_module }, \
{ MP_OBJ_NEW_QSTR(MP_QSTR_usocket), (mp_obj_t)&mp_module_usocket }, \
{ MP_OBJ_NEW_QSTR(MP_QSTR_machine), (mp_obj_t)&mp_module_machine }, \
{ MP_OBJ_NEW_QSTR(MP_QSTR_network), (mp_obj_t)&mp_module_network }, \
{ MP_OBJ_NEW_QSTR(MP_QSTR__onewire), (mp_obj_t)&mp_module_onewire }, \
#define MP_STATE_PORT MP_STATE_VM
struct _machine_timer_obj_t;
#if MICROPY_BLUETOOTH_NIMBLE
struct mp_bluetooth_nimble_root_pointers_t;
#define MICROPY_PORT_ROOT_POINTER_BLUETOOTH_NIMBLE struct _mp_bluetooth_nimble_root_pointers_t *bluetooth_nimble_root_pointers;
#else
#define MICROPY_PORT_ROOT_POINTER_BLUETOOTH_NIMBLE
#endif
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
#define MICROPY_PORT_ROOT_POINTERS \
const char *readline_hist[8]; \
mp_obj_t machine_pin_irq_handler[40]; \
struct _machine_timer_obj_t *machine_timer_obj_head; \
MICROPY_PORT_ROOT_POINTER_BLUETOOTH_NIMBLE
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
// type definitions for the specific machine
#define MICROPY_MAKE_POINTER_CALLABLE(p) ((void *)((mp_uint_t)(p)))
void *esp_native_code_commit(void *, size_t, void *);
#define MP_PLAT_COMMIT_EXEC(buf, len, reloc) esp_native_code_commit(buf, len, reloc)
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
#define MP_SSIZE_MAX (0x7fffffff)
// Note: these "critical nested" macros do not ensure cross-CPU exclusion,
// the only disable interrupts on the current CPU. To full manage exclusion
// one should use portENTER_CRITICAL/portEXIT_CRITICAL instead.
#include "freertos/FreeRTOS.h"
#define MICROPY_BEGIN_ATOMIC_SECTION() portENTER_CRITICAL_NESTED()
#define MICROPY_END_ATOMIC_SECTION(state) portEXIT_CRITICAL_NESTED(state)
#if MICROPY_PY_USOCKET_EVENTS
#define MICROPY_PY_USOCKET_EVENTS_HANDLER extern void usocket_events_handler(void); usocket_events_handler();
#else
#define MICROPY_PY_USOCKET_EVENTS_HANDLER
#endif
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
#if MICROPY_PY_THREAD
#define MICROPY_EVENT_POLL_HOOK \
do { \
extern void mp_handle_pending(bool); \
mp_handle_pending(true); \
MICROPY_PY_USOCKET_EVENTS_HANDLER \
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
MP_THREAD_GIL_EXIT(); \
MP_THREAD_GIL_ENTER(); \
} while (0);
#else
#define MICROPY_EVENT_POLL_HOOK \
do { \
extern void mp_handle_pending(bool); \
mp_handle_pending(true); \
MICROPY_PY_USOCKET_EVENTS_HANDLER \
asm ("waiti 0"); \
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
} while (0);
#endif
// Functions that should go in IRAM
#define MICROPY_WRAP_MP_SCHED_EXCEPTION(f) IRAM_ATTR f
#define MICROPY_WRAP_MP_SCHED_KEYBOARD_INTERRUPT(f) IRAM_ATTR f
esp32: Add new port to Espressif ESP32 SoC. This commit is a combination of 216 commits from the initial stages of development of this port, up to and including the point where the code was moved to the ports/esp32 directory. These commits were mostly concerned with setting up the build system and getting a reliable port working with basic features. The following is a digest of the original commits in their original order (most recent listed first), grouped where possible per author. The list is here to give credit for the work and provide some level of traceability and accountability. For the full history of development please consult the original repository. All code is MIT licensed and the relevant copyright holders are listed in the comment-header of each file. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32: Update module symlinks now that code lives under the ports dir. esp32: Update to compile with new ports/esp32 directory structure. esp32: Move it to the ports/ directory. esp32/machine_uart: Don't save baudrate but compute it instead. esp32/modsocket: Add socket.readinto() method. esp32/modesp: Add esp.gpio_matrix_in and esp.gpio_matrix_out functions. esp32/machine_uart: Wait for all data to be tx'd before changing config. NyxCode <moritz.bischof1@gmail.com> esp32: Add note to README.md about updating the submodules of ESP IDF. Anthony Briggs <anthony.briggs@gmail.com> esp32: Update README.md installation and flashing instructions. Javier Candeira <javier@candeira.com> esp32: Raise error when setting input-only pin to output. With help from Adrian Smith (fon@thefon.net) Javier Candeira <javier@candeira.com> esp32: Replace exception raising with corresponding mp_raise_XXX funcs. Tisham Dhar <whatnickd@gmail.com> esp32: Add some specific notes about building on Windows using WSL. Ben Gamari <ben@smart-cactus.org> esp32: Provide machine.Signal class. Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement AP version of network.isconnected(). Eric Poulsen <eric@zyxod.com> esp32/README.md: Add note about btree submodule initialization. Damien George <damien.p.george@gmail.com> esp32: Make firmware.bin start at 0x1000 to allow flash size autodetect. esp32: Changes to follow latest version of upstream uPy. esp32/Makefile: Separate ESP-specific inc dirs to avoid header clashes. esp32: Enable "btree" database module. esp32: Update to latest ESP IDF. Roosted7 <thomasroos@live.nl> esp32: Update to latest ESP-IDF. Alex King <alex_w_king@yahoo.com> esp32/machine_timer: Add support for esp32 hardware timer. Code lineage: Timer() is based loosely on the version in esp8266, although the implementation is differs significantly because of the change in the underlying platform. Damien George <damien.p.george@gmail.com> esp32/machine_uart: Increase UART TX buffer size to 64. esp32/modules: Update dht symlink. esp32/mpconfigport.h: Enable utimeq module, needed for uasyncio. esp32: Changes to follow latest version of upstream uPy. esp32: Update to latest ESP-IDF. esp32/machine_uart: Add uart.any() method. esp32/machine_uart: Uninstall the UART driver before installing it. Thomas Roos <mail@thomasroos.nl> esp32: Update to latest ESP-IDF. Eric Poulsen <eric@zyxod.com> esp32/modsocket: Make read/write return None when in non-blocking mode. esp32/modsocket.c: Fix send/sendto/write for non-blocking sockets. Odd Stråbø <oddstr13@openshell.no> esp32: Initial working implementation of machine.UART. Code lineage (as seen by previous commits): I copied the ESP8266 code, renamed pyb -> machine, and used esp-idf as a reference while implementing minimal functionality. I provide all of my changes under the MIT license. Odd Stråbø <oddstr13@openshell.no> esp32/machine_uart: Rename pyb to machine. esp32: Copy machine_uart.c from esp8266 port. Damien George <damien.p.george@gmail.com> esp32/moduos: Add uos.ilistdir() function. esp32: Mount filesystem at the root of the VFS, following esp8266. Andy Valencia <vandyswa@gmail.com> esp32: Add hardware SHA1/SHA256 support via mbedtls API. Code lineage: a copy of extmod/moduhashlib with the API invocation details edited. Total derivative work. Andy Valencia <vandyswa@gmail.com> esp32: Add PWM support via machine.PWM class. Code lineage: I started by copying the esp8266 machine_pwm.c. I used information from the ESP32 Technical Reference Manual, the esp-idf documentation, and the SDK's sample ledc example code (but I did not copy that code, just studied it to understand the SDK's API for PWM). So aside from the code copied from the esp8266 PWM support, everything else you see is just new code I wrote. I wasn't an employee of anybody when I wrote it, and I wrote it with the understanding and intention that it's simply a derivative work of the existing micropython code. I freely and willingly contribute it to the project and intend that it not change the legal status of the micropython code base in any way, even if it is included in that base in whole or part. Damien George <damien.p.george@gmail.com> esp32/modules: Add symlinks for upysh and upip. Eric Poulsen <eric@zyxod.com> esp32/modmachine: Add unique_id() function to machine module. Damien George <damien.p.george@gmail.com> esp32: Change dac_out_voltage to dac_output_voltage for new IDF API. esp32: Update esp32.custom_common.ld to align with changes in ESP IDF. Eric Poulsen <eric@zyxod.com> esp32: Update to latest ESP IDF. Damien George <damien.p.george@gmail.com> esp32/modsocket: When resolving IP addr handle the case of host=''. esp32: Update to latest ESP IDF. Eric Poulsen <eric@zyxod.com> esp32/Makefile: Change default FLASH_MODE to dio for WROOM-32 module. esp32: Move FAT FS to start at 0x200000 and increase size to 2MiB. Damien George <damien.p.george@gmail.com> esp32: Remove enable_irq/disable_irq and use ATOMIC_SECTION instead. esp32/mpconfigport.h: Provide ATOMIC_SECTION macros. esp32/main: Restart the MCU if there is a failed NLR jump. Daniel Campora <daniel@pycom.io> esp32: Enable threading; be sure to exit GIL when a thread will block. esp32: Trace the registers when doing a gc collect. Also make it thread ready. esp32: Add threading implementation, disabled for the time being. Damien George <damien.p.george@gmail.com> esp32: Update to latest ESP IDF. esp32/uart: Use high-level function to install UART0 RX ISR handler. esp32/Makefile: Make FreeRTOS private include dir really private. Eric Poulsen <eric@zyxod.com> esp32: Add support for hardware SPI peripheral (block 1 and 2). Sergio Conde Gómez <skgsergio@gmail.com> esp32/modules/inisetup.py: Mount filesystem at /flash like ESP8266 Damien George <damien.p.george@gmail.com> esp32: Convert to use core-provided KeyboardInterrupt exception. esp32: Pump the event loop while waiting for rx-chr or delay_ms. esp32: Implement Pin.irq() using "soft" scheduled interrupts. esp32: Update to latest ESP IDF version. Eric Poulsen <eric@zyxod.com> esp32/README: Add troubleshooting section to the end. tyggerjai <tyggerjai@gmail.com> esp32: Add support for WS2812 and APA106 RGB LEDs. Damien George <damien.p.george@gmail.com> esp32: Add makeimg.py script to build full firmware; use it in Makefile. esp32/modsocket: Make socket.read return when socket closes. esp32/modsocket: Initialise the timeout on an accepted socket. esp32/mphalport: Provide proper implementations of disable_/enable_irq. esp32/modmachine: Add disable_irq/enable_irq functions. Nick Moore <nick@zoic.org> esp32/modsocket.c: add comment explaining timeout behaviour esp32/modsocket.c: clean up send methods for retries too esp32/modsocket.c: sockets always nonblocking, accept timeout in modsocket esp32: Update to latest ESP IDF version. esp32/modsocket.c: remove MSG_PEEK workaround on select ioctl. esp32/modsocket.c: Initialize tcp when modsocket loads. Damien George <damien.p.george@gmail.com> esp32/main: Bump heap size from 64k to 96k. esp32/modutime: Add time.time() function. esp32/modsocket: Convert lwip errnos to uPy ones. esp32/modules: Provide symlink to ds18x20 module. esp32: Add support for onewire protocol via OneWire module. esp32: Add support for DHT11 and DHT22 sensors. esp32/mphalport: Improve delay and ticks functions. esp32: Update to latest ESP IDF. esp32/modules: Provide symlink to urequests from micropython-lib. esp32: Populate sys.path. Nick Moore <nick@zoic.org> esp32/machine_dac.c: implement DAC pins as well esp32/machine_adc.c: also machine.ADC esp32/machine_touchpad.c: add support for touchpad Damien George <damien.p.george@gmail.com> esp32/README: Add hint about using GNUmakefile on case-insensitive FS. esp32/mpconfigport.h: Enable maximum speed software SPI. esp32: Provide improved version of mp_hal_delay_us_fast. esp32/mpconfigport.h: Enable MICROPY_PY_BUILTINS_POW3 option. esp32: Update to latest ESP IDF. esp32: Convert to use new oofatfs library and generic VFS sub-system. esp32: Enable help('modules') to list builtin modules. esp32: Convert to use new builtin help function. Aaron Kelly <AaronKelly@email.com> esp32/README: Add comment about ESP-IDF version Damien George <damien.p.george@gmail.com> esp32: Consistently use size_t instead of mp_uint_t. esp32: Change "Micro Python" to "MicroPython" in license comments. esp32/Makefile: Use -C argument to git instead of cd'ing. esp32/help: Add section to help about using the network module. esp32/README: Add section about configuring and using an ESP32 board. esp32/README: Remove paragraph about buggy toolchain, it's now fixed. esp32/modnetwork: Change network init logging from info to debug. esp32/modnetwork: Don't start AP automatically when init'ing wifi. esp32/modsocket: Implement socket.setsockopt, to support SO_REUSEADDR. esp32: Update to latest ESP IDF. esp32/sdkconfig.h: Remove unused CONFIG_ESPTOOLPY_xxx config settings. esp32/modsocket: Add support for DGRAM and RAW, and sendto/recvfrom. esp32/modsocket: Fix return value of "port" in socket.accept. esp32/modsocket: Make socket.recv take exactly 2 args. esp32: Enable ussl module, using mbedtls component from ESP IDF. esp32/modsocket: Rename "socket" module to "usocket". esp32/sdkconfig: Increase max number of open sockets from 4 to 8. esp32/modsocket: Add error checking for creating and closing sockets. esp32/modsocket: Use _r (re-entrant) versions of LWIP socket API funcs. esp32/modsocket: Raise an exception if socket.connect did not succeed. esp32/modsocket: Make socket.accept return a tuple: (client, addr). esp32/modsocket: Use m_new_obj_with_finaliser instead of calloc. esp32/Makefile: Add check for IDF version, and warn if not supported. esp32/esp32.custom_common.ld: Update to follow changes in IDF. esp32: Update to latest ESP IDF. nubcore <x@nubcore.com> esp32: add #define CONFIG_ESP32_WIFI_RX_BUFFER_NUM 25 Nick Moore <nick@zoic.org> esp32/modsocket.c: add in sendall and makefile methods #10 esp32/modsocket.c: fixups for #10 esp32/modsocket.c: fix copyright, socket_recv gets param and exception esp32/modnetwork.c: fix copyright, network.active param to bool Damien George <damien.p.george@gmail.com> esp32/modnetwork: Implement wlan.isconnected() method. esp32/modnetwork: Add initial implementation of wlan.config(). esp32/modnetwork: Simplify event_handler messages. Nick Moore <nick@zoic.org> esp32/modsocket.c: support for ioctl, settimeout, setblocking, getaddrinfo Damien George <damien.p.george@gmail.com> esp32/README: Add comment about FLASH_MODE being dio. esp32: Update to latest ESP IDF. esp32/modnetwork: Remove unnecessary indirection variable for scan list. esp32/modnetwork: Check that STA is active before trying to scan. esp32/mphalport: Replace portTICK_RATE_MS with portTICK_PERIOD_MS. esp32/README: Add comment about using $(HOME) in makefile. esp32/modnetwork: Use memset instead of bzero, the latter is deprecated. esp32/modnetwork: Improve error handling when STA is connecting to AP. esp32/Makefile: Use tab instead of spaces, and use shorter variable. Nick Moore <nick@zoic.org> esp32/modsocket.c: AF_*, SOCK_* and IPPROTO_* constants esp32/modsocket.c: socket.settimeout implementation Damien George <damien.p.george@gmail.com> esp32/Makefile: Update to latest ESP IDF. Nick Moore <nick@zoic.org> esp32/modsocket.c: use mp streams for sockets esp32: network.WLAN.ifconfig based on esp8266 version esp32: Fix up exception handling esp32: sketchy modsocket ... revisit this once modnetwork is sorted esp32: First cut at modnetwork, manually rebased from prev. version Damien George <damien.p.george@gmail.com> esp32/help: Update help text. esp32: Add info about Microbric Pty Ltd being the sponsor of this port. esp32: Add README.md file. esp32/mpconfigport.h: Add weak links to many of the builtin modules. esp32: Enable soft implementation of machine.SPI class. esp32/Makefile: Simplify APP_LD_ARGS by using OBJ variable. esp32/Makefile: Reorganise Makefile and add some comments. esp32/Makefile: Clean up CFLAGS for ESP IDF components. esp32/Makefile: Tidy up names of ESP IDF components, to match dir name. esp32/Makefile: Define and use ESPCOMP variable. esp32: Update to latest ESP IDF. esp32/main: Enable filesystem support. esp32: Use custom ld script to ensure correct code get placed in iram. esp32: Update to latest ESP IDF. esp32/main: Pin the uPy task to core 0. esp32: Update to use latest ESP IDF. esp32: Disable boot-up scripts, spi_flash_erase_sector no longer works. esp32: Add scripts to init and mount filesystem. esp32: Enable frozen bytecode, with scripts stored in "modules/" dir. esp32/modesp: Increase flash_user_start position to 1Mbyte. esp32/Makefile: Add "erase" target for convenient erasure. esp32/sdkconfig: Reorder config settings to put common things together. esp32/sdkconfig: Change to use single core only. esp32: Add esp module. esp32/uart.c: Make sure uart ISR handler is all in iram. esp32/main.c: Use ESP_TASK_PRIO_MIN + 1 for mp_task's priority. esp32/Makefile: Use only bare-minimum flags when compiling .S files. esp32/Makefile: Rename "firmware" to "application". esp32: Update ESP IDF version. esp32/Makefile: Add declarations to build bootloader and partitions. esp32/Makefile: When deploying, write the application last. esp32/Makefile: Use $(INC) variable instead of listing include dirs. esp32/Makefile: Use locally built versions of freertos and newlib libs. esp32: Add low-level uart handler with ISR and ringbuf for stdin. esp32: Add machine.idle() function. esp32: Add machine.I2C class. esp32: Enable machine.time_pulse_us. esp32: Add initial implementation of machine.Pin class. esp32: Prepare main.c for using xTaskCreateStatic. esp32: Clean up mphalport.h. esp32: Add initial uos module. esp32: Clean up mpconfigport.h, enable more features. esp32: Use new reset function. esp32: Update to latest ESP IDF. esp32: Add idf-version target to Makefile, to track IDF commit. esp32: Initial port to ESP32.
2016-12-05 20:20:10 -05:00
#define UINT_FMT "%u"
#define INT_FMT "%d"
typedef int32_t mp_int_t; // must be pointer size
typedef uint32_t mp_uint_t; // must be pointer size
typedef long mp_off_t;
// ssize_t, off_t as required by POSIX-signatured functions in stream.h
#include <sys/types.h>
// board specifics
#define MICROPY_PY_SYS_PLATFORM "esp32"
#ifndef MICROPY_HW_ENABLE_MDNS_QUERIES
#define MICROPY_HW_ENABLE_MDNS_QUERIES (1)
#endif
#ifndef MICROPY_HW_ENABLE_MDNS_RESPONDER
#define MICROPY_HW_ENABLE_MDNS_RESPONDER (1)
#endif