Skip to content

ESP8266_RTOS_SDK Release v3.2

Compare
Choose a tag to compare
@donghengqaz donghengqaz released this 14 Jun 07:23
· 91 commits to release/v3.2 since this release

ESP8266_RTOS_SDK Release v3.2

This is the list of changes since release v3.1.

1. Important Notes

  • Provide 4KB more heap for user since v3.2.
    • Test Environment: ESP8266 runs as a station, connects to an AP and gets an IP address from the AP.
    • Test Result:
      • After the chip got IP, the system's free heap size of v3.2 is 76716 Bytes;
      • After the chip got IP, the system's free heap size of the latest release/v3.1 is 72812 Bytes.
    • Conclusion: 4KB more heap is available for user with the v3.2.
  • V3.2 reduced the application binary size. For example, when compiling the example "openssl _demo", the generated app bin size is about 30KB less than the V3.1.
  • V3.2 removed the use limitation when using sniffer/promiscuous mode and operating the flash together.
  • If you need to call the esp_wifi_set_protocol, it should be called in the SYSTEM_EVENT_STA_START event.
  • For better compatibility, the ESP8266 is in bg mode by default. And application can set it to be bgn mode for reconnecting when it fails to connect some special APs, refer to the example "simple_wifi".

2. Changes in Functions and Features:

2.1 APP Update

  • Fix an issue that the base address of OTA copy cache buffer may not be aligned by 4 bytes.
  • Fix an issue of upgrading from old SDK to the new IDF style SDK, which caused by incorrect flash map.
  • Add combine binary overwrite checking.
  • Add a feature to check OTA firmware's entry function link address in case mistakenly download a wrong firmware.
  • Add a feature to copy old RF parameters to new SDK partition for that users' RF parameters are customized.
  • Add a feature to generate OTA initial binary.
  • Add a feature to get the target AP's SSID and password saved by the old SDK. So users can make the system connects to the same AP even if upgrading from an old SDK to the new style SDK.
  • Add a feature to check the wrong partition table.
  • Spilt OTA example into sub-examples to adapt to various use scenarios.

2.2 AWS IoT

  • AWS-IoT using esp-tls instead of mbedTLS, and this change makes it able to use wolfSSL.
  • Update to latest AWS certificate.

2.3 Bootloader

  • Add a feature that bootloader will copy app firmware from OTA_1 partition to OTA_0 partition after finishing FOTA. In this case, users can generate only one app firmware (OTA_0), instead of two firmwares (both OTA_0 and OTA_1), when using ESP8285 (or ESP8266 + 1MB Flash).

2.4 Build System

  • Fix print_flash_cmd print information error.
  • Optimize compiling script to get partition information from partition table binary.
  • Porting from esp-idf to support cmake
  • Update cmake project configuration file of components and examples to support cmake

2.5 CJSON

  • Add a feature to check if 32-bit type data overflowed when using newlib in nano mode.

2.6 Console

  • Add console component and example

2.7 Driver

  • Fix PWM error phase
  • Fix the blockage issue when UART enables swap
  • Fix a bug that PWM may be interrupted by Wi-Fi
  • Fix PWM jitter when connecting AP
  • Fix PWM channel number type error
  • Fix SPI example readme wave image error
  • Modify UART tx done API to add ticks for waitting
  • Add ADC driver and example
  • Add I2S driver and example
  • Add SPI RAM driver
  • Optimizing HSPI example

2.8 ESPOS

  • Remove ESPOS component

2.9 ESP-TLS

  • Update from esp-idf
  • Fix an issue of receiving fail when working in non-block mode

2.10 Esptool

  • Add a feature to disable the main part of rom UART0 printing
  • Add a feature to make software reset after finishing downloading

2.11 Factory-test

  • Add factory test example and document

2.12 FreeRTOS

  • Divide ringbuf to be an independent component from freertos
  • Remove unnecessary stack panic information so that only useful stack data will be print
  • Remove unused or unsupported platform code from freertos, only left the useful part for the xtensa LX106
  • Add a configuration to link some functions to IRAM to speed up task switch
  • Add an option to enable queue sets
  • Add an option to disable some functions to optimize firmware bin size
  • Add an option to disable FreeRTOS if user wants to use other OS instead
  • Add an option to enable facility
  • Add a function to get CPU usage
  • Add an option for idle task stack size, changed the default size from 768 to 1024 bytes
  • Add CPU wait in idle task to save power
  • Add an option for panic so that users can select whether it outputs panic information or not
  • Add independent tick/idle hook functionality

2.13 HEAP

  • Modify heap raw malloc/free link from flash to iram, to remove sniffer/promiscuous mode use limitation

2.14 HTTP Client

  • Add esp_http_client component from esp-idf
  • Add wolfssl platform support for http client

2.15 HTTP Parser

  • Add http parser from esp-idf

2.16 HTTP Server

  • Add the esp_http_server component from esp-idf

2.17 HTTPS OTA

  • Add esp_https_ota component from esp-idf

2.18 Log

  • Fix log time stamp error

2.19 LwIP

  • Fix compiling error when disable "set socket SO_LINGER default"
  • Fix a bug that socket multi-thread does not check socket offset when using VFS
  • Fix UDP sync register message error when using raw socket
  • Fix a crash issue when multi threads reenter lwip_close
  • Modify netif hostname according to rfc952
  • Add "<time.h>" declare to "lwipopts.h"
  • Add "<sys/select.h>" header file
  • Add a function to increase TCP sending speed at non-blocking mode
  • Add standard "fcntl" and "ioctl" APIs for application if VFS is disabled
  • Add a reserved DNS server to avoid DHCP changing all DNS server addresses
  • Add Auto-IP triggers callback so that application can know IP changes when running mDNS
  • Clean up LwIP port source code
  • Enable LWIP loopback by default in the example http_server series and wifi-provisioning

2.20 MQTT

  • Add esp-mqtt component and example
  • Fix compiling error when disable WS or WSS

2.21 NVS Flash

  • Added nvs_partition_gen_utility.py

2.22 Partition table

  • Fix partition load redefined error

2.23 Protobuf-c

  • Add protobuf-C component

2.24 Protocomm

  • Add protocomm component

2.25 SPIFFS

  • Add SPIFFS component and example

2.26 SSL

  • remove AX-TLS
  • Add license note to README and header file of wolfSSL
  • Modify network wrapper from mbedtls to esp-tls
  • Modify network wrapper from wolfSSL to esp-tls

2.27 System

  • Fix %p format print error of ets_printf
  • Fix a bug that startup function cannot support multiple segments
  • Fix a bug that RTC segment is always loaded even if it is woke up from deep sleep
  • Fix compiling error that "esp_sleep.h" leaks "gpio.h" declaring
  • Modify macro name of platform from TARGET_PLATFORM_ESP8266 to IDF_TARGET_ESP8266
  • Add interrupt overhead time test
  • Add an option to configure CPU frequency to be 160MHz before app_main
  • Add an API esp_timer_get_time to get microsecond
  • Add a function to print version of "phy" library
  • Add error number description
  • Add a feature that software disables UART swap before restart
  • Add an option to init OS before starting for "RTT"
  • Refactor link section to make unused function/data not linked
  • Refactor GPIO wakeup API in force sleep mode
  • Remove esp_socket to save RAM and ROM
  • Update libphy.a to 1055_22
    • Optimize time waking from light sleep to reduce power consumption
    • Disable calculating No.14 channel when power on

2.28 TCP Transport

  • Add tcp_transport component

2.29 TCPIP-Adapter

  • Fix a memory leak issue that received pbuf may not be freed

2.30 Util

  • Add a function to speed up loading data from instruction bus
  • Add new SHA(1/256/512) algorithm and unit test
  • Add new AES(ECB/CBC/CFB128/CFB8/CTR) algorithm and unit test
  • Add util_assert to check input parameters
  • Refactor CRC to speed up loading data from lookup table, which is laying out at instruction bus

2.31 Virtual File System

  • Add VFS component
  • Disable VFS components by default

2.32 Wi-Fi

  • Remove WME information by default
  • Refactor the method that sync data from Wi-Fi driver to 802.11 stack task, to reduce the time of close NMI which may cause Wi-Fi status wrong
  • Fix a crash issue when receiving a wrong beacon whose DTIM is 0
  • Fix a crash issue when Wi-Fi tx state error
  • Fix transmitting error when "RTS", "CTS", "transmiting start" and "transmiting complete" events are triggered in the same time
  • Fix a bug that Wi-Fi may fail to enter force sleep mode when pm is enabled
  • Fix PWM error at sniffer mode
  • Fix a bug that queue sends data in blocking mode when locking the scheduler
  • Fix a bug that esf_buf did not set critical state
  • Fix a bug that station does not use random SEQ to associate AP
  • Fix a memory leak issue when scanning in sta+softap mode with some special AP
  • Fix description of phy power level
  • Fix description of some members of wifi_pkt_rx_ctrl_t in esp_wifi_types.h
  • Modify smartconfig type to sc_callbac
  • Modify ESP8266 Wi-Fi API to keep consistent with ESP32
  • Using global functions instead of function table to reduce unused function
  • Add esp-log to internal library
  • Add a configuration to set Wi-Fi TX power
  • Add a feature that Wi-Fi sends deauth to ap before connecting
  • Add sniffer example
  • Add new APIs:
    • esp_wifi_set_promiscuous_ctrl_filter
    • esp_wifi_get_promiscuous_ctrl_filter
    • esp_wifi_get_bandwidth
  • Reduce the time of station connecting to an AP

2.33 Wi-Fi Provisioning

  • Add wifi-provisioning and example component

2.34 WPA Supplicant

  • Disable "Use faster div, esptmod, sqr, montgomery multiplication algorithm" when enable wolfSSL

3. Modified Documents

  • Revise Breathe version to avoid docs build failure on ReadTheDocs server.
  • Remove sniffer or promiscuous mode use limitation
  • Update the toolchain download link URL
  • Revise header files which are not doxygen style
  • Add general notes to main page of document
  • Add gif in doc to introduce how FOTA works
  • Add factory test example and document
  • Upgraded Sphinx, Breathe and Blockdiag to the latest versions

4. Tools

  • Update requirements.txt script for python
  • Update unit-test-app
  • Fix the windows install prerequisites issue