簡介
本文簡要介紹 ESP8266
內部系統級 task
功能和相關參數說明。
task 名稱 | task 初始化堆棧大小 | task 堆棧大小是否可配置 | task 創建順序 | task 優先級 |
---|---|---|---|---|
uiT | 3584 | 是 | 1 | 14 |
IDLE | 1024 | 是 | 2 | 0 |
Tmr | 2048 | 是 | 3 | 2 |
tiT | 2048 | 是 | 4 | 8 |
esp_event_loop_task | 2048 | 是 | 5 | 10 |
ppT | 2048 | 是 | 6 | 13 |
pmT | 1024 | 否 | 7 | 11 |
rtT | 2048 | 否 | 8 | 12 |
task 堆棧大小可配置選項,可在
make menuconfig
中配置,但通常不建議用戶修改。
task 說明
-
uiT (user init task)
此 task 初始化ESP8266
:包括文件系統,RTC
,MAC
,GPIO
, 頻偏校準,WDT
,倍頻等 -
IDLE
這是FreeRTOS
內部創建的IDLE task
。 當前主要處理task watchdog
和芯片睡眠 (sleep
) 功能 -
Tmr (timer)
這是FreeRTOS
內部創建的timer task
。當前主要處理所有軟件定時器功能 -
tiT (tcp/ip task)
這是LWIP
核心 task。負責整個TCP/IP
協議棧的維護。 -
esp_event_loop_task
負責向用戶層傳遞 ESP8266 系統事件。例如 WiFi 事件,TCP/IP 事件。 -
ppT (packet process task)
這是WiFi
核心 task。負責處理802.11
協議棧 LLC 層和TCP/IP
協議棧底層交互。 -
pmT (power management task)
系統低功耗管理 task。負責處理RF
開關,CPU
開關,外設等影響系統功耗的電源管理模塊。 -
rtT (RTC timer)
系統高精度硬件定時器 task (FRC2
寄存器)。負責維護WiFi
實時事件。
筆記
-
建議不要在
app_main()
中添加一直阻塞的代碼
因爲app_main()
是在uiT task
之中,uiT task
調用完app_main()
後,會自動刪除task
, 可爲系統騰出約3KB+
內存 -
建議應用代碼儘量不要使用硬件定時器
因爲硬件定時器callback
阻塞而導致 WiFi 底層接收包受影響 -
用戶創建的 task 優先級建議 1-9 之間
task 優先級過低,可能會影響一點數據吞吐。task 優先級過高,可能會打破系統穩定性。建議用戶深入瞭解後合理設置。