Skip to content

ESP8266_RTOS_SDK pre-release v3.0-rc1

Pre-release
Pre-release
Compare
Choose a tag to compare
@wujiangang wujiangang released this 10 Aug 14:56
· 1758 commits to master since this release

V3.0-RC1

Notice:
ESP8266_RTOS_SDK V3.0 provides users with brand new framework and APIs that conform to ESP-IDF style. Considering these major changes may cause significant impact on existing projects, it's recommended that this version is only used for the implementation of new projects, instead of being used as an upgrade for any existing mass-production projects for now. However, we do have plans to further upgrade SDK V3.0 in the future, so it can better support projects that has implemented SDK 2.0 (and eariler versions).

1. Breaking Changes

Refactor SDK to be ESP-IDF style, the updated directory is as follows:

  • components
  • docs
  • examples
  • make
  • tools
  • README.md

2. New Components

  • aws iot
  • bootloader of idf compatible
  • espos
  • esptool_py
  • jsmn
  • log
  • newlib
  • NVS flash
  • partition and related scripts
  • SPI driver that support read/write without 4-byte alignment requirement
  • tcpip_adapter
  • unit test

3. Modified Functions and Features

3.1 Compiling framework and cross-toolchain

  • ESP-IDF makefile system described in docs/build_system.rst
  • Refactor the compiling framework
  • Remove gen_misc.sh, and add its configuration in menu
  • Support more C++ functions
  • Add rtc segment and attribute in esp_attr.h
  • Simplify ld files and add more macros for better control
  • Link the rodata section, including strings, into flash by default (except libpp.a and liblog.a)
  • Link FreeRTOS into flash by default
  • Only 2 MB+ SPI flash in the menuconfig is supported
  • Integrate the libhal.a library
  • Update cross-toolchain (xtensa-lx106-elf-xxx) to version 4.8.5
  • Remove two libraries that are no longer being used:
    • libminic.a
    • libmicom.a

3.2 Tools

  • Add a new menu for human-computer interaction, which can be opened by make menuconfig
  • Add support for downloading firmware with command lines
  • Add support for monitoring serial ports with command lines
  • Add realy time information for idf monitor
  • Add more configurations in menu

3.3 Systems

  • [Notice] Change the entry name of user function from user_init to app_main
  • [Notice] Remove the user_rf_cal_sector_set function from the folder applications
  • Add new flash map and partitions, which are described in docs/partition-tables.rst
  • Refactor system APIs, most of which are compatible with esp-idf
  • Refactor startup function and processe
  • Add new feature panic when a crash occurs
  • Add new feature panic when the software watch dog is triggled
  • Add support for full icache(32-KB) mode in menu
  • Fix the load/store error when "a0" is used
  • Remove two header files that are no longer being used:
    • esp_common.h
    • esp_misc.h
  • Remove three APIs and macros that are no longer applicable
    • os_printf
    • ICACHE_FLASH_ATTR
    • ICACHE_RODATA_ATTR
  • Add more configurations in menu

3.4 Drivers

  • Refactor driver APIs
  • Remove some drivers
  • Only the UART and GPIO drivers are supported in this version, others will be added in later versions.

3.5 FreeRTOS

  • Update FreeRTOS to v10.0.1
  • [Important] Modify task stack unit from "unsigned long"(4-byte) to "unsigned char"(1-byte). Therefore, user should modify the size of their task stack to original size x 4
  • Add memory mark for trace heap
  • Add configuration for HZ and CPU system-tick timer
  • Add open source FreeRTOS arch-dependent source
  • Add more configurations in menu

3.6 Wi-Fi

  • Refactor Wi-Fi, phy and sleep APIs, most of which are compatible with esp-idf
  • Add a platform adaptation layer for OS and other components
  • Add a I/O abstract adaptation layer
  • Add configuration for the maximum number of APs that can be scaned in menu
  • Add more Wi-Fi events
  • Support backup mac address
  • Remove the software coupling between Wi-Fi and other components
  • Add more configurations into menu

3.7 LWIP

  • Update LWIP to v2.0.3
  • Support socket TCP cache and retransmitation in LWIP low-layer
  • Support socket UDP cache and retransmitation in LWIP low-layer
  • Modify lwipopts.h and add more configurations in menu
  • Modify the priority of LWIP task to "configMAX_PRIORITIES - 7"
  • Remove the software coupling between LWIP and other components
  • Modify the priority of loop event task to "configMAX_PRIORITIES - 5"
  • Fix issues of LWIP TX_SINGLE_PBUF
  • Fix an error of LWIP timer tick

3.8 SSL

  • Update mbedTLS to v2.8.0
  • Update wolfSSL to v3.15.3
  • Modify esp_config.h and add more configurations in menu

3.9 MQTT

  • Fix bugs of MQTT platform

3.10 newlib

  • Support more functions and APIs
  • Add support to select the output string of stdio functions ends with CR, LF or CR+LF in menu
  • Make newlib C functions thread-safety with private reent by default
  • Add more configurations in menu
  • Add support for selecting from newlib versions
    • Nano version: only support the basic functions and features, which saves RAM and ROM
    • Normal version: support 64-bit integer and float data types, and the C99 stardard

3.11 JSON

  • Update cJSON to v1.7.6

3.12 nopoll

  • Remove nopoll

3.13 espconn

  • Remove espconn