Introdução

O desenvolvimento de software embarcado é uma área fascinante e desafiadora, fundamental em dispositivos que vão desde eletrodomésticos inteligentes até sistemas críticos como equipamentos médicos, aviônicos e automotivos. No entanto, criar boas soluções para esses sistemas requer a adoção de boas práticas que atendam às peculiaridades do hardware e do software embarcado.

Neste artigo, eu exploro boas práticas no desenvolvimento de software embarcado.

Tenha um entendimento profundo do hardware do projeto

Antes de escrever uma só linha de código, é preciso conhecer profundamente o hardware para o qual o software será desenvolvido. Este conhecimento inclui:

  • Solicite acesso ao circuito esquemático do projeto e, se possível, ao layout da PCB.
  • Compreenda a arquitetura do microcontrolador utilizado: entenda quais são os registradores, periféricos e demais tópicos de arquitetura
  • Compreenda a interface de gravação e depuração de software disponível
  • Verifique se o hardware proposto suporta as demandas de software embarcado requisitadas para a solução.
  • Conheça todas as interfaces de comunicação que o hardware possui, tais como: UART, I2C, SPI e CAN.

Planeje a arquitetura do software

Uma arquitetura de software cuidadosamente elaborada é fundamental para garantir um bom desempenho e compreensão do funcionamento de um software embarcado. Para isso, considere:

  • Arquitetura em camadas: separe as funcionalidades em camadas distintas, como drivers de hardware, lógica de negócio e interfaces.
  • Utilize sempre que possível um sistema operacional embarcado: em sistemas embartcados mais complexos, um sistema operacional embarcado ajuda muito a manter uma excelente qualidade de código e um gerenciamento confiável de recursos do hardware
  • Use máquinas de estado: ideais para manter o controle do fluxo do software em softwares embarcados que seguem fluxos lógicos bem definidos, seja de baixa, média ou alta complexidade.

Priorize eficiência e otimização

Sistemas embarcados, computacionalmente falando, têm uma grande restrição de recursos, tais como: processamento, memória RAM e armazenamento (memória Flash). Sendo assim:

  • Muito cuidado com recursão: sempre prefira algoritmos iterativos para evitar o consumo excessivo de memória
  • Use variáveis de escopo reduzido: evite usar variáveis globais
  • Familiarize-se com as otimizações de código oferecidas pelo compilador: compiladores disponibilizam maneiras de otimizar o código compilado final sob vários aspectos, incluindo a minimização do tamanho de binário final e uso de memória. Explore as possibilidades e verifique qual delas oferece mais benefício ao seu projeto.

Não menospreze a documentação de código

Tenha em mente que:

a) O código-fonte não é documentação
b) Documentação não é perda de tempo. Pelo contrário, é um ganho enorme de tempo quando for necessário fazer manutenção ou expansão do código-fonte atual.

Documentação clara e bem feita é um investimento que economiza tempo a longo prazo.

Adote um sistema de versionamento de código

Evite ao máximo o famoso “zipar o código e guardar no servidor ou e-mail”. Essa maneira de guardar software embarcado é pouco prática, não favorece o reuso de código e não permite colaboração de vários desenvolvedores no mesmo projeto de forma fácil e rastreável.

Para evitar dores de cabeça, utilize um sistema de versionamento de código, como o git, por exemplo.

Conclusão

Desenvolver software embarcado de alta qualidade exige um equilíbrio entre compreensão do hardware, planejamento de arquitetura, otimização e versionamento de código. Ao adotar as boas práticas informadas neste artigo, você garante não apenas um software embarcado funcional, mas também de manutenção simplificada e organizada.


Pedro Bertoleti

Informações completas em: http://pedrobertoleti.com.br/index.php/sobre/

0 comentário

Deixe um comentário

Espaço reservado para avatar

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *