ESP-IDF3.0

发行版v3.0的文档可在http://esp-idf.readthedocs.io/en/v3.0/上找到

这是自发布v3.0-rc1以来的更改列表。

如果从以前的稳定版本V2.1进行升级,请检查v3.0-rc1发行说明以了解适用的更改。

打破变化

发行版v3.0在很大程度上与为ESP-IDF v3.0-rc1编写的应用程序兼容。但是一些破坏行为和重要的API更改已经引入:

  • 一些混合了返回值和错误代码的I2S API已被弃用。新的API已被引入以取代它们。

    • i2s_write应该用来代替i2s_write_bytesi2s_push_sample,这是不赞同的。
    • i2s_read应该用来代替i2s_read_bytesi2s_pop_sample,这是不赞同的
  • esp_ble_gattc_open()remote_addr_type添加了一个新参数esp_ble_gattc_open()

  • 修改ESP_GATTS_ADD_CHAR_DESCR_EVTBLE GATTS事件的char_uuid参数,将此事件的参数重命名为descr_uuid!1484

  • 修改经典BT AVRC事件

    • feat_maskESP_AVRC_CT_CONNECTION_STATE_EVT事件中删除参数
    • 删除ESP_AVRC_CT_MAX_EVT事件
    • 添加一个新事件 ESP_AVRC_CT_REMOTE_FEATURES_EVT

构建系统和工具

新功能

  • 支持.cc扩展名的C ++源文件
  • idf_monitor现在支持暂停控制台的日志输出
  • 支持编辑ESP-IDF源文件的editorconfig
  • 修复从睡眠中醒来时降低的RTC核心电压

Bug修复

  • 恢复应用程序与IDF前v2.1引导程序的兼容性
  • 修复在单核模式下构建时的SysView支持

引导程序

  • 在UART由第二级引导加载程序重新配置之前禁用日志记录(可能设置自定义波特率)
  • 如果闪光频率为80MHz,则始终将VDD_SDIO电压提升至1.8V - > 1.9V

FreeRTOS的

新功能

  • 反向移植的FreeRTOS V9.0.0任务删除行为:如果当前未运行,已删除的任务将立即清除。
  • IDF环缓冲区:添加新的API xRingbufferGetCurFreeSize(),xRingbufferIsNextItemWrapped(),xRingbufferCreateNoSplit()

Bug修复

  • 修复在某些情况下未被清理的跨核心已删除任务。

系统库功能

新功能

  • spi_flash:检测无效写入的新配置选项

Bug修复

  • 修复esp_timer准确度问题
  • 修复启用堆跟踪时的realloc()行为
  • 修复启用堆中毒时的realloc()内存损坏错误
  • 修复拆分大型空闲块时的内存碎片问题
  • 修复RTC用作时钟源时的编译错误
  • 通过时钟子系统修复无效的SPIRAM时钟变化
  • 修复单核模式下的时钟初始化
  • 限制DRAM的链接器大小以强制执行静态RAM限制,而不是在运行时出错

驱动程序

新功能

  • ADC eFuse工厂校准功能
  • I2S驱动程序:新函数i2s_write_expand()自动扩展提供的样本的位宽以匹配硬件
  • UART驱动程序:允许读取字符模式检测位置,而无需修改模式检测队列

Bug修复

  • I2C驱动程序:修复超时恢复,线程安全
  • I2C驱动程序:允许NACKing最后一个字节读取
  • I2S驱动程序:修复某些函数返回的不准确错误

TCP / IP

新功能

Bug修复

  • 修复关闭TCP套接字导致系统崩溃错误
  • 修复设置软AP或以太网静态IP时发布错误事件的错误

已知的问题

  • 长时间TCP流量稳定性测试会导致LWIP断言,只有在启用了PSRAM的双核模式下才能找到它
  • TCP流量稳定性测试导致中断看门狗超时,发现它处于双核模式,并且设备的WiFi模式配置为WIFI_MODE_APSTA模式

无线上网

Bug修复

  • 修复站点与AP断开连接时系统崩溃的错误。
  • 修复接收信标时间不正确的错误。
  • 修复esp_wifi_restore()导致无线连接失败的错误(#233
  • 修正了在嗅探模式下它在接收混杂数据时声明的错误(#1037#1404
  • 修复espnow中的内存泄漏
  • 修复wpa2在断开连接时断言的错误
  • 修复11g模式下的QoS错误
  • 修复esp_wifi_stop()不会返回错误
  • 修复esp_wifi_deinit()会导致系统断言错误
  • 修复EAPOL重传导致系统崩溃错误
  • 修复WPS在WIFI_MODE_APSTA错误(#1045)上无法正常工作
  • 修复WPA2的sha256签名导致系统断言错误([ #1297 ](无法在ESP32上使用wpa2_enterprise示例))

性能改进

  • 优化WiFi重传和超时机制

BLE

已知的问题

  • 如果ESP32过载,蓝牙控制器将会崩溃,例如运行BLE吞吐量示例并同时打印大量日志

链接层

  • 修复LL_LENGTH_REQ即使远程设备不支持此功能也会发送数据包的错误

GATT服务器

  • esp_ble_gatts_get_attr_value()当事件获取的特征值由远程设备使用Prepare Write Request#1612)写入时修复事件的错误结果

间隙

  • 修复开始/停止广告完成事件有时不准确的错误
  • 修复在connection parameters update procedure配对期间有时失败的错误
  • 修复connection parameter update procedure有时导致断开连接的错误
  • 修复芯片重新启动后从闪存读取的绑定列表不正确的错误

SMP

  • 修复当设备已经配对时重新连接有时会失败的错误(#1561

性能优化

  • 提高多连接的稳定性

蓝牙通用部件

  • 修复一些与内存泄漏相关的错误(BLE SMP,A2DP,Timer)
  • 修复一些可能导致崩溃的错误(xQueueGenericSend,页面扫描过程等)

经典BT

  • 添加选项以配置A2DP sink task通过menuconfig 的堆栈大小
  • 修复连接期间调用重启media task失败的错误esp_a2d_sink_deinit()#1522
  • 当接收设备充当主设备时,修复事件的错误disc_rsn参数值ESP_A2D_CONNECTION_STATE_EVT
  • 修复事件的错误remote_bda参数值ESP_AVRC_CT_CONNECTION_STATE_EVT
  • 修复link key notification当接收设备正在修复时导致发起方丢失事件的错误simple_pairing mode#1275
  • 修正在menuconfig中启用string_to_bdaddr时,从闪存读取的设备地址未正确转换的错误nano formatting options

openssl包装

  • 在mbedTLS配置中禁用ALPN时修复编译错误

mbedTLS

Bug修复

  • Backport安全修复从v2.8.0修复到v2.6.0。涵盖CVE-2018-0488,CVE-2018-0487,CVE-2017-18187,CVE-2018-9988,CVE-2018-9989。

超低功耗处理器

Bug修复

  • 修复使用新工具链时出现的I_DELAY宏错误
  • 记录ULP指令的执行时间

的mDNS

Bug修复

  • 生成与所有mDNS解析器兼容的TXT记录
  • 解决mDNS服务为空时的问题

外部图书馆

  • cJSON更新至v1.7.1,包含一些内存损坏修复程序

文档

  • 在一些BLE示例中添加教程
  • 修改一些BLE / BT示例中的自述文件
  • 改进了RMT驱动程序API文档

例子

新的例子

  • 新的RMT驱动程序示例

Bug修复

  • 修正Eddystone示例的一些错误(#1682

获取v3.0

连接到该版本的源文件将无法工作,由于我们使用git的子模块。改为使用以下方法之一:

使用git

要获得此预发布版,请使用以下命令:

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

这是获得ESP-IDF v3.0的推荐方式。

下载包含子模块的档案

附加到这个版本是一个esp-idf-v3.0.zip档案。它包含.git目录和所有子模块,因此可以直接使用。该存档适用于存在连接问题的用户,以防止他们从Github克隆。

预发行

ESP-IDF Pre-release 3.0-rc1

ESP-IDF3.0 igrr 发布了这个 15天之前 · 自本次发布以来,921承诺主人

预发布3.0-rc1的文档可在http://esp-idf.readthedocs.io/en/v3.0-rc1/获得

这是自2.1版以来的更改列表。

打破变化

发布v3.0在很大程度上与为ESP-IDF v2.1编写的应用程序兼容。但是一些破坏行为和重要的API更改已经引入:

  • 晶体频率默认设置为40MHz(以前自动检测)。如果检测到的频率不匹配,则会记录警告,但26MHz主板(如Sparkfun ESP32 Thing)的用户需要手动配置26MHz。(文件

  • 蓝牙控制器保留内存现在在运行时确定。启用蓝牙的应用程序可以使用esp_bt_controller_mem_release)函数来回收未使用的控制器内存。

  • 新任务看门狗API。esp_task_wdt_feed()已被esp_task_wdt_reset()所取代。现在必须将任务明确添加到Task Watchdog。(文件

  • FreeRTOS tick和空闲挂钩现在分配给每个内核(#781

  • RMT外设功能rmt_get_ringbuf_handler改名为rmt_get_ringbuf_handle

  • 中断分配:分配给相同中断源的多个中断处理程序必须具有相同的标志

  • 默认情况下,BASIC ROM控制台回退在首次引导时永久禁用(通过efuse),以避免意外重置为此模式

  • SPI驱动程序:许多SPI主API,SPI主地址格式等都发生了变化。有关详细信息,请参阅驱动程序部分(下方)

  • tcpip_adapter_start函数现在被分解成接口特定的tcpip_adapter_eth_starttcpip_adapter_wifi_start等等(这是一个突破API的变化,但这个功能通常不直接由应用程序调用)

  • WiFi初始化功能,esp_wifi_init不再在nvs_flash_init内部调用。应用程序需要在调用nvs_flash_init之前调用esp_wifi_init

  • esp_wifi_wps_enable从更改esp_err_t esp_wifi_wps_enable(void)esp_err_t esp_wifi_wps_enable(const esp_wps_config_t *config)。详细信息请查看WPS示例。

  • esp_wifi_sta_wpa2_ent_enable从更改esp_err_t esp_wifi_sta_wpa2_ent_enable(void)esp_err_t esp_wifi_sta_wpa2_ent_enable(const esp_wpa2_config_t *config)。详细信息请查看WPA2示例。

  • 定义wifi_country_t已更改(文档)。

  • 当WiFi站点与AP断开连接时,IP地址不会立即重置为0.如果站点断开一段时间,SYSTEM_EVENT_STA_LOST_IP则会生成事件并且IP地址设置为0.可以使用CONFIG_IP_LOST_TIMER_INTERVAL选项(120秒默认)。

  • 新的MTU API。esp_ble_gattc_config_mtu()已取代esp_ble_gatt_set_local_mtu()esp_ble_gattc_send_mtu_req()。前一个API用于设置本地Rx MTU,后一个用于GATTC发送MTU请求

  • GATTC API esp_ble_gattc_get_characteristic()并被esp_ble_gattc_get_descriptor()删除

    • 新API esp_ble_gattc_get_db()可用于获取整个GATT数据库(esp_ble_gattc_get_db
    • 提供了一些其他新的API来获取UUID或句柄的特定特征,例如esp_ble_gattc_get_char_by_uuid()
  • 用于GATTC读取/写入操作的API参数已更改,现在,句柄将用作标识符而不是UUID。

    • 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_prepare_write()
    • esp_ble_gattc_prepare_write_char_descr()
  • 添加启用或禁用隐私的事件(ESP_GAP_BLE_SET_LOCAL_PRIVACY_COMPLETE_EVT

  • 添加两个GATTC事件以指示物理连接状态

    • ESP_GATTC_DISCONNECT_EVT
    • ESP_GATTC_CONNECT_EVT
  • 修改两个指示物理连接状态的GATTS事件(ESP_GATTS_CONNECT_EVT和 ESP_GATTS_DISCONNECT_EVT

    • 删除不必要的参数 is_connected
    • reasonESP_GATTS_DISCONNECT_EVT事件中添加一个新参数
  • 修改GATTS事件 ESP_GATTS_CONF_EVT

    • 参数lenvalue在事件中添加以指示事件属于的通知/指示。这两个参数仅在数据包未成功发送时才有效。
  • bt.h头文件已被重命名为esp_bt.h

  • LWIP套接字文件描述符现在采用更高的数值(通过LWIP LWIP_SOCKET_OFFSET宏)。BSD套接字代码大部分应该可以按预期工作(并且,在V3.0中新增了一些标准POSIX函数,现在可以与套接字一起使用)。然而,假定套接字文件描述符的任何代码始终是低编号整数,可能需要修改才能解释LWIP_SOCKET_OFFSET。请注意,调用的常用模式select(FD_SETSIZE, ....)将不再起作用,因为集合的大小远小于LWIP_SOCKET_OFFSET值。有必要计算实际的最大fd数值。

硬件支持

  • 支持ESP32-PICO-D4系统封装和ESP-32-PICO-KIT开发板
  • 支持外部SPI连接的ESP-PSRAM32芯片(包括用于在外部PSRAM中启用堆的选项,以及malloc()用于大型缓冲区的可选透明选项)

构建系统和工具

新功能

  • 支持gcc Stack Smashing保护功能
  • 通过JTAG提供GCOV支持
  • 使用JTAG应用程序跟踪(文档)通过SEGGER SysView工具进行运行时分析
  • make print_flash_cmd的打印闪烁命令(可以重定向到一个文件)
  • 分区表:允许变量跨越多个CSV字段(#841
  • 如果未定义变量被展开,现在默认发出警告(#138
  • 私人包含目录现在在包含搜索路径中的公共目录之前订购
  • 新的“沉默断言”选项可在保持断言功能的同时保存应用程序二进制大小
  • 更完整的“make size”输出,新的“make size_components”和“make size_files”目标用于分析ELF文件的构成。
  • 每个COMPONENTS_DIR现在可以是组件目录,也可以是包含作为组件的子目录的父目录
  • esptool.py现在生成较小的应用程序二进制映像(在某些情况下几乎缩小了128KB)

Bug修复

  • 修复Windows 10自秋季创作者更新以来的idf_monitor崩溃(#1136
  • 修复idf_monitor“取消”行为以匹配pyserial TIOCSTI ioctl
  • 通过CPPFLAGS而不是CFLAGS应用组件级定义(#1165
  • Eclipse文档:修复CDT GCC分析器以正确分析C ++命令(#929
  • 更新项目Makefile现在触发完全重建

引导程序

  • 可将1.8V VDDSDIO内部稳压器电压提升至1.9V,以解决闪存电压稳定性问题。
  • 如果OTA配置无效或配置的映像不可启动,则改进健壮性和后备选项。
  • 应用程序图像现在默认添加了所有内容的SHA256哈希。引导加载程序验证这是否存在。
  • 开机时间优化。在80MHz QIO模式下,可以接近两倍的速度启动应用程序。
  • 允许定制SPI闪存引脚配置为QIO / QOUT模式。

FreeRTOS的

新功能

  • 以前“未经测试”(断言失败)FreeRTOS 8.2.0功能现在完全支持(包括队列注册表,任务通知eTaskGetState()
  • FreeRTOS运行时统计支持(可通过menuconfig配置)
  • 许多FreeRTOS 9.0.0功能和API调用已被反向移植(文档
  • FreeRTOS滴答和空闲挂钩现在是每个核心
  • 降低自旋锁(portMUX)的开销以提高双核模式下的性能

Bug修复

  • Ringbuffer修复了不是4的倍数的大小。
  • 修复bug xTaskResumeAll()有时不能恢复所有任务。

SoC-Level功能

新功能

  • 电源管理:支持SoC Light Sleep
  • 电源管理:支持动态运行时频率缩放。
  • 掉电检测器功能(文档
  • 将非连续闪存页面映射到连续内存空间的新功能
  • 高级中断处理程序现在是弱链接符号,因此组件可以覆盖它们
  • 新的SPI闪存互斥API允许将多个SPI闪存操作(写入等)作为参考其他任务的原子操作进行组合
  • SPI闪存擦除/写入操作不允许在危险区域(引导程序,分区表,运行应用程序)

Bug修复

  • 默认情况下,BASIC ROM控制台回退在首次启动时永久禁用(通过efuse),以避免硬件意外重置为此模式。
  • 当使用最大80MHz SPI闪光频率时提高CPU内核电压(提高稳定性)
  • 修复中断分配不总是分配相同的源(问题
  • 复位后禁用未使用的外设时钟,驱动程序将根据需要重新启用
  • 修复超过185KB的DRAM静态分配时的崩溃
  • 删除不正确链接到最终二进制文件的未使用的.data节,增加了RAM的使用量
  • 修改切换到更高CPU频率时可能的锁定
  • 在esp_restart期间停止其他CPU时修复可能的竞争状况
  • 修复GPIO26的HOLD_FORCE字段名称中的复制粘贴错误

系统库功能

新功能

  • pthread API支持大多数pthreads函数
  • pthread API支持pthread条件变量
  • libstdc ++线程支持
  • libstdc ++并发性支持(std :: condition_variable,std :: mutex等)
  • C ++异常支持(可配置),包括libstdc ++支持(#681,加上后续工作)
  • 新的高分辨率定时器功能用于高精度定时器管理(文档
  • 在libc中添加strptime()支持
  • 在libc中启用timeradd,timersub等宏(#867
  • 新的堆内存实现 - 更好的性能,减少堆碎片
  • 新的堆内存调试和泄漏/使用跟踪功能(文档
  • fsync()支持添加到VFS接口,为fatfs实现
  • 新的esp_console库,用于编写文本控制台风格的界面。
  • 日志记录:用于记录数据缓冲区的新功能
  • stdio:添加对使用UART驱动程序来实现vfs uart功能的支持

Bug修复

  • 在双核模式下的早期启动过程中修复日志记录时间戳
  • 修复ESP_ERROR_CHECK宏潜在名称冲突(#1109
  • 修复对VFS接口的fcntl()支持(#1070

非易失性存储

  • 支持多个不同的NVS分区
  • 在整页上添加缺少的CRC校验项目

驱动程序

  • LEDC驱动程序字段bit_numdiv_num具有新推荐的替代名称。
  • LEDC驱动器参数值检查
  • LEDC占空比参数现在未经签名
  • GPIO:允许通过gpio_set_direction()禁用引脚
  • GPIO:添加API以读取/写入驱动器功能
  • GPIO:将引脚设置为输入时,禁用GPIO矩阵输出
  • SPI主控:使用GPIO0作为CS引脚解决问题
  • SPI主控:更改命令API
  • SPI主器件:地址字段现在位于地址&slv_wr_status寄存器的高位
  • SPI主站:修改在HSPI和VSPI之间切换时的错误
  • SPI DMA:针对DMA操作的多个修复
  • SPI DMA:修复全双工模式下允许的无效参数
  • SPI DMA:如果需要,现在将分配临时内部DMA缓冲区(#551
  • 触摸板:新的API修改ISR,获取过滤值,修改过滤器参数
  • 触摸板:修复交换的触摸传感器编号8和9
  • UART:使用FIFO复位信号解决硬件问题(#1219#1202
  • UART:设置默认的TX空闲间隔(#703#917
  • UART:支持REF_TICK作为时钟源
  • UART:启用/禁用软件的新功能(XON / XOFF)流量控制(#890
  • UART:设置5MBaud时,逐个进行修复
  • UART:修复自旋锁的bug通话uart_set_rtsuart_set_dtr#649
  • UART:使能TX引脚时修复信号毛刺
  • ADC:支持校准查找表,电压参考校正,带mV读数的新API
  • ADC:禁用WiFi时支持使用ADC2
  • I2C:添加硬件复位以从硬件FSM卡住(#680#922
  • I2C:添加API来设置超时值(#680#922
  • I2S:使用PLL时钟时修复BCK极性(#1119
  • I2S:支持APLL时钟源
  • I2S:如果DAC_CHANNEL_0用于输出,则修复禁用I2S
  • I2S:修复内存泄漏(#838
  • RMT:解决传输中断阈值问题(#1011
  • RMT:rmt_get_ringbuf_handler重新命名为rmt_get_ringbuf_handle#274
  • SDMMC:支持SD over SPI
  • SDMMC:在SD卡引脚上启用内部上拉
  • SDMMC:允许配置命令超时
  • SDMMC:添加对高速(HS)模式的支持(仅适用于本机SDMMC,不适用于SD上的SD)
  • SDMMC:Bug修复了一些意外的SDMMC状态转换导致失败/锁定的问题。
  • SDMMC:修复对未对齐缓冲区的写入操作
  • 定时器:修复时钟分频器参数验证

TCP / IP

新功能

  • 支持IPV6多播组成员身份的套接字选项(RFC2133)
  • 支持套接字选项IPV6_ONLY用于UDP套接字
  • 允许配置DHCP服务器租用时间参数(#1206
  • 在配置中公开许多TCP / IP调整参数(MSS,MSL,窗口大小,活动套接字限制,任务邮箱大小等)
  • 配置DHCP域名服务器选项的新选项(#162#705
  • 添加API以获取/设置DNS服务器(tcpip_adapter_get_dns_infotcpip_adapter_set_dns_info
  • 重构ICMP ping功能
  • tcpip_adapter API现在是线程安全的
  • 当WiFi站从AP断开一定时间时生成的新SYSTEM_EVENT_STA_LOST_IP事件

Bug修复

  • 套接字操作(当前除select()之外)现在通过VFS层路由,与文件系统I / O相同。修复命名空间冲突。
  • 调用netconn_delete()时修复内存泄漏(#784
  • 如果设备IP更改,请将UDP / TCP连接块重新绑定到有效的IP地址
  • 在关闭另一项任务中尚未完成工作的套接字后修复一些崩溃问题
  • 修复了禁用“nano”printf格式时TCP / IP任务中罕见的堆栈溢出问题
  • UDP套接字close()总会返回一个错误(#1094
  • TCP套接字关闭()错误修复 - 避免IP地址更改时崩溃
  • 清理TCP_FIN_WAIT_1中留下的TCP套接字时间太长
  • 套接字端口随机化现在使用硬件RNG
  • 选择基于源地址的广播IP路由
  • 修复LwIP计时器周期计算

openssl包装

  • CN主机名验证支持(#980

mbedTLS

新功能

  • 已更新至2.6.0发行版(包含CVE-2017-14032的修订)

Bug修复

  • 修正硬件MPI在乘以-1时丢失符号(#1181
  • 如果由于内存不足导致malloc失败,请修复ECDH密钥交换中的内存泄漏
  • 直接在程序中包含“mbedtls / config.h”不再导致配置不匹配(#711
  • 禁用3DES,Camellia,Blowfish,RC4,RIPEMD160,SSLv3,TLS-PSK模式,默认DTLS(默认代码大小缩小40KB)
  • 其他配置选项禁用不必要的功能(进一步节省代码大小)

无线上网

新功能

  • ESPNOW支持点对点无连接802.11数据传输
  • 新API获取/设置最大发射功率
  • WiFi功能不再通过应用程序配置(“menuconfig”)启用或禁用。如果应用程序调用这些API,则WiFi库函数将仅链接到最终的应用程序二进制文件。
  • BlockAck窗口大小可以在menuconfig中设置
  • 仅允许为TX或TX启用AMPDU
  • 如果可用,可以选择在SPI PSRAM中分配一些WiFi和LWIP存储缓冲区
  • 支持WiFi国家代码,区域监管限制
  • wpa_supplicant现在具有插件内部加密功能,以便在可用时使用硬件加速器
  • 支持全频道扫描,可以从具有相同SSID的AP中找到最佳AP
  • 可以配置更多扫描选项,例如通道驻留时间
  • 扫描获得更多信息(AP的协议模式,密码类型等)

Bug修复

  • 修复CERT VU#228519中的WiFi漏洞(又名KRACK)
  • 在完全校准期间修复PHY校准过量功耗
  • WiFi /蓝牙共存修复程序
  • 建立一些WiFi API参数
  • DHCP服务器修复了station + ap模式
  • WPA2内存泄漏修复程序

性能改进

  • UDP RX / TX性能提高到60 / 60Mbpbs(在屏蔽盒中)
  • TCP RX / TX性能提高到35 / 50Mbpbs(在屏蔽盒中)
  • 现代睡眠时间从55%〜70%增加到65%〜90%。

BLE

GATT服务器

  • 修复获取本地属性值的错误
  • 添加发送通知或指示的回调

GATT客户

  • 添加对连续调用GATTC命令的支持
  • 一次添加支持获取服务发现数据库
  • 在GATTC操作中使用句柄而不是UUID作为标识符
  • 修改获取远程设备特征,描述符和服务的API
  • 添加对多重读取操作的支持
  • 在处理按类型请求读取的数据包时修复错误

GATT通用

  • 添加API以设置服务器和客户端的最大MTU

间隙

GAP*角色扫描模式

  • 修复长扫描时间扫描失败的错误
  • 修复重新扫描后扫描参数重置为默认值的错误
  • 修复如果绑定设备使用公共地址无法扫描的错误

GAP*角色主模式

  • 在建立连接参数之前添加对设置连接参数的支持

GAP外围角色广告模式

  • 优化广告开始和停止完成的事件

其他GAP变更

  • 同时添加对扫描和广告的支持
  • 添加API以添加,获取和删除白名单设备
  • 添加API以读取RSSI值
  • 添加回调来设置本地隐私
  • 在调用连接参数更新API时修复错误
  • 添加连接和断开的事件
  • 修复一些多连接错误

SMP

  • 添加API以删除,清除并获取绑定设备和密钥
  • 添加对SMP密钥的NVS存储的支持
  • 修复一些SMP错误

L2CAP

  • 添加支持创建新的BLE L2CAP COC(面向连接的通道)
  • 添加对BLE L2CAP COC安全性的支持

性能优化

  • 改善连接性能
  • 智能手机兼容性优化
  • 提高RX性能

蓝牙通用

  • 修复一些内存泄漏错误
  • 修复一些崩溃错误
  • 在Bluedroid中从BTU图层删除固定队列
  • 删除所有GKI参考
  • 添加API以添加控制器的.bss / .data / hw内存以动态堆积

经典BT

  • A2DP:实现AVRCP元数据和通知注册命令(#1078
  • SDP服务器:修复CVE-2017-0785(“BlueBorne”)
  • 修复HCI控制器主持ACL数据流控制的错误
  • 在bluedroid中禁用ROLE SWITCH链接策略可以解决传统BT的主从角色切换问题
  • 在蓝牙控制器启动期间重构WIFI_CLK_EN寄存器设置
  • 修改蓝屏报警模块的实现,使用高优先级定时器而不是FreeRTOS定时器
  • 当工作量很大时,增加控制器中事件仲裁器的编程延迟以解决断言

以太网络

新功能

  • 支持内部(APLL生成的)以太网MAC时钟(#1127
  • 以太网功能不再通过应用程序配置(“menuconfig”)启用或禁用。如果这些API由应用程序调用,则以太网库函数将仅链接到最终的应用程序二进制文件中。

Bug修复

  • Bugfix允许为以太网接口设置静态IP(#657

超低功耗处理器

Bug修复

  • 默认禁用GPIO15(降低ULP中的电流)(#1108

的mDNS

Bug修复

  • 修复消息压缩检测(#1171
  • 修复内存泄漏(#838

外部图书馆

新功能

  • 新的SPIFFS组件(从v0.3.8开发,提交f5e26c4)
  • fatfs每个文件缓存的新配置选项,锁定。
  • fatfs更新为R0.13a(使用CP437而不是仅支持ASCII的配置,添加动态代码页配置)
  • libsodium:添加选项以使用mbedTLS SHA256和SHA512实现来减少代码大小,仅在禁用硬件加速器(不兼容的API)时才可用(#1044
  • nghttp2:更新至1.24.0
  • aws_iot:公开更多SDK配置选项(#637

文档

  • 入门指南现在包含在ESP-IDF文档中,而不是单独的PDF。
  • 增加了关于新的ESP32-WROVER和ESP32-PICO-D4硬件的信息
  • 描述API驱动程序,状态机,事件机制的新WiFi文档。
  • 改进驱动程序API的描述
  • 为了清晰起见,编辑了大部分API参考部分
  • 改进的入门指南
  • 尽可能将所有http://网址替换为https://(#622
  • 配置项的新文档部分(链接
  • 现在记录了处理器间调用(IPC)功能

例子

新的例子

  • HTTP / 2客户端示例
  • 异步UART示例
  • ESP-NOW示例
  • Sigma-Delta调制示例
  • iperf用于测量WiFi性能的示例
  • WiFi扫描示例
  • BLE类SPP客户端示例
  • BLE SPP-Like服务器示例
  • 安全客户端示例
  • 多连接示例
  • iBeacon例子
  • Eddystone的例子

Bug修复

  • 定时器例子:不要在ISR中执行浮点运算
  • BLUFI示例:修复硬件加速的AES加密使用错误

获取v3.0-rc1

连接到该版本的源文件将无法工作,由于我们使用git的子模块。改为使用以下方法之一:

使用git

要获得此预发布版,请使用以下命令:

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

这是获取ESP-IDF的v3.0-rc1的推荐方式。

下载包含子模块的档案

附加到这个版本是一个esp-idf-v3.0-rc1.zip档案。它包含.git目录和所有子模块,因此可以直接使用。该存档适用于存在连接问题的用户,以防止他们从Github克隆。

上一篇:在Silverlight中使用async/await


下一篇:android使用篇(四) 注解依赖注入IOC实现绑定控件