FreeRTOS_send adds the packet to be sent to the IP task's queue for later processing. The packet is sent later by the IP task. When FreeRTOS is used in collaborative mode (i.e. configUSE_PREEMPTION is 0), the Plaintext_FreeRTOS_send function returns without actually sending the packet as the IP task never gets a chance to run. The fact that Plaintext_FreeRTOS_send returns without actually sending the packet causes an issue in the MQTT_Connect which expects the CONNECT packet to be actually sent and waits for CONNACK. This commit adds a taskYIELD call after calling FreeRTOS_send to ensure that the IP task gets a chance to run and send the packet before the Plaintext_FreeRTOS_send function returns.
FreeRTOS includes libraries that are part of the FreeRTOS 202012.00 LTS release. Learn more about the FreeRTOS 202012.00 LTS libraries at https://freertos.org/lts-libraries.html.
Getting started
The FreeRTOS.org website contains contains a FreeRTOS Kernel Quick Start Guide, a list of supported devices and compilers, the API reference, and many other resources.
Getting help
You can use your Github login to get support from both the FreeRTOS community and directly from the primary FreeRTOS developers on our active support forum. The FAQ provides another support resource.
Cloning this repository
This repo uses Git Submodules to bring in dependent components.
Note: If you download the ZIP file provided by the GitHub UI, you will not get the contents of the submodules. (The ZIP file is also not a valid git repository)
To clone using HTTPS:
git clone https://github.com/FreeRTOS/FreeRTOS.git --recurse-submodules
Using SSH:
git clone git@github.com:FreeRTOS/FreeRTOS.git --recurse-submodules
If you have downloaded the repo without using the --recurse-submodules argument, you need to run:
git submodule update --init --recursive
Repository structure
This repository contains the FreeRTOS Kernel, a number of supplementary libraries, and a comprehensive set of example applications. Many libraries (including the FreeRTOS kernel) are included as Git submodules from their own Git repositories.
Kernel source code and example projects
FreeRTOS/Source contains the FreeRTOS kernel source code (submoduled from https://github.com/FreeRTOS/FreeRTOS-Kernel).
FreeRTOS/Demo contains pre-configured example projects that demonstrate the FreeRTOS kernel executing on different hardware platforms and using different compilers.
Supplementary library source code and example projects
FreeRTOS-Plus/Source contains source code for additional FreeRTOS component libraries, as well as select partner provided libraries. These subdirectories contain further readme files and links to documentation.
FreeRTOS-Plus/Demo contains pre-configured example projects that demonstrate the FreeRTOS kernel used with the additional FreeRTOS component libraries.
Previous releases
Releases contains older FreeRTOS releases.
FreeRTOS Lab Projects
FreeRTOS Lab projects are libraries and demos that are fully functional, but may be experimental or undergoing optimizations and refactorization to improve memory usage, modularity, documentation, demo usability, or test coverage.
Most FreeRTOS Lab libraries can be found in the FreeRTOS-Labs repository.
A number of FreeRTOS Lab Demos can be found in the FreeRTOS Github Organization by searching for "Lab" or following this link to the search results.