Livro Reusable Firmware Development

Livro desenvolvimento de firmware reutilizável

O livro Reusable Firmware Development ou Desenvolvimento de Firmware reutilizável, em tradução livre, é um livro escrito pelo grande profissional de sistemas embarcados e firmware Jacob Beningo o qual atua com desenvolvimento há anos e atualmente é consultor técnico.  Este livro é aborda vários tópicos importantíssimos para o desenvolvimento de sistemas embarcados, proporciona muitas diretivas e é direcionado àqueles que procuram por conhecimento em como criar um arquitetura de software, boas práticas, dicas relacionadas ao desenvolvimento de API (Application Programming Interface), HAL (Hardware Abstraction Layer) e drivers. Podemos considerar que este livro não possui restrição de níveis de conhecimento e abrange desde os iniciantes os quais procuram por um norte, os intermediários que querem aprender a estruturar e arquitetar um programa, bem como, os experientes que estão cansados ou não querem mais perdem tempo reinventando a roda, ou seja, querem encontrar uma alternativa de reutilizar códigos.

Este livro foi baseado nas experiências profissionais do Jacob atuando em diversas empresas pelo mundo em que ele atuou, basicamente, ele compilou (com certeza ele fez muito isso 🙂 ) diversas situações as quais se repetiam com frequência nesses ambientes, deste modo, com o passar do tempo, ele foi munindo sua caixa de ferramentas com recursos comuns os quais sempre eram empregados e os quais estão neste livro.

Capítulos do livro Reusable Firmware Development

A seguir, será listado os capítulos do livro com alguns comentários:

 

1. Concepts for Developing Portable Firmware

É analisado o momento atual no desenvolvimento de projetos citando alguns exemplos, algumas definições, vantagens em se ter um código desenvolvido de forma portátil e as consequências positivas, bem como, os requisitos necessários para tal desenvolvimento, menciona a importância da utilização de padrões, traz os fundamentos de código modular e o impacto disso em um projeto e a respectiva utilização em outros relacionando assim a reutilização, apresenta exemplo de arquitetura de software em camadas, a relevância da estruturação dos dados, é apresentado o conceito de HAL e API e a organização de um projeto.

 

2. API and HAL Fundamentals

Apresenta o conceito de cada um, ou seja, o conceito de HAL e API, as particularidades e as respectivas abrangências, análise detalhada, potenciais problemas que podem ser encontrados, características que todo HAL deve possuir, critérios a serem considerados, escopo de uma API, o por quê de projetar seu HAL e sua API, comparações entre eles, etc.

 

3. Device Driver Fundamentals in C

Análise de um mapa de memória de uma arquitetura ARM,  design por contrato, fundamentos de assert, modelos de drivers, polling x interrupt-driven, DMA, exemplos de uso, exemplo de árvore de projeto com driver, convenção de nomeclatura, orientação de objetos em C, abstração e tipos de dados abstraídos, exemplos de implementação,  encapsulamento, etc.

 

4. Writing Reusable Drivers

Decifrando a utilização das palavras chaves static, extern, volatile, const com exemplos, metodologias de mapeamento de memória, como definir a melhor maneira de implementação e quais os critérios a serem considerados.

 

5. Documenting Firmware with Doxygen

Explora a importância em documentar o código, as consequência na omissão e como usar o Doxygen em projeto de sistemas embarcados.

 

6. The Hardware Abstraction Layer Design Process

Como se dá o processo de criação de um HAL para sua arquitetura de sistemas embarcados, características importantes e dicas.

 

7. HAL design for GPIO

Exemplo de implementação de HAL para GPIO.

 

8. HAL design for SPI

Exemplo de implementação de HAL para SPI.

 

9. HAL Design for EEPROM and Memory Devices

Exemplo de implementação de HAL para memória EEPROM externa e memórias internas não voláteis.

 

10. API Design for Embedded Applications

Benefícios e características em se utilizar ou reutilizar APIs, considerações de criação de APIs, Frameworks de aplicação, análise de arquitetura de software com APIs, conceitos de wrapper, consoles de aplicação, etc.

 

11. Testing Portable Embedded Software

Exemplos e alguns conceitos de ambientes de testes para sistemas embarcados, bem como, as melhores práticas.

 

12. A Pratical Approach to Code Reuse

Ambiente práticos e não práticos, ciclos de desenvolvimento de projetos, consequências para os negócios e como chegar lá.

Indubitavelmente é um livro que os desenvolvedores de sistemas embarcados devem ler, seja para aprender, revisar conceitos ou adquirir dicas, pois o escopo deste livro vai além dos conceitos técnicos que, obviamente, são bem abordados, porém mais importante do que isto: exemplos e depoimentos de casos reais e as respectivas abordagem de soluções, bem como, análises de situações fora de um departamento de engenharia, ou seja, negócios.

Este livro está disponível somente em inglês e pode ser adquirido em formato impresso e formato e-book para dispositivos e aplicativos Kindle no site da Amazon neste link.

Assunto relacionado

confira mais artigos

compartilhe e comente

Compartilhar no linkedin
Compartilhar no whatsapp
Compartilhar no facebook
Compartilhar no telegram

O uso e reprodução deste conteúdo deve creditar o autor e está licenciado conforme a licença Creative Commons – Atribuição Compartilhada 4.0 Internacional (CC BY-SA 4.0). 

Olá, meu nome é Eder Andrade.