From 53cd5b1d083eed6269ea574ed21a8d27af05b74f Mon Sep 17 00:00:00 2001 From: FranFin Date: Wed, 2 Dec 2020 08:21:43 +0100 Subject: [PATCH 1/4] Add rtos page to overview section. --- _docs/overview/rtos/index.md | 148 +++++++++++++++++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 _docs/overview/rtos/index.md diff --git a/_docs/overview/rtos/index.md b/_docs/overview/rtos/index.md new file mode 100644 index 00000000..55b7f94d --- /dev/null +++ b/_docs/overview/rtos/index.md @@ -0,0 +1,148 @@ +--- +title: Supported RTOSes +permalink: /docs/overview/rtos/ +--- + + + +micro-ROS aims to **bring ROS 2 to microcontrollers** to allow having first-class ROS 2 entities in the embedded world. + +The standard approach to micro-ROS assumes a Real-Time Operating System underneath. + +Even though recent developments aim at loosening this requirement, with the integration into Arduino IDE being a first step towards true micro-ROS bare-metal support, the RTOS-based support remains the main entrypoint to micro-ROS. + +micro-ROS is supported by the RTOSes FreeRTOS, Zephyr, NuttX, in addition to Linux and Windows. The features common to all supported RTOSes are a POSIX compliant API to some degree, extremely low to low footprint, and availability of different scheduling algorithms to ensure determinism in micro-ROS apps behavior. +Find more details about each of the supported RTOSes below, and a more comprehensive explaination on "Why an RTOS?" in the Concepts section, as this page is meant to provide a schematic overview on the matter. + + +## Real-Time Operating Systems officially supported by the project + +The micro-ROS Tier 2 boards are officially supported for one or more RTOSes and transports. + +
+
+

FreeRTOS

+
+ Key features: +
    +
  • Extremely small footprint
  • +
  • RAM: 520 kB
  • +
  • Flash: 4 MB
  • +
  • Peripherals: Ethernet MAC, Wi-Fi 802.11 b/g/n, Bluetooth v4.2 BR/EDR, BLE, SPI, I2C, I2S, UART, SDIO, CAN, GPIO, ADC/DAC, PWM
  • +
+ Resources: + +
+
+ +
+ +
+
+ +
+
+

Zephyr

+
+ Key features: +
    +
  • MCU: ARM Cortex-M4 MK20DX256VLH7
  • +
  • RAM: 64 kB
  • +
  • Flash: 256 kB
  • +
  • Peripherals: USB, SPI, I2C, CAN, I2S...
  • +
+ Resources: + +
+
+ +
+ +
+
+ +
+
+

NuttX

+
+

NuttX is a real-time operating system (RTOS) with an emphasis on standards compliance and small footprint. Scalable from 8-bit to 32-bit microcontroller environments, the primary governing standards in NuttX are Posix and ANSI standards. Additional standard APIs from Unix and other common RTOSes (such as VxWorks) are adopted for functionality not available under these standards, or for functionality that is not appropriate for deeply-embedded environments (such as fork()). Apache NuttX is an effort undergoing Incubation at The Apache Software Foundation (ASF), sponsored by the Incubator.

+ Key features: +
    +
  • POSIX compliant interface to a high degree.
  • +
  • Rich Feature OS Set
  • +
  • Highly scalable
  • +
  • Real-Time behavior: fully pre-emptible; fixed priority, round-robin, and “sporadic” scheduling.
  • +
+ Resources: + + **Disclaimer: this tutorial is currently unmantained** +
+
+ +
+ +
+
+ + +## Bare metal support + +The micro-ROS reference boards are the ones officially supported for all RTOSes and with complete support for all available transports. + +
+
+

Arduino bare-metal support

+
+ Key features: +
    +
  • MCU: STM32F407ZGT6 Cortex-M4F
  • +
  • RAM: 196 kB
  • +
  • Flash: 1 MB
  • +
  • Peripherals: USB OTG, Ethernet, SD Card slot, SPI, CAN, I2C...
  • +
+ + Resources: + +
+
+ +
+ +
+
+ From 5996f11e8965b4892cb23089fda62bc26ac9d80a Mon Sep 17 00:00:00 2001 From: FranFin Date: Fri, 4 Dec 2020 12:53:55 +0100 Subject: [PATCH 2/4] Added RTOS page in Overview. --- _data/docs.yml | 1 + _docs/overview/rtos/index.md | 65 ++++++++++++++++++++---------------- 2 files changed, 38 insertions(+), 28 deletions(-) diff --git a/_data/docs.yml b/_data/docs.yml index 04140b6d..750eb5c7 100644 --- a/_data/docs.yml +++ b/_data/docs.yml @@ -2,6 +2,7 @@ docs: - overview/features - overview/hardware + - overview/rtos - overview/transports - overview/comparison - overview/ROS_2_feature_comparison diff --git a/_docs/overview/rtos/index.md b/_docs/overview/rtos/index.md index 55b7f94d..6e4a3edd 100644 --- a/_docs/overview/rtos/index.md +++ b/_docs/overview/rtos/index.md @@ -32,31 +32,35 @@ micro-ROS aims to **bring ROS 2 to microcontrollers** to allow having first-clas The standard approach to micro-ROS assumes a Real-Time Operating System underneath. -Even though recent developments aim at loosening this requirement, with the integration into Arduino IDE being a first step towards true micro-ROS bare-metal support, the RTOS-based support remains the main entrypoint to micro-ROS. +Even though recent developments aim at loosening this requirement, with the integration into Arduino IDE as an important step towards true micro-ROS bare-metal support, the RTOS-based support remains the main entrypoint to micro-ROS. -micro-ROS is supported by the RTOSes FreeRTOS, Zephyr, NuttX, in addition to Linux and Windows. The features common to all supported RTOSes are a POSIX compliant API to some degree, extremely low to low footprint, and availability of different scheduling algorithms to ensure determinism in micro-ROS apps behavior. +To date, micro-ROS is supported by the RTOSes FreeRTOS, Zephyr, NuttX, in addition to Linux and Windows. +All three RTOSes are downloaded natively with the [micro-ROS build system](https://github.com/micro-ROS/micro_ros_setup), and can be chosen when creating +a new firmware workspace. +Dedicated tutorials for running your first micro-ROS application on each of these Operating Systems can be found [here](https://micro-ros.github.io/docs/tutorials/core/first_application_rtos/). +The features common to all supported RTOSes are an API compliant with POSIX to some degree, extremely low to low footprint, and availability of different scheduling algorithms to ensure determinism in micro-ROS apps behavior. Find more details about each of the supported RTOSes below, and a more comprehensive explaination on "Why an RTOS?" in the Concepts section, as this page is meant to provide a schematic overview on the matter. ## Real-Time Operating Systems officially supported by the project -The micro-ROS Tier 2 boards are officially supported for one or more RTOSes and transports. -

FreeRTOS

Key features:
    -
  • Extremely small footprint
  • -
  • RAM: 520 kB
  • -
  • Flash: 4 MB
  • -
  • Peripherals: Ethernet MAC, Wi-Fi 802.11 b/g/n, Bluetooth v4.2 BR/EDR, BLE, SPI, I2C, I2S, UART, SDIO, CAN, GPIO, ADC/DAC, PWM
  • +
  • Extremely small footprint.
  • +
  • POSIX extension available.
  • +
  • Memory management tools
  • +
  • Standard and idle tasks available with assignable priorities.
  • +
  • Transport resources: TCP/IP and lwIP.
Resources:
@@ -72,15 +76,20 @@ The micro-ROS Tier 2 boards are officially supported for one or more RTOSes and
Key features:
    -
  • MCU: ARM Cortex-M4 MK20DX256VLH7
  • -
  • RAM: 64 kB
  • -
  • Flash: 256 kB
  • -
  • Peripherals: USB, SPI, I2C, CAN, I2S...
  • +
  • Small footprint.
  • +
  • Native POSIX port.
  • +
  • Cross Architecture: Huge collection of supported boards.
  • +
  • Extensive suite of Kernel services.
  • +
  • Multiple Scheduling Algorithms.
  • +
  • Highly configurable/Modular for flexibility.
  • +
  • Native Linux, macOS, and Windows Development.
Resources:
@@ -94,7 +103,6 @@ The micro-ROS Tier 2 boards are officially supported for one or more RTOSes and

NuttX

-

NuttX is a real-time operating system (RTOS) with an emphasis on standards compliance and small footprint. Scalable from 8-bit to 32-bit microcontroller environments, the primary governing standards in NuttX are Posix and ANSI standards. Additional standard APIs from Unix and other common RTOSes (such as VxWorks) are adopted for functionality not available under these standards, or for functionality that is not appropriate for deeply-embedded environments (such as fork()). Apache NuttX is an effort undergoing Incubation at The Apache Software Foundation (ASF), sponsored by the Incubator.

Key features:
  • POSIX compliant interface to a high degree.
  • @@ -104,9 +112,9 @@ The micro-ROS Tier 2 boards are officially supported for one or more RTOSes and
Resources: - **Disclaimer: this tutorial is currently unmantained**
@@ -115,10 +123,12 @@ The micro-ROS Tier 2 boards are officially supported for one or more RTOSes and - ## Bare metal support -The micro-ROS reference boards are the ones officially supported for all RTOSes and with complete support for all available transports. +Based on the release of micro-ROS as a standalone library + header files and on the support provided to the Arduino IDE, micro-ROS is available as a bare-metal application, too. +Fin more details in the dedicated [repo](https://github.com/micro-ROS/micro_ros_arduino). + +Arduino is an open-source electronics platform based on easy-to-use hardware and software. Arduino boards are able to read inputs and turn it into an output, by sending instructions to the microcontroller on the board. To do so you use the Arduino programming language (based on Wiring), and the Arduino Software (IDE), based on Processing.
@@ -126,17 +136,16 @@ The micro-ROS reference boards are the ones officially supported for all RTOSes
Key features:
    -
  • MCU: STM32F407ZGT6 Cortex-M4F
  • -
  • RAM: 196 kB
  • -
  • Flash: 1 MB
  • -
  • Peripherals: USB OTG, Ethernet, SD Card slot, SPI, CAN, I2C...
  • -
- +
  • Inexpensive.
  • +
  • Cross-platform.
  • +
  • Simple, clear programming environment.
  • +
  • Open source and extensible software.
  • +
  • Open source and extensible hardware.
  • + Resources:
    From 0e6008421d2c33bd68302714b6df8b75e72c1f01 Mon Sep 17 00:00:00 2001 From: Pablo Garrido Date: Fri, 4 Dec 2020 13:00:22 +0100 Subject: [PATCH 3/4] Fix height --- _docs/overview/rtos/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_docs/overview/rtos/index.md b/_docs/overview/rtos/index.md index 6e4a3edd..2c64114a 100644 --- a/_docs/overview/rtos/index.md +++ b/_docs/overview/rtos/index.md @@ -5,7 +5,7 @@ permalink: /docs/overview/rtos/ @@ -44,17 +44,19 @@ Find more details about each of the supported RTOSes below, and a more comprehen ## Real-Time Operating Systems officially supported by the project +In this section, we review the main features of the three RTOSes supported officially by the project, and link to useful documentation. +

    FreeRTOS

    Key features:
      -
    • Extremely small footprint.
    • -
    • POSIX extension available.
    • +
    • Extremely small footprint
    • +
    • POSIX extension available
    • Memory management tools
    • -
    • Standard and idle tasks available with assignable priorities.
    • -
    • Transport resources: TCP/IP and lwIP.
    • +
    • Standard and idle tasks available with assignable priorities
    • +
    • Transport resources: TCP/IP and lwIP
    Resources:
      @@ -76,13 +78,13 @@ Find more details about each of the supported RTOSes below, and a more comprehen
      Key features:
        -
      • Small footprint.
      • -
      • Native POSIX port.
      • -
      • Cross Architecture: Huge collection of supported boards.
      • -
      • Extensive suite of Kernel services.
      • -
      • Multiple Scheduling Algorithms.
      • -
      • Highly configurable/Modular for flexibility.
      • -
      • Native Linux, macOS, and Windows Development.
      • +
      • Small footprint
      • +
      • Native POSIX port
      • +
      • Cross Architecture: Huge collection of supported boards
      • +
      • Extensive suite of Kernel services
      • +
      • Multiple Scheduling Algorithms
      • +
      • Highly configurable/Modular for flexibility
      • +
      • Native Linux, macOS, and Windows Development
      Resources:
        @@ -105,10 +107,10 @@ Find more details about each of the supported RTOSes below, and a more comprehen
        Key features:
          -
        • POSIX compliant interface to a high degree.
        • +
        • POSIX compliant interface to a high degree
        • Rich Feature OS Set
        • Highly scalable
        • -
        • Real-Time behavior: fully pre-emptible; fixed priority, round-robin, and “sporadic” scheduling.
        • +
        • Real-Time behavior: fully pre-emptible; fixed priority, round-robin, and “sporadic” scheduling
        Resources:
          @@ -125,10 +127,10 @@ Find more details about each of the supported RTOSes below, and a more comprehen ## Bare metal support -Based on the release of micro-ROS as a standalone library + header files and on the support provided to the Arduino IDE, micro-ROS is available as a bare-metal application, too. +Based on the release of micro-ROS as a standalone library + header files, and on the support provided to the Arduino IDE, micro-ROS is available as a bare-metal application, too. Fin more details in the dedicated [repo](https://github.com/micro-ROS/micro_ros_arduino). -Arduino is an open-source electronics platform based on easy-to-use hardware and software. Arduino boards are able to read inputs and turn it into an output, by sending instructions to the microcontroller on the board. To do so you use the Arduino programming language (based on Wiring), and the Arduino Software (IDE), based on Processing. +The open-source Arduino Software (IDE) is a library making it easy to program any Arduino board.
          @@ -136,11 +138,11 @@ Arduino is an open-source electronics platform based on easy-to-use hardware and
          Key features:
            -
          • Inexpensive.
          • -
          • Cross-platform.
          • -
          • Simple, clear programming environment.
          • -
          • Open source and extensible software.
          • -
          • Open source and extensible hardware.
          • +
          • Inexpensive
          • +
          • Cross-platform
          • +
          • Simple, clear programming environment
          • +
          • Open source and extensible software
          • +
          • Open source and extensible hardware
          Resources:
            @@ -151,7 +153,7 @@ Arduino is an open-source electronics platform based on easy-to-use hardware and
          - +