FAVORITAR
FecharPlease loginn
6 Comentários
FAVORITAR
FecharPlease loginn

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 >>
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Home » Software » Arquitetura de desenvolvimento de software – parte I

WEBINARS

LEIA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Comentários:
Notificações
Notificar
guest

6 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Willian Henrique
Willian Henrique
29/10/2013 12:52

Muito bom.

Leonardo Borges
Leonardo Borges
14/10/2013 11:12

Muito bom! Continue este trabalho.

André Castelan
08/10/2013 20:40

Bem interessante o artigo Rodrigo!

Matheus Quick
Matheus Quick
12/03/2017 17:43

Excelente, bom artigo.

Talvez você goste: