自v2.0以來的變化。
突破變化
版本v2.1旨在大大兼容為ESP-IDF v2.0編寫的應用程序。但是,引入以下突破性變化:
esp_bt_controller_init
函數收到一個新的esp_bt_controller_config_t *
參數。- 如果應用程序采用雙核支持構建,則使用正常寄存器訪問宏訪問DPORT寄存器將導致編譯時錯誤(如果在編譯時無法對寄存器地址進行評估,則會導致運行時錯誤)。必須更新應用程序以使用具有
DPORT_
前綴的注冊訪問宏。 nvs_flash_init
函數現在可以返回錯誤代碼,必須由應用程序檢查(見NVS示例)。- 通話后
esp_ble_gatts_create_attr_tab
,應用程序只能期望ESP_GATTS_CREAT_ATTR_TAB_EVT
在GATTS回調中收到。ESP_GATTS_CREATE_EVT
,ESP_GATTS_ADD_xxx_EVT
現在不會收到。
有關詳細用法,請參閱gatt_server_service_table示例。
構建系統和工具
- 修復組件src subdirs在父源代碼之前需要列出的錯誤
- 添加更清潔的方式來有條件地編譯文件
- 顯着減少Windows上的啟動時間
- esptool:更新到v2.0最終版本
- gen_esp32part:修復應用程序偏移量錯誤,Python 3支持
- 新的'make monitor'idf_monitor工具,以便更好地監控輸出。
引導程序
- 修復安全啟動啟用 - 可以驗證引導加載程序映像
- 啟用OTA中加密閃存的檢查(#453)
- 在Bootloader中啟用SPI閃存Quad I / O:引導加載程序檢查閃存ID,啟用基於閃存類型的四進制I / O模式。
FreeRTOS的
Bug修復
- 以SMP模式修復以下API:
- uxTaskGetSystemState
- vTaskSuspend()/ vTaskResume()
- 始終禁用關鍵區域中的中斷
- 當任務被刪除時釋放協處理器寄存器
- 從隊列/任務API延遲上下文切換,直到退出臨界區
- 修復CPU1的ISR堆棧空間的位置
- 修復跨核心事件組同步
其他變化
- 當應用程序以單核心模式運行時,斷言在CPU1上啟動新任務
- 使內部堆棧大小變量在32位而不是16位
- 將定時器任務堆棧大小增加到2048字節
- 添加最大任務長度名稱配置
- 公開任務堆棧溢出觀察點選項
- 使用先前為ROM例程/堆棧保留的更多區域作為堆,釋放大約28K的RAM。
- 添加一個選項來配置IPC任務堆棧大小
SoC功能
- 介紹soc組件,添加rtc_clk和rtc_pm庫的源文件
- 添加對32k XTAL作為RTC時鍾源的支持
- 使用內部RTC時鍾提高計時精度
- 改善XTAL頻率檢測,增加了在菜單中選擇XTAL頻率的支持
- 菜單中的默認CPU頻率設置為160 MHz(以前為240 MHz)
- 在ESP32中添加DPORT訪問錯誤的解決方法。訪問DPORT寄存器時,應用程序必須使用具有DPORT_前綴的寄存器操作宏。
- 允許REG_SET_FIELD宏用於位字段
- 將soc / io_mux_reg.h更新為最新版本(#349)
無線上網
新功能
- 添加smartconfig示例
- 支持靜態WiFi TX緩沖區,通過menuconfig配置緩沖區的數量
- 支持主動/被動掃描配置停留時間(wifi_scan_config_t結構的新成員)
- 使用新的esp_wifi_ {get,set} _promiscuous_filter API支持混雜模式下的數據包過濾
- WPA2 Enterprise的wifi_auth_mode_t枚舉的新成員
- 在wifi_sta_config_t中新建通道號設置,以快速連接到AP
Bug修復
- 在某些情況下,修復了WiFi兼容性問題,導致無法連接到某些AP,如TP-LINK 742N
- 修復導致OTA升級失敗的錯誤
- 提高WPS連接成功率
- 修復ESP32未收到MIMO數據包的錯誤,並以混雜模式丟失了一些AMPDU加密數據包
- 修復長距離模式不工作的錯誤
- 修復了幾個WiFi崩潰錯誤
其他變化
- 添加WiFi驅動程序的文檔
- 將掃描的AP的SSID數組長度更改為33字節
- 在初始化WiFi之前,更新所有要調用nvs_flash_init的示例
BLE
-
Gatt服務器通過屬性表優化創建GATT服務
- 刪除每個服務的特征號碼限制
- 在創建或刪除服務時修復內存泄漏
- 在設置屬性值時修復錯誤
-
Gatt服務器通過堆棧優化自動響應
- 添加prepare_write_request數據包的過程
- 在處理讀取blob請求,寫入請求和讀取請求的數據包時修復錯誤
-
Gatt服務器一般優化
- 添加GATT服務器的事件打開,取消打開和關閉
-
Gatt客戶端優化
- 自動注冊遠程設備的GATT服務更改ccc描述符
- 添加API來准備寫描述符
- 添加API以刷新服務發現結果的緩存,以啟動新的服務發現過程
-
GAP中心角色掃描模式優化
- 修復在永久掃描模式下掃描的錯誤只有5分鍾
- 在掃描結果中添加廣告數據長度和掃描響應長度
-
GAP外設角色廣告模式優化
- 添加廣告停止和掃描停止完成的事件
- 修復有時廣告被意外停止的錯誤
-
連接建立和斷開API優化
- 為GATT服務器和GATT客戶端添加公共間隙斷開API
- 為GATT客戶端添加連接事件和斷開事件,以檢測GATT服務器或GATT客戶端回調函數中的連接狀態
-
GAP一般優化
- 添加LE數據包長度設置完成事件
- 添加連接參數更新請求完成事件
- 修復主機無法獲取遠程設備功能的錯誤
-
新的SMP API
- 添加不同配對方法的支持,包括MITM,安全連接等
- 添加API以配置安全參數
- 添加SMP安全性示例
- 在安全模式下修復重新連接問題
-
L2CAP和HCI優化
- 修復了HCI包碎片錯誤
- 增加了HCI UART的支持
-
內存優化
- BT和BLE可以單獨啟用
- 支持禁用GATT服務器,GATT客戶端,SMP等,在menuconfig
-
從Bluedroid 7.1.1合並錯誤修復
-
智能手機兼容性優化
-
BLE示例代碼優化
-
加強堆棧中的錯誤檢查和處理
-
提高數據包接收性能
-
在初始化BT之前,請更新所有調用nvs_flash_init的示例
經典BT
-
新的主機API
- 添加API設置設備名稱
- 添加API以設置可發現性和可連接性模式
-
新檔案
- 添加A2DP接收器配置文件
- 添加AVRCP控制器配置文件
-
控制器錯誤修復
- 修復嗅覺模式中不一致狀態處理的錯誤
- 在使用HCI控制器來主機數據流控制時修復錯誤
- 修正無效處理HCI命令的錯誤“HCI_Host_Number_of_Completed_Packets”
- 修正了經典BT的ACL-U數據傳輸中的斷言錯誤
- 修復控制器RX / TX錯誤(在緩存中使用rand / srand,任務塊,異常等)
- 修復PHY初始化錯誤
-
藍牙任務優先級優先
-
Osi_alarm模塊優化為線程安全
驅動程序
新功能
- 電機控制PWM(MCPWM)驅動程序和示例
- SPI從驅動程序和示例
- 在I2S驅動程序中支持PDM和內置DAC
- 支持LEDC驅動程序中的低速通道
- 添加ADC1示例
- 添加使用電容式觸摸傳感器的示例
Bug修復
- 對所有配置調用“const”進行參數(#519)
- I2C驅動程序
- I2S驅動程序:
- 在i2s_set_clk函數中更改通道號時修正錯誤
- 修復支持24位和32位樣本
- 同時修復TX / RX
- RMT驅動程序
- SPI主驅動程序:
- 當不使用CD信號時,處理SD卡刪除
- 在MMC_GO_IDLE_STATE命令之前,將初始化序列發送到SD卡
- 修復不可能檢查uart_set_line_inverse(#489)
- 當停止位設置為2位模式時,修復UART數據錯誤
- 優化觸摸板讀取功能,以減少旋轉鎖定所花費的時間
以太網絡
- 添加LAN8720 phy支持,將PHY移動到組件(#383)
- 允許單獨的以太網和WiFi配置
ULP和深度睡眠
- 支持使用binutils匯編器生成ULP協處理器程序
- 添加ULP脈沖計數示例
- 添加ULP ADC示例
- 使用觸摸傳感器增加對深度睡眠喚醒的支持
- 而深睡眠的例子說明了各種喚醒模式
存儲
新功能
- 在VFS中添加對嵌套安裝點的支持
- 添加wear_levelling組件,它提供了一個類似於spi_flash接口的接口。在內部,它將數據存儲在分區內,以減少任何給定扇區的最壞情況下的擦除周期數。
- 啟用對多個FATFS驅動器的支持
Bug修復
- nvs:在寫入前檢查值大小,文檔限制
- nvs:在頁面級刪除搜索緩存(#365)
- nvs:改進初始化過程中的錯誤處理
- 修正PATH_MAX和ARG_MAX的不一致定義(#289)
- fat / sdmmc:卸載FATFS對象錯誤
SPI閃存庫
- 修復閃存中的大寫,未對齊寫和寫
- 修正s_flash_op_complete訪問中的競爭條件
- 將ROM SPI閃存驅動程序的某些部分移動到ESP-IDF中以修復Wait_SPI_Idle()函數中的錯誤
- SPI閃存操作鎖定更短的時間
- 在esp_partition API中修復分區迭代順序
- 為Flash MMU重新配置時,添加解決方案以解決高級緩存讀取問題
第三方圖書館
- 添加libsodium加密庫組件(v1.0.12)
- 添加Amazon IoT SDK組件,再加上他們的Linux示例派生的兩個示例。
- nghttp模塊:更新到v1.22,使用子模塊而不是樹內源
LwIP的
- 修復DHCP服務器崩潰問題
- 將TCP TX窗口從2修改為4以保持RX / TX窗口的大小相同
- 通過串行驅動程序啟用實驗/不支持的PPP(#272)
- 給AP和STA netifs不同的名稱,以方便調試(#456)
- 用互斥體實現LwIP關鍵會話
- 將最大打開的插槽數增加到32個
的mDNS
- 使用AFL Fuzzer進行分析器穩定性測試
- 添加簡單的DNS-SD元查詢支持(#340)
- 修復MDNS的一系列安全問題(通過BBP報告):
- STACK-SMASH:sprintf不受限制,可以根據需要執行多次,允許將任意長數據寫入堆棧。
- PACKET-OF-DEATH:比較允許相等,從而跳回它自我無限遞歸 - >保證崩潰。
- TXT-SMASH:循環沒有檢查到達 - > txt最大大小(1024),導致堆棧溢出。
mbedTLS
調試功能
- 添加允許在主機和JTAG之間發送任意數據的apptrace模塊
- 通過JTAG初始化執行printf樣日志記錄到主機
- 在任何WDT復位后,從traceport添加轉儲調試信息
- 增加無效訪問中斷時緩存無效訪問檢測和觸發緊急處理程序
- 做核心轉儲到閃存時的額外的健康檢查
- RWDT用於重啟系統,以防緊急處理程序崩潰
- 提高核心轉儲腳本的魯棒性
單元測試
- 修復單元測試應用程序中不正確的CR + LF序列
- 在所有組件目錄中查找TEST_COMPONENTS(#354)
- 修復單元測試應用程序以與測試文件中相同的順序打印測試
文檔
- 入門指南現在是ESP-IDF文檔的一部分
- 自動生成API參考列表/ Doxygen指令
- 修改Windows安裝程序安裝腳本以修復各種問題,使用最新的工具鏈。
- 添加Espressif提供的dev板和模塊的說明
雜
- 添加API以獲取芯片信息
- 支持從EFUSE或特定於應用程序的存儲加載自定義MAC地址
- 在ESP-IDF中支持集成閃存的ESP32-D2WD。
- 修復HTTP [S]請求示例(#500)的問題
- 在示例中標准化文件,符號等的命名
- 修正發布版本中由ESP_ERROR_CHECK(變量)生成的警告(#497)
獲取v2.1
由於我們使用git子模塊,附加到此版本的源文件將無法正常工作。改為使用以下方法之一:
使用git
要獲取此版本,請使用以下命令:
git clone https://github.com/espressif/esp-idf.git esp-idf-v2.1
cd esp-idf-v2.1/
git checkout v2.1
git submodule update --init --recursive
這是獲取ESP-IDF的v2.1的推薦方法。
下載包含子模塊的存檔
此版本附有esp-idf-v2.1.zip
檔案。它包括.git
目錄和所有子模塊,所以可以開箱即用。此存檔是為具有連接問題的用戶提供的,從而阻止它們從Github克隆。