[More about co-routines…]

Co-Routine States

Co-routines are only intended for use on very small processors that have severe RAM constraints, and would not normally be used on 32-bit microcontrollers.

A co-routine can exist in one of the following states:

  • Running

    When a co-routine is actually executing it is said to be in the Running state. It is currently utilising the processor.

  • Ready

    Ready co-routines are those that are able to execute (they are not blocked) but are not currently executing. A co-routine may be in the Ready state because:

    1. Another co-routine of equal or higher priority is already in the Running state, or
    2. A task is in the Running state – this can only be the case if the application uses both tasks and co-routines.

  • Blocked

    A co-routine is said to be in the Blocked state if it is currently waiting for either a temporal or external event. For example, if a co-routine calls crDELAY() it will block (be placed into the Blocked state) until the delay period has expired – a temporal event. Blocked co-routines are not available for scheduling.

There is currently no co-routine equivalent to a tasks Suspended state.

Valid co-routine state transitions

Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.

Latest News

FreeRTOS v10.2.1 is available for immediate download. MIT licensed, includes 64-bit RISC-V, NXP Cortex-M33 demo & Nuvoton Cortex-M23 demo & STM32H745 dual core (AMP) demo.

New Updates to MIT licensed IoT MQTT and POSIX libraries are now available. New library IoT HTTPS is available.  Includes demo projects.

View a recording of the “OTA Update Security and Reliability” webinar, presented by TI and AWS.


FreeRTOS and other embedded software careers at AWS.

FreeRTOS Partners
ARM Connected RTOS partner for all ARM microcontroller cores
Espressif ESP32
IAR Partner
Microchip Premier RTOS Partner
STMicro RTOS partner supporting ARM7, ARM Cortex-M3, ARM Cortex-M4 and ARM Cortex-M0
Texas Instruments MCU Developer Network RTOS partner for ARM and MSP430 microcontrollers
OpenRTOS and SafeRTOS
Xilinx Microblaze and Zynq partner