Skip to content

Commit 016abf2

Browse files
authored
Merge pull request #59 from micro-ROS/rtos_rework
Concepts RTOS: Erase headings and rework content
2 parents a0f4561 + b485bb8 commit 016abf2

1 file changed

Lines changed: 13 additions & 14 deletions

File tree

_docs/concepts/rtos/index.md

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,6 @@ permalink: /docs/concepts/rtos/
44
redirect_from: /docs/concepts/
55
---
66

7-
# RTOS
8-
9-
## Introduction
10-
117
The use of Real-Time Operating Systems (RTOS) is a general practice in nowadays embedded systems. These embedded devices typically consist of a resource-constrained microcontroller that executes an application where the interaction with external components is performed. In many cases, this application contains a time-critical task where a time-deadline or deterministic response is required.
128

139
Bare-metal applications are also used nowadays, but it requires a very low-level programming skills and lacks of hardware abstraction layers that RTOSes offers. On the other hand, RTOSes typically uses hardware abstraction layers (HAL) that eases the use of hardware resources, such us timers and communication buses, making easier the development and allowing the reuse of code. In addition, they offer thread and tasks entities that, together with the use of schedulers, provides the necessary tools to implement determinism in the applications. The scheduling normally consists of different algorithms where the user can choose from. Another feature that RTOSes normally offers is the stack management, helping in the correct memory usage of the MCU, a valuable resource in embedded-systems.
@@ -16,23 +12,26 @@ Bare-metal applications are also used nowadays, but it requires a very low-level
1612

1713
Due to the benefits explained in the introduction, micro-ROS integrates RTOS in its software stack. The use of such a tool enhances the micro-ROS features and allows reusing all the tools and implementations they provide. As the micro-ROS software stack is modular, the exchange of software entities is expected and desired. Same happens with the RTOS. Even that NuttX is the *default* RTOS for the project, it is expected that several of them could replace it.
1814

19-
## NuttX RTOS
15+
As the Operating Systems (OS) that are available for computers, the RTOSes also have different support for standard interfaces. This is established in a family of standards named [POSIX](https://pubs.opengroup.org/onlinepubs/9699919799/). As we aim to port or reuse code of ROS 2 that was natively coded in Linux (a mostly POSIX-compliant OS), the use of RTOSes that complies with these standards is beneficial, as the porting effort of the code is minimal. Same as Linux, NuttX complies at a good degree with POSIX standards, making the porting effort minimal.
2016

21-
[NuttX](http://www.nuttx.org/) is a RTOS that emphasizes its compliance with standards (such us POSIX) and small footprint, it can be fit in 8 to 32 bit microcontrollers. The use of POSIX and ANSI standards, together with the mimic it does to UNIX APIs, makes it friendly to the developers that are used to Linux. The RTOS is licensed under BSD license and makes use of GNU toolchain. In order to obtain more information, please visit [NuttX overview page](http://nuttx.org/Documentation/NuttX.html#overview).
17+
Notice that the RTOS call are made by several top layers in the micro-ROS stack. The main one using the RTOS primitives is the middleware. The middleware requires accessing to the transport resources of the RTOS (serial, UDP or 6LOWPAN communications for example), it also requires of the time resources of the RTOS to operate properly. In addition, it is expected that the micro-ROS client library could have access to RTOS resources to have control of mechanisms such as scheduling or power management, so the developer could optimize the application in many domains.
2218

23-
![NuttX_logo](https://upload.wikimedia.org/wikipedia/commons/b/b0/NuttX_logo.png)
19+
Unfortunately, these resources normally are not POSIX compliant, so the use of abstraction layers at RTOS level is required. These layers will allow to abstract the RTOSes in use and provide unified calls to control aforementioned resources.
2420

21+
## NuttX RTOS
2522

26-
## Supported development boards
23+
<br/><br/>
2724

28-
For development purposes, project consortium has established two development boards as development blueprints: [Olimex STM32-E407](https://www.olimex.com/Products/ARM/ST/STM32-E407/open-source-hardware) and the [STM32LDiscovery](https://www.st.com/en/evaluation-tools/32l152cdiscovery.html). Both development board schematics are open, promoting new hardware designs based on such a platforms.
25+
<img align="left" width="125" height="125" src="https://upload.wikimedia.org/wikipedia/commons/b/b0/NuttX_logo.png">
2926

30-
The first one consists on a ARM Cortex-M4F MCU with 196 KB of RAM and 1 MB of flash. It also offers Arduino-like expansion pins and Ethernet communication means.
27+
[NuttX](http://www.nuttx.org/) is a RTOS that emphasizes its compliance with standards (such us POSIX) and small footprint, it can be fit in 8 to 32 bit microcontrollers. The use of POSIX and ANSI standards, together with the mimic it does to UNIX APIs, makes it friendly to the developers that are used to Linux. The RTOS is licensed under BSD license and makes use of GNU toolchain. In order to obtain more information, please visit [NuttX overview page](http://nuttx.org/Documentation/NuttX.html#overview).
3128

32-
The STM32LDiscovery board contains a STM32L ultra-low power packaging and consists of a ARM Cortex-M3 MCU that integrates 32KB of RAM, 256KB of flash memory. This microcontroller aims to target low-power applications.
29+
<br/><br/>
3330

34-
## Getting started with NuttX and micro-ROS
31+
## Supported development boards
3532

36-
In order to obtain more information about how to get started using this RTOS, please check our [documentation repository](https://github.com/microROS/micro-ROS-doc), where tutorials and getting started material is offered.
33+
Check [supported board](/docs/overview/hardware/) section for more information about the boards we are currently using.
34+
35+
## Getting started with NuttX and micro-ROS
3736

38-
We have created several Docker containers, where some are meant for development purposes and other to execute precompiled examples. These Docker files have been gathered together in the [micro-ROS Docker repository](https://github.com/microROS/docker).
37+
In order to obtain more information about how to get started using this RTOS, please check our [tutorials section](/docs/tutorials/basic/getting_started/).

0 commit comments

Comments
 (0)