Arquitetura de desenvolvimento de software - parte I

arquitetura desenvolvimento de software

No desenvolvimento de um sistema embarcado é importante definir uma arquitetura de desenvolvimento de software. A escolha deve ser baseada no tipo de dispositivo a ser desenvolvido. Várias características podem influenciar na escolha: a complexidade do sistema, a capacidade de processamento, a quantidade ou possibilidade de subprodutos (derivados), a necessidade de garantia de tempo real, a quantidade de periféricos, a criticidade, entre outros. Outro agravante na escolha é que, em geral, não existe solução ótima, nem uma solução geral que possa ser aplicada em todos os projetos. Segundo Richard Soley: 

 

"Constrained by memory limitations, performance requirements, and physical and cost considerations, each embedded system design requires a middleware platform tailored precisely to its needs, unused features occupy precious memory space, while missing capabilities must be tacked on."

 

Nesta série de artigos sobre Arquitetura de desenvolvimento de software serão abordados alguns modelos de arquitetura para o desenvolvimento de software embarcado, bem como os conceitos necessários para a implementação de cada um deles.

 

Começando pelo mais simples temos uma arquitetura denominada de "one single loop". Este modelo é tão simples e importante para a computação em geral que o endereço da Apple fica na "1-infinite-loop" . Este modelo é caracterizado por uma estrutura de repetição, um while ou for, dentro da rotina principal, main.

 

arquitetura de desenvolvimento de software
Figura 1 - One single loop

 

As inicializações são realizadas antes do loop e as funcionalidades do sistema são colocadas dentro do loop. Para melhorar a organização é comum que as funcionalidades sejam implementadas em funções. 

 

 

Este modelo é bastante simples e funcional, por isso foi escolhido como base da programação do Arduino onde duas funções iniciais são apresentadas: setup() e loop(). A primeira é executada antes do loop infinito e a segunda a cada iteração do mesmo.

 

arquitetura de desenvolvimento de software
Figura 2 - Funções setup e loop

 

Quando a plataforma a ser utilizada apresenta poucos recursos, principalmente no quesito de memória, a utilização de um sistema operacional pode ser inviabilizada. É comum os sistemas operacionais consumirem alguns kb de memória. O FreeRTOS, por exemplo, exige um mínimo de 5 kB. Alguns sistemas mais complexos como o VxWorks podem alcançar dezenas ou centenas de kB, inviabilizando seu uso em sistemas com apenas alguns bytes de ROM/Flash.

 

Apesar das vantagens aparentes, este é um modelo que deve ser usado com cautela. A velocidade de execução do loop principal é dependente das funções implementadas e qualquer alteração pode modificar este tempo. Assim é praticamente impossível utilizar a frequência de execução para realizar alguma tarefa temporal.

 

Outro problema é a possibilidade de travamento do sistema. Se alguma das funções entrar num loop infinito, ou em qualquer condição de deadlock, o sistema inteiro ficará paralisado. 

 

A arquitetura one single loop pode ser utilizada com sucesso, contanto que a aplicação seja simples e não exija requisitos rigorosos com relação ao tempo de execução. Além disso, é uma abordagem interessante para realizar provas de conceito e testes iniciais em novas plataformas. Lembre-se apenas de documentar e separar as funções em arquivos diferentes, agrupadas pela similaridade ou por tipo de periférico que elas acessam. Isto facilitará a mudança do sistema para arquiteturas mais complexas quando houver a necessidade de fazê-lo.

Outros artigos da série

Arquitetura de desenvolvimento de software - parte II >>
NEWSLETTER

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

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

6
Deixe um comentário

avatar
 
6 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
4 Comment authors
Willian HenriqueLeonardo G. BorgesAndré CastelanMatheus QuickArquitetura de Software em Sistemas Embarcados Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Matheus Quick
Visitante
Matheus Quick

Excelente, bom artigo.

trackback

[…] Arquitetura de desenvolvimento de software - parte I […]

trackback

[…] Arquitetura de desenvolvimento de software - parte I […]

Willian Henrique
Visitante
Willian Henrique

Muito bom.

Leonardo G. Borges
Visitante
Leonardo Borges

Muito bom! Continue este trabalho.

André Castelan
Visitante

Bem interessante o artigo Rodrigo!