Início

Referências de mais de três décadas de desenvolvimento embedded

Clientes do automóvel e da indústria confiam na minha experiência embedded desde a fundação da SCHMITT CONSULTING. Dois projetos ilustram a minha forma de trabalhar.

Como consultor embedded independente, desenvolvo para clientes que precisam de software próximo do hardware, comportamento de tempo real ou da combinação de ambos. A minha atividade vai do contrato a preço fixo com compromisso firme de entrega, passando pelos regimes de horas, até ao acompanhamento de departamentos de desenvolvimento durante vários meses.

Por motivos de confidencialidade, nem todos os projetos podem ser apresentados publicamente. Os dois exemplos abaixo descrevem projetos cujos dados-chave posso mencionar — e que ilustram a minha forma de trabalhar.

Stihl — redesenho completo de um controlo de motor de motosserra

Para a Stihl, em Waiblingen, redesenhei integralmente o software de controlo de motor de uma motosserra. O ponto de partida foi uma tarefa de análise: o software de controlo existente vinha de um fornecedor japonês e estava escrito em assembler. A Stihl queria perceber em detalhe o que esse software fazia. Analisei o código assembler e documentei as funções de modo a que os programadores da Stihl pudessem seguir integralmente a lógica.

Sobre essa base recebi a adjudicação de um redesenho — desta vez em C, com o objetivo de entregar mais funcionalidade do que o software original. As restrições eram duras: o mercado das motosserras é extremamente competitivo no preço, pelo que apenas estava disponível um microcontrolador muito pequeno e barato. A memória era tão apertada que um sistema operativo de tempo real estava fora de questão. O software tinha de correr bare-metal e processar em paralelo, de forma fiável, sinais de tempo real provenientes do hardware.

Durante todo o desenvolvimento tive apenas a placa com o hardware e o meu código em cima da mesa — sem ambiente de ensaio, sem motor. O primeiro ensaio prático teve lugar na bancada da Stihl em Waiblingen. Após meses de análise e desenvolvimento, não teria sido invulgar que o motor não pegasse à primeira. Pegou de imediato e funcionou no essencial bem. O resto foi afinação dos pontos de ignição, otimizada iterativamente na bancada — um procedimento normalmente coberto por software de aprendizagem adaptativa, mas que aqui teve de ser feito manualmente por motivos de memória.

No fim entreguei à Stihl um software de controlo que fazia mais do que a versão japonesa anterior, corria no mesmo microcontrolador económico e foi entregue com documentação completa. É de notar o quadro comercial: na negociação final no departamento de compras da Stihl, o preço previamente acordado não foi reduzido. O comprador apenas deixou claro que cada euro tinha de ser justificável — mas baixar o preço não era o objetivo. Esta experiência — um cliente que paga preços justificáveis por qualidade justificável — é rara no mercado e marca até hoje a minha compreensão de uma boa cooperação.

O projeto foi tratado como contrato a preço fixo. O desenvolvimento decorreu inteiramente fora das instalações da Stihl; a coordenação com o interlocutor da Stihl ocorreu apenas em decisões fundamentais. Esta forma de cooperação revelou-se extraordinariamente eficaz.

Audi — simulação MOST e desenvolvimento próprio de um hardware CAN

Para a Audi, em Ingolstadt, a minha adjudicação original foi a criação de um software de simulação de bus MOST para um sistema de infoentretenimento — uma simulação em tempo real que permitia ensaiar unidades de comando contra um bus MOST virtual.

No local, tornou-se evidente que a Audi tinha em paralelo um segundo problema: uma placa de simulação CAN existente, fornecida por um fornecedor externo, não funcionava de forma fiável em determinadas condições de operação — simplesmente deixava de enviar dados em momentos decisivos. Como o meu trabalho MOST me tinha dado conhecimento detalhado das interações entre bus CAN e MOST, o interlocutor da Audi perguntou-me se podia reconstruir esta simulação CAN de forma independente.

Aceitei, com a observação de que o primeiro passo seria um protótipo funcional — não bonito, mas operacional. Em menos de cinco dias úteis, estava em cima da mesa uma placa eletrónica do meu próprio projeto com um ATmega128, acompanhada de software de simulação por mim escrito. O protótipo estava cablado à mão, mas funcionava — mesmo nas condições de operação em que a placa do fornecedor anterior tinha falhado.

A Audi perguntou então se podia fabricar e fornecer unidades — mas em qualidade industrial, totalmente fabricadas à máquina, não à mão. Concebi o traçado para a placa de série e trabalhei com um fabricante de PCB do ambiente Audi que se encarregou do fabrico à máquina. Após resolver uma incidência no ensaio à máquina do fabricante, a placa entregava resultados fiáveis — exatamente onde a placa do fornecedor original tinha falhado.

Este projeto mostra um caso em que uma adjudicação cresceu por substância técnica concreta: à tarefa de software original juntou-se um desenvolvimento próprio de hardware com produção em série — porque conhecia a arquitetura do bus com profundidade suficiente para propor a pedido um caminho de solução funcional.

Outros clientes

Para além dos projetos descritos em detalhe acima, trabalhei para outros clientes em automóvel, indústria e médico. A seleção acima segue o critério de que os dados-chave são publicamente apresentáveis. Referências mais concretas para tarefas comparáveis ao seu contexto discutem-se com prazer numa primeira conversa — sob confidencialidade se desejado.

O que estes projetos têm em comum

Três propriedades atravessam ambos os projetos e a maior parte da minha atividade:

Responsabilidade completa autónoma
Ambos os projetos começaram com uma tarefa de análise e terminaram com uma solução acabada e entregue. Especificação, conceção, implementação, ensaio e entrega estiveram nas minhas mãos — na Audi até à produção em série do hardware via um parceiro.
Trabalho embedded próximo do hardware sob restrições reais
Stihl: bare-metal num microcontrolador com memória mínima. Audi: simulação MOST em tempo real mais hardware CAN próprio. Em ambos os casos não se tratava de aplicações-padrão, mas de tarefas em que as restrições moldam a solução.
Cooperação como contrato a preço fixo com compromisso firme de entrega
Ambos os projetos decorreram fora das instalações do cliente, com coordenação seletiva em decisões fundamentais. Esta forma de cooperação é o meu modelo preferido — protege o cliente de um trabalho de condução desnecessário e dá-me a concentração que o desenvolvimento próximo do hardware exige.

Esquema de cores

Idioma