# FreeRTOS

FreeRTOS Es un sistema operativo de tiempo real kernel para dispositivos embebidos que ha sido portado a 35 plataformas de microcontrolador. Está distribuido bajo la licencia MIT.

## Implementación

FreeRTOS está diseñado para ser pequeño y simple. El núcleo en sí consta de solo tres archivos implementados en C. Para hacer que el código sea legible, fácil de portar y mantener, está escrito principalmente en C, pero hay un par de funciones en assembler que están incluidas en donde se necesitan principalmente en rutinas de planificación de arquitectura específica.
FreeRTOS Proporciona métodos para múltiples subprocesos o hilos, mutexes, semáforos y temporizadores de software. Además de admitir prioridades de hilos.
Tiene un modo tickless para reducir el consumo energético. En FreeRTOS las aplicaciones pueden ser asignadas de manera completamente estáticas. Alternativamente en RTOS los objetos pueden ser asignados de manera dinámica con cinco esquemas previstos de asignación de memoria :
* Solo Asignar.
* Asigna y libera con un algoritmo muy simple y rápido.
* Asignar con un algoritmo más complejo pero rápido de asignación y liberación con coalescencia de memoria
* Asignar con una alternativa al esquema más complejo que incluye la coalescencia de memoria que permite dividir un montón en múltiples áreas de memoria.
* biblioteca C asignan y liberan con alguna protección de exclusión mutua.
No hay ninguna de las funciones más avanzadas que se encuentran normalmente en sistemas operativos como Linux o Microsoft Windows, como controladores de dispositivos, administración avanzada de memoria, cuentas de usuario y redes. El énfasis está en la compacidad y la velocidad de ejecución. FreeRTOS se puede considerar como una 'biblioteca de hilos' en lugar de un 'sistema operativo'. Aunque la interfaz de línea de comandos y los complementos de abstracción de E / S similares a POSIX-like están disponibles.
FreeRTOS implementa múltiples subprocesos haciendo que el programa anfitrión llame a un método de marcación de subprocesos a intervalos cortos y regulares. El método de marca de hilo cambia las tareas en función de la prioridad y un esquema de programación de turno rotativo. El intervalo habitual es de 1/1000 de segundo a 1/100 de segundo, a través de una interrupción de un temporizador de hardware, pero este intervalo a menudo se cambia para adaptarse a una aplicación en particular.
La descarga contiene configuraciones y demostraciones preparadas para cada puerto y compilador. Lo que permite un rápido diseño de la aplicación. El sitio FreeRTOS.org también contiene una gran cantidad de documentación y tutoriales de RTOS (manuales adicionales y tutoriales están disponibles por una tarifa), así como detalles del diseño de RTOS.

## Características claves

* Libro y los manuales de referencia.
* Huella de memoria pequeña, gastos indirectos bajos y ejecución rápida.
* Ticklees opción para utilizar baja potencia en aplicaciones.
* Destinado tanto para aficionados como para desarrolladores profesionales que trabajan en productos comerciales.
* El programador se puede configurar para operaciones tanto preventivas como cooperativas.
* Compatibilidad con corrutinas (las corrutinas en FreeRTOS son tareas simple y ligeras con un uso limitado de la pila de llamadas)
* Permite el seguimiento a través de macros de rastreo genérico. Herramientas como Tracealyzer por el socio Percepio de FreeRTOS pueden registrar y visualizar el comportamiento en tiempo de ejecución de los sistemas basados en FreeRTOS. Esto incluye la programación de tareas y las llamadas al kernel para las operaciones de semáforo y cola. Tracealyzer es una estrategia de precios freemium, que ofrece una versión gratuita con características limitadas

## Arquitecturas admitidas

* Altera Nios II
* ARM architecture
** ARM7
** ARM9
** ARM Cortex-M
** ARM Cortex-A
* Atmel
** Atmel AVR
** AVR32
** SAM3 / SAM4
** SAM7 / SAM9
** SAMD20 / SAML21
* Cortus
** APS1
** APS3
** APS3R
** APS5
** FPS6
** FPS8
* Cypress
** PSoC
* Energy Micro
** EFM32
* Espressif
** ESP8266ex
** ESP32
* Fujitsu
** FM3
** MB91460
** MB96340
* Freescale
** Coldfire V1 / V2
** HCS12
** Kinetis
* IBM
** PPC404 / PPC405
* Infineon
** TriCore
** Infineon XMC4000
* Intel
** x86
** 8052
* Microchip Technology
** PIC18 / PIC24 / dsPIC
** PIC32
* Microsemi
** SmartFusion
* Multiclet
** Multiclet P1
* NXP
** LPC1000
** LPC2000
** LPC4300
* Renesas
** 78K0R
** RL78
** H8/S
** RX600
** RX200
** SuperH
** V850
* STMicroelectronics
** STM32
** STR7
* Texas Instruments
** MSP430
** Stellaris
** Hercules (TMS570LS04 & RM42)
* Xilinx
** MicroBlaze
** Zynq-7000

## SafeRTOS

SafeRTOS fue construido como una oferta complementaria a FreeRTOS, con la funcionalidad común pero con un único diseñado críticos para la seguridad de la implementación. Cuando el FreeRTOS modelo funcional fue sometido a una completa HAZOP, debilidad con respecto al mal uso por el usuario y falla de hardware en el modelo funcional de la API fueron identificados y resueltos. El resultado de requerimientos se ha de poner a través de un completo IEC 61508 SIL 3 ciclo de vida de desarrollo, lo más alto posible para un software único componente.
SafeRTOS fue desarrollado por los sistemas de alta integridad WITTENSTEIN, en asociación con Real Time Engineers Ltd, desarrollador principal del proyecto FreeRTOS. Tanto SafeRTOS como FreeRTOS comparten el mismo algoritmo de programación, tienen API similares, pero se desarrollaron con objetivos diferentes. SafeRTOS se desarrolló únicamente en el lenguaje C para cumplir con los requisitos de certificación IEC61508.
SafeRTOS es conocido por su capacidad para residir únicamente en el chip de memoria de solo lectura de un microcontrolador para el cumplimiento de los estándares. Cuando se implementa en hardware de memoria, SafeRTOS código solo puede ser utilizado en su configuración original, por lo que las pruebas de certificación de los sistemas que utilizan este sistema operativo no necesita volver a probar esta porción de sus diseños en la seguridad funcional para el proceso de certificación.
SafeRTOS está incluido en la ROM de algunos microcontroladores Stellaris de Texas Instruments. Esto permite que SafeRTOS se utilice en aplicaciones comerciales sin tener que comprar su código fuente. En este escenario de uso, se utiliza un archivo de cabecera C simple para asignar las funciones de la API de SafeRTOS a su ubicación en la memoria de solo lectura. El uso de la memoria de solo lectura es ideal porque el código que contiene no se puede cambiar, lo que elimina la posibilidad de un error del usuario y garantiza que el código que se probó originalmente permanezca absolutamente idéntico durante toda la vida útil del proyecto. No será necesario volver a realizar pruebas a medida que el código de la aplicación crezca y evolucione a su alrededor. La carga de las pruebas complejas del kernel se elimina ya que la evidencia de certificación ya certificada y aprobada, incluido el plan de prueba, el código y los resultados, se puede comprar "fuera de la plataforma".