Getting Started with the DA16200 FreeRTOS SDK
FreeRTOS and SDK
To understand what is a FreeRTOS and how it is involved in the SDK for the Dialog DA16200 module, users will need to familiarize themselves with the fundamentals of operating systems (OS), schedulers, and real time operating systems (RTOS). In this section, a brief overview of these topics is presented below. However, for a more in-depth introduction to real time operating systems and some of the features of FreeRTOS, please check out the Digi-Key video series on RTOS presented by Shawn Hymel (former SparkFun personality):
Digi-Key video series on RTOS (Source: Youtube)
OS Scheduler
For any operating system (OS), an individual processor core is capable of running only one thread at a time. However, some operating systems implement a scheduler to control its processing resources; where, the scheduler allocates the processing time and priority of tasks executed on the processor's core(s). This allows the OS to create the illusion of running multiple programs simultaneously (i.e. multi-tasking) when the scheduler rapidly switches between the individual processes for each program.
Real Time Operating System (RTOS)
An operating system can be defined by how its scheduler prioritizes program execution. In a real time operating system (RTOS), the scheduler is designed to operate in a deterministic (i.e. predictable) execution pattern. This is ideal for embedded systems, which require a response to events within a specific time frame.
FreeRTOS
FreeRTOS is a prevalent real-time operating system that is distributed freely under the MIT open source license. It includes a kernel and a growing set of IoT libraries, which are designed to be light enough to run on a resource constrained processor; such as a microcontroller. Currently, the project is maintained by Amazon Web Services (AWS).
FreeRTOS was built with an emphasis on reliability and ease of use.
- Within their code, users assign priorities to each task or thread of execution. The kernel then automatically handles all the real time scheduling, inter-task communication, and the timing and synchronization primitives. Therefore, allowing the scheduler to operate in a deterministic manner, executing tasks based on the assigned priority.
- Additional functionality, such as a command console interface, or networking stacks, can then be included with add-on components.
DA16200 FreeRTOS SDK
The DA16200 FreeRTOS SDK is provided and maintained by Renesas. It is a port of FreeRTOS, built specifically to operate on the DA16200 module. Unfortunately, due to the depth of information that can be covered, we won't go into details about the SDK operation beyond basic examples we provide.
- For topics such as interrupt service routines and peripheral pin functions, users should refer to the SDK documentation for the DA16200 module.
- For information related to the RTOS, such as task management, users can refer to the FreeRTOS API documentation.
For more documentation on FreeRTOS and the DA16200 FreeRTOS SDK, please refer to the resources below: