Free RTOS
Free RTOS
ELAMARI MOUNA
Anul 2 master de
cercetare electronică
îmbarcată
2
FreeRTOS
I. Sistem de operare în timp real
II. FreeRTOS
FreeRTOS este unul dintre RTOS-urile de frunte pe piaț a sistemelor încorporate. FreeRTOS este liber de
drept de utilizare ș i open source (sub licenț ă). Este susț inut oficial de 34
arhitecturi (TI, Microchip, Atmel, NXP, Intel ...) ș i 18 lanț uri de compilare.
Blocul de Control al Sarcinii (TCB) TCB este o structură de date care conț ine informaț iile
necesare pentru gestionarea sarcinilor. Odată ce sarcina este creată, FreeRTOS îi alocă un
TCB.
Ordinea
Prioritate
Prioritate Prioritatea este un număr acordat unei sarcini atunci când aceasta este creată sau modificată
manually using the primitive os ThreadSetPriority. The maximum number of priorities
este definit de CMSIS RTOS la osPriorityRealtime.
A. Round robin
Sarcinile de aceeaș i prioritate sunt tratate în mod egal de programator; acesta alege să
fiecare quantum de timp o sarcină conform algoritmului round robin.
4
2. Controlul sarcinilor
vTaskDelay
Cod
#include <Arduino_FreeRTOS.h>
#include<task.h>
Void Task1(void*pvparameters);
Funcț ia Task2(void*pvparameters);
Funcț ia setup()
Led_nuit =4 :
Led_temperature=6 ;
pinMode(led_nuit, OUTPUT);
pinMode(led_temperature, OUTPUT);
digitalWrite(led_nuit,LOW);
digitalWrite(led_temperature,LOW);
xTaskcreat(Task1,Task1,128,NULL, 2 ,NULL) ;
vTaskStartScheduler() :
Void Task1(void*pvparameters)
While(1) {
VLDR=analogRead(entreePhotoResistance)*5/1023 ;
Dacă((VLDR)<1.71)
digitalWrite(led_nuit,HIGH);
Else
digitalWrite(led_nuit, LOW);
}}
Func ț ia Vid Task2(void* pvParameters){
6
În timp ce(1){
Vtemp=(analogRead(entreecapTemp)*5.0)/(1023*100);
DigitalWrite(led_temp,HIGH);
vTaskDelay(200/portTICK_PERIOD_MS);
digitalWrite(led_temp,LOW);
vTaskDelay(200/portTICK_PERIOD_MS);
Altfel{
digitalWrite(led_temp,LOW);
Buclă vidă()
}
7