ESP-IDF v2.0 Release Candidate 1
Pre-releaseBuild system and tools
- Updated toolchain to use to GCC 5.2.0, which includes a fix for FP division bug (#96)
- C++ and STL support in the build system and RTOS
- Add IDF_VER environment variable and preprocessor define, esp_get_idf_version function
- Simplifed WiFi, Bluetooth, Ethernet config options
- Removed KEEP from RAM-resident sections of linker script, which saves some RAM
- Removed FLAGS_XXX variable option in the build system, replace with per-target overrides
- New 'make size' build target
- New 'make monitor' build target
- Dependency make rules are generated for assembler source files as well
- Support for default sdkconfig values via sdkconfig.defaults file
- Esptool updated to 2.0-rc
Bootloader, FreeRTOS, and SoC functions
- Bootloader sets CPU frequency to 80MHz
- Bootloader checks if DRAM segments are going to collide with stack
- Dual core mode is enabled by default
- Replaced backwards-compatible portTICK_RATE_MS with FreeRTOS v8+ portTICK_PERIOD_MS
- Interrupt allocation APIs with interrupt sharing support
- Support for interrupt handlers outside of IRAM
- Support for allocation of memory from IRAM pool
- APIs for deep sleep wake up using ULP, EXT0, EXT1 sources
- API to control power down of RTC peripherals in deep sleep
- Improved stack overflow detection and reporting
- Panic handler prints backtrace
- On abort(), panic handler prints the PC address where abort() was called
- Support for generation of core dumps and core dump analysis tools
WiFi and BT
- Support Long Range Rate mode along with bgn mode to support long range WiFi communication.
- Set DTIM sleep mode as default
- WiFi throughput optimization
- WiFi buffer size configurable
- Support full packet receive in sniffer mode
- BLE Host support
- BLE Host BQB qualified
- Add BLE BLUFI profile with security for WiFi configuration
- Add BLE APIs to use table to create GATT server service
- Ethernet support Flow control
- New WPA2 APIs to set/clear identity
- Fix bugs in WiFi connection
- Fix bugs in DTIM Sleep mode
- Fix bugs in BLE mode:
- Advertising in ADV_TYPE_DIRECT_IND_LOW mode doesn't work
- Advertising stop doesn't work sometimes
- Bluedroid init/deinit/enable/disable memory leak
- GATT client can not receive notify or indicate
- Errors caused by calling bluedroid APIs before init/enable
- GATT server can not be connected in sometimes
- BT/BTLE RF power unstable
- other minor bugs
New drivers
- I2C
- I2S
- SPI master
- Sigma-delta Modulation
- RTC peripherals: touch pad, ADC, DAC, RTC IO
- SDMMC host
Other components
- Optional (opt-out) support for 64-bit integer and C99 formats in newlib stdio functions
- Support for console redirection to other UART
- Support for non-blocking reading from UART via stdin
- Initial support for generation of ULP coprocessor code
- Initial support for flash encryption and secure boot
- Option for app & partition table signing to happen outside build system
- New LwIP menuconfig options to set SO_RCVBUF, TCP_MAXRTX, TCP_SYNMAXRTX, IP_FRAGMENT, IP_REASSEMBLY
- Allow to set different hostname for each interface in tcpip_adapter
- mDNS library added
- libcoap library added
- Add directory APIs to VFS layer and corresponding POSIX functions
- Add FATFS library with SDMMC and VFS support
- Removed alignment requirements from spi_flash_{read,write}
- Floating point format support in cJSON
Documentation and examples
- Moved examples to new folders / categories
- READMEs for examples which did not have them
- OTA example
- WPA2 enterprise example
- mDNS example
- I2C example
- I2S example
- LEDC example
- GPIO example
- UART example
- SPI master example
- Sigma-delta modulation example
- SD card / FATFS example
- Unit testing documentation
Important changes
-
Toolchain version has been updated to use GCC 5.2.0. Building projects with GCC 4.8.5 is no longer supported, and will trigger a warning in the build system.
-
Interrupt numbers are now assigned using interrupt allocation API. Applications should not use hardcoded interrupt numbers.
-
GPIO driver
-
Modify the parameter of gpio_isr_register function.
esp_err_t gpio_isr_register(void (*fn)(void*), void * arg, int intr_alloc_flags, gpio_isr_handle_t *handle);
-
Add GPIO interrupt service, so that we can hook different isr handler to each GPIO.
esp_err_t gpio_isr_handler_add(gpio_num_t gpio_num, gpio_isr_t isr_handler, void* args); esp_err_t gpio_isr_handler_remove(gpio_num_t gpio_num); esp_err_t gpio_install_isr_service(int intr_alloc_flags); void gpio_uninstall_isr_service();
-
Fix GPIO pull-up/down function, old macros should not be used any more. Use
gpio_{pullup,pulldown}_{en,dis}
functions instead.PIN_PULLUP_EN(GPIO_PIN_MUX_REG[x]) -> gpio_pullup_en(x) PIN_PULLUP_DIS(GPIO_PIN_MUX_REG[x]) -> gpio_pullup_dis(x) PIN_PULLDWN_EN(GPIO_PIN_MUX_REG[x]) -> gpio_pulldown_en(x) PIN_PULLDWN_DIS(GPIO_PIN_MUX_REG[x]) -> gpio_pulldown_dis(x)
-
-
UART driver
-
Modify the parameters of uart_driver_install and uart_isr_register
esp_err_t uart_driver_install(uart_port_t uart_num, int rx_buffer_size, int tx_buffer_size, int queue_size, QueueHandle_t *uart_queue, int intr_alloc_flags); esp_err_t uart_isr_register(uart_port_t uart_num, void (*fn)(void*), void * arg, int intr_alloc_flags, uart_isr_handle_t *handle);
-
Add API to get received data length in buffer.
esp_err_t uart_get_buffered_data_len(uart_port_t uart_num, size_t* size);
-
Add pattern detect feature.
esp_err_t uart_disable_pattern_det_intr(uart_port_t uart_num); esp_err_t uart_enable_pattern_det_intr(uart_port_t uart_num, char pattern_chr, uint8_t chr_num, int chr_tout, int post_idle, int pre_idle);
-
-
LEDC driver
-
Modify the parameters for ISR register APIs:
esp_err_t ledc_isr_register(void (*fn)(void*), void * arg, int intr_alloc_flags, ledc_isr_handle_t *handle);
-
Add fade functions for LEDC:
esp_err_t ledc_set_fade_with_step(ledc_mode_t speed_mode, ledc_channel_t channel, int target_duty, int scale, int cycle_num); esp_err_t ledc_set_fade_with_time(ledc_mode_t speed_mode, ledc_channel_t channel, int target_duty, int max_fade_time_ms); esp_err_t ledc_fade_func_install(int intr_alloc_flags); void ledc_fade_func_uninstall(); esp_err_t ledc_fade_start(ledc_channel_t channel, ledc_fade_mode_t wait_done);
-
-
Modify parameters for ISR register API in PCNT driver
esp_err_t pcnt_isr_register(void (*fun)(void*), void * arg, int intr_alloc_flags, pcnt_isr_handle_t *handle);
-
Modify parameters for ISR register API in RMT driver
esp_err_t rmt_driver_install(rmt_channel_t channel, size_t rx_buf_size, int intr_alloc_flags); esp_err_t rmt_isr_register(void (*fn)(void*), void * arg, int intr_alloc_flags, rmt_isr_handle_t *handle);
-
Modify parameters for ISR register API in timer group driver
esp_err_t timer_isr_register(timer_group_t group_num, timer_idx_t timer_num, void (*fn)(void*), void * arg, int intr_alloc_flags, timer_isr_handle_t *handle);
-
Bluetooth APIs
-
Add/modify API prefix for the following functions and types:
bt_controller_init -> esp_bt_controller_init vhci_host_callback -> esp_vhci_host_callback API_vhci_host_check_send_available -> esp_vhci_host_check_send_available API_vhci_host_send_packet -> esp_vhci_host_send_packet API_vhci_host_register_callback -> esp_vhci_host_register_callback
-
Modify function names of Bluetooth enable/disable APIs:
esp_enable_bluetooth -> esp_bluedroid_enable esp_disable_bluetooth -> esp_bluedroid_disable esp_init_bluetooth -> esp_bluedroid_init esp_deinit_bluetooth -> esp_bluedroid_deinit
-
Modify callback type of GAP API:
esp_err_t esp_ble_gap_register_callback(esp_gap_ble_cb_t callback);
-
Separate gattc_if from conn_id in GATT client and server APIs, changed callback type in the following functions:
esp_ble_gattc_register_callback esp_ble_gattc_close esp_ble_gattc_config_mtu esp_ble_gattc_search_service esp_ble_gattc_get_characteristic esp_ble_gattc_get_descriptor esp_ble_gattc_get_included_service esp_ble_gattc_read_char esp_ble_gattc_read_char_descr esp_ble_gattc_write_char esp_ble_gattc_write_char_descr esp_ble_gattc_execute_write esp_ble_gattc_register_for_notify esp_ble_gattc_unregister_for_notify esp_ble_gatts_register_callback esp_ble_gatts_create_service esp_ble_gatts_add_char esp_ble_gatts_add_char_descr esp_ble_gatts_send_indicate esp_ble_gatts_send_response esp_ble_gatts_set_attr_value esp_ble_gatts_open esp_ble_gatts_close
-
Known issues and missing features
WiFi and BT
- Some bugs when WiFi Stack is used in dual-core FreeRTOS system
- WiFi DTIM sleep is not supported in WiFi/BLE coexistence mode
- WiFi DTIM sleep doesn't reduce the CPU Frequency
- WiFi throughput need more optimization
- ESP-NOW is not supported
- Classic BT host is not supported
- Need more documents for WiFi and BT
Other resolved issues
Issues reported on GitHub and resolved in this release.
Obtaining v2.0-rc1
The source files attached to this release will 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-v2.0-rc1
cd esp-idf-v2.0-rc1/
git checkout v2.0-rc1
git submodule update --init