ESP-IDF Release 1.0

@wujiangang wujiangang released this Dec 2, 2016 · 636 commits to master since this release

Release notes

v1.0

New features and components

This release contains many new components and improved functionality:

  • Improved partition APIs, allowing read/write/erase/mmap on a partition
  • Drivers:
    • RMT driver
    • UART driver
    • PulseCounter driver
    • Ethernet driver (beta)
    • Timer Group driver
  • Added in-tree examples for various esp-idf features
  • FreeRTOS: Backported the static allocation feature from v9.0
  • FreeRTOS: Task unblocking on other CPU now happens instantaneously
  • BLE/WiFi coexistence support
  • Support for deep sleep wakeup stub
  • Added task and interrupt watchdogs
  • Virtual filesystem APIs
  • OTA core APIs
  • Secure Boot support (developer testing mode)
  • WPS support
  • WPA2 Enterprise support
  • DTIM Sleep support
  • Pass WFA 11n\WPS\WPA2 Enterprise certification
  • BLE Host support (beta)
  • Ethernet support LwIP
  • OpenSSL API for MbedTLS
  • Doxygen and ReadTheDocs-style documentation

Known issues and missing features

Build system and tools

  • ESP-IDF can only be used when cloned as git repository. Downloaded .zip archive is not functional because it doesn't contain submodule dependencies.
  • On Windows, Eclipse may not be able to index the project correctly.
  • Windows installation package (MSYS + toolchain) doesn't provide pre-built OpenOCD.

Bootloader, FreeRTOS, and SoC functions

  • System configuration defaults to single core mode. Dual core mode is supported, but is set in the configurartion menu under "Components -> FreeRTOS -> Run FreeRTOS Only On First Core".
  • CPU frequency can only be set at compile time. Changing CPU frequency at runtime requires some changes in FreeRTOS, which are not done yet.
  • All of the following libraries are now placed into IRAM: FreeRTOS, libphy, librtc, libpp, libhal. This causes excessive usage of IRAM. Parts of these libraries may be safely moved into flash.
  • 2nd stage bootloader does not verify MD5 signature of loaded application.
  • Not all flash chips which support QIO can currently be used in QIO mode. This will be fixed either by adding extra logic to the 2nd stage bootloader, or by adding extra flash configuration commands using esptool. As a workaround, select DIO mode in menuconfig.
  • Not all flash chips which support 80M clock can currently be used in 80M clock mode. This will be fixed by adding extra information to 2nd stage bootloader binary and changing SPI Flash library. As a workaround, select 40M clock mode in menuconfig.
  • GDB stub works only in post-mortem mode
  • Using floating point calculations is not compatible with tasks that have no affinity. Tasks without affinity that use the FPU will be automatically pinned to one of the two CPUs.
  • Using floating point calculations in an interrupt handler can lead to a double exception.

WiFi and BT

  • WiFi DTIM sleep is not supported in WiFi/BLE coexistence mode
  • WiFi DTIM sleep doesn't reduce the CPU Frequency
  • WiFi throughput is not optimized yet
  • BT host stack is not supported yet

Other components

  • SPI flash APIs work only with the main flash chip, and can not work with flash chips connected to other SPI buses.
  • C library functions which read from stdin are not connected to UART yet.
  • LwIP stack uses task local storage to store an extra per-task mutex.
  • Although LwIP does support IPv6, DHCP server and DHCP client don't support IPv6 yet. System_event events related to DHCP also don't support IPv6 yet.

Obtaining the v1.0 release

As mentioned before, the source files attached to this release wil not work due to our use of git submodules. To get this release, use the following commands:

git clone https://github.com/espressif/esp-idf.git esp-idf-v1.0
cd esp-idf-v1.0/
git checkout v1.0
git submodule init
git submodule update

Downloads