2 Comentários

Lançado o FreeRTOS 8.2.0!

FreeRTOS 8 bare-metal

Quem não conhece o sistema operacional de tempo-real FreeRTOS? Se você nunca teve contato com ele, aconselho que o faça! Quando usar um sistema operacional de tempo-real num projeto é uma questão muito subjetiva. Sendo um projeto simples, em que o overhead apresentado por um RTOS é considerável, usar uma solução bare-metal pode ser a melhor escolha. Já em sistemas mais complexos, em que muitas tarefas devem ser executadas, tal como gerenciamento de interfaces externas, memórias, interação com o usuário, etc,  o uso de um kernel torna-se aconselhável, para não dizer necessário.

Para aqueles que nunca trabalharam com um sistema operacional de tempo-real, digo que desenvolver um projeto que faça uso desse tipo de serviço traz consigo um pacote de vantagens, tais como:

  • Abstração de tempo: o kernel é responsável por executar as tarefas no devido tempo, sem que a aplicação se preocupe com isso;
  • Manutenabilidade, escalabilidade e modularização: cada uma das tarefas criadas pela aplicação é executada isoladamente e, dessa forma, tem a responsabilidade de gerenciar os recursos do seu respectivo módulo;
  • Planejamento de tarefas de uma equipe: uma vez que os módulos do projeto são muito bem definidos, há a necessidade de se estabelecer a interface entre eles. Uma vez que essas atividades são definidas no projeto, ele pode ser alocado entre diferentes membros da equipe e ser desenvolvido em paralelo;
  • Facilidade em realização de testes: os testes de um módulo são mais fáceis de serem executados dado que a sua interface esteja muito bem definida.

Muitas outras vantagens podem ser listadas, mas vou focar aqui nas mudanças apresentadas pela nova versão do FreeRTOS, a 8.2.0. Para fazer o seu download, acesse aqui.

Mudanças

Dentre as mudanças realizadas no kernel, podemos destacar:

  • Adição de mais um serviço de comunicação entre tarefas (Inter-task Communication), chamado RTOS Task Notifications;
  • Foi criado o arquivo de cabeçalho FreeRTOS/Source/include/deprecated_definitions.h.

A grande mudança fica por conta do RTOS Task Notifications, criando uma nova alternativa para comunicação de eventos e dados entre as tarefas. Mais detalhes das mudanças feitas podem ser encontrados aqui.

Foi criada uma nova API para esse serviço:

  • xTaskNotifyGive();
  • vTaskNotifyGiveFromISR();
  • ulTaskNotifyTake();
  • xTaskNotify();
  • xTaskNotifyFromISR();
  • xTaskNotifyWait().

O kernel agora disponibiliza para cada tarefa criada um valor de 32 bits, chamado de "notification value", que é inicializado com o valor zero quando a tarefa é criada. A função base xTaskNotify() pode ser utilizada para gerar eventos (notification value) para uma segunda tarefa. A tarefa que recebe o novo valor é removida do estado bloqueado, e o que ela faz com esse dado fica a cargo dela, podendo ser uma das seguintes opções: 

  • Atualizar o seu "notification value" interno;
  • Incrementar o valor do seu "notification value";
  • Setar um ou mais bits do seu "notification value";
  • Decidir por deixar o seu "notification value" inalterado.

Essas ações são estabelecidas pela função xTaskNotifyWait(), que fica aguardando, dentro de uma tarefa, um evento de uma outra tarefa. Dessa forma esse meio de comunicação pode assumir características de message queue e event group. Além disso, é possível usar esse novo tipo de notificação como semáforos binários e semáforos contadores. Para isso pode-se usar as funções xTaskNotifyGive()vTaskNotifyGiveFromISR()ulTaskNotifyTake()

Mas qual a grande vantagem desse novo meio de comunicação entre tarefas? De acordo com o pessoal da Real Time Engineers Ltd. existem duas grandes vantagens:

  • Proporciona flexibilidade ao design do projeto, já que task notifications pode ser utilizado onde antes tinha que ser criada uma fila de mensagem, um semáforo binário, um semáforo contador ou um event group;
  • Tirar uma tarefa do estado bloqueado por meio de task notification é 45% mais rápido e usa menos memória RAM que realizar a mesma tarefa usando um semáforo binário, por exemplo.

O arquivo de cabeçalho deprecated_definitions.h foi adicionado para não ser usado! Pois é, está lá só para compilar projetos antigos. Não façam uso das definições contidas nesse arquivo! Vejam os comentários contidos no arquivo portable.h do kernel:

Teremos mais artigos no Embarcados envolvendo o uso do FreeRTOS em projetos. E aí, gostaram dessa nova feature do FreeRTOS?

Referências

http://www.freertos.org/index.html
http://sourceforge.net/projects/freertos/files/latest/download?source=files
http://www.freertos.org/RTOS-task-notifications.html
http://www.freertos.org/History.txt
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Notícias » Lançado o FreeRTOS 8.2.0!
Comentários:
Notificações
Notificar
guest
2 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Rafael Dias
Rafael Dias
22/01/2015 07:27

Estou usando intensamente o FreeRTOS em dois projetos que estou tocando. A flexibilidade e reusabilidade que ele coloca no código fonte é tremenda.
Todos os pontos elencados por você no artigo, em relação ao aumento da produção e qualidade de código, foram também observados por mim durante o desenvolvimento dos projetos.

Agora, sobre estas novas implementações do FreeRTOS na nova versão: achei fantástico.
O ruim é que vou acabar investindo um tempo para entender como funciona tudo isso... hehehe

Henrique Rossi
Reply to  Rafael Dias
23/01/2015 22:35

Pois é Rafael, tem vindo novidades nesse kernel, e a tendência é crescer mais. É difícil manter o passo!! Essa última é como um canivete suiço, multi-utilizadades rs.

Abraços

Talvez você goste:

Séries

Menu

WEBINAR
 
NVIDIA JETSON – A Inteligência Artificial na palma de sua mão

Data: 08/07 às 14:00h Apoio: Arrow | NVIDIA
 
INSCREVA-SE AGORA »



 
close-link

WEBINAR
 
Redes Mesh para Monitoramento
e Controle de Sensores

Data: 15/07 às 14:00h Apoio: Artimar| Microchip| Tecsus
 
INSCREVA-SE AGORA »



 
close-link