0% encontró este documento útil (0 votos)
3 vistas7 páginas

Introducción a FreeRTOS en Sistemas Embebidos

FreeRTOS es un sistema operativo de tiempo real (RTOS) diseñado para dispositivos embebidos, que permite la multitarea y garantiza tiempos de respuesta constantes. Es de código abierto y soporta múltiples arquitecturas y cadenas de compilación, ofreciendo una API para gestionar tareas. El documento también incluye ejemplos de código para implementar tareas en FreeRTOS, mostrando su funcionalidad en la gestión de sensores y control de dispositivos.

Traducido por

ScribdTranslations
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
3 vistas7 páginas

Introducción a FreeRTOS en Sistemas Embebidos

FreeRTOS es un sistema operativo de tiempo real (RTOS) diseñado para dispositivos embebidos, que permite la multitarea y garantiza tiempos de respuesta constantes. Es de código abierto y soporta múltiples arquitecturas y cadenas de compilación, ofreciendo una API para gestionar tareas. El documento también incluye ejemplos de código para implementar tareas en FreeRTOS, mostrando su funcionalidad en la gestión de sensores y control de dispositivos.

Traducido por

ScribdTranslations
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

freeRTOS

ELAMARI MOUNA

2ª año de máster de
búsqueda electrónica
embarcada
2
FreeRTOS
I. Sistema operativo de tiempo real

Le système d'exploitation présent à l'intérieur des périphériques embarqués est appelé un


RTOS (Sistema Operativo en Tiempo Real). En los dispositivos embebidos, las tareas en tiempo
real son esenciales donde la sincronización juega un papel muy importante. Las tareas en
el tiempo real es determinista en el tiempo, lo que significa que el tiempo de respuesta a
todo evento es siempre constante para que se pueda garantizar que un evento
un particular se producirá en algún momento. RTOS está diseñado para ejecutar aplicaciones
con un tiempo muy preciso y un alto grado de fiabilidad. RTOS también ayuda a la
multitarea con un solo núcleo.

Existe un gran número de RTOS, libres, de código abierto y propietarios (RTX, MicroC/OS
III, FreeRTOS, VxWorks...) que poseen diferentes conjuntos de ventajas y desventajas para
de adaptarse a la gran cantidad de problemas del mercado. De nuestra parte
en la escuela centramos nuestra atención en FreeRTOS, un pequeño programador de tiempo real que ofrece un
cierto número de ventajas. La documentación de FreeRTOS es directamente accesible en
línea desde el sitio web

II. FreeRTOS

FreeRTOS es uno de los RTOS líderes en el mercado de lo embebido. FreeRTOS es libre de


derecho de uso y código abierto (bajo licencia). Está oficialmente soportado por 34
arquitecturas (TI, Microchip, Atmel, NXP, Intel ...) y 18 cadenas de compilación.

FreeRTOS, como cualquier otro núcleo, es una herramienta puramente software, no es


un sistema de archivos. FreeRTOS nos ofrece una API de programación para gestionar un
entorno multitarea.
Tarea FreeRTOS
3
Bloque de Control de Tareas (BCT)

Bloque de Control de Tarea (TCB) El TCB es una estructura de datos que contiene la información
nécessaires à la gestion des tâches. Une fois la tâche est créée, FreeRTOS lui assigne un
TCB.

Ordenación

Programación El programador de FreeRTOS se basa en la prioridad de las tareas. En caso de


donde varias tareas comparten el mismo nivel de prioridad, es el round-robin el que
utilizado

Prioridad

Prioridad La prioridad es un número asignado a una tarea cuando se crea o modifica


manualmente a través de la primitiva os ThreadSetPriority. El número máximo de prioridades
est definido por CMSIS RTOS como osPriorityRealtime.

A. Liga todos contra todos

Las tareas de igual prioridad son tratadas de manera igual por el planificador; él elige en
cada quantum de tiempo una tarea según el algoritmo round robin.
4

2. Control de tareas
vTaskDelay

vTaskDelayEspecifica el número de ticks del reloj del programador durante el cual


la tarea sigue bloqueada, este número se pasó como parámetro. Si queremos contabilizar el
tiempo de bloqueo en ms, solo hay que dividir el número de Ticks por la constante
portTICK_RATE_MS. Sintaxis: void vTaskDelay(const TickType_t xTicksToDelay);

Código
#include <Arduino_FreeRTOS.h>

#include<task.h>

TareaVacía1(void*pvparameters);

Tarea Vacía2(void*pvparameters);

Float VLDR ; //variables de valeur de photoresistance

Flotar Vtemp ;//variables de valor de sensor de temperatura

Int entrada fotorresistencia=A1 ;//fotorresistencia en A1

Int entreecapTem=A2 ;//sensor de temperatura en A2


Int led_nuit ;
5
Int led_temperatura ;
Vacío configuración()

[Link](9600); // monitor serie

Led_nuit =4 :

Led_temperature=6 ;

pinMode(led_nuit, SALIDA);

pinMode(led_temperature, OUTPUT);

digitalWrite(led_nuit,LOW) ;

digitalWrite(led_temperature, BAJO);

xTaskcreat(Task1,Task1,128,NULL, 2 ,NULL) ;

xTaskcreat(Task2,Task2, 128 ,NULL, 1 ,NULL) ;

vTaskStartScheduler() :

Tarea Vacía1(void*pvparameters)

Mientras(1) {

VLDR=analogRead(entreePhotoResistance)*5/1023 ;

Si((VLDR)<1.71)

digitalWrite(led_nuit,ALTO) ;

Else

digitalWrite(led_nuit,LOW) ;

}}
Tarea2(vacío* pvParameters) {
6
Mientras(1){

Vtemp=(analogRead(entreecapTemp)*5.0)/(1023*100) ;

Si((Vtemp)==10)//si la temperatura es igual a 10 grados La LED parpadea en la pin


numérico con frecuencia de 200 ms

DigitalWrite(led_temp,ALTO) ;

vTaskDelay(200/portTICK_PERIOD_MS) ;

digitalWrite(led_temp, BAJO);

vTaskDelay(200/portTICK_PERIOD_MS);

Else{

digitalWrite(led_temp, BAJO) ;

Bucle vacío()

}
7

También podría gustarte