System Tasks

This document explains the ESP8266 RTOS SDK internal system tasks.

Overview

The main tasks and their attributes are as following:

Names

stack size

Priority

uiT

3584(C)

14

IDLE

768

0

Tmr

2048(C)

2

ppT

2048(C)

13

pmT

1024

11

rtT

2048

12

tiT

2048(C)

8

esp_event_loop_task

2048(C)

10

Note: (C) means it is configurable by “menuconfig”.

Tasks Introduction

uiT

This task initializes the system, including peripherals, file system, user entry function and so on. This task will delete itself and free the resources after calling app_main.

IDLE

This task is freeRTOS internal idle callback task, it is created when starting the freeRTOS. Its hook function is vApplicationIdleHook. The system’s function of sleep and function of feeding task watch dog are called in the vApplicationIdleHook.

Tmr

This task is the processor of freeRTOS internal software timer.

ppT

This task is to process Wi-Fi hardware driver and stack. It posts messages from the logic link layer to the upper layer TCP/IP stack after transforming them into ethernet packets.

pmT

The task is for system power management. It will check if the system can sleep right now, and if it is, it will start preparing for system sleep.

rtT

The task is the processor of high priority hardware timer. It mainly process Wi-Fi real time events. It is suggested that functions based on this component should not be called in application, because it may block other low layer Wi-Fi functions.

tiT

The task is the main task of TCP-IP stack(LwIP) , it is to deal with TCP-IP packets.

esp_event_loop_task

The task processes system events, for example, Wi-Fi and TCP-IP stack events.

Suggestions

In general, the priority of user task should NOT be higher than the system real timer task’s priority (12). So it is suggested that keep your user tasks’ priorities less than 12. If you want to speed up the TCP/UDP throughput, you can try to set the priority of send/receive task to be higher than the “tiT” task’s priority (8).