简介
本文简要介绍 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 优先级过高,可能会打破系统稳定性。建议用户深入了解后合理设置。
本文详细介绍了ESP8266内部系统级任务的功能及参数,涵盖任务名称、初始化堆栈大小、创建顺序与优先级等内容,并提供了应用开发建议。
1305

被折叠的 条评论
为什么被折叠?



